feat(hyprland): add modules
This commit is contained in:
parent
db0ea6832b
commit
755dff4a9e
@ -104,6 +104,7 @@
|
|||||||
self.overlaysModule
|
self.overlaysModule
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
./modules/common.nix
|
./modules/common.nix
|
||||||
|
./modules/hyprland.nix
|
||||||
./modules/containers.nix
|
./modules/containers.nix
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
|
39
modules/hyprland.nix
Normal file
39
modules/hyprland.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.hyprland;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# Theme
|
||||||
|
adw-gtk3
|
||||||
|
|
||||||
|
# Greeter
|
||||||
|
cage
|
||||||
|
greetd.gtkgreet
|
||||||
|
|
||||||
|
# Applications
|
||||||
|
gnome.nautilus
|
||||||
|
gnome.sushi
|
||||||
|
gnome.eog
|
||||||
|
gnome.totem
|
||||||
|
gnome.cheese
|
||||||
|
gnome.file-roller
|
||||||
|
gnome.gnome-weather
|
||||||
|
gnome.gnome-contacts
|
||||||
|
gnome.gnome-calendar
|
||||||
|
gnome.gnome-screenshot
|
||||||
|
gnome.gnome-dictionary
|
||||||
|
gnome.gnome-font-viewer
|
||||||
|
gnome.gnome-system-monitor
|
||||||
|
];
|
||||||
|
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = "cage -s -- gtkgreet --command=Hyprland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -3,9 +3,10 @@
|
|||||||
../../modules/dev.nix
|
../../modules/dev.nix
|
||||||
../../modules/firefox.nix
|
../../modules/firefox.nix
|
||||||
../../modules/fonts.nix
|
../../modules/fonts.nix
|
||||||
|
../../modules/foot.nix
|
||||||
../../modules/git.nix
|
../../modules/git.nix
|
||||||
../../modules/git_nixos.nix
|
../../modules/git_nixos.nix
|
||||||
../../modules/gnome.nix
|
../../modules/hyprland.nix
|
||||||
../../modules/nvim.nix
|
../../modules/nvim.nix
|
||||||
../../modules/vscode.nix
|
../../modules/vscode.nix
|
||||||
../../modules/zsh.nix
|
../../modules/zsh.nix
|
||||||
|
104
user/modules/hyprland.nix
Normal file
104
user/modules/hyprland.nix
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
./waybar
|
||||||
|
./wofi
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pavucontrol
|
||||||
|
swaynotificationcenter
|
||||||
|
];
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.hyprland;
|
||||||
|
settings = {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 10;
|
||||||
|
};
|
||||||
|
input = {
|
||||||
|
follow_mouse = 2;
|
||||||
|
};
|
||||||
|
exec-once = [
|
||||||
|
"hyprctl setcursor Adwaita 24"
|
||||||
|
"waybar"
|
||||||
|
"swaync"
|
||||||
|
];
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
# Program launcher
|
||||||
|
"$mod, SPACE, exec, wofi --show drun"
|
||||||
|
# Program shortcuts
|
||||||
|
"$mod, F, exec, firefox"
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"$mod, T, exec, foot"
|
||||||
|
", Print, exec, grimblast copy area"
|
||||||
|
# Windows
|
||||||
|
"$mod, H, movefocus, l"
|
||||||
|
"$mod, J, movefocus, d"
|
||||||
|
"$mod, K, movefocus, u"
|
||||||
|
"$mod, L, movefocus, r"
|
||||||
|
# Moving windows
|
||||||
|
"$mod SHIFT, H, movewindow, l"
|
||||||
|
"$mod SHIFT, J, movewindow, d"
|
||||||
|
"$mod SHIFT, K, movewindow, u"
|
||||||
|
"$mod SHIFT, L, movewindow, r"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# workspaces
|
||||||
|
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
x: let
|
||||||
|
ws = let
|
||||||
|
c = (x + 1) / 10;
|
||||||
|
in
|
||||||
|
builtins.toString (x + 1 - (c * 10));
|
||||||
|
in [
|
||||||
|
"$mod, ${ws}, workspace, ${toString (x + 1)}"
|
||||||
|
"$mod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
# will switch to a submap called resize
|
||||||
|
bind=$mod,R,submap,resize
|
||||||
|
|
||||||
|
# will start a submap called "resize"
|
||||||
|
submap=resize
|
||||||
|
|
||||||
|
# sets repeatable binds for resizing the active window
|
||||||
|
binde=,h,resizeactive,-10 0
|
||||||
|
binde=,j,resizeactive,0 10
|
||||||
|
binde=,k,resizeactive,0 -10
|
||||||
|
binde=,l,resizeactive,10 0
|
||||||
|
|
||||||
|
# use reset to go back to the global submap
|
||||||
|
bind=,escape,submap,reset
|
||||||
|
|
||||||
|
# will reset the submap, meaning end the current one and return to the global one
|
||||||
|
submap=reset
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
font.name = "Inter 11";
|
||||||
|
theme = {
|
||||||
|
name = "adw-gtk3-dark";
|
||||||
|
package = pkgs.adw-gtk3;
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
name = "Papirus";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
cursorTheme = {
|
||||||
|
name = "Adwaita";
|
||||||
|
package = pkgs.gnome.adwaita-icon-theme;
|
||||||
|
size = 24;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
59
user/modules/waybar/default.nix
Normal file
59
user/modules/waybar/default.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkMerge;
|
||||||
|
|
||||||
|
theme = builtins.readFile ./styles/catppuccin.css;
|
||||||
|
style = builtins.readFile ./styles/style.css;
|
||||||
|
notificationsStyle = builtins.readFile ./styles/notifications.css;
|
||||||
|
powerStyle = builtins.readFile ./styles/power.css;
|
||||||
|
statsStyle = builtins.readFile ./styles/stats.css;
|
||||||
|
workspacesStyle = builtins.readFile ./styles/workspaces.css;
|
||||||
|
|
||||||
|
custom-modules = import ./modules/custom-modules.nix {inherit config lib pkgs;};
|
||||||
|
default-modules = import ./modules/default-modules.nix {inherit lib pkgs;};
|
||||||
|
group-modules = import ./modules/group-modules.nix;
|
||||||
|
hyprland-modules = import ./modules/hyprland-modules.nix {inherit config lib;};
|
||||||
|
|
||||||
|
allModules = mkMerge [
|
||||||
|
custom-modules
|
||||||
|
default-modules
|
||||||
|
group-modules
|
||||||
|
hyprland-modules
|
||||||
|
];
|
||||||
|
in {
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
style = "${theme}${style}${notificationsStyle}${powerStyle}${statsStyle}${workspacesStyle}";
|
||||||
|
settings = {
|
||||||
|
mainBar = mkMerge [
|
||||||
|
{
|
||||||
|
name = "main";
|
||||||
|
"margin-top" = 10;
|
||||||
|
"margin-left" = 10;
|
||||||
|
"margin-right" = 10;
|
||||||
|
layer = "top";
|
||||||
|
# Choose the order of the modules
|
||||||
|
"modules-left" = [
|
||||||
|
"group/power"
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
"modules-center" = [
|
||||||
|
"clock"
|
||||||
|
];
|
||||||
|
"modules-right" = [
|
||||||
|
"group/tray-drawer"
|
||||||
|
"group/stats-drawer"
|
||||||
|
"group/notifications"
|
||||||
|
"hyprland/submap"
|
||||||
|
"custom/weather"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
allModules
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
107
user/modules/waybar/modules/custom-modules.nix
Normal file
107
user/modules/waybar/modules/custom-modules.nix
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
{ config
|
||||||
|
, lib
|
||||||
|
, pkgs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib) getExe getExe';
|
||||||
|
|
||||||
|
githubHelper = pkgs.writeShellScriptBin "githubHelper" /* bash */ ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
NOTIFICATIONS="$(${getExe pkgs.gh} api notifications)"
|
||||||
|
COUNT="$(echo "$NOTIFICATIONS" | ${getExe pkgs.jq} 'length')"
|
||||||
|
|
||||||
|
echo '{"text":'"$COUNT"',"tooltip":"'"$COUNT"' Notifications","class":""}'
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
"custom/ellipses" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/github" = {
|
||||||
|
"format" = " {}";
|
||||||
|
"return-type" = "json";
|
||||||
|
"interval" = 60;
|
||||||
|
"exec" = "${getExe githubHelper}";
|
||||||
|
"on-click" = "${getExe' pkgs.coreutils "sleep"} 0.1 && ${getExe' pkgs.xdg-utils "xdg-open"} https://github.com/notifications";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/lock" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
"on-click" = "${getExe config.programs.swaylock.package}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/media" = {
|
||||||
|
"format" = "{icon} {}";
|
||||||
|
"return-type" = "json";
|
||||||
|
"max-length" = 40;
|
||||||
|
"format-icons" = {
|
||||||
|
"spotify" = "";
|
||||||
|
"default" = "🎜";
|
||||||
|
};
|
||||||
|
"escape" = true;
|
||||||
|
"exec" = "$HOME/.config/waybar/mediaplayer.py 2> /dev/null";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/notification" = {
|
||||||
|
"tooltip" = true;
|
||||||
|
"format" = "{icon} {}";
|
||||||
|
"format-icons" = {
|
||||||
|
"notification" = "<span foreground='red'><sup></sup></span>";
|
||||||
|
"none" = "";
|
||||||
|
"dnd-notification" = "<span foreground='red'><sup></sup></span>";
|
||||||
|
"dnd-none" = "";
|
||||||
|
"inhibited-notification" = "<span foreground='red'><sup></sup></span>";
|
||||||
|
"inhibited-none" = "";
|
||||||
|
"dnd-inhibited-notification" = "<span foreground='red'><sup></sup></span>";
|
||||||
|
"dnd-inhibited-none" = "";
|
||||||
|
};
|
||||||
|
"return-type" = "json";
|
||||||
|
"exec-if" = "which ${getExe' pkgs.swaynotificationcenter "swaync-client"}";
|
||||||
|
"exec" = "${getExe' pkgs.swaynotificationcenter "swaync-client"} -swb";
|
||||||
|
"on-click" = "${getExe' pkgs.coreutils "sleep"} 0.1 && ${getExe' pkgs.swaynotificationcenter "swaync-client"} -t -sw";
|
||||||
|
"on-click-right" = "${getExe' pkgs.coreutils "sleep"} 0.1 && ${getExe' pkgs.swaynotificationcenter "swaync-client"} -d -sw";
|
||||||
|
"escape" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/power" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
"on-click" = "shutdown now";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/reboot" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
"on-click" = "reboot";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/separator-right" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/separator-left" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/weather" = {
|
||||||
|
"exec" = "${getExe pkgs.wttrbar} --location $(${getExe pkgs.jq} -r '.wttr | (.location)' ~/weather_config.json) --fahrenheit --main-indicator temp_F";
|
||||||
|
"return-type" = "json";
|
||||||
|
"format" = "{}";
|
||||||
|
"tooltip" = true;
|
||||||
|
"interval" = 3600;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/wlogout" = {
|
||||||
|
"format" = "";
|
||||||
|
"interval" = "once";
|
||||||
|
"tooltip" = false;
|
||||||
|
"on-click" = "${getExe' pkgs.coreutils "sleep"} 0.1 && ${getExe pkgs.wlogout} -c 5 -r 5 -p layer-shell";
|
||||||
|
};
|
||||||
|
}
|
166
user/modules/waybar/modules/default-modules.nix
Normal file
166
user/modules/waybar/modules/default-modules.nix
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) getExe getExe';
|
||||||
|
in {
|
||||||
|
"clock" = {
|
||||||
|
"tooltip-format" = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||||
|
"format" = "{:%A, %b %d %I:%M %p }";
|
||||||
|
"format-alt" = "{:%Y-%m-%d}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
"format" = " {usage}%";
|
||||||
|
"tooltip" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"disk" = {
|
||||||
|
"format" = " {percentage_used}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"idle_inhibitor" = {
|
||||||
|
"format" = "{icon} ";
|
||||||
|
"format-icons" = {
|
||||||
|
"activated" = "";
|
||||||
|
"deactivated" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"keyboard-state" = {
|
||||||
|
"numlock" = true;
|
||||||
|
"capslock" = true;
|
||||||
|
"format" = "{icon} {name}";
|
||||||
|
"format-icons" = {
|
||||||
|
"locked" = "";
|
||||||
|
"unlocked" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"memory" = {
|
||||||
|
"format" = " {}%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"mpris" = {
|
||||||
|
"format" = "{player_icon} {status_icon} {dynamic}";
|
||||||
|
"format-paused" = "{player_icon} {status_icon} <i>{dynamic}</i>";
|
||||||
|
"max-length" = 45;
|
||||||
|
"player-icons" = {
|
||||||
|
"chromium" = "";
|
||||||
|
"default" = "";
|
||||||
|
"firefox" = "";
|
||||||
|
"mopidy" = "";
|
||||||
|
"mpv" = "";
|
||||||
|
"spotify" = "";
|
||||||
|
};
|
||||||
|
"status-icons" = {
|
||||||
|
"paused" = "";
|
||||||
|
"playing" = "";
|
||||||
|
"stopped" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"mpd" = {
|
||||||
|
"format" = "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ";
|
||||||
|
"format-disconnected" = "Disconnected ";
|
||||||
|
"format-stopped" = "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ";
|
||||||
|
"unknown-tag" = "N/A";
|
||||||
|
"interval" = 2;
|
||||||
|
"consume-icons" = {
|
||||||
|
"on" = " ";
|
||||||
|
};
|
||||||
|
"random-icons" = {
|
||||||
|
"off" = "<span color=\"#f53c3c\"></span> ";
|
||||||
|
"on" = " ";
|
||||||
|
};
|
||||||
|
"repeat-icons" = {
|
||||||
|
"on" = " ";
|
||||||
|
};
|
||||||
|
"single-icons" = {
|
||||||
|
"on" = "1 ";
|
||||||
|
};
|
||||||
|
"state-icons" = {
|
||||||
|
"paused" = "";
|
||||||
|
"playing" = "";
|
||||||
|
};
|
||||||
|
"tooltip-format" = "MPD (connected)";
|
||||||
|
"tooltip-format-disconnected" = "MPD (disconnected)";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
"interval" = 1;
|
||||||
|
"format-wifi" = " {bandwidthDownBytes} {bandwidthUpBytes}";
|
||||||
|
"format-ethernet" = " {bandwidthDownBytes} {bandwidthUpBytes}";
|
||||||
|
"tooltip-format" = " {ifname} via {gwaddr}";
|
||||||
|
"format-linked" = " {ifname} (No IP)";
|
||||||
|
"format-disconnected" = " Disconnected";
|
||||||
|
"format-alt" = "{ifname}: {ipaddr}/{cidr}";
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio" = {
|
||||||
|
"format" = "{volume}% {icon}";
|
||||||
|
"format-bluetooth" = "{volume}% {icon}";
|
||||||
|
"format-muted" = "";
|
||||||
|
"format-icons" = {
|
||||||
|
"headphone" = "";
|
||||||
|
"hands-free" = "";
|
||||||
|
"headset" = "";
|
||||||
|
"phone" = "";
|
||||||
|
"portable" = "";
|
||||||
|
"car" = "";
|
||||||
|
"default" = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"scroll-step" = 1;
|
||||||
|
"on-click" = "pavucontrol";
|
||||||
|
"ignored-sinks" = [
|
||||||
|
"Easy Effects Sink"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio/slider" = {
|
||||||
|
"min" = 0;
|
||||||
|
"max" = 100;
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
};
|
||||||
|
|
||||||
|
"temperature" = {
|
||||||
|
"hwmon-path-abs" = "/sys/devices/pci0000:00/0000:00:18.3/hwmon";
|
||||||
|
"input-filename" = "temp3_input";
|
||||||
|
"critical-threshold" = 80;
|
||||||
|
"format-critical" = "{temperatureC}°C {icon}";
|
||||||
|
"format" = "{icon} {temperatureC}°C";
|
||||||
|
"format-icons" = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
"interval" = "5";
|
||||||
|
};
|
||||||
|
|
||||||
|
"tray" = {
|
||||||
|
"spacing" = 10;
|
||||||
|
};
|
||||||
|
|
||||||
|
"user" = {
|
||||||
|
"format" = "{user}";
|
||||||
|
"interval" = 60;
|
||||||
|
"height" = 30;
|
||||||
|
"width" = 30;
|
||||||
|
"icon" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"wireplumber" = {
|
||||||
|
"format" = "{volume}% {icon}";
|
||||||
|
"format-muted" = "";
|
||||||
|
"on-click" = "${getExe' pkgs.coreutils "sleep"} 0.1 && ${getExe pkgs.helvum}";
|
||||||
|
"format-icons" = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
84
user/modules/waybar/modules/group-modules.nix
Normal file
84
user/modules/waybar/modules/group-modules.nix
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"group/audio" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"drawer" = {
|
||||||
|
"transition-duration" = 500;
|
||||||
|
"transition-left-to-right" = false;
|
||||||
|
};
|
||||||
|
"modules" = [
|
||||||
|
"pulseaudio"
|
||||||
|
"pulseaudio/slider"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/power" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"drawer" = {
|
||||||
|
"transition-duration" = 500;
|
||||||
|
"children-class" = "not-power";
|
||||||
|
"transition-left-to-right" = false;
|
||||||
|
};
|
||||||
|
"modules" = [
|
||||||
|
"custom/wlogout"
|
||||||
|
# "custom/quit"
|
||||||
|
# "custom/lock"
|
||||||
|
# "custom/reboot"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/notifications" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"modules" = [
|
||||||
|
"idle_inhibitor"
|
||||||
|
"custom/notification"
|
||||||
|
"custom/github"
|
||||||
|
"group/audio"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/tray" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"modules" = [
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/stats" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"modules" = [
|
||||||
|
"network"
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"disk"
|
||||||
|
"temperature"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/stats-drawer" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"drawer" = {
|
||||||
|
"transition-duration" = 500;
|
||||||
|
"transition-left-to-right" = false;
|
||||||
|
};
|
||||||
|
"modules" = [
|
||||||
|
"custom/separator-right"
|
||||||
|
"network"
|
||||||
|
"cpu"
|
||||||
|
"memory"
|
||||||
|
"disk"
|
||||||
|
"temperature"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/tray-drawer" = {
|
||||||
|
"orientation" = "horizontal";
|
||||||
|
"drawer" = {
|
||||||
|
"transition-duration" = 500;
|
||||||
|
"transition-left-to-right" = true;
|
||||||
|
};
|
||||||
|
"modules" = [
|
||||||
|
"custom/separator-right"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
95
user/modules/waybar/modules/hyprland-modules.nix
Normal file
95
user/modules/waybar/modules/hyprland-modules.nix
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) getExe';
|
||||||
|
in {
|
||||||
|
"custom/quit" = {
|
||||||
|
"format" = "";
|
||||||
|
"tooltip" = false;
|
||||||
|
"on-click" = "${getExe' config.wayland.windowManager.hyprland.package "hyprctl"} dispatch exit";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/submap" = {
|
||||||
|
"format" = "✌️ {}";
|
||||||
|
"max-length" = 8;
|
||||||
|
"tooltip" = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/window" = {
|
||||||
|
"format" = "{}";
|
||||||
|
"separate-outputs" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
"all-outputs" = false;
|
||||||
|
"active-only" = "false";
|
||||||
|
"on-scroll-up" = "${getExe' config.wayland.windowManager.hyprland.package "hyprctl"} dispatch workspace e+1";
|
||||||
|
"on-scroll-down" = "${getExe' config.wayland.windowManager.hyprland.package "hyprctl"} dispatch workspace e-1";
|
||||||
|
"format" = "{icon} {windows}";
|
||||||
|
"format-icons" = {
|
||||||
|
"1" = "";
|
||||||
|
"2" = "";
|
||||||
|
"3" = "";
|
||||||
|
"4" = "";
|
||||||
|
"5" = "";
|
||||||
|
"6" = "";
|
||||||
|
"7" = "";
|
||||||
|
"8" = "";
|
||||||
|
"9" = "";
|
||||||
|
"10" = "";
|
||||||
|
"urgent" = "";
|
||||||
|
"default" = "";
|
||||||
|
"empty" = "";
|
||||||
|
};
|
||||||
|
"persistent-workspaces" = {
|
||||||
|
"*" = [
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
];
|
||||||
|
"DP-3" = [
|
||||||
|
1
|
||||||
|
];
|
||||||
|
};
|
||||||
|
# "format-window-separator" = "->";
|
||||||
|
"window-rewrite-default" = "";
|
||||||
|
"window-rewrite" = {
|
||||||
|
"class<1Password>" = "";
|
||||||
|
"class<Caprine>" = "";
|
||||||
|
"class<Github Desktop>" = "";
|
||||||
|
"class<Godot>" = "";
|
||||||
|
"class<Mysql-workbench-bin>" = "";
|
||||||
|
"class<Slack>" = "";
|
||||||
|
"class<code>" = "";
|
||||||
|
"code-url-handler" = "";
|
||||||
|
"class<discord>" = "";
|
||||||
|
"class<firefox>" = "";
|
||||||
|
"class<firefox> title<.*github.*>" = "";
|
||||||
|
"class<firefox> title<.*twitch|youtube|plex|tntdrama|bally sports.*>" = "";
|
||||||
|
"class<kitty>" = "";
|
||||||
|
"class<foot>" = "";
|
||||||
|
"class<mediainfo-gui>" = "";
|
||||||
|
"class<org.kde.digikam>" = "";
|
||||||
|
"class<org.telegram.desktop>" = "";
|
||||||
|
"class<.pitivi-wrapped>" = "";
|
||||||
|
"class<steam>" = "";
|
||||||
|
"class<thunderbird>" = "";
|
||||||
|
"class<virt-manager>" = "";
|
||||||
|
"class<vlc>" = "";
|
||||||
|
"class<thunar>" = "";
|
||||||
|
"class<org.gnome.Nautilus>" = "";
|
||||||
|
"class<Spotify>" = "";
|
||||||
|
"title<Spotify Free>" = "";
|
||||||
|
"class<libreoffice-draw>" = "";
|
||||||
|
"class<libreoffice-writer>" = "";
|
||||||
|
"class<libreoffice-calc>" = "";
|
||||||
|
"class<libreoffice-impress>" = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
46
user/modules/waybar/modules/wlr-modules.nix
Normal file
46
user/modules/waybar/modules/wlr-modules.nix
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"wlr/workspaces" = {
|
||||||
|
"all-outputs" = false;
|
||||||
|
"active-only" = "false";
|
||||||
|
"on-click" = "activate";
|
||||||
|
"format" = "{icon}";
|
||||||
|
"format-icons" = {
|
||||||
|
"1" = "";
|
||||||
|
"2" = "";
|
||||||
|
"3" = "";
|
||||||
|
"4" = "";
|
||||||
|
"5" = "";
|
||||||
|
"6" = "";
|
||||||
|
"7" = "";
|
||||||
|
"8" = "";
|
||||||
|
"urgent" = "";
|
||||||
|
"default" = "";
|
||||||
|
};
|
||||||
|
"persistent_workspaces" = {
|
||||||
|
"1" = [
|
||||||
|
"DP-3"
|
||||||
|
];
|
||||||
|
"2" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"3" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"4" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"5" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"6" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"7" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
"8" = [
|
||||||
|
"DP-1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
36
user/modules/waybar/styles/catppuccin.css
Normal file
36
user/modules/waybar/styles/catppuccin.css
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Catppuccin Macchiato palette
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
@define-color base #24273a;
|
||||||
|
@define-color mantle #1e2030;
|
||||||
|
@define-color crust #181926;
|
||||||
|
|
||||||
|
@define-color text #cad3f5;
|
||||||
|
@define-color subtext0 #b8c0e0;
|
||||||
|
@define-color subtext1 #a5adcb;
|
||||||
|
|
||||||
|
@define-color surface0 #363a4f;
|
||||||
|
@define-color surface1 #494d64;
|
||||||
|
@define-color surface2 #5b6078;
|
||||||
|
|
||||||
|
@define-color overlay0 #6e738d;
|
||||||
|
@define-color overlay1 #8087a2;
|
||||||
|
@define-color overlay2 #939ab7;
|
||||||
|
|
||||||
|
@define-color blue #8aadf4;
|
||||||
|
@define-color lavender #b7bdf8;
|
||||||
|
@define-color sapphire #7dc4e4;
|
||||||
|
@define-color sky #91d7e3;
|
||||||
|
@define-color teal #8bd5ca;
|
||||||
|
@define-color green #a6da95;
|
||||||
|
@define-color yellow #eed49f;
|
||||||
|
@define-color peach #f5a97f;
|
||||||
|
@define-color maroon #ee99a0;
|
||||||
|
@define-color red #ed8796;
|
||||||
|
@define-color mauve #c6a0f6;
|
||||||
|
@define-color pink #f5bde6;
|
||||||
|
@define-color flamingo #f0c6c6;
|
||||||
|
@define-color rosewater #f4dbd6;
|
82
user/modules/waybar/styles/notifications.css
Normal file
82
user/modules/waybar/styles/notifications.css
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
#notifications {
|
||||||
|
margin: 0.4em;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
color: @peach;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: @surface0;
|
||||||
|
border: 2px solid @surface1;
|
||||||
|
}
|
||||||
|
#custom-notification,
|
||||||
|
#custom-updates,
|
||||||
|
#custom-github,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#wireplumber,
|
||||||
|
#pulseaudio
|
||||||
|
{
|
||||||
|
padding: 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-updates.updated {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unique colors for modules */
|
||||||
|
|
||||||
|
#custom-pipewire {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-github {
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-updates {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-pipewire.muted,
|
||||||
|
#pulseaudio.muted {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state {
|
||||||
|
padding: 0 0px;
|
||||||
|
min-width: 16px;
|
||||||
|
color: @mauve;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label.locked {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio-slider {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio-slider slider {
|
||||||
|
min-height: 0px;
|
||||||
|
min-width: 0px;
|
||||||
|
opacity: 0;
|
||||||
|
background-image: none;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
#pulseaudio-slider trough {
|
||||||
|
min-height: 10px;
|
||||||
|
min-width: 80px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: @base;
|
||||||
|
}
|
||||||
|
#pulseaudio-slider highlight {
|
||||||
|
min-width: 10px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: @green;
|
||||||
|
}
|
||||||
|
|
14
user/modules/waybar/styles/power.css
Normal file
14
user/modules/waybar/styles/power.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Custom styling for the logout icon on end */
|
||||||
|
#custom-wlogout {
|
||||||
|
font-size: 1.75em;
|
||||||
|
padding: 0 0.5em;
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power {
|
||||||
|
margin-right: 0.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power .not-power {
|
||||||
|
color: @red;
|
||||||
|
}
|
43
user/modules/waybar/styles/stats.css
Normal file
43
user/modules/waybar/styles/stats.css
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#stats,
|
||||||
|
#stats-drawer {
|
||||||
|
margin: 0.4em;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
color: @peach;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: @surface0;
|
||||||
|
border: 2px solid @surface1;
|
||||||
|
}
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#temperature,
|
||||||
|
#disk,
|
||||||
|
#network {
|
||||||
|
padding: 0 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Unique colors for modules */
|
||||||
|
#cpu {
|
||||||
|
color: @red;
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
color: @yellow;
|
||||||
|
}
|
||||||
|
#temperature {
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
77
user/modules/waybar/styles/style.css
Normal file
77
user/modules/waybar/styles/style.css
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/**
|
||||||
|
* Global configuration for theme
|
||||||
|
* */
|
||||||
|
* {
|
||||||
|
font-family: FiraCode Nerd Font;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 0.75em;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
border: 2px solid @surface1;
|
||||||
|
background: @theme_base_color;
|
||||||
|
box-shadow: 1px 1px 10px 10px @mantle;
|
||||||
|
color: @theme_text_color;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
background: @base;
|
||||||
|
border: 1px solid @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip label {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
label:focus {
|
||||||
|
background-color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
/* Use box-shadow instead of border so the text isn't offset */
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
/* Avoid rounded borders under each button name */
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove border from parent waybar */
|
||||||
|
box {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add spacing for right side modules */
|
||||||
|
#tray,
|
||||||
|
#user,
|
||||||
|
#custom-weather,
|
||||||
|
#keyboard-state,
|
||||||
|
#mpd {
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 900;
|
||||||
|
padding: 0 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-separator-right,
|
||||||
|
#custom-separator-left {
|
||||||
|
font-size: 20px;
|
||||||
|
padding-left: 1em;
|
||||||
|
padding-right: 1em;
|
||||||
|
color: @text;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
42
user/modules/waybar/styles/workspaces.css
Normal file
42
user/modules/waybar/styles/workspaces.css
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#workspaces {
|
||||||
|
margin: 0.4em;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
color: @peach;
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: @surface0;
|
||||||
|
border: 2px solid @surface1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces label {
|
||||||
|
font-family: MonaspiceNe Nerd Font;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 0.5em;
|
||||||
|
background-color: @surface0;
|
||||||
|
color: @text;
|
||||||
|
margin: 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
/* background-color: @surface2; */
|
||||||
|
color: @overlay0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.visible {
|
||||||
|
/* background-color: @surface2; */
|
||||||
|
color: @blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
/* background-color: @surface2; */
|
||||||
|
color: @green;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
box-shadow: 2px 2px 2px 2px;
|
||||||
|
border-radius: 1em;
|
||||||
|
color: @red;
|
||||||
|
}
|
5
user/modules/wofi.nix
Normal file
5
user/modules/wofi.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{...}: {
|
||||||
|
programs.wofi = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user