Get Hyprland and stuff all set up on desktop

This commit is contained in:
Elnu 2025-06-19 12:29:12 -07:00
parent 96739c5979
commit 44c5a27387
15 changed files with 668 additions and 13 deletions

View file

@ -15,17 +15,11 @@ in
extraPackages = lib.mkOverride 0 []; extraPackages = lib.mkOverride 0 [];
}; };
displayManager = { displayManager = {
lightdm = { sddm.enable = true;
enable = true;
greeters.gtk = {
enable = true;
theme = theme.gtkTheme pkgs;
};
background = theme.wallpaper;
};
}; };
}; };
displayManager = { displayManager = {
enable = true;
defaultSession = "none+i3"; defaultSession = "none+i3";
}; };
udev.packages = [ pkgs.yubikey-personalization ]; udev.packages = [ pkgs.yubikey-personalization ];
@ -34,16 +28,18 @@ in
gvfs.enable = true; # For Trash gvfs.enable = true; # For Trash
}; };
programs.hyprland.enable = true; programs.hyprland.enable = true;
programs.sway.enable = true;
xdg.portal.enable = true; xdg.portal.enable = true;
environment.systemPackages = with pkgs; [ yubioath-flutter ]; # Needed mesa for whatever reason to get Discord to work on Wayland on my desktop
environment.systemPackages = with pkgs; [ yubioath-flutter mesa ];
environment.sessionVariables = { environment.sessionVariables = {
# GTK Theme won't display with GTK4 (e.g. nautilus) otherwise # GTK Theme won't display with GTK4 (e.g. nautilus) otherwise
# Doesn't work in some scenarios, such as open containing folder in Firefox, when declared in home.sessionVariables # Doesn't work in some scenarios, such as open containing folder in Firefox, when declared in home.sessionVariables
GTK_THEME = (theme.gtkTheme pkgs).name; GTK_THEME = (theme.gtkTheme pkgs).name;
# something something required for Electron apps on Wayland
NIXOS_OZONE_WL = "1";
}; };
# Enable OpenTabletDriver, GUI configurator is otd-gui # Enable OpenTabletDriver, GUI configurator is otd-gui

View file

@ -4,7 +4,7 @@
imports = [ (import ./hardware-configuration.nix) ]; imports = [ (import ./hardware-configuration.nix) ];
services.xserver = { services.xserver = {
videoDrivers = [ "nvidia" ]; videoDrivers = [ "nvidia-dkms" ];
# nvidiaXineramaInfoOrder sets primary display # nvidiaXineramaInfoOrder sets primary display
# DFP-0 is default and would set left monitor, DVI-D-0, to be primary # DFP-0 is default and would set left monitor, DVI-D-0, to be primary
screenSection = '' screenSection = ''

View file

@ -15,6 +15,7 @@
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.nvidia.open = true; hardware.nvidia.open = true;
hardware.graphics.extraPackages = with pkgs; [ nvidia-vaapi-driver ];
fileSystems = { fileSystems = {
"/" = { "/" = {
@ -22,7 +23,7 @@
fsType = "ext4"; fsType = "ext4";
}; };
"/boot" = { "/boot" = {
device = "/dev/disk/by-label/boot"; device = "/dev/sda5";
fsType = "vfat"; fsType = "vfat";
}; };
# Prevent SCARLETT from auto-mounting # Prevent SCARLETT from auto-mounting

View file

@ -4,5 +4,6 @@
imports = [ imports = [
(import ./apps.nix) (import ./apps.nix)
(import ./i3) (import ./i3)
(import ./hypr)
]; ];
} }

View file

@ -0,0 +1,7 @@
{ ... }:
{
home.file = {
".config/hypr/monitors.conf".source = ./monitors.conf;
};
}

View file

@ -0,0 +1,39 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=HDMI-A-1, 1920x1080@100.05, 1080x420, 1
monitor=DVI-D-1, 1920x1080@60.00, 0x0, 1, transform, 1
monitor=DP-1, 1920x1080@60.04Hz, 1080x1500, 1
workspace = name:1, monitor:HDMI-A-1
workspace = name:2, monitor:DVI-D-1
workspace = name:3, monitor:DP-1
# See https://github.com/HyDE-Project/HyDE/blob/master/Configs/.config/hypr/nvidia.conf
# █▄░█ █░█ █ █▀▄ █ ▄▀█
# █░▀█ ▀▄▀ █ █▄▀ █ █▀█
# Hyprland Nvidia Configuration
# See https://wiki.hyprland.org/Nvidia/
env = LIBVA_DRIVER_NAME,nvidia
env = __GLX_VENDOR_LIBRARY_NAME,nvidia # Disable this if you have issues with screensharing
# If you want to try hardware cursors,
# you can enable them by setting `cursor:no_hardware_cursors = false` ,
# but it will require also enabling `cursor:allow_dumb_copy`
# which may cause small to major hitches whenever the cursor shape changes.
# If this is a problem on your system, keep hardware cursors disabled.
cursor:no_hardware_cursors = true # Set to true to avoid hitches
# cursor:allow_dumb_copy = true
# https://wiki.hyprland.org/Nvidia/#va-api-hardware-video-acceleration
# Hardware video acceleration on Nvidia and Wayland is
# possible with the nvidia-vaapi-driver.
# This may solve specific issues in Electron apps.
env = NVD_BACKEND,direct # Requires 'libva-nvidia-driver' package
# https://wiki.hyprland.org/Nvidia/#regarding-environment-variables
# If you encounter crashes in Firefox, remove this line
env = GBM_BACKEND,nvidia-drm
# If you have a multi-GPU setup and you are facing lag in external monitor.
# See https://wiki.hyprland.org/Configuring/Multi-GPU/

View file

@ -10,6 +10,7 @@ in
#../modules/emacs #../modules/emacs
../modules/fcitx5 ../modules/fcitx5
../modules/firefox ../modules/firefox
../modules/hypr
../modules/i3 ../modules/i3
../modules/neovim ../modules/neovim
../modules/picom ../modules/picom
@ -19,7 +20,6 @@ in
../modules/startpage ../modules/startpage
../modules/terminal ../modules/terminal
../modules/todo-txt ../modules/todo-txt
#../modules/fantasia-archive #../modules/fantasia-archive
]; ];

