Skip to content

Linux UX improvements#278

Open
eboye wants to merge 5 commits into
kunkunsh:developfrom
eboye:develop
Open

Linux UX improvements#278
eboye wants to merge 5 commits into
kunkunsh:developfrom
eboye:develop

Conversation

@eboye
Copy link
Copy Markdown

@eboye eboye commented Feb 3, 2026

Overview
This PR introduces several enhancements and fixes to the Kunkun desktop application, including improved build processes, theming support, system integration, and user experience improvements. The changes span build configuration, UI theming, system commands, keyboard navigation, and settings.

Key Changes

  1. Build and Development Improvements
  • Turbo Configuration: Added concurrency: 20 to turbo.json to resolve persistent task concurrency issues during builds.
  • Tauri Development: Updated documentation and fixed app startup issues by recommending pnpm --filter @kksh/desktop tauri dev for proper Tauri environment loading.
  1. Window Management
  • Startup Centering: Modified apps/desktop/src-tauri/src/setup/window.rs to center the application window on startup for better user experience.
  1. GTK Theme Integration
  • GTK CSS Reading: Added Tauri command get_gtk_css in apps/desktop/src-tauri/src/commands/theme.rs to read ~/.config/gtk-4.0/gtk.css.
  • Color Parsing and Mapping: Implemented GTK color extraction and mapping to app theme variables in apps/desktop/src/routes/+layout.svelte.
  • Settings Toggle: Added "Use GTK Theme" toggle in general settings (apps/desktop/src/lib/components/standalone/general-settings.svelte), visible on Linux.
  • Dynamic Theming: Applied GTK colors reactively, with overrides for UI visibility (e.g., switch thumb styling).
  • Type Definitions: Updated packages/types/src/appConfig.ts and apps/desktop/src/lib/stores/appConfig.ts to include useGtkTheme configuration.
  1. Volume Control Enhancement
  • PipeWire Support: Added wpctl command support in packages/tauri-plugins/jarvis/src/syscmds/linux.rs for volume control on PipeWire systems, prioritizing wpctl > pactl > amixer.
  1. Search Input Improvements
  • Keyboard Navigation: Enhanced search input in apps/desktop/src/routes/app/+page.svelte with handlers for Home, End, Shift+Home, Shift+End, and Ctrl+A.
  • Text Selection: Overrode select-none class in apps/desktop/src/routes/+layout.svelte to enable text selection in the command palette.
  1. Font Size Setting
  • Configuration: Added fontSize to app config types and store, with default 14px.
    UI: Added font size selector (12px-20px) in general settings.
  • Application: Applied font size dynamically in apps/desktop/src/routes/+layout.svelte.

Technical Details

Dependencies: No new dependencies added.
Breaking Changes: None. All changes are additive and maintain backward compatibility.
Testing: Changes include reactive updates and error handling. Test on Linux for GTK and PipeWire features.
Performance: Minimal impact; reactive subscriptions are efficient.

Motivation

These changes improve the app's usability, system integration, and customization options, particularly for Linux users. GTK theming provides native look integration, while volume and keyboard fixes enhance productivity.

@HuakunShen
Copy link
Copy Markdown
Member

Thank you. I will take a look.
I had a lot of linux compatibility issues with Tauri. Actually thinking about migrating to Electron for mare stable UI.
What do you think?

@eboye
Copy link
Copy Markdown
Author

eboye commented Feb 3, 2026

to be honest, this works ok for me, but I think electron makes more sense on Linux ... Tauri has a lots of problems but again, Electron has much bigger bundle size ...

I can test on Arch linux if you need as it's my primary OS. My wife is on Ubuntu, so that one is also in the option for testing.

I really like the idea of the app. I'm struggling to make the theme use gtk theme btw. It's working in some place, but not everywhere. So it's still kinda WIP.

But overall I think I fixed some core issues.

@HuakunShen
Copy link
Copy Markdown
Member

Yeah I also hate the bundle size for Electron, but I am thinking about expanding the features to more complex UI, and include a node/deno runtime for running AI plugins etc. There are a lot more features that I want to implement and could be blocked by Tauri.
I already wrote many hacks to make tauri work for my special use cases, and each consumes me a lot of time. These problems might never exist if Electron is used in the first place.
I don't really want to migrate away from Tauri if possible, but it's possible that I can never get my plan done.
Recently the AI companies are also shipping many large Electron apps, their vscode extensions could be even larger than electron apps (200-400+MB). So I think maybe most users won't care. This app is designed to run many lightweight apps/plugins, it's probably worth the bundle size if it can provide better user experience with Electron.

@HuakunShen
Copy link
Copy Markdown
Member

@eboye
If you want you can message me on Discord, we can discuss more on this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants