diff --git a/flake.nix b/flake.nix index c5eb652..ccd50f4 100644 --- a/flake.nix +++ b/flake.nix @@ -104,6 +104,7 @@ self.overlaysModule home-manager.nixosModules.home-manager ./modules/common.nix + ./modules/hyprland.nix ./modules/containers.nix { home-manager.useGlobalPkgs = true; diff --git a/modules/hyprland.nix b/modules/hyprland.nix new file mode 100644 index 0000000..38a8f27 --- /dev/null +++ b/modules/hyprland.nix @@ -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"; + }; + }; + }; +} diff --git a/user/environments/nixos/home.nix b/user/environments/nixos/home.nix index 80caea4..5414e6f 100644 --- a/user/environments/nixos/home.nix +++ b/user/environments/nixos/home.nix @@ -3,9 +3,10 @@ ../../modules/dev.nix ../../modules/firefox.nix ../../modules/fonts.nix + ../../modules/foot.nix ../../modules/git.nix ../../modules/git_nixos.nix - ../../modules/gnome.nix + ../../modules/hyprland.nix ../../modules/nvim.nix ../../modules/vscode.nix ../../modules/zsh.nix diff --git a/user/modules/hyprland.nix b/user/modules/hyprland.nix new file mode 100644 index 0000000..6e525a9 --- /dev/null +++ b/user/modules/hyprland.nix @@ -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; + }; + }; +} diff --git a/user/modules/waybar/default.nix b/user/modules/waybar/default.nix new file mode 100644 index 0000000..20cc504 --- /dev/null +++ b/user/modules/waybar/default.nix @@ -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 + ]; + }; + }; +} diff --git a/user/modules/waybar/modules/custom-modules.nix b/user/modules/waybar/modules/custom-modules.nix new file mode 100644 index 0000000..f954291 --- /dev/null +++ b/user/modules/waybar/modules/custom-modules.nix @@ -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" = ""; + "none" = ""; + "dnd-notification" = ""; + "dnd-none" = ""; + "inhibited-notification" = ""; + "inhibited-none" = ""; + "dnd-inhibited-notification" = ""; + "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"; + }; +} diff --git a/user/modules/waybar/modules/default-modules.nix b/user/modules/waybar/modules/default-modules.nix new file mode 100644 index 0000000..44a3422 --- /dev/null +++ b/user/modules/waybar/modules/default-modules.nix @@ -0,0 +1,166 @@ +{ + lib, + pkgs, + ... +}: let + inherit (lib) getExe getExe'; +in { + "clock" = { + "tooltip-format" = "{:%Y %B}\n{calendar}"; + "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} {dynamic}"; + "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" = " "; + "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" = [ + "" + "" + "" + ]; + }; +} diff --git a/user/modules/waybar/modules/group-modules.nix b/user/modules/waybar/modules/group-modules.nix new file mode 100644 index 0000000..e9db523 --- /dev/null +++ b/user/modules/waybar/modules/group-modules.nix @@ -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" + ]; + }; +} diff --git a/user/modules/waybar/modules/hyprland-modules.nix b/user/modules/waybar/modules/hyprland-modules.nix new file mode 100644 index 0000000..1bb5386 --- /dev/null +++ b/user/modules/waybar/modules/hyprland-modules.nix @@ -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" = "󰈎"; + "class" = "󰊤"; + "class" = ""; + "class" = ""; + "class" = "󰒱"; + "class" = "󰨞"; + "code-url-handler" = "󰨞"; + "class" = "󰙯"; + "class" = "󰈹"; + "class title<.*github.*>" = ""; + "class title<.*twitch|youtube|plex|tntdrama|bally sports.*>" = ""; + "class" = ""; + "class" = ""; + "class" = "󱂷"; + "class" = "󰄄"; + "class" = ""; + "class<.pitivi-wrapped>" = "󱄢"; + "class" = ""; + "class" = ""; + "class" = "󰢹"; + "class" = "󰕼"; + "class" = "󰉋"; + "class" = "󰉋"; + "class" = ""; + "title" = ""; + "class" = "󰽉"; + "class" = ""; + "class" = "󱎏"; + "class" = "󱎐"; + }; + }; +} diff --git a/user/modules/waybar/modules/wlr-modules.nix b/user/modules/waybar/modules/wlr-modules.nix new file mode 100644 index 0000000..5bda91a --- /dev/null +++ b/user/modules/waybar/modules/wlr-modules.nix @@ -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" + ]; + }; + }; +} diff --git a/user/modules/waybar/styles/catppuccin.css b/user/modules/waybar/styles/catppuccin.css new file mode 100644 index 0000000..e662b6a --- /dev/null +++ b/user/modules/waybar/styles/catppuccin.css @@ -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; diff --git a/user/modules/waybar/styles/notifications.css b/user/modules/waybar/styles/notifications.css new file mode 100644 index 0000000..1fc9e51 --- /dev/null +++ b/user/modules/waybar/styles/notifications.css @@ -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; +} + diff --git a/user/modules/waybar/styles/power.css b/user/modules/waybar/styles/power.css new file mode 100644 index 0000000..bcd483f --- /dev/null +++ b/user/modules/waybar/styles/power.css @@ -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; +} diff --git a/user/modules/waybar/styles/stats.css b/user/modules/waybar/styles/stats.css new file mode 100644 index 0000000..456ea66 --- /dev/null +++ b/user/modules/waybar/styles/stats.css @@ -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; +} + diff --git a/user/modules/waybar/styles/style.css b/user/modules/waybar/styles/style.css new file mode 100644 index 0000000..fd8e1c9 --- /dev/null +++ b/user/modules/waybar/styles/style.css @@ -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; + } +} diff --git a/user/modules/waybar/styles/workspaces.css b/user/modules/waybar/styles/workspaces.css new file mode 100644 index 0000000..83372c2 --- /dev/null +++ b/user/modules/waybar/styles/workspaces.css @@ -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; +} diff --git a/user/modules/wofi.nix b/user/modules/wofi.nix new file mode 100644 index 0000000..e96db9a --- /dev/null +++ b/user/modules/wofi.nix @@ -0,0 +1,5 @@ +{...}: { + programs.wofi = { + enable = true; + }; +}