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 @@

-### Waybar
-
-
-
### Emacs

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:

-Waybar:
-
-
-
Rofi:

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;
- }
- '';
- };
-}