From 49de6db35449b99a8c7e9365b53585a2a5de43f5 Mon Sep 17 00:00:00 2001 From: Scott Scoble Date: Sat, 16 May 2026 21:49:30 -0700 Subject: [PATCH] clean desktop.nix with force=true on ghostty+zellij, source=hyprland.conf, numeric waybar icons --- home/desktop.nix | 217 ++++++++--------------------------------------- 1 file changed, 34 insertions(+), 183 deletions(-) diff --git a/home/desktop.nix b/home/desktop.nix index 326e32a..2c4fa37 100644 --- a/home/desktop.nix +++ b/home/desktop.nix @@ -69,172 +69,16 @@ # === Hyprland WM config === home.file.".config/hypr/hyprland.conf" = { force = true; - text = '' - monitor=,preferred,auto,1 - - # Environment - env = XCURSOR_SIZE,24 - env = XCURSOR_THEME,Bibata-Modern-Classic - env = GTK_THEME,adw-gtk3-dark - env = QT_QPA_PLATFORMTHEME,gtk2 - - # Autostart - exec-once = waybar - exec-once = dunst - exec-once = wl-paste --type text --watch cliphist store - exec-once = wl-paste --type image --watch cliphist store - exec-once = hypridle - - - # Input - input { - kb_layout = us - kb_options = caps:escape - follow_mouse = 1 - sensitivity = 0 - } - - input:touchpad { - natural_scroll = true - tap-to-click = true - } - - # Visual - general { - gaps_in = 6; gaps_out = 8; border_size = 2 - col.active_border = rgba(8ebdffee) rgba(8ebdffff) rgba(8ebdffee) rgba(8ebdffff) 45deg - col.inactive_border = rgba(333333aa) - layout = dwindle - } - decoration { - rounding = 8 - blur { enabled = true; size = 5; passes = 2; } - drop_shadow = true; shadow_range = 12; shadow_render_power = 2 - col.shadow = rgba(1a1a1aee) - } - animations { - enabled = true - bezier = easeOutQuint,0.23,1,0.32,1 - bezier = easeInOutCubic,0.65,0.05,0.36,1 - animation = windows,1,7,easeOutQuint,slide - animation = windowsOut,1,7,easeInOutCubic,slide - animation = fade,1,7,easeOutQuint - animation = workspaces,1,4,easeOutQuint,fade - } - - # Workspaces - workspace = 1, name:shell, persistent:true - workspace = 2, name:code, persistent:true - workspace = 3, name:web, persistent:true - workspace = 4, name:chat, persistent:true - workspace = 5, name:vault, persistent:true - workspace = 6, name:media - workspace = 7, name:7 - workspace = 8, name:8 - workspace = 9, name:9 - workspace = 10, name:sys - - # Keybinds - $mainMod = SUPER - - # Launch - bind = $mainMod, Return, exec, ghostty -e zellij - bind = $mainMod SHIFT, Return, exec, ghostty - bind = $mainMod, B, exec, firefox - bind = $mainMod, D, exec, rofi -show drun -show-icons - bind = $mainMod, Space, exec, rofi -show drun -show-icons - bind = $mainMod, V, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy - bind = $mainMod, N, exec, thunar - bind = $mainMod, L, exec, hyprlock - - # Window control - bind = $mainMod, Q, killactive - bind = $mainMod, F, fullscreen - bind = $mainMod, G, togglefloating - bind = $mainMod, P, pseudo - bind = $mainMod, T, pin - - # Focus (Vim-style) - bind = $mainMod, H, movefocus, l - bind = $mainMod, J, movefocus, d - bind = $mainMod, K, movefocus, u - bind = $mainMod, L, movefocus, r - - # Move windows - bind = $mainMod SHIFT, H, movewindow, l - bind = $mainMod SHIFT, J, movewindow, d - bind = $mainMod SHIFT, K, movewindow, u - bind = $mainMod SHIFT, L, movewindow, r - - # Resize - bind = $mainMod CTRL, H, resizeactive, -40 0 - bind = $mainMod CTRL, J, resizeactive, 0 40 - bind = $mainMod CTRL, K, resizeactive, 0 -40 - bind = $mainMod CTRL, L, resizeactive, 40 0 - - # Workspace switching - bind = $mainMod, 1, workspace, name:shell - bind = $mainMod, 2, workspace, name:code - bind = $mainMod, 3, workspace, name:web - bind = $mainMod, 4, workspace, name:chat - bind = $mainMod, 5, workspace, name:vault - bind = $mainMod, 6, workspace, name:media - bind = $mainMod, 7, workspace, name:7 - bind = $mainMod, 8, workspace, name:8 - bind = $mainMod, 9, workspace, name:9 - bind = $mainMod, 0, workspace, name:sys - - # Move to workspace - bind = $mainMod SHIFT, 1, movetoworkspace, name:shell - bind = $mainMod SHIFT, 2, movetoworkspace, name:code - bind = $mainMod SHIFT, 3, movetoworkspace, name:web - bind = $mainMod SHIFT, 4, movetoworkspace, name:chat - bind = $mainMod SHIFT, 5, movetoworkspace, name:vault - bind = $mainMod SHIFT, 6, movetoworkspace, name:media - bind = $mainMod SHIFT, 7, movetoworkspace, name:7 - bind = $mainMod SHIFT, 8, movetoworkspace, name:8 - bind = $mainMod SHIFT, 9, movetoworkspace, name:9 - bind = $mainMod SHIFT, 0, movetoworkspace, name:sys - - # Scroll workspace - bind = $mainMod, mouse_down, workspace, e+1 - bind = $mainMod, mouse_up, workspace, e-1 - - # Screenshot - bind = $mainMod, S, exec, grim -g "$(slurp)" - | swappy -f - - bind = $mainMod SHIFT, S, exec, grim - | swappy -f - - - # Media keys - bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ - bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- - bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - bindel = , XF86MonBrightnessUp, exec, brightnessctl set 5%+ - bindel = , XF86MonBrightnessDown, exec, brightnessctl set 5%- - - # Session - bind = $mainMod SHIFT, Q, exec, hyprctl dispatch exit - bind = $mainMod SHIFT, R, exec, hyprctl reload - exec-once = awww img ~/wallpapers/default.jpg - - # Window rules - windowrulev2 = float, class:(pavucontrol) - windowrulev2 = float, class:(firefox), title:PIP - windowrulev2 = float, title:(Authentication Required) - windowrulev2 = size 75% 75%,class:(pavucontrol) - - # Auto-send to workspaces - windowrulev2 = workspace name:code, class:(code-oss|Code|jetbrains-.*|nvim) - windowrulev2 = workspace name:web, class:(firefox|chromium-browser|google-chrome) - windowrulev2 = workspace name:chat, class:(discord|Slack|TelegramDesktop) - windowrulev2 = workspace name:shell, class:(ghostty|Zellij|Alacritty) - ''; + source = ./hyprland.conf; }; # === Ghostty config === - home.file.".config/ghostty/config".text = '' + home.file.".config/ghostty/config" = { + force = true; + text = '' font-family = JetBrainsMono Nerd Font font-size = 13 - theme = catppuccin-mocha + theme = Catppuccin Mocha background-opacity = 0.9 window-padding-x = 8 window-padding-y = 4 @@ -243,9 +87,12 @@ shell-integration = zsh gtk-single-instance = true ''; + }; # === Zellij config === - home.file.".config/zellij/config.kdl".text = '' + home.file.".config/zellij/config.kdl" = { + force = true; + text = '' theme "catppuccin-mocha" default_shell "zsh" pane_frames false @@ -275,6 +122,7 @@ } } ''; + }; # === Hyprlock === home.file.".config/hypr/hyprlock.conf".text = '' @@ -303,38 +151,41 @@ ''; # === Waybar config === - home.file.".config/waybar/config.jsonc".text = builtins.toJSON { - layer = "top"; position = "top"; height = 32; spacing = 4; margin = "6 8 0 8"; - modules-left = [ "hyprland/workspaces" ]; - modules-center = [ "clock" ]; - modules-right = [ "tray" "pulseaudio" "backlight" "battery" "network" "cpu" "memory" ]; + home.file.".config/waybar/config.jsonc" = { + force = true; + text = builtins.toJSON { + layer = "top"; position = "top"; height = 32; spacing = 4; margin = "6 8 0 8"; + modules-left = [ "hyprland/workspaces" ]; + modules-center = [ "clock" ]; + modules-right = [ "tray" "pulseaudio" "backlight" "battery" "network" "cpu" "memory" ]; - "hyprland/workspaces" = { + "hyprland/workspaces" = { format = "{icon}"; format-icons = { - shell = "󰆍"; code = "󰨞"; web = "󰖟"; chat = "󰭻"; vault = "󰠮"; - media = "󰎆"; "7" = "󰎇"; "8" = "󰎈"; "9" = "󰎉"; sys = "󰒓"; default = "󰊌"; + "1" = "󰆍"; "2" = "󰨞"; "3" = "󰖟"; "4" = "󰭻"; "5" = "󰠮"; + media = "󰎆"; "7" = "󰎇"; "8" = "󰎈"; "9" = "󰎉"; sys = "󰒓"; default = "󰊌"; }; - persistent_workspaces = { "1" = ["shell"]; "2" = ["code"]; "3" = ["web"]; "4" = ["chat"]; "5" = ["vault"]; }; - }; - clock = { format = "{:%a %b %d %H:%M}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; - cpu = { format = " {usage}%"; }; - memory = { format = "󰍛 {}%"; }; - backlight = { format = "{icon} {percent}%"; format-icons = [ "󰃝" "󰃞" "󰃟" "󰃠" ]; }; - battery = { + persistent_workspaces = { "1" = []; "2" = []; "3" = []; "4" = []; "5" = []; }; + }; + clock = { format = "{:%a %b %d %H:%M}"; tooltip-format = "{:%Y %B}\n{calendar}"; }; + cpu = { format = " {usage}%"; }; + memory = { format = "󰍛 {}%"; }; + backlight = { format = "{icon} {percent}%"; format-icons = [ "󰃝" "󰃞" "󰃟" "󰃠" ]; }; + battery = { format = "{icon} {capacity}%"; format-icons = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; format-charging = "󰂄 {capacity}%"; - }; - network = { + }; + network = { format-wifi = "󰖩 {signalStrength}%"; format-ethernet = "󰈀"; format-disconnected = "⚠"; tooltip-format = "{ifname} via {gwaddr}"; - }; - pulseaudio = { + }; + pulseaudio = { format = "{icon} {volume}%"; format-bluetooth = "{icon}󰂯 {volume}%"; format-muted = "󰝟"; format-icons.default = [ "󰕿" "󰖀" "󰕾" ]; on-click = "pavucontrol"; - }; - tray.spacing = 10; + }; + tray.spacing = 10; + }; }; # === Waybar style ===