From f7b483f09181951f88068194b69fdd95a61e333c Mon Sep 17 00:00:00 2001 From: "Alexandre Cavalheiro S. Tiago da Silva" Date: Sun, 5 Apr 2026 13:04:59 -0300 Subject: [PATCH] feat: drop mako and waybar for caelestia (quickshell) --- assets/README.md | 4 - flake.lock | 68 +++++++ flake.nix | 5 + hosts/wizdesk/home-manager.nix | 2 +- modules/hyprland/home-manager.nix | 58 +++++- modules/hyprland/nixos.nix | 1 + modules/hyprland/scripts/start_services.nix | 32 ++- shared/README.md | 4 - shared/home-manager/common.nix | 4 - shared/home-manager/dotfiles/default.nix | 2 +- shared/home-manager/dotfiles/mako/config | 32 --- shared/home-manager/dotfiles/quickshell.nix | 40 ++++ shared/home-manager/dotfiles/waybar.nix | 205 -------------------- 13 files changed, 181 insertions(+), 276 deletions(-) delete mode 100644 shared/home-manager/dotfiles/mako/config create mode 100644 shared/home-manager/dotfiles/quickshell.nix delete mode 100644 shared/home-manager/dotfiles/waybar.nix diff --git a/assets/README.md b/assets/README.md index bb897d8..14ec49b 100644 --- a/assets/README.md +++ b/assets/README.md @@ -27,10 +27,6 @@ ![image](./screenshots/rofi.png) -### Waybar - -![image](./screenshots/waybar.png) - ### Emacs ![image](./screenshots/doomemacs.png) diff --git a/flake.lock b/flake.lock index c1f0b11..163f44e 100644 --- a/flake.lock +++ b/flake.lock @@ -53,6 +53,52 @@ "type": "github" } }, + "caelestia-cli": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772764582, + "narHash": "sha256-hSwjmpXHFqzSXrndVekA0IheKrbC7wi0IbfZTYwlmXw=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "4bcd42f482d038b98145b0b03388244b68b7d35d", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": "caelestia-cli", + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1773152543, + "narHash": "sha256-ggQuN+6m2fripGF9dI33HKrbZTPhIts+IJjvRqX9ODE=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "3e0360401bbbb0f640958998f6625495e5b3fdff", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, "clipboard-sync": { "inputs": { "nixpkgs": [ @@ -643,9 +689,31 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772925576, + "narHash": "sha256-mMoiXABDtkSJxCYDrkhJ/TrrJf5M46oUfIlJvv2gkZ0=", + "ref": "refs/heads/master", + "rev": "15a84097653593dd15fad59a56befc2b7bdc270d", + "revCount": 750, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { "blink-cmp": "blink-cmp", + "caelestia-shell": "caelestia-shell", "clipboard-sync": "clipboard-sync", "home-manager": "home-manager", "hydractify-bot": "hydractify-bot", diff --git a/flake.nix b/flake.nix index 4be8d77..d7e1710 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,11 @@ hydractify-bot.url = "github:hydractify/hydractify-bot"; blink-cmp.url = "github:Saghen/blink.cmp"; + + caelestia-shell = { + url = "github:caelestia-dots/shell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/hosts/wizdesk/home-manager.nix b/hosts/wizdesk/home-manager.nix index a213bf8..fb1fad5 100644 --- a/hosts/wizdesk/home-manager.nix +++ b/hosts/wizdesk/home-manager.nix @@ -135,7 +135,7 @@ }; # Enable hypridle - hypridle.enable = true; + hypridle.enable = false; # Add monitor configuration to hyprland extraConfig = # hyprlang diff --git a/modules/hyprland/home-manager.nix b/modules/hyprland/home-manager.nix index 411cd1f..b445e20 100644 --- a/modules/hyprland/home-manager.nix +++ b/modules/hyprland/home-manager.nix @@ -70,6 +70,7 @@ in xdg.configFile."hypr/hyprland.conf".text = # hyprlang '' source = $HOME/.config/hypr/frappe.conf + source = $HOME/.config/hypr/caelestia.conf ${cfg.extraConfig} # @@ -188,19 +189,17 @@ in # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod CTRL, F, fullscreenstate, -1 2 - bind = $mainMod CTRL, L, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy bind = $mainMod CTRL, P, exec, ~/.local/share/scripts/hyprland/screenshot_area.sh bind = $mainMod CTRL, V, pin bind = $mainMod SHIFT, F, fullscreen, 1 bind = $mainMod SHIFT, P, exec, ~/.local/share/scripts/hyprland/screenshot.sh bind = $mainMod, C, killactive - bind = $mainMod, E, exec, thunar + bind = $mainMod, E, exec, uwsm app -- thunar bind = $mainMod, F, fullscreen bind = $mainMod, M, exit bind = $mainMod, O, togglesplit # dwindle bind = $mainMod, P, pseudo # dwindle - bind = $mainMod, Q, exec, alacritty - bind = $mainMod, R, exec, rofi -show drun + bind = $mainMod, Q, exec, uwsm app -- alacritty bind = $mainMod, V, togglefloating # Move focus with mainMod + arrow keys @@ -311,5 +310,56 @@ in size = 50% 50% } ''; + + xdg.configFile."hypr/caelestia.conf".text = # hyprlang + '' + exec = hyprctl dispatch submap global + submap = global + + # ## Shell keybinds + # Launcher + bindi = Super, Super_L, global, caelestia:launcher + bindin = Super, catchall, global, caelestia:launcherInterrupt + bindin = Super, mouse:272, global, caelestia:launcherInterrupt + bindin = Super, mouse:273, global, caelestia:launcherInterrupt + bindin = Super, mouse:274, global, caelestia:launcherInterrupt + bindin = Super, mouse:275, global, caelestia:launcherInterrupt + bindin = Super, mouse:276, global, caelestia:launcherInterrupt + bindin = Super, mouse:277, global, caelestia:launcherInterrupt + bindin = Super, mouse_up, global, caelestia:launcherInterrupt + bindin = Super, mouse_down, global, caelestia:launcherInterrupt + + # Kill/restart + bindr = Ctrl+Super+Shift, R, exec, qs -c caelestia kill + bindr = Ctrl+Super+Alt, R, exec, qs -c caelestia kill; sleep .1; caelestia shell -d + + # Utilities + bindl = , Print, exec, uwsm app -- caelestia screenshot # Full screen capture > clipboard + bind = Super+Shift, S, global, caelestia:screenshotFreeze # Capture region (freeze) + bind = Super+Shift+Alt, S, global, caelestia:screenshot # Capture region + bind = Super+Alt, R, exec, uwsm app -- caelestia record -s # Record screen with sound + bind = Ctrl+Alt, R, exec, uwsm app -- caelestia record # Record screen + bind = Super+Shift+Alt, R, exec, uwsm app -- caelestia record -r # Record region + bind = Super+Shift, C, exec, uwsm app -- hyprpicker -a # Colour picker + + # Volume + bindl = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle + bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + bindl = Super+Shift, M, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + bindle = , XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ $volumeStep%+ + bindle = , XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ $volumeStep%- + + # Sleep + bind = Super+Shift, L, exec, systemctl suspend-then-hibernate + + # Clipboard and emoji picker + bind = Super+Ctrl, L, exec, pkill fuzzel || caelestia clipboard + bind = Super+Ctrl+Shift, L, exec, pkill fuzzel || caelestia clipboard -d + bind = Super, Period, exec, pkill fuzzel || caelestia emoji -p + bindl = Ctrl+Shift+Alt, V, exec, sleep 0.5s && ydotool type -d 1 "$(cliphist list | head -1 | cliphist decode)" # Alternate paste + + # Testing + bindl = Super+Alt, f12, exec, notify-send -u low -i dialog-information-symbolic 'Test notification' "Here's a really long message to test truncation and wrapping\nYou can middle click or flick this notification to dismiss it!" -a 'Shell' -A "Test1=I got it!" -A "Test2=Another action" + ''; }; } diff --git a/modules/hyprland/nixos.nix b/modules/hyprland/nixos.nix index de80852..d9bc944 100644 --- a/modules/hyprland/nixos.nix +++ b/modules/hyprland/nixos.nix @@ -13,6 +13,7 @@ in # Enable Hyprland programs.hyprland = { enable = true; + withUWSM = true; package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; diff --git a/modules/hyprland/scripts/start_services.nix b/modules/hyprland/scripts/start_services.nix index 48c465e..70f6a66 100644 --- a/modules/hyprland/scripts/start_services.nix +++ b/modules/hyprland/scripts/start_services.nix @@ -4,56 +4,46 @@ pkgs.writeShellScriptBin "start_services" '' # # Make sure xdg-desktop-portal-hyprland has access to what it needs # - dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & + dbus-update-activation-environment --systemd --all & # - # Start waybar. + # Start Caelestia (quickshell) # - waybar & - - - # - # Start wallpaper daemon - # - ~/.local/share/scripts/wallpaper.sh & - - # - # Start notification daemon. - # - mako & + uwsm app -- caelestia resizer -d & + uwsm app -- caelestia shell -d & # # Start polkit agent # - ${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1 & + uwsm app -- ${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1 & # # Start kwallet service # - kwalletd6 & + uwsm app -- kwalletd6 & # # Start kdeconnect daemon # - kdeconnectd & + uwsm app -- kdeconnectd & # # Start Fcitx5 # - fcitx5 & + uwsm app -- fcitx5 & # # Start the blueman applet for managing bluetooth devices # - blueman-applet & + uwsm app -- blueman-applet & # # Clipboard manager # - ${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store & + uwsm app -- ${pkgs.wl-clipboard}/bin/wl-paste --watch cliphist store & # # Service that syncs X11 and Wayland clipboards # - clipboard-sync + uwsm app -- clipboard-sync '' diff --git a/shared/README.md b/shared/README.md index c0143fe..241faa1 100644 --- a/shared/README.md +++ b/shared/README.md @@ -40,10 +40,6 @@ Alacritty & Fish: ![image](/assets/screenshots/alacritty-and-fish.png) -Waybar: - -![image](/assets/screenshots/waybar.png) - Rofi: ![image](/assets/screenshots/rofi.png) diff --git a/shared/home-manager/common.nix b/shared/home-manager/common.nix index 181e550..7635c96 100644 --- a/shared/home-manager/common.nix +++ b/shared/home-manager/common.nix @@ -16,9 +16,6 @@ recursive = true; }; - # Configuration for mako, a notification daemon. - ".config/mako".source = ./dotfiles/mako; - # Configure pipewire for microphone noise supression. ".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = '' context.modules = [ @@ -130,7 +127,6 @@ grim kdePackages.ark loupe - mako slurp swww diff --git a/shared/home-manager/dotfiles/default.nix b/shared/home-manager/dotfiles/default.nix index e08e113..691df82 100644 --- a/shared/home-manager/dotfiles/default.nix +++ b/shared/home-manager/dotfiles/default.nix @@ -8,9 +8,9 @@ ./git.nix ./mangohud.nix ./obs-studio.nix + ./quickshell.nix ./rofi ./spotify ./tmux - ./waybar.nix ]; } diff --git a/shared/home-manager/dotfiles/mako/config b/shared/home-manager/dotfiles/mako/config deleted file mode 100644 index 4e59b13..0000000 --- a/shared/home-manager/dotfiles/mako/config +++ /dev/null @@ -1,32 +0,0 @@ -anchor=bottom-right -background-color=#282a36 -border-color=#282a36 -border-radius=20 -border-size=2 -default-timeout=10000 -format=%s\n%b -group-by=summary -height=125 -icon-location=right -layer=top -margin=0,20,15 -markup=1 -max-icon-size=48 -padding=10,5,10 -text-color=#44475a -width=300 - -[grouped] -format=%s\n%b - -[mode=do-not-disturb] -invisible=1 - -[urgency=low] -border-color=#282a36 - -[urgency=normal] -border-color=#f1fa8c - -[urgency=high] -border-color=#ff5555 diff --git a/shared/home-manager/dotfiles/quickshell.nix b/shared/home-manager/dotfiles/quickshell.nix new file mode 100644 index 0000000..9de6aa6 --- /dev/null +++ b/shared/home-manager/dotfiles/quickshell.nix @@ -0,0 +1,40 @@ +{ caelestia-shell, ... }: + +{ + imports = [ + caelestia-shell.homeManagerModules.default + ]; + + programs.caelestia = { + enable = true; + + cli = { + enable = true; + }; + + settings = { + general = { + apps = { + terminal = [ "alacritty" ]; + }; + idle = { + lockBeforeSleep = false; + timeouts = [ ]; + }; + }; + + bar.status = { + showBattery = false; + }; + + # "Open" notification on clicking. + notifs.actionOnClick = true; + + services = { + useFahrenheit = false; + useFahrenheitPerformance = false; + useTwelveHourClock = false; + }; + }; + }; +} diff --git a/shared/home-manager/dotfiles/waybar.nix b/shared/home-manager/dotfiles/waybar.nix deleted file mode 100644 index 0f58e50..0000000 --- a/shared/home-manager/dotfiles/waybar.nix +++ /dev/null @@ -1,205 +0,0 @@ -{ ... }: -{ - programs.waybar = { - enable = true; - - settings = { - mainBar = { - layer = "top"; - margin = "10px 10px 0"; - height = 30; - - modules-left = [ "hyprland/workspaces" ]; - modules-center = [ "clock" ]; - modules-right = [ - "network" - "memory" - "cpu" - "temperature" - "battery" - "tray" - ]; - - "hyprland/workspaces" = { - format = "{icon}"; - - format-icons = { - active = ""; - default = ""; - empty = ""; - persistent = ""; - special = ""; - urgent = ""; - }; - }; - - clock = { - format = "{:%H:%M} "; - format-alt = "{:%A; %B %d, %Y (%R)} "; - tooltip-format = "{calendar}"; - calendar = { - mode = "month"; - mode-mon-col = 3; - weeks-pos = "right"; - on-scroll = 1; - on-click-right = "mode"; - format = { - months = "{}"; - days = "{}"; - weeks = "W{}"; - weekdays = "{}"; - today = "{}"; - }; - actions = { - on-click-backward = "tz_down"; - on-click-forward = "tz_up"; - on-click-right = "mode"; - on-scroll-down = "shift_down"; - on-scroll-up = "shift_up"; - }; - }; - }; - - network = { - interval = 5; - format = " {bandwidthUpBits} 󰇙 {bandwidthDownBits} "; - format-disconnected = " No connection"; - tooltip-format-wifi = " {essid} ({signalStrength}%)"; - }; - - memory = { - interval = 5; - format = " {percentage}%"; - states = { - warning = 70; - critical = 90; - }; - "tooltip-format" = " {used:0.1f}G/{total:0.1f}G"; - }; - - cpu = { - interval = 5; - tooltip = false; - format = " {usage}%"; - format-alt = " {load}"; - states = { - warning = 70; - critical = 90; - }; - }; - - temperature = { - critical-threshold = 90; - interval = 5; - format = "{icon} {temperatureC}°"; - format-icons = [ - "" - "" - "" - "" - "" - ]; - tooltip = false; - }; - - # Module configuration - battery = { - interval = 10; - states = { - warning = 30; - critical = 15; - }; - - format-time = "{H}:{M:02}"; - format = "{icon} {capacity}% ({time})"; - format-charging = " {capacity}% ({time})"; - format-charging-full = " {capacity}%"; - format-full = "{icon} {capacity}%"; - format-alt = "{icon} {power}W"; - format-icons = [ - "" - "" - "" - "" - "" - ]; - tooltip = false; - }; - - tray = { - icon-size = 18; - spacing = 10; - }; - }; - }; - - style = '' - /* Using https://github.com/catppuccin/catppuccin for color reference. */ - - /* Keyframes */ - @keyframes blink-critical { - to { - /*color: @white;*/ - background-color: @critical; - } - } - - * { - all: unset; - color: #c6d0f5; - font-family: "IBM Plex Sans", 'Courier New', Courier, monospace; - font-size: 14px; - } - - .modules-left, - .modules-right, - .modules-center { - padding: 0 20px; - border-radius: 10px; - background-color: rgba(48, 52, 70, 0.85); - } - - tooltip { - background-color: rgba(48, 52, 70, 0.85); - border-radius: 10px; - padding: 8px; - } - - tooltip label { - color: #c6d0f5; - } - - #workspaces { - margin-left: -5px; - padding-left: 0px; - } - - #workspaces button { - margin: 0 8px; - } - - #workspaces button:hover { - background: #414559; - border: none; - } - - #clock { - padding: 0 10px; - } - - #network, #cpu, #memory, #temperature { - margin: 0 8px; - } - - #tray { - margin-left: 8px; - } - - #tray menu { - background-color: rgba(48, 52, 70, 0.85); - border-radius: 10px; - padding: 8px; - } - ''; - }; -}