View file

@ -4,6 +4,7 @@
imports = [ imports = [
(import ./apps.nix) (import ./apps.nix)
(import ./i3) (import ./i3)
(import ./hypr)
(import ../thinkpads/i3.nix) (import ../thinkpads/i3.nix)
(import ../thinkpads/polybar.nix) (import ../thinkpads/polybar.nix)
]; ];

View file

@ -0,0 +1,7 @@
{ ... }:
{
home.file = {
".config/hypr/monitors.conf".source = ./monitors.conf;
};
}

View file

@ -0,0 +1,4 @@
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=eDP-1, 1920x1080@144, 1920x0, 1
monitor=HDMI-A-1, 1920x1080@74.97, 0x0, 1
monitor=DP-1, 1920x1080@60.04, 0x1080, 1

16
modules/hypr/default.nix Normal file
View file

@ -0,0 +1,16 @@
{ pkgs, ... }:
{
# hyprland itself enabled in desktop.nix
home.packages = with pkgs; [
hyprpaper
waybar
grimblast # screenshots
];
home.file = {
".config/hypr/hyprland.conf".source = ./hypr/hyprland.conf;
".config/hypr/hyprpaper.conf".source = ./hypr/hyprpaper.conf;
".config/waybar/config.jsonc".source = ./waybar/config.jsonc;
".config/waybar/style.css".source = ./waybar/style.css;
};
}

View file

