diff --git a/config/dotfiles/.config/kitty/kitty.conf b/config/dotfiles/.config/kitty/kitty.conf index 9cd4fef..a837d83 100644 --- a/config/dotfiles/.config/kitty/kitty.conf +++ b/config/dotfiles/.config/kitty/kitty.conf @@ -6,3 +6,7 @@ enable_audio_bell no confirm_os_window_close 0 background_opacity 0.7 + +font_family DejaVuSansM Nerd Font Mono +bold_font DejaVuSansM Nerd Font Mono Bold +bold_italic_font DejaVuSansM Nerd Font Mono Bold Oblique diff --git a/modules/apps/visual.nix b/modules/apps/visual.nix index 422635a..d7626f7 100644 --- a/modules/apps/visual.nix +++ b/modules/apps/visual.nix @@ -37,5 +37,9 @@ in { vesktop vlc ]; + + fonts.packages = with pkgs; [ + nerd-fonts.dejavu-sans-mono + ]; }; } diff --git a/modules/wm/hyprland/config/waybar/style.css b/modules/wm/hyprland/config/waybar/style.css new file mode 100644 index 0000000..69a9098 --- /dev/null +++ b/modules/wm/hyprland/config/waybar/style.css @@ -0,0 +1,158 @@ +@define-color rosewater #f4dbd6; +@define-color rosewater-rgb rgb(244, 219, 214); +@define-color flamingo #f0c6c6; +@define-color flamingo-rgb rgb(240, 198, 198); +@define-color pink #f5bde6; +@define-color pink-rgb rgb(245, 189, 230); +@define-color mauve #c6a0f6; +@define-color mauve-rgb rgb(198, 160, 246); +@define-color red #ed8796; +@define-color red-rgb rgb(237, 135, 150); +@define-color maroon #ee99a0; +@define-color maroon-rgb rgb(238, 153, 160); +@define-color peach #f5a97f; +@define-color peach-rgb rgb(245, 169, 127); +@define-color yellow #eed49f; +@define-color yellow-rgb rgb(238, 212, 159); +@define-color green #a6da95; +@define-color green-rgb rgb(166, 218, 149); +@define-color teal #8bd5ca; +@define-color teal-rgb rgb(139, 213, 202); +@define-color sky #91d7e3; +@define-color sky-rgb rgb(145, 215, 227); +@define-color sapphire #7dc4e4; +@define-color sapphire-rgb rgb(125, 196, 228); +@define-color blue #8aadf4; +@define-color blue-rgb rgb(138, 173, 244); +@define-color lavender #b7bdf8; +@define-color lavender-rgb rgb(183, 189, 248); +@define-color text #cad3f5; +@define-color text-rgb rgb(202, 211, 245); +@define-color subtext1 #b8c0e0; +@define-color subtext1-rgb rgb(184, 192, 224); +@define-color subtext0 #a5adcb; +@define-color subtext0-rgb rgb(165, 173, 203); +@define-color overlay2 #939ab7; +@define-color overlay2-rgb rgb(147, 154, 183); +@define-color overlay1 #8087a2; +@define-color overlay1-rgb rgb(128, 135, 162); +@define-color overlay0 #6e738d; +@define-color overlay0-rgb rgb(110, 115, 141); +@define-color surface2 #5b6078; +@define-color surface2-rgb rgb(91, 96, 120); +@define-color surface1 #494d64; +@define-color surface1-rgb rgb(73, 77, 100); +@define-color surface0 #363a4f; +@define-color surface0-rgb rgb(54, 58, 79); +@define-color base #24273a; +@define-color base-rgb rgba(36, 39, 58, 0.99); +@define-color mantle #1e2030; +@define-color mantle-rgb rgb(30, 32, 48); +@define-color crust #181926; +@define-color crust-rgb rgb(24, 25, 38); + +* { + font-size: 15px; + font-family: "Zed Mono Nerd Font"; +} + +window#waybar{ + all: unset; +} + +.modules-left, .modules-center, .modules-right { + margin: 5px; + padding: 7px; + border-radius: 10px; + border: 2px solid @lavender; + background: @surface0; +} +.top .modules-left, .top .modules-center, .top .modules-right { + margin-bottom: 0px; +} +.right .modules-left, .right .modules-center, .right .modules-right { + margin-left: 0px; +} + +tooltip { + background:@surface0; + color: @text; + border: 2px solid @lavender; + border-radius: 10px; +} + +#clock, #cpu, #memory { + transition: all .3s ease; +} +.top #clock, .top #cpu, .top #memory { + padding: 0px 5px; +} +.right #clock, .right #cpu, .right #memory { + padding: 5px 0px; +} + +.top .modules-right * { + margin-left: 5px; +} + +#clock { + color: @maroon; +} +#cpu { + color: @yellow; +} +#memory { + color: @green; +} +#pulseaudio { + color: @teal; +} +#network { + color: @sapphire; +} + +#workspaces { + padding: 0px 0px; +} +#workspaces button { + all:unset; + padding: 0px 5px; + color: @lavender; + transition: all .3s ease; +} +#workspaces button.active { + color: @red; + border: none; +} +#workspaces button.empty { + color: @mantle; + border: none; +} +#workspaces button.empty.active { + color: @red; + border: none; +} +.top #workspaces button { + padding: 0px 5px; +} +.right #workspaces button { + padding: 5px 0px; +} + +#power .module { + font-size: 20px; + color: @lavender; + transition: 0.3s color ease; +} +#power .module:hover { + color: @red; +} +.top #custom-power { + margin-left: 5px; +} +.top #power .modules { + margin-right: 5px; +} +.right #power .modules { + margin-bottom: 5px; +} diff --git a/modules/wm/hyprland/default.nix b/modules/wm/hyprland/default.nix index 5f41603..db16b00 100644 --- a/modules/wm/hyprland/default.nix +++ b/modules/wm/hyprland/default.nix @@ -6,6 +6,7 @@ }: let inherit (lib) mkIf mkEnableOption; cfg = config.horseman.wm.hyprland; + homeCfg = config.horseman; in { imports = [ ./options.nix @@ -44,6 +45,194 @@ in { xdg-desktop-portal-hyprland ]; + home-manager.users.${homeCfg.username} = { + programs.waybar = { + enable = true; + + settings = { + horizontalBar = { + layer = "top"; + position = "top"; + output = [ + "DP-3" + ]; + modules-left = ["group/power"]; + modules-center = ["hyprland/workspaces"]; + modules-right = ["network" "pulseaudio" "memory" "cpu" "clock"]; + + "clock" = { + interval = 1; + format = "{:%H:%M:%S}"; + tooltip-format = "{:%a %d %b %Y}"; + }; + + "cpu" = { + interval = 3; + format = " {usage}%"; + on-click = "kitty btop &"; + }; + + "memory" = { + interval = 3; + format = " {percentage}%"; + on-click = "kitty btop &"; + }; + + "pulseaudio" = { + format = " {volume}"; + on-click = "kitty pulsemixer &"; + }; + + "network" = { + interval = 3; + format = "{ipaddr}"; + format-ethernet = " {ipaddr}"; + format-disconnected = "󰣽 Disconnected"; + format-wifi = "󰤨 {essid}"; + + tooltip = false; + }; + + "battery" = { + interval = 3; + # TODO This needs to be fixed + }; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + "active" = ""; + "default" = ""; + "empty" = ""; + }; + persistent-workspaces = { + "*" = [1 2 3 4 5 6 7 8 9 10]; + }; + }; + + "group/power" = { + orientation = "horizontal"; + drawer = { + }; + modules = [ + "custom/power" + "custom/reboot" + "custom/lock" + "idle_inhibitor" + ]; + }; + + "custom/lock" = { + format = "󰍁 "; + tooltip = false; + on-click = "hyprlock"; + }; + "custom/reboot" = { + format = "󰜉 "; + tooltip = false; + on-click = "reboot"; + }; + "custom/power" = { + format = " "; + tooltip = false; + on-click = "shutdown now"; + }; + "idle_inhibitor" = { + tooltip = false; + format = "{icon}"; + format-icons = { + deactivated = "󰒲 "; + activated = "󰒳 "; + }; + }; + }; + + verticalBar = { + layer = "top"; + position = "right"; + output = [ + "eDP-1" + ]; + modules-left = ["group/power"]; + modules-center = ["hyprland/workspaces"]; + modules-right = ["battery" "clock"]; + + "clock" = { + interval = 1; + format = "{:%H\n%M\n%S}"; + tooltip-format = "{:%a %d %b %Y}"; + }; + + "cpu" = { + interval = 3; + format = "\n{usage}%"; + on-click = "kitty btop &"; + }; + + "memory" = { + interval = 3; + format = "\n{percentage}%"; + on-click = "kitty btop &"; + }; + + "battery" = { + interval = 3; + # TODO This needs to be fixed + }; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + "active" = ""; + "default" = ""; + "empty" = ""; + }; + persistent-workspaces = { + "*" = [1 2 3 4 5 6 7 8 9 10]; + }; + }; + + "group/power" = { + orientation = "vertical"; + drawer = { + }; + modules = [ + "custom/power" + "custom/reboot" + "custom/lock" + "idle_inhibitor" + ]; + }; + + "custom/lock" = { + format = "󰍁 "; + tooltip = false; + on-click = "hyprlock"; + }; + "custom/reboot" = { + format = "󰜉 "; + tooltip = false; + on-click = "reboot"; + }; + "custom/power" = { + format = " "; + tooltip = false; + on-click = "shutdown now"; + }; + "idle_inhibitor" = { + tooltip = false; + format = "{icon}"; + format-icons = { + deactivated = "󰒲 "; + activated = "󰒳 "; + }; + }; + }; + }; + }; + xdg.configFile."waybar/style.css".source = ./config/waybar/style.css; + }; + horseman.wm.hyprland.config = { execOnce = [ "hyprpaper" @@ -52,6 +241,7 @@ in { "hyprpaper" "swaync" "systemctl --user start hyprpolkitagent" + "waybar" ]; env = [ @@ -313,7 +503,7 @@ in { binds = { workspaceCenterOn = 1; - dragThreshold = 50; + dragThreshold = 0; }; ecosystem = {