From 44c5a273870570987e1af92296e70c0e0e60aa5f Mon Sep 17 00:00:00 2001 From: ElnuDev Date: Thu, 19 Jun 2025 12:29:12 -0700 Subject: [PATCH] Get Hyprland and stuff all set up on desktop --- hosts/desktop.nix | 16 +- hosts/desktop/default.nix | 2 +- hosts/desktop/hardware-configuration.nix | 3 +- hosts/desktop/home.nix | 1 + hosts/desktop/hypr/default.nix | 7 + hosts/desktop/hypr/monitors.conf | 39 ++++ hosts/home-desktop.nix | 2 +- hosts/pang13/home.nix | 1 + hosts/pang13/hypr/default.nix | 7 + hosts/pang13/hypr/monitors.conf | 4 + modules/hypr/default.nix | 16 ++ modules/hypr/hypr/hyprland.conf | 235 +++++++++++++++++++++++ modules/hypr/hypr/hyprpaper.conf | 2 + modules/hypr/waybar/config.jsonc | 179 +++++++++++++++++ modules/hypr/waybar/style.css | 167 ++++++++++++++++ 15 files changed, 668 insertions(+), 13 deletions(-) create mode 100644 hosts/desktop/hypr/default.nix create mode 100644 hosts/desktop/hypr/monitors.conf create mode 100644 hosts/pang13/hypr/default.nix create mode 100644 hosts/pang13/hypr/monitors.conf create mode 100644 modules/hypr/default.nix create mode 100644 modules/hypr/hypr/hyprland.conf create mode 100644 modules/hypr/hypr/hyprpaper.conf create mode 100644 modules/hypr/waybar/config.jsonc create mode 100644 modules/hypr/waybar/style.css diff --git a/hosts/desktop.nix b/hosts/desktop.nix index 7613383..6ab38f9 100644 --- a/hosts/desktop.nix +++ b/hosts/desktop.nix @@ -15,17 +15,11 @@ in extraPackages = lib.mkOverride 0 []; }; displayManager = { - lightdm = { - enable = true; - greeters.gtk = { - enable = true; - theme = theme.gtkTheme pkgs; - }; - background = theme.wallpaper; - }; + sddm.enable = true; }; }; displayManager = { + enable = true; defaultSession = "none+i3"; }; udev.packages = [ pkgs.yubikey-personalization ]; @@ -34,16 +28,18 @@ in gvfs.enable = true; # For Trash }; programs.hyprland.enable = true; - programs.sway.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 = { # 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 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 diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index 5c8554d..21aa10a 100644 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -4,7 +4,7 @@ imports = [ (import ./hardware-configuration.nix) ]; services.xserver = { - videoDrivers = [ "nvidia" ]; + videoDrivers = [ "nvidia-dkms" ]; # nvidiaXineramaInfoOrder sets primary display # DFP-0 is default and would set left monitor, DVI-D-0, to be primary screenSection = '' diff --git a/hosts/desktop/hardware-configuration.nix b/hosts/desktop/hardware-configuration.nix index f615cbe..8ffbb0d 100644 --- a/hosts/desktop/hardware-configuration.nix +++ b/hosts/desktop/hardware-configuration.nix @@ -15,6 +15,7 @@ hardware.enableRedistributableFirmware = true; hardware.bluetooth.enable = true; hardware.nvidia.open = true; + hardware.graphics.extraPackages = with pkgs; [ nvidia-vaapi-driver ]; fileSystems = { "/" = { @@ -22,7 +23,7 @@ fsType = "ext4"; }; "/boot" = { - device = "/dev/disk/by-label/boot"; + device = "/dev/sda5"; fsType = "vfat"; }; # Prevent SCARLETT from auto-mounting diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index e1b3a36..4aa77a2 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -4,5 +4,6 @@ imports = [ (import ./apps.nix) (import ./i3) + (import ./hypr) ]; } diff --git a/hosts/desktop/hypr/default.nix b/hosts/desktop/hypr/default.nix new file mode 100644 index 0000000..4d5d8b2 --- /dev/null +++ b/hosts/desktop/hypr/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + home.file = { + ".config/hypr/monitors.conf".source = ./monitors.conf; + }; +} \ No newline at end of file diff --git a/hosts/desktop/hypr/monitors.conf b/hosts/desktop/hypr/monitors.conf new file mode 100644 index 0000000..260e36a --- /dev/null +++ b/hosts/desktop/hypr/monitors.conf @@ -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/ \ No newline at end of file diff --git a/hosts/home-desktop.nix b/hosts/home-desktop.nix index 10bc68e..65c1c26 100644 --- a/hosts/home-desktop.nix +++ b/hosts/home-desktop.nix @@ -10,6 +10,7 @@ in #../modules/emacs ../modules/fcitx5 ../modules/firefox + ../modules/hypr ../modules/i3 ../modules/neovim ../modules/picom @@ -19,7 +20,6 @@ in ../modules/startpage ../modules/terminal ../modules/todo-txt - #../modules/fantasia-archive ]; diff --git a/hosts/pang13/home.nix b/hosts/pang13/home.nix index bfcf6a0..b60eb07 100644 --- a/hosts/pang13/home.nix +++ b/hosts/pang13/home.nix @@ -4,6 +4,7 @@ imports = [ (import ./apps.nix) (import ./i3) + (import ./hypr) (import ../thinkpads/i3.nix) (import ../thinkpads/polybar.nix) ]; diff --git a/hosts/pang13/hypr/default.nix b/hosts/pang13/hypr/default.nix new file mode 100644 index 0000000..4d5d8b2 --- /dev/null +++ b/hosts/pang13/hypr/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + home.file = { + ".config/hypr/monitors.conf".source = ./monitors.conf; + }; +} \ No newline at end of file diff --git a/hosts/pang13/hypr/monitors.conf b/hosts/pang13/hypr/monitors.conf new file mode 100644 index 0000000..e2e50c2 --- /dev/null +++ b/hosts/pang13/hypr/monitors.conf @@ -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 diff --git a/modules/hypr/default.nix b/modules/hypr/default.nix new file mode 100644 index 0000000..cd21662 --- /dev/null +++ b/modules/hypr/default.nix @@ -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; + }; +} \ No newline at end of file diff --git a/modules/hypr/hypr/hyprland.conf b/modules/hypr/hypr/hyprland.conf new file mode 100644 index 0000000..9827319 --- /dev/null +++ b/modules/hypr/hypr/hyprland.conf @@ -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, +#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 diff --git a/modules/hypr/hypr/hyprpaper.conf b/modules/hypr/hypr/hyprpaper.conf new file mode 100644 index 0000000..1d36090 --- /dev/null +++ b/modules/hypr/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = ~/.background-image +wallpaper = , ~/.background-image diff --git a/modules/hypr/waybar/config.jsonc b/modules/hypr/waybar/config.jsonc new file mode 100644 index 0000000..5195144 --- /dev/null +++ b/modules/hypr/waybar/config.jsonc @@ -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": "{:%Y %B}\n{calendar}", + "calendar": { + "mode" : "month", + "mode-mon-col" : 3, + "weeks-pos" : "right", + "on-scroll" : 1, + "on-click-right": "mode", + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "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": "CPU {usage}%", + "tooltip": true, + "interval": 1, + "on-click": "kitty -e htop" + }, + + "memory": { + "format": "RAM {}%", + "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": "󰂄 {capacity}%", + "format-plugged": "󰚥 {capacity}%", + "format-alt": "{icon} {time}", + "format-icons": [ + "󰂎", + "󰁺", + "󰁻", + "󰁼", + "󰁽", + "󰁾", + "󰁿", + "󰂀", + "󰂁", + "󰂂", + "󰁹" + ] + }, + + "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": "{icon} {volume}%", + "format-bluetooth": "󰂰 {volume}%", + "format-bluetooth-muted": "󰂲 {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": "{path} {percentage_used}%", + "path": "/", + "on-click": "kitty -e gdu /" + }, + + "tray": { + "icon-size": 18, + "spacing": 5 + } +} diff --git a/modules/hypr/waybar/style.css b/modules/hypr/waybar/style.css new file mode 100644 index 0000000..62b4521 --- /dev/null +++ b/modules/hypr/waybar/style.css @@ -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; +}