@ -0,0 +1,235 @@
########################################################################################
# AUTOGENERATED HYPR CONFIG.
# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
########################################################################################
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
#autogenerated = 1 # remove this line to remove the warning
# See https://wiki.hyprland.org/Configuring/Monitors/
source = monitors.conf
# Prevent X apps from being pixelated
xwayland {
force_zero_scaling = true
}
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
exec-once = waybar
exec-once = hyprpaper
exec-once = nm-applet
exec-once = systemctl --user enable opentabletdriver.service --now
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# Some default env vars.
env = XCURSOR_SIZE,24
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
# kb_options = caps:swapescape
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 6
gaps_out = 12
border_size = 2
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.active_border = rgb(a7c080)
col.inactive_border = rgba(a7c08000)
layout = dwindle
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
}
group {
col.border_active = rgb(a7c080)
col.border_inactive = rgba(a7c08000)
groupbar {
col.active = rgb(a7c080)
col.inactive = rgb(2e383c)
}
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur {
enabled = true
size = 3
passes = 1
}
shadow {
enabled = false
}
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
workspace = w[tv1], gapsout:0, gapsin:0, border:0, rounding:0
workspace = f[1], gapsout:0, gapsin:0
windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
windowrule = rounding 0, floating:0, onworkspace:w[tv1]
windowrule = bordersize 0, floating:0, onworkspace:f[1]
windowrule = rounding 0, floating:0, onworkspace:f[1]
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_status = master
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = off
}
misc {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers
disable_hyprland_logo = true
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, RETURN, exec, kitty
bind = $mainMod SHIFT, Q, killactive,
bind = $mainMod SHIFT, E, exit, <D-v>
#bind = $mainMod, E, exec, dolphin
bind = $mainMod SHIFT, SPACE, togglefloating,
bindr = SUPER, SUPER_L, exec, rofi -show drun -theme
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# Modified from https://github.com/hyprwm/Hyprland/discussions/2617
bind = , Print, exec, mkdir -p $HOME"/screenshots/full" && grimblast copysave output $HOME"/screenshots/full/"$(date +'%F-%T.png')
bind = $mainMod, Print, exec, mkdir -p $HOME"/screenshots/area" && grimblast copysave area $HOME"/screenshots/area/"$(date +'%F-%T.png')
bind = ALT, Print, exec, mkdir -p $HOME"/screenshots/active" && grimblast copysave active $HOME"/screenshots/active/"$(date +'%F-%T.png')
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, MINUS, togglespecialworkspace, magic
bind = $mainMod SHIFT, MINUS, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Move/windows with keyboard
bind = $mainMod SHIFT, LEFT, movewindow, l
bind = $mainMod SHIFT, RIGHT, movewindow, r
bind = $mainMod SHIFT, UP, movewindow, u
bind = $mainMod SHIFT, DOWN, movewindow, d
bind = $mainMod SHIFT CTRL, LEFT, movewindoworgroup, l
bind = $mainMod SHIFT CTRL, RIGHT, movewindoworgroup, r
bind = $mainMod SHIFT CTRL, UP, movewindoworgroup, u
bind = $mainMod SHIFT CTRL, DOWN, movewindoworgroup, d
# Tabbing
bind = $mainMod, w, togglegroup
bind = $mainMod CTRL, UP, changegroupactive, f
bind = $mainMod CTRL, RIGHT, changegroupactive, f
bind = $mainMod CTRL, DOWN, changegroupactive, b
bind = $mainMod CTRL, LEFT, changegroupactive, b
bind = $mainMod, F, fullscreen
windowrulev2 = stayfocused,class:(wofi)
windowrulev2 = noborder,class:(wofi)
bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
# Requires playerctl
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next

View file

@ -0,0 +1,2 @@
preload = ~/.background-image
wallpaper = , ~/.background-image

View file

@ -0,0 +1,179 @@
{
"layer": "top",
"position": "top",
"height": 30,
"spacing": 1,
"margin": 0,
"modules-left": ["hyprland/workspaces", "hyprland/window"],
"modules-center": [],
"modules-right": ["custom/weather", "disk", "memory", "cpu", "temperature", "battery", "pulseaudio", "clock", "tray"],
"hyprland/workspaces": {
"disable-scroll": true,
"all-outputs": false,
"warp-on-scroll": false,
"format": "{name}"
},
"hyprland/window": {
},
"custom/playerctl": {
"format": " 󰐊 {}",
"return-type": "json",
"max-length": 40,
"exec": "playerctl -a metadata --format '{\"text\": \"{{artist}} - {{markup_escape(title)}}\", \"tooltip\": \"{{playerName}} : {{artist}} - {{markup_escape(title)}}\", \"alt\": \"{{status}}\", \"class\": \"{{status}}\"}' -F",
"on-click": "playerctl play-pause",
"on-click-right": "playerctl next",
},
"custom/weather": {
"exec": "curl 'https://wttr.in/?format=1&m'",
"interval": 600,
"format": "{}",
"tooltip": true
},
"custom/updates": {
"format": "󰚰 {}",
"exec": "checkupdates | wc -l",
"interval": 3600,
"on-click": "kitty -e sudo pacman -Syu",
"signal": 8
},
"custom/uptime": {
"format": "󰔟 {}",
"exec": "uptime -p | sed 's/up //; s/ days/d/; s/ hours/h/; s/ minutes/m/'",
"interval": 60
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
},
"tooltip": true
},
"clock": {
"format": "{:%H:%M}",
"format-alt": "{:%Y-%m-%d}",
"tooltip-format": "<big>{:%Y %B}</big>\n<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='#d3c6aa'><b>{}</b></span>",
"days": "<span color='#e67e80'>{}</span>",
"weeks": "<span color='#a7c080'><b>W{}</b></span>",
"weekdays": "<span color='#7fbbb3'><b>{}</b></span>",
"today": "<span color='#dbbc7f'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click-right": "mode",
"on-click-forward": "tz_up",
"on-click-backward": "tz_down",
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down"
}
},
"cpu": {
"format": "<span color=\"#a7c080\">CPU</span> {usage}%",
"tooltip": true,
"interval": 1,
"on-click": "kitty -e htop"
},
"memory": {
"format": "<span color=\"#a7c080\">RAM</span> {}%",
"interval": 1,
"on-click": "kitty -e htop"
},
"temperature": {
"critical-threshold": 80,
"format": "{temperatureC}°C",
"format-icons": ["󱃃", "󰔏", "󱃂"],
},
"battery": {
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": "<span color=\"#a7c080\">󰂄</span> {capacity}%",
"format-plugged": "<span color=\"#a7c080\">󰚥</span> {capacity}%",
"format-alt": "{icon} {time}",
"format-icons": [
"<span color=\"#e67e80\">󰂎</span>",
"<span color=\"#e67e80\">󰁺</span>",
"<span color=\"#e69875\">󰁻</span>",
"<span color=\"#e69875\">󰁼</span>",
"<span color=\"#dbbc7f\">󰁽</span>",
"<span color=\"#dbbc7f\">󰁾</span>",
"<span color=\"#a7c080\">󰁿</span>",
"<span color=\"#a7c080\">󰂀</span>",
"<span color=\"#a7c080\">󰂁</span>",
"<span color=\"#a7c080\">󰂂</span>",
"<span color=\"#a7c080\">󰁹</span>"
]
},
"network": {
"format-wifi": "󰖩 {essid} ({signalStrength}%)",
"format-ethernet": "󰈀 {ifname}",
"format-linked": "󰈀 {ifname} (No IP)",
"format-disconnected": "󰖪 Disconnected",
"format-alt": "{ifname}: {ipaddr}/{cidr}",
"tooltip-format": "{ifname}: {ipaddr}",
"on-click": "kitty -e nmtui"
},
"pulseaudio": {
"format": "<span color=\"#a7c080\">{icon}</span> {volume}%",
"format-bluetooth": "<span color=\"#a7c080\">󰂰</span> {volume}%",
"format-bluetooth-muted": "<span color=\"#a7c080\">󰂲</span> {icon}",
"format-muted": "󰝟",
"format-icons": {
"headphone": "󰋋",
"hands-free": "󰥰",
"headset": "󰋎",
"phone": "󰏲",
"portable": "󰄝",
"car": "󰄋",
"default": ["󰕿", "󰖀", "󰕾"]
},
"on-click": "pavucontrol",
"on-click-right": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
"on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -2%"
},
"backlight": {
"format": "{icon} {percent}%",
"format-icons": ["󰃞", "󰃟", "󰃠"],
"on-scroll-up": "brightnessctl set +5%",
"on-scroll-down": "brightnessctl set 5%-"
},
"disk": {
"interval": 30,
"format": "<span color=\"#a7c080\">{path}</span> {percentage_used}%",
"path": "/",
"on-click": "kitty -e gdu /"
},
"tray": {
"icon-size": 18,
"spacing": 5
}
}

