# Base Desktop Environment Configuration This directory contains base configurations for Linux desktop environments. ## Overview The configuration is split into modules: - Desktop shell: Noctalia Shell - Applications: desktop tools, browsers, editors, media players - Development tools: IDEs and development utilities - System integration: input methods, theming, XDG specifications, GPU settings ## Noctalia **Noctalia** (v5) is a native C++/Wayland desktop shell that replaces multiple separate tools. It is installed through the upstream [`programs.noctalia`](https://docs.noctalia.dev/noctalia/getting-started/nixos/) Home Manager module. ### Configuration Noctalia merges **every `*.toml` in the config directory** (`~/.config/noctalia/`), sorted alphabetically, and then layers the state directory's `settings.toml` on top: | Layer | Location | Notes | | ------ | --------------------------------------- | --------------------------------------------------------------------- | | Config | `~/.config/noctalia/*.toml` | Merged alphabetically; `[include]` supported; host-specific overrides | | State | `~/.local/state/noctalia/settings.toml` | Written by the Settings UI; loads last and wins | The shared baseline (`noctalia/config/config.toml`) is deployed as an **out-of-store symlink**, so manual edits hot-reload without a `home-manager switch`. Noctalia never rewrites files in the config layer, so volatile runtime data (wallpaper rotation, widget geometry) stays in the state file and out of the repository. `noctalia config export` prints the merged user config and `noctalia config validate` checks a file. Application theming stays with `catppuccin/nix`, so Noctalia's theme templates are disabled. ### Component Replacement Noctalia consolidates functionality that previously required multiple tools: | Traditional Component | Purpose | Noctalia counterpart | | ---------------------- | ------------------------ | ------------------------------------------------- | | **gammastep** | Blue light filter | `[nightlight]` | | **swaylock** | Screen locker | built-in lock screen (`[lockscreen]`) | | **anyrun** | Application launcher | launcher panel (`[shell.launcher]`) | | **mako** | Notification daemon | `[notification]` | | **waybar** | Status bar | `[bar]` + `[widget.*]` | | **wallpaper-switcher** | Wallpaper management | `[wallpaper]` | | **wlogout** | Session menu | `[shell.session]` | | **wl-clipboard** | Clipboard management | built-in clipboard (encrypted history) | | **grim/slurp/satty** | Screenshots + annotation | built-in `[shell.screenshot]` + annotation editor | ## Configuration Modules ### Desktop Shell - **[`noctalia/default.nix`](./noctalia/default.nix)**: enables the upstream `programs.noctalia` module and symlinks the baseline out of store - **[`noctalia/config/config.toml`](./noctalia/config/config.toml)**: declarative baseline (v5 TOML), tracked in the repo and hot-reloaded Covers the bar and widgets, control center, desktop widgets, night light, wallpaper, session panel, screenshots with annotation, system monitor, audio/volume, brightness, calendar/weather, color schemes, dock, notifications, OSD, and clipboard. - **[`hypridle/`](./hypridle/)**: Idle management ### Desktop Environment - **[`gtk.nix`](./gtk.nix)**: GTK theme configuration - **[`xdg/`](./xdg/)**: XDG specifications ### Input & Localization - **[`fcitx5/`](./fcitx5/)**: Fcitx5 input method with Rime (Chinese), Mozc (Japanese), and Hangul (Korean) engines - **[`vinput/`](./vinput/)**: Voice input on `ai` (OpenVINO) and `shoukei` (CPU) ### Applications - **[`desktop-tools.nix`](./desktop-tools.nix)**: Wayland session tools (clipboard, brightness, screen recording, auto-mount, virt-manager/virt-viewer, `wlogout` emergency fallback) - **[`browsers.nix`](./browsers.nix)**: Web browsers - **[`media.nix`](./media.nix)**: Audio control, mpv, go-musicfox, an image viewer, GPU video diagnostics, Zoom (x86_64 only), and EasyEffects loudness normalization - **[`gaming.nix`](./gaming.nix)**: Gaming applications - **[`creative.nix`](./creative.nix)**: Creative software - **[`note-taking.nix`](./note-taking.nix)**: Note-taking apps ### Development - **[`dev-tools.nix`](./dev-tools.nix)**: Android platform tools (`android-tools`) ### System Utilities - **[`misc.nix`](./misc.nix)**: Misc GUI apps (e-book reader, remote desktop, hardened IM clients) ## Related Documentation - Noctalia Shell: https://docs.noctalia.dev/noctalia/ - Parent: [`../README.md`](../README.md)