feat: drop mako and waybar for caelestia (quickshell)

This commit is contained in:
Alexandre Cavalheiro S. Tiago da Silva 2026-04-05 13:04:59 -03:00
parent c788d33a0a
commit f7b483f091
Signed by: wizardlink
GPG key ID: A5767B54367CFBDF
13 changed files with 181 additions and 276 deletions

View file

@ -27,10 +27,6 @@
![image](./screenshots/rofi.png) ![image](./screenshots/rofi.png)
### Waybar
![image](./screenshots/waybar.png)
### Emacs ### Emacs
![image](./screenshots/doomemacs.png) ![image](./screenshots/doomemacs.png)

68
flake.lock generated
View file

@ -53,6 +53,52 @@
"type": "github" "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": { "clipboard-sync": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -643,9 +689,31 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"blink-cmp": "blink-cmp", "blink-cmp": "blink-cmp",
"caelestia-shell": "caelestia-shell",
"clipboard-sync": "clipboard-sync", "clipboard-sync": "clipboard-sync",
"home-manager": "home-manager", "home-manager": "home-manager",
"hydractify-bot": "hydractify-bot", "hydractify-bot": "hydractify-bot",

View file

@ -23,6 +23,11 @@
hydractify-bot.url = "github:hydractify/hydractify-bot"; hydractify-bot.url = "github:hydractify/hydractify-bot";
blink-cmp.url = "github:Saghen/blink.cmp"; blink-cmp.url = "github:Saghen/blink.cmp";
caelestia-shell = {
url = "github:caelestia-dots/shell";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = outputs =

View file

@ -135,7 +135,7 @@
}; };
# Enable hypridle # Enable hypridle
hypridle.enable = true; hypridle.enable = false;
# Add monitor configuration to hyprland # Add monitor configuration to hyprland
extraConfig = # hyprlang extraConfig = # hyprlang

View file

@ -70,6 +70,7 @@ in
xdg.configFile."hypr/hyprland.conf".text = # hyprlang xdg.configFile."hypr/hyprland.conf".text = # hyprlang
'' ''
source = $HOME/.config/hypr/frappe.conf source = $HOME/.config/hypr/frappe.conf
source = $HOME/.config/hypr/caelestia.conf
${cfg.extraConfig} ${cfg.extraConfig}
# #
@ -188,19 +189,17 @@ in
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod CTRL, F, fullscreenstate, -1 2 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, P, exec, ~/.local/share/scripts/hyprland/screenshot_area.sh
bind = $mainMod CTRL, V, pin bind = $mainMod CTRL, V, pin
bind = $mainMod SHIFT, F, fullscreen, 1 bind = $mainMod SHIFT, F, fullscreen, 1
bind = $mainMod SHIFT, P, exec, ~/.local/share/scripts/hyprland/screenshot.sh bind = $mainMod SHIFT, P, exec, ~/.local/share/scripts/hyprland/screenshot.sh
bind = $mainMod, C, killactive bind = $mainMod, C, killactive
bind = $mainMod, E, exec, thunar bind = $mainMod, E, exec, uwsm app -- thunar
bind = $mainMod, F, fullscreen bind = $mainMod, F, fullscreen
bind = $mainMod, M, exit bind = $mainMod, M, exit
bind = $mainMod, O, togglesplit # dwindle bind = $mainMod, O, togglesplit # dwindle
bind = $mainMod, P, pseudo # dwindle bind = $mainMod, P, pseudo # dwindle
bind = $mainMod, Q, exec, alacritty bind = $mainMod, Q, exec, uwsm app -- alacritty
bind = $mainMod, R, exec, rofi -show drun
bind = $mainMod, V, togglefloating bind = $mainMod, V, togglefloating
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
@ -311,5 +310,56 @@ in
size = 50% 50% 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"
'';
}; };
} }

View file

@ -13,6 +13,7 @@ in
# Enable Hyprland # Enable Hyprland
programs.hyprland = { programs.hyprland = {
enable = true; enable = true;
withUWSM = true;
package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; portalPackage = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;

View file

@ -4,56 +4,46 @@ pkgs.writeShellScriptBin "start_services" ''
# #
# Make sure xdg-desktop-portal-hyprland has access to what it needs # 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 & uwsm app -- caelestia resizer -d &
uwsm app -- caelestia shell -d &
#
# Start wallpaper daemon
#
~/.local/share/scripts/wallpaper.sh &
#
# Start notification daemon.
#
mako &
# #
# Start polkit agent # 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 # Start kwallet service
# #
kwalletd6 & uwsm app -- kwalletd6 &
# #
# Start kdeconnect daemon # Start kdeconnect daemon
# #
kdeconnectd & uwsm app -- kdeconnectd &
# #
# Start Fcitx5 # Start Fcitx5
# #
fcitx5 & uwsm app -- fcitx5 &
# #
# Start the blueman applet for managing bluetooth devices # Start the blueman applet for managing bluetooth devices
# #
blueman-applet & uwsm app -- blueman-applet &
# #
# Clipboard manager # 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 # Service that syncs X11 and Wayland clipboards
# #
clipboard-sync uwsm app -- clipboard-sync
'' ''

View file

@ -40,10 +40,6 @@ Alacritty & Fish:
![image](/assets/screenshots/alacritty-and-fish.png) ![image](/assets/screenshots/alacritty-and-fish.png)
Waybar:
![image](/assets/screenshots/waybar.png)
Rofi: Rofi:
![image](/assets/screenshots/rofi.png) ![image](/assets/screenshots/rofi.png)

View file

@ -16,9 +16,6 @@
recursive = true; recursive = true;
}; };
# Configuration for mako, a notification daemon.
".config/mako".source = ./dotfiles/mako;
# Configure pipewire for microphone noise supression. # Configure pipewire for microphone noise supression.
".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = '' ".config/pipewire/pipewire.conf.d/99-input-denoising.conf".text = ''
context.modules = [ context.modules = [
@ -130,7 +127,6 @@
grim grim
kdePackages.ark kdePackages.ark
loupe loupe
mako
slurp slurp
swww swww

View file

@ -8,9 +8,9 @@
./git.nix ./git.nix
./mangohud.nix ./mangohud.nix
./obs-studio.nix ./obs-studio.nix
./quickshell.nix
./rofi ./rofi
./spotify ./spotify
./tmux ./tmux
./waybar.nix
]; ];
} }

View file

@ -1,32 +0,0 @@
anchor=bottom-right
background-color=#282a36
border-color=#282a36
border-radius=20
border-size=2
default-timeout=10000
format=<span font="IBM Plex Serif weight=325 Italic" size="12288">%s</span>\n<span font="IBM Plex Serif weight=325" size="12288">%b</span>
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=<span font="IBM Plex Serif weight=325 Italic" size="12288">%s</span>\n<span font="IBM Plex Serif weight=325" size="12288">%b</span>
[mode=do-not-disturb]
invisible=1
[urgency=low]
border-color=#282a36
[urgency=normal]
border-color=#f1fa8c
[urgency=high]
border-color=#ff5555

View file

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

View file

@ -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 = "<tt><small>{calendar}</small></tt>";
calendar = {
mode = "month";
mode-mon-col = 3;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
months = "<span color='#e5c890'><b>{}</b></span>";
days = "<span color='#c6d0f5'><b>{}</b></span>";
weeks = "<span color='#81c8be'><b>W{}</b></span>";
weekdays = "<span color='#ef9f76'><b>{}</b></span>";
today = "<span color='#a6d189'><b><u>{}</u></b></span>";
};
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;
}
'';
};
}