View file

@ -0,0 +1,167 @@
/*Colorschemes, there are Gruvbox, Tokyo Night, and Everforest by default. The way it works is whichever colorscheme section is defined last will be used. Here everforest is last, but put any one you want to use as the last one. ssdsssssssss*/
/* Gruvbox Dark Colors */
@define-color background #282828;
@define-color background-light #3c3836;
@define-color foreground #ebdbb2;
@define-color black #32302f;
@define-color red #cc241d;
@define-color green #98971a;
@define-color yellow #d79921;
@define-color blue #458588;
@define-color magenta #b16286;
@define-color cyan #689d6a;
@define-color white #ebdbb2;
@define-color orange #d65d0e;
/* Tokyo Night */
@define-color background #1a1b26;
@define-color background-light #24283b;
@define-color foreground #c0caf5;
@define-color black #15161e;
@define-color red #f7768e;
@define-color green #9ece6a;
@define-color yellow #e0af68;
@define-color blue #7aa2f7;
@define-color magenta #bb9af7;
@define-color cyan #7dcfff;
@define-color white #a9b1d6;
@define-color orange #ff9e64;
/* Everforest Dark Colors */
@define-color background #2b3339;
@define-color background-light #323c41;
@define-color foreground #d3c6aa;
@define-color black #3c474d;
@define-color red #e67e80;
@define-color green #a7c080;
@define-color yellow #dbbc7f;
@define-color blue #7fbbb3;
@define-color magenta #d699b6;
@define-color cyan #83c092;
@define-color white #d3c6aa;
@define-color orange #e69875;
@define-color background #2b3339;
@define-color background rgba(43, 51, 57, 0.75);
/* Pastel TTY Colors */
/*
@define-color background #212121;
@define-color background-light #3a3a3a;
@define-color foreground #e0e0e0;
@define-color black #5a5a5a;
@define-color red #ff9a9e;
@define-color green #b5e8a9;
@define-color yellow #ffe6a7;
@define-color blue #63a4ff;
@define-color magenta #dda0dd;
@define-color cyan #a3e8e8;
@define-color white #ffffff;
@define-color orange #ff8952;
*/
/* Module-specific colors */
@define-color workspaces-color @foreground;
@define-color workspaces-focused-bg @green;
@define-color workspaces-focused-fg @cyan;
@define-color workspaces-urgent-bg @red;
@define-color workspaces-urgent-fg @black;
/* Text and border colors for modules */
@define-color mode-color @orange;
@define-color mpd-color @magenta;
@define-color weather-color @magenta;
@define-color playerctl-color @magenta;
@define-color clock-color @blue;
@define-color cpu-color @green;
@define-color memory-color @magenta;
@define-color temperature-color @yellow;
@define-color temperature-critical-color @red;
@define-color battery-color @cyan;
@define-color battery-charging-color @green;
@define-color battery-warning-color @yellow;
@define-color battery-critical-color @red;
@define-color network-color @blue;
@define-color network-disconnected-color @red;
@define-color pulseaudio-color @orange;
@define-color pulseaudio-muted-color @red;
@define-color backlight-color @yellow;
@define-color disk-color @cyan;
@define-color uptime-color @green;
@define-color updates-color @orange;
@define-color quote-color @green;
@define-color idle-inhibitor-color @foreground;
@define-color idle-inhibitor-active-color @red;
* {
/* Base styling for all modules */
border: none;
border-radius: 0;
font-family: "Fira Code Nerd Font";
font-size: 16px;
min-height: 0;
}
window#waybar {
background-color: transparent;
color: @foreground;
}
/* Common module styling with border-bottom */
#mode, #mpd, #custom-weather, #custom-playerctl, #clock, #cpu,
#memory, #temperature, #battery, #network, #pulseaudio,
#backlight, #disk, #custom-uptime, #custom-updates, #custom-quote,
#idle_inhibitor, #tray, #workspaces, #window {
padding: 0 10px;
margin: 4px 2px;
background-color: @background;
border-radius: 30px;
}
/* Workspaces styling */
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @workspaces-color;
margin: 0;
}
#workspaces button:hover {
background: @background-light;
box-shadow: inherit;
}
#workspaces button.active {
box-shadow: inset 0 -2px @workspaces-focused-fg;
color: @workspaces-focused-fg;
font-weight: 900;
}
#workspaces button.urgent {
background-color: @workspaces-urgent-bg;
color: @workspaces-urgent-fg;
}
/* Module-specific styling */
#tray {
background-color: transparent;
padding: 0 10px;
margin: 0 2px;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
color: @red;
border-bottom-color: @red;
}