feat(desktop): add the desktop group and Hyprland session (task 0021) #13

Merged
alexion merged 5 commits from task-0021-desktop-group-and-hyprland-session into main 2026-07-22 10:09:37 -04:00
3 changed files with 11 additions and 10 deletions
Showing only changes of commit c0ec330024 - Show all commits

View File

@@ -52,6 +52,11 @@ Enable the desktop on neogaia.
- **Greeter session command.** - **Greeter session command.**
greetd's `default_session` runs `uwsm start -e -D Hyprland hyprland.desktop`, mirroring the Exec line of the uwsm session the Hyprland package itself ships, so the session goes through the universal Wayland session manager deterministically. greetd's `default_session` runs `uwsm start -e -D Hyprland hyprland.desktop`, mirroring the Exec line of the uwsm session the Hyprland package itself ships, so the session goes through the universal Wayland session manager deterministically.
- **Terminal: Alacritty, not Ghostty.**
The spec named Ghostty, but on neogaia's integrated graphics its GTK4 window construction made every launch feel sluggish (~440 ms to map, versus a lightweight terminal's near-instant open), which a head-to-head comparison confirmed.
The terminal is therefore Alacritty, whose OpenGL renderer opens fast on the iGPU.
The choice is easily reversible per host, so a capable host such as zeus could still adopt Ghostty later.
- **Dropped from the plan.** - **Dropped from the plan.**
Mouse drag-to-move and drag-to-resize (`bindm`) were removed: they fall outside the task's enumerated keyboard bindings, and `resizeactive`/`movewindow` already cover floating windows from the keyboard. Mouse drag-to-move and drag-to-resize (`bindm`) were removed: they fall outside the task's enumerated keyboard bindings, and `resizeactive`/`movewindow` already cover floating windows from the keyboard.
Hardware media/brightness keys (the spec table's `XF86` row) are likewise deferred, since they depend on audio and backlight tooling not yet in scope. Hardware media/brightness keys (the spec table's `XF86` row) are likewise deferred, since they depend on audio and backlight tooling not yet in scope.

View File

@@ -50,7 +50,7 @@ in
settings = { settings = {
"$mod" = "SUPER"; "$mod" = "SUPER";
"$terminal" = "ghostty"; "$terminal" = "alacritty";
input = { input = {
kb_layout = "us"; kb_layout = "us";

View File

@@ -1,23 +1,19 @@
{ {
config, config,
lib, lib,
pkgs,
... ...
}: }:
# Ghostty as the desktop terminal. # Alacritty as the desktop terminal, a lightweight GPU renderer that opens
# fast on the laptop's integrated graphics.
let let
cfg = config.modules.desktop.terminal; cfg = config.modules.desktop.terminal;
user = config.user.name; user = config.user.name;
in in
{ {
options.modules.desktop.terminal.enable = lib.mkEnableOption "Ghostty as the desktop terminal"; options.modules.desktop.terminal.enable = lib.mkEnableOption "Alacritty as the desktop terminal";
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home-manager.users.${user}.programs.ghostty = { home-manager.users.${user}.home.packages = [ pkgs.alacritty ];
enable = true;
# Reuse a single process, so each window after the first opens instantly
# instead of paying a fresh GTK startup.
settings.gtk-single-instance = true;
};
}; };
} }