diff --git a/.config/hypr/conf.d/10-appearance.conf b/.config/hypr/conf.d/10-appearance.conf new file mode 100644 index 0000000..45b3e02 --- /dev/null +++ b/.config/hypr/conf.d/10-appearance.conf @@ -0,0 +1,130 @@ +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + layout = dwindle + + gaps_in = 3 + gaps_out = 0 2 2 2 + border_size = 1 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + #col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg + #col.inactive_border = rgba(595959aa) + col.active_border = rgba(79,132,204,0.8) + col.inactive_border = rgba(21,40,64,0.5) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false + + layerrule = blur, waybar # Add blur to waybar + layerrule = blurpopups, waybar # Blur waybar popups too! + layerrule = ignorealpha 0.2, waybar # Make it so transparent parts are ignored + + # give kitty that frosted-glass effect + layerrule = blur, kitty + layerrule = ignorealpha 0.1, kitty +} + +group { + #col.border_active = rgba(33ccffee) rgba(00ff99ee) 45deg + #col.border_inactive = 0x66777700 + col.border_active = rgba(79,132,204,0.8) + col.border_inactive = rgba(21,40,64,0.4) + + col.border_locked_active = 0xfc6a0300 + col.border_locked_inactive = 0x66775500 + + groupbar { + font_size = 12 + height = 18 + gradients = true + #col.active = rgb(293B6E) + #col.inactive = rgba(595959aa) + col.active = rgb(79,132,204) + col.inactive = rgba(21,40,64,0.3) + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 5 + rounding_power = 4.0 + + # Change transparency of focused and unfocused windows + active_opacity = 1 + inactive_opacity = 1 + fullscreen_opacity = 1 + + dim_inactive = false + dim_strength = 0.2 + dim_around = 1.0 + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 2 + passes = 3 + xray = true + #vibrancy = 0.1696 + vibrancy = 0.18 + } + + # https://wiki.hyprland.org/Configuring/Variables/#shadow + shadow { + enabled = true + range = 6 + render_power = 2 + sharp = false + ignore_window = true + #color = 0xee1a1a1a + color = 0xdd0b1b2b + #color_inactive = unset + #offset = [ 0, 0 ] + scale = 1.0 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = true + + # 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 +} + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = 1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( +} + +xwayland { + force_zero_scaling = true +} diff --git a/.config/hypr/conf.d/20-monitors.conf b/.config/hypr/conf.d/20-monitors.conf new file mode 100644 index 0000000..14c1990 --- /dev/null +++ b/.config/hypr/conf.d/20-monitors.conf @@ -0,0 +1,6 @@ +# Generated by nwg-displays on 2025-03-08 at 15:08:59. Do not edit manually. + +monitor=DP-1,3440x1440@100.0,0x144,1.0 +monitor=DP-2,2560x1440@99.95,3440x480,1.0 +monitor=HDMI-A-2,1920x1080@60.0,6000x0,1.0 +monitor=HDMI-A-2,transform,1 diff --git a/.config/hypr/conf.d/30-workspaces.conf b/.config/hypr/conf.d/30-workspaces.conf new file mode 100644 index 0000000..84c18b8 --- /dev/null +++ b/.config/hypr/conf.d/30-workspaces.conf @@ -0,0 +1,12 @@ +# Generated by nwg-displays on 2025-03-08 at 15:11:02. Do not edit manually. + +workspace=1,monitor:DP-2,persistent:true,default:true +workspace=2,monitor:DP-2,persistent:true +workspace=3,monitor:DP-2,persistent:true +workspace=4,monitor:DP-2,persistent:true +workspace=5,monitor:DP-2,persistent:true +workspace=6,monitor:DP-1,persistent:true,default:true +workspace=7,monitor:DP-1,persistent:true +workspace=8,monitor:DP-1,persistent:true +workspace=9,monitor:DP-1,persistent:true +workspace=10,monitor:HDMI-A-2,persistent:true,default:true diff --git a/.config/hypr/conf.d/40-keybinds.conf b/.config/hypr/conf.d/40-keybinds.conf new file mode 100644 index 0000000..093b0a5 --- /dev/null +++ b/.config/hypr/conf.d/40-keybinds.conf @@ -0,0 +1,137 @@ +############## +### KEYMAP ### +############## + +input { + kb_layout = eu + #kb_layout = us + #kb_variant = altgr-intl + #kb_options = lv3:ralt_switch +} + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Apps +$terminal = uwsm app -- kitty +$fileManager = uwsm app -- nautilus +$launcher = uwsm app -- walker +$uuctl = uwsm app -- uuctl walker -d +$emote = uwsm app -- emote + +$notcenter = uwsm app -- swaync-client -t -sw +$notdnd = uwsm app -- swaync-client -d +$nothide = uwsm app -- swaync-client --hide-latest +$notclose = uwsm app -- swaync-client --close-latest +$notcloseall = uwsm app -- swaync-client --close-all + +$lockcmd = hyprlock + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +# Layout Binds +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod SHIFT, J, swapsplit, # dwindle +bind = $mainMod SHIFT, T, togglegroup, # tabbed i3 like +bind = $mainMod, T, changegroupactive, # tabbed change active +bind = $mainMod, F, fullscreen, +bind = $mainMod, V, togglefloating, +bind = $mainMod ALT_L, H, movewindoworgroup, l +bind = $mainMod ALT_L, J, movewindoworgroup, d +bind = $mainMod ALT_L, K, movewindoworgroup, u +bind = $mainMod ALT_L, L, movewindoworgroup, r + +# Usability +bind = $mainMod SHIFT, Q, killactive, +bind = $mainMod, L, exec, $lockcmd +bind = $mainMod, M, exit, + +# App Binds +bind = $mainMod, return, exec, $terminal +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, D, exec, $launcher +bind = $mainMod SHIFT, D, exec, $uuctl +bind = $mainMod, PERIOD, exec, $emote + +# swaync Binds +bind = $mainMod, Grave, exec, $notcenter +bind = $mainMod SHIFT, Grave, exec, $notdnd +bind = $mainMod, A, exec, $nothide +bind = $mainMod SHIFT, A, exec, $notclose +bind = $mainMod CTRL, A, exec, $notcloseall + +# Screenshot +bind = ALT SHIFT, 3, exec, GRIMBLAST_EDITOR="satty -f" grimblast --notify edit output +bind = ALT SHIFT, 4, exec, GRIMBLAST_EDITOR="satty -f" grimblast --notify edit area + +# 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 +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, 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, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod SHIFT, mouse_down, workspace, e+1 +bind = $mainMod SHIFT, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod SHIFT, mouse:272, movewindow # LMB +bindm = $mainMod SHIFT, mouse:273, resizewindow # RMB + +# Media +bindl = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindl = , 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 + +# SwayOSD +# Sink volume change +bindel = , XF86AudioRaiseVolume, exec, swayosd-client --output-volume raise +bindel = , XF86AudioLowerVolume, exec, swayosd-client --output-volume lower +# Sink volume toggle mute +bindel = , XF86AudioMute, exec, swayosd-client --output-volume mute-toggle +# Source volume toggle mute +bindel = , XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle +# Brightness change +bindel = , XF86MonBrightnessUp, exec, swayosd-client --brightness raise +bindel = , XF86MonBrightnessDown, exec, swayosd-client --brightness lower + diff --git a/.config/hypr/conf.d/50-autostart.conf b/.config/hypr/conf.d/50-autostart.conf new file mode 100644 index 0000000..e3faab5 --- /dev/null +++ b/.config/hypr/conf.d/50-autostart.conf @@ -0,0 +1,5 @@ +exec-once = swaync +exec-once = waybar + +exec = swayosd-server + diff --git a/.config/hypr/conf.d/60-windowrules.conf b/.config/hypr/conf.d/60-windowrules.conf new file mode 100644 index 0000000..c95fd57 --- /dev/null +++ b/.config/hypr/conf.d/60-windowrules.conf @@ -0,0 +1,68 @@ +############################### +### WINDOWS AND WORKSPACES ### +############################### + +# https://wiki.hyprland.org/Configuring/Window-Rules/ +# https://wiki.hyprland.org/Configuring/Workspace-Rules/ + +## ========== Communication ========== +# Mumble & Discord & TeamSpeak +windowrule = workspace 9, class:^(info\.mumble\.Mumble|discord|TeamSpeak|vesktop)$ +# Signal & Telegram +windowrule = workspace 8, class:^(Element|signal|Signal|org\.telegram\.desktop)$ + +## ========== Multimedia ========== +windowrule = workspace 7, class:Spotify + +## ========== Development ========== +windowrule = float, class:jetbrains-webstorm, title:Welcome to WebStorm +windowrule = size 1080 720, class:jetbrains-webstorm, title:Welcome to WebStorm + +## ========== Games ========== +# World of Warcraft (Classic & Retail) +windowrule = workspace 1,force, class:^(wowclassic|wow)\.exe$, title:World of Warcraft +windowrule = fullscreen, class:^(wowclassic|wow)\.exe$, title:World of Warcraft + +## ========== Launcher ========== +# Steam & Battle.net & Lutris +windowrule = workspace 2, class:^(steam|battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = center 1, class:^(battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = float, class:^(battle\.net\.exe|net\.lutris\.Lutris)$ +windowrule = float, class:steam, title:Friends List +windowrule = workspace 1, class:steam, title:Launching... + +# Lutris +windowrule = size 1600 1000, class:net.lutris.Lutris +windowrule = float, class:net.lutris.Lutris, title:^Configure.*$ +windowrule = size 1080 720, class:net.lutris.Lutris, title:^Configure.*$ + +# Battle.net Systray +windowrule = workspace 2, class:explorer.exe +windowrule = move onscreen 1725 1869, class:explorer.exe + +# ProtonUp-Qt +windowrule = float, class:net.davidotek.pupgui2 +windowrule = size 869 642, class:net.davidotek.pupgui2 + +## ========== 3D Slicer & Printing ========== +windowrule = workspace 3, class:BambuStudio +#windowrule = float, class:BambuStudio + +windowrule = workspace 3, class:OrcaSlicer +windowrule = float, class:OrcaSlicer + +## ========== System ========== +windowrule = float, class:org.keepassxc.KeePassXC +windowrule = float, class:org.kde.dolphin +windowrule = float, class:com.saivert.pwvucontrol +windowrule = float, class:org.gnome.Nautilus +windowrule = float, class:org.gnome.NautilusPreviewer +windowrule = float, class:org.gnome.FileRoller + +## ========== Screenshot ========== +windowrule = float, class:com.gabm.satty +windowrule = size >700 >400, class:com.gabm.satty + +## ========== Misc ========== +windowrule = focusonactivate, class:zen + diff --git a/.config/hypr/hypridle.conf b/.config/hypr/hypridle.conf new file mode 100644 index 0000000..9d73333 --- /dev/null +++ b/.config/hypr/hypridle.conf @@ -0,0 +1,44 @@ +### based on the example config from hyprland.org + +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. + ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam) + ignore_systemd_inhibit = false # whether to ignore systemd-inhibit --what=idle inhibitors + on_lock_cmd = dbus-send --session --dest=org.freedesktop.secrets \ + --type=method_call \ + /org/freedesktop/secrets \ + org.freedesktop.Secret.Service.Lock \ + array:objpath:/org/freedesktop/secrets/collection/login +} + + +#listener { +# timeout = 150 # 2.5min. +# on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. +# on-resume = brightnessctl -r # monitor backlight restore. +#} + +# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. +#listener { +# timeout = 150 # 2.5min. +# on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight. +# on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight. +#} + +listener { + timeout = 300 # 5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +listener { + timeout = 1800 # 30min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 3600 # 60min + on-timeout = systemctl hibernate # hibernate and suspend pc +} diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf new file mode 100644 index 0000000..6059864 --- /dev/null +++ b/.config/hypr/hyprland.conf @@ -0,0 +1,2 @@ +# ~/.config/hyprland/hyprland.conf +source = ~/.config/hypr/conf.d/*.conf diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..6db9ef7 --- /dev/null +++ b/.config/hypr/hyprlock.conf @@ -0,0 +1,85 @@ +# ~/.config/hypr/hyprlock.conf + +general { + hide_cursor = true + ignore_empty_input = true +} + +################## +### BACKGROUND ### +################## + +background { + monitor = DP-1 + path = $HOME/.config/hypr/images/ultrawide.jpg +} + +background { + monitor = DP-2 + path = $HOME/.config/hypr/images/standard.jpg +} + +background { + monitor = HDMI-A-2 + path = $HOME/.config/hypr/images/vertical.jpg +} + +############# +### INPUT ### +############# + +input-field { + size = 250, 60 + outline_thickness= 2 + dots_size = 0.2 # you control the look of the dots manually + dots_spacing = 0.35 + dots_center = true + + # Outer ring transparent, inner pill matches Waybar bg + outer_color = rgba(11, 27, 43, 0) # bg_main fully transparent + inner_color = rgba(11, 27, 43, 0.85) # bg_main at 85% opacity + + font_color = rgba(202, 211, 232, 0.8) # content_main at 80% + fade_on_empty = false + + rounding = 20 # nice pill shape + check_color = #4F84CC # Abyss Accent + + placeholder_text = + hide_input = false + + position = 0, -200 + halign = center + valign = center +} + +############ +### DATE ### +############ + +label { + monitor = + text = cmd[update:1000] echo "$(date +"%A, %B %d")" + color = rgba(202, 211, 232, 0.75) # Sea Foam a bit lighter + font_size = 22 + font_family = Inconsolata Nerd Font Mono + position = 0, 300 + halign = center + valign = center +} + +############ +### TIME ### +############ + +label { + monitor = + text = cmd[update:1000] echo "$(date +"%-I:%M")" + color = rgba(202, 211, 232, 0.75) + font_size = 95 + font_family = Inconsolata Nerd Font Mono Bold + position = 0, 200 + halign = center + valign = center +} + diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf new file mode 100644 index 0000000..9798fa1 --- /dev/null +++ b/.config/hypr/hyprpaper.conf @@ -0,0 +1,15 @@ +# ~/.config/hypr/hyprpaper.conf + +#splash = true +splash_color = 4F84CCFF # Abyss Accent w/ full opacity +splash_offset = 2.0 +ipc = true + +# Preload your ultrawide as a quick fallback +preload = $HOME/.config/hypr/images/standard.jpg + +# Per-monitor wallpaper assignments +wallpaper = DP-1, $HOME/.config/hypr/images/ultrawide.jpg +wallpaper = DP-2, $HOME/.config/hypr/images/standard.jpg +wallpaper = HDMI-A-2,$HOME/.config/hypr/images/vertical.jpg + diff --git a/.config/hypr/images/standard.jpg b/.config/hypr/images/standard.jpg new file mode 100644 index 0000000..1e9b82c Binary files /dev/null and b/.config/hypr/images/standard.jpg differ diff --git a/.config/hypr/images/ultrawide.jpg b/.config/hypr/images/ultrawide.jpg new file mode 100644 index 0000000..2924504 Binary files /dev/null and b/.config/hypr/images/ultrawide.jpg differ diff --git a/.config/hypr/images/vertical.jpg b/.config/hypr/images/vertical.jpg new file mode 100644 index 0000000..1877d35 Binary files /dev/null and b/.config/hypr/images/vertical.jpg differ diff --git a/.config/hypr/scripts/hyprfetch.sh b/.config/hypr/scripts/hyprfetch.sh new file mode 100755 index 0000000..69e3ffa --- /dev/null +++ b/.config/hypr/scripts/hyprfetch.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +# hyprfetch.sh — a little fetch for your Hyprland setup + +# colours (true-color ANSI) +ACCENT='\033[38;2;79;132;204m' # #4F84CC +FOREGROUND='\033[38;2;202;211;232m' # #CAD3E8 +RESET='\033[0m' + +# helper to print a labeled field +print_field() { + printf "${ACCENT}%-10s${FOREGROUND}%s${RESET}\n" "$1:" "$2" +} + +# ASCII Art Hyprland logo (simplified) +printf "${ACCENT}" +cat <<'EOF' + __ __ +| \/ |__ _ _ _ ___ +| |\/| / _` | '_/ -_) +|_| |_\__,_|_| \___| +EOF +printf "${RESET}\n" + +# now the fields +print_field "OS" "$(grep '^PRETTY_NAME=' /etc/os-release | cut -d= -f2 | tr -d '"')" +print_field "Kernel" "$(uname -r)" +print_field "Uptime" "$(uptime -p)" +print_field "Shell" "$(basename "$SHELL")" +print_field "WM" "Hyprland $(hyprctl version | grep -oP '\d+\.\d+\.\d+')" + +# hardware +print_field "CPU" "$(grep -m1 'model name' /proc/cpuinfo | cut -d: -f2 | sed 's/^ //')" +print_field "RAM" "$(free -h | awk '/^Mem:/ {print $3 \" / \" $2}')" +if command -v acpi &>/dev/null; then + print_field "Battery" "$(acpi -b | awk -F', ' '{print $2 \" — \" $3}')" +fi + diff --git a/.config/walker/config.toml b/.config/walker/config.toml new file mode 100644 index 0000000..011b302 --- /dev/null +++ b/.config/walker/config.toml @@ -0,0 +1,235 @@ +app_launch_prefix = "uwsm app -- " +terminal_title_flag = "" +locale = "" +close_when_open = false +theme = "vikingowl" +monitor = "" +hotreload_theme = false +as_window = false +timeout = 0 +disable_click_to_close = false +force_keyboard_focus = false + +[keys] +accept_typeahead = ["tab"] +trigger_labels = "lalt" +next = ["down"] +prev = ["up"] +close = ["esc"] +remove_from_history = ["shift backspace"] +resume_query = ["ctrl r"] +toggle_exact_search = ["ctrl m"] + +[keys.activation_modifiers] +keep_open = "shift" +alternate = "alt" + +[keys.ai] +clear_session = ["ctrl x"] +copy_last_response = ["ctrl c"] +resume_session = ["ctrl r"] +run_last_response = ["ctrl e"] + +[events] +on_activate = "" +on_selection = "" +on_exit = "" +on_launch = "" +on_query_change = "" + +[list] +dynamic_sub = true +keyboard_scroll_style = "emacs" +max_entries = 50 +show_initial_entries = true +single_click = true +visibility_threshold = 20 +placeholder = "No Results" + +[search] +argument_delimiter = "#" +placeholder = "Search..." +delay = 0 +resume_last_query = false + +[activation_mode] +labels = "jkl;asdf" + +[builtins.applications] +weight = 5 +name = "applications" +placeholder = "Applications" +prioritize_new = true +hide_actions_with_empty_query = true +context_aware = true +refresh = true +show_sub_when_single = true +show_icon_when_single = true +show_generic = true +history = true + +[builtins.applications.actions] +enabled = true +hide_category = false +hide_without_query = true + +[builtins.bookmarks] +weight = 5 +placeholder = "Bookmarks" +name = "bookmarks" +icon = "bookmark" +switcher_only = true + +[[builtins.bookmarks.entries]] +label = "Walker" +url = "https://github.com/abenz1267/walker" +keywords = ["walker", "github"] + +[builtins.xdph_picker] +hidden = true +weight = 5 +placeholder = "Screen/Window Picker" +show_sub_when_single = true +name = "xdphpicker" +switcher_only = true + +[builtins.ai] +weight = 5 +placeholder = "AI" +name = "ai" +icon = "help-browser" +switcher_only = true + +[[builtins.ai.anthropic.prompts]] +model = "claude-3-5-sonnet-20241022" +temperature = 1 +max_tokens = 1_000 +label = "General Assistant" +prompt = "You are a helpful general assistant. Keep your answers short and precise." + +[builtins.calc] +require_number = true +weight = 5 +name = "calc" +icon = "accessories-calculator" +placeholder = "Calculator" +min_chars = 4 + +[builtins.windows] +weight = 5 +icon = "view-restore" +name = "windows" +placeholder = "Windows" +show_icon_when_single = true + +[builtins.clipboard] +exec = "wl-copy" +weight = 5 +name = "clipboard" +avoid_line_breaks = true +placeholder = "Clipboard" +image_height = 300 +max_entries = 10 +switcher_only = true + +[builtins.commands] +weight = 5 +icon = "utilities-terminal" +switcher_only = true +name = "commands" +placeholder = "Commands" + +[builtins.custom_commands] +weight = 5 +icon = "utilities-terminal" +name = "custom_commands" +placeholder = "Custom Commands" + +[builtins.emojis] +exec = "wl-copy" +weight = 5 +name = "emojis" +placeholder = "Emojis" +switcher_only = true +history = true +typeahead = true +show_unqualified = false + +[builtins.symbols] +after_copy = "" +weight = 5 +name = "symbols" +placeholder = "Symbols" +switcher_only = true +history = true +typeahead = true + +[builtins.finder] +use_fd = false +weight = 5 +icon = "file" +name = "finder" +placeholder = "Finder" +switcher_only = true +ignore_gitignore = true +refresh = true +concurrency = 8 +show_icon_when_single = true + +[builtins.runner] +weight = 5 +icon = "utilities-terminal" +name = "runner" +placeholder = "Runner" +typeahead = true +history = true +generic_entry = false +refresh = true + +[builtins.ssh] +weight = 5 +icon = "preferences-system-network" +name = "ssh" +placeholder = "SSH" +switcher_only = true +history = true +refresh = true + +[builtins.switcher] +weight = 5 +name = "switcher" +placeholder = "Switcher" +prefix = "/" + +[builtins.websearch] +weight = 5 +icon = "applications-internet" +name = "websearch" +placeholder = "Websearch" + +[[builtins.websearch.entries]] +name = "Google" +url = "https://www.google.com/search?q=%TERM%" +switcher_only = true + +[[builtins.websearch.entries]] +name = "DuckDuckGo" +url = "https://duckduckgo.com/?q=%TERM%" +#switcher_only = true + +[[builtins.websearch.entries]] +name = "Ecosia" +url = "https://www.ecosia.org/search?q=%TERM%" +switcher_only = true + +[[builtins.websearch.entries]] +name = "Yandex" +url = "https://yandex.com/search/?text=%TERM%" +switcher_only = true + +[builtins.dmenu] +hidden = true +weight = 5 +name = "dmenu" +placeholder = "Dmenu" +switcher_only = true diff --git a/.config/walker/themes/default.css b/.config/walker/themes/default.css new file mode 100644 index 0000000..7b4bdcb --- /dev/null +++ b/.config/walker/themes/default.css @@ -0,0 +1,162 @@ +/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */ + +@define-color foreground rgba(255, 255, 255, 0.8); +@define-color background hsla(240, 12.7%, 13.9%, 0.98); +@define-color color1 hsl(172, 100%, 25.3%); +/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */ + +#window, +#box, +#aiScroll, +#aiList, +#search, +#password, +#input, +#prompt, +#clear, +#typeahead, +#list, +child, +scrollbar, +slider, +#item, +#text, +#label, +#bar, +#sub, +#activationlabel { + all: unset; +} + +#cfgerr { + background: rgba(255, 0, 0, 0.4); + margin-top: 20px; + padding: 8px; + font-size: 1.2em; +} + +#window { + color: @foreground; +} + +#box { + border-radius: 2px; + background: @background; + padding: 32px; + border: 1px solid lighter(@background); + box-shadow: + 0 19px 38px rgba(0, 0, 0, 0.3), + 0 15px 12px rgba(0, 0, 0, 0.22); +} + +#search { + box-shadow: + 0 1px 3px rgba(0, 0, 0, 0.1), + 0 1px 2px rgba(0, 0, 0, 0.22); + background: lighter(@background); + padding: 8px; +} + +#prompt { + margin-left: 4px; + margin-right: 12px; + color: @foreground; + opacity: 0.2; +} + +#clear { + color: @foreground; + opacity: 0.8; +} + +#password, +#input, +#typeahead { + border-radius: 2px; +} + +#input { + background: none; +} + +#password { +} + +#spinner { + padding: 8px; +} + +#typeahead { + color: @foreground; + opacity: 0.8; +} + +#input placeholder { + opacity: 0.5; +} + +#list { +} + +child { + padding: 8px; + border-radius: 2px; +} + +child:selected, +child:hover { + background: alpha(@color1, 0.4); +} + +#item { +} + +#icon { + margin-right: 8px; +} + +#text { +} + +#label { + font-weight: 500; +} + +#sub { + opacity: 0.5; + font-size: 0.8em; +} + +#activationlabel { +} + +#bar { +} + +.barentry { +} + +.activation #activationlabel { +} + +.activation #text, +.activation #icon, +.activation #search { + opacity: 0.5; +} + +.aiItem { + padding: 10px; + border-radius: 2px; + color: @foreground; + background: @background; +} + +.aiItem.user { + padding-left: 0; + padding-right: 0; +} + +.aiItem.assistant { + background: lighter(@background); +} diff --git a/.config/walker/themes/default.toml b/.config/walker/themes/default.toml new file mode 100644 index 0000000..38d1ac6 --- /dev/null +++ b/.config/walker/themes/default.toml @@ -0,0 +1,103 @@ +# AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. + +[ui.anchors] +bottom = true +left = true +right = true +top = true + +[ui.window] +h_align = "fill" +v_align = "fill" + +[ui.window.box] +h_align = "center" +width = 450 + +[ui.window.box.bar] +orientation = "horizontal" +position = "end" + +[ui.window.box.bar.entry] +h_align = "fill" +h_expand = true + +[ui.window.box.bar.entry.icon] +h_align = "center" +h_expand = true +pixel_size = 24 +theme = "" + +[ui.window.box.margins] +top = 200 + +[ui.window.box.ai_scroll] +name = "aiScroll" +h_align = "fill" +v_align = "fill" +max_height = 300 +min_width = 400 +height = 300 +width = 400 + +[ui.window.box.ai_scroll.margins] +top = 8 + +[ui.window.box.ai_scroll.list] +name = "aiList" +orientation = "vertical" +width = 400 +spacing = 10 + +[ui.window.box.ai_scroll.list.item] +name = "aiItem" +h_align = "fill" +v_align = "fill" +x_align = 0 +y_align = 0 +wrap = true + +[ui.window.box.scroll.list] +marker_color = "#1BFFE1" +max_height = 300 +max_width = 400 +min_width = 400 +width = 400 + +[ui.window.box.scroll.list.item.activation_label] +h_align = "fill" +v_align = "fill" +width = 20 +x_align = 0.5 +y_align = 0.5 + +[ui.window.box.scroll.list.item.icon] +pixel_size = 26 +theme = "" + +[ui.window.box.scroll.list.margins] +top = 8 + +[ui.window.box.search.prompt] +name = "prompt" +icon = "edit-find" +theme = "" +pixel_size = 18 +h_align = "center" +v_align = "center" + +[ui.window.box.search.clear] +name = "clear" +icon = "edit-clear" +theme = "" +pixel_size = 18 +h_align = "center" +v_align = "center" + +[ui.window.box.search.input] +h_align = "fill" +h_expand = true +icons = true + +[ui.window.box.search.spinner] +hide = true diff --git a/.config/walker/themes/midnight-ocean.css b/.config/walker/themes/midnight-ocean.css new file mode 100644 index 0000000..598fc46 --- /dev/null +++ b/.config/walker/themes/midnight-ocean.css @@ -0,0 +1,172 @@ +/* AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. */ + +/* Palette */ +@define-color foreground rgba(202, 211, 232, 0.9); /* Sea Foam */ +@define-color background rgba(11, 27, 43, 0.98); /* Deep Ocean */ +@define-color color1 #4F84CC; /* Abyss Accent */ +@define-color selection_bg rgba(79, 132, 204, 0.5); /* Bubble Fade */ +@define-color search_bg rgba(15, 35, 55, 0.85); /* Searchbar BG */ + +/* Reset & Globals */ +#window, +#box, +#aiScroll, +#aiList, +#search, +#password, +#input, +#prompt, +#clear, +#typeahead, +#list, +child, +scrollbar, +slider, +#item, +#text, +#label, +#sub, +#activationlabel { + all: unset; + box-sizing: border-box; + font-family: "Inconsolata Go Nerd Font", monospace; + color: @foreground; +} + +/* Error */ +#cfgerr { + background: rgba(255, 0, 0, 0.4); + margin-top: 20px; + padding: 8px; + font-size: 1.2em; +} + +/* Main window */ +#window { + color: @foreground; +} + +/* Outer box */ +#box { + padding: 32px; + background: @background; + border-radius: 16px; /* bigger rounding */ + box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1); + backdrop-filter: blur(25px); + border-image: linear-gradient(45deg, color1, background) 1; + border-width: 1px; + border-style: solid; +} + +/* ── SEARCH BAR ───────────────────────────────────────────────────────────── */ +#search { + display: flex; + align-items: center; + padding: 12px 16px; + background: @search_bg; /* new tinted BG */ + border-radius: 20px; /* fully rounded */ + transition: + background 150ms ease, + border 150ms ease; +} +#search:focus-within { + background: rgba(15, 35, 55, 0.95); + border: 1px solid color1; +} +#prompt { + margin-right: 12px; + opacity: 0.3; +} +#input, +#text { + flex: 1; + background: none; + border: none; + outline: none; + font-size: 1em; + line-height: 1.2em; + color: @foreground; +} +#input::placeholder, +#text::placeholder { + opacity: 0.5; +} +#clear { + margin-left: 12px; + cursor: pointer; + opacity: 0.7; + transition: opacity 150ms ease; +} +#clear:hover { + opacity: 1; +} + +/* ── RESULTS LIST & ITEMS ─────────────────────────────────────────────────── */ +#list { + display: flex; + flex-direction: column; + max-height: 300px; + overflow-y: auto; +} +child { + display: flex; + align-items: center; + padding: 10px 14px; + border-radius: 12px; /* rounded items */ + transition: + background 120ms ease, + transform 120ms ease; +} +child + child { + margin-top: 4px; /* small gap instead of border */ +} +child:hover { + background: @selection_bg; + transform: translateX(3px); +} +child:selected { + background: @selection_bg; + border-left: 4px solid color1; + padding-left: 10px; /* adjust for border */ +} + +/* Icons & text */ +#icon { + margin-right: 10px; + opacity: 0.9; +} +#label { + font-weight: 500; +} +#sub { + margin-left: auto; + opacity: 0.6; + font-size: 0.85em; +} + +/* ── SCROLLBAR ─────────────────────────────────────────────────────────────── */ +scrollbar, +slider { + background: none; + width: 6px; +} +scrollbar:hover { + background: rgba(79, 132, 204, 0.2); +} +slider { + background: color1; + border-radius: 3px; +} + +/* ── AI PANEL ITEMS ───────────────────────────────────────────────────────── */ +.aiItem { + padding: 12px 16px; + border-radius: 12px; + background: @background; +} +.aiItem.user { + background: rgba(15, 35, 55, 0.8); +} +.aiItem.assistant { + background: rgba(15, 35, 55, 0.9); +} diff --git a/.config/walker/themes/midnight-ocean.toml b/.config/walker/themes/midnight-ocean.toml new file mode 100644 index 0000000..7569514 --- /dev/null +++ b/.config/walker/themes/midnight-ocean.toml @@ -0,0 +1,103 @@ +# AUTO GENERATED. DO NOT EDIT. CHANGES WILL BE OVERWRITTEN. + +[ui.anchors] +bottom = true +left = true +right = true +top = true + +[ui.window] +h_align = "fill" +v_align = "fill" + +[ui.window.box] +h_align = "center" +width = 450 + +[ui.window.box.bar] +orientation = "horizontal" +position = "end" + +[ui.window.box.bar.entry] +h_align = "fill" +h_expand = true + +[ui.window.box.bar.entry.icon] +h_align = "center" +h_expand = true +pixel_size = 24 +theme = "" + +[ui.window.box.margins] +top = 200 + +[ui.window.box.ai_scroll] +name = "aiScroll" +h_align = "fill" +v_align = "fill" +max_height = 300 +min_width = 400 +height = 300 +width = 400 + +[ui.window.box.ai_scroll.margins] +top = 8 + +[ui.window.box.ai_scroll.list] +name = "aiList" +orientation = "vertical" +width = 400 +spacing = 10 + +[ui.window.box.ai_scroll.list.item] +name = "aiItem" +h_align = "fill" +v_align = "fill" +x_align = 0 +y_align = 0 +wrap = true + +[ui.window.box.scroll.list] +marker_color = "#4F84CC" +max_height = 300 +max_width = 400 +min_width = 400 +width = 400 + +[ui.window.box.scroll.list.item.activation_label] +h_align = "fill" +v_align = "fill" +width = 20 +x_align = 0.5 +y_align = 0.5 + +[ui.window.box.scroll.list.item.icon] +pixel_size = 26 +theme = "" + +[ui.window.box.scroll.list.margins] +top = 8 + +[ui.window.box.search.prompt] +name = "prompt" +icon = "edit-find" +theme = "" +pixel_size = 26 +h_align = "center" +v_align = "center" + +[ui.window.box.search.clear] +name = "clear" +icon = "edit-clear" +theme = "" +pixel_size = 18 +h_align = "center" +v_align = "center" + +[ui.window.box.search.input] +h_align = "fill" +h_expand = true +icons = true + +[ui.window.box.search.spinner] +hide = true diff --git a/.config/waybar/config.jsonc##hostname.cn-arch b/.config/waybar/config.jsonc##hostname.cn-arch index d3ff436..107fa8d 100644 --- a/.config/waybar/config.jsonc##hostname.cn-arch +++ b/.config/waybar/config.jsonc##hostname.cn-arch @@ -1,4 +1,5 @@ { + // general bar settings "layer": "bottom", "output": ["DP-1", "DP-2", "!HDMI-A-2"], "position": "bottom", @@ -6,95 +7,70 @@ "exclusive": true, "gtk-layer-shell": true, "passthrough": false, - "height": 30, + "height": 32, + // which modules to show "modules-left": ["hyprland/workspaces"], "modules-center": ["mpris", "privacy"], "modules-right": [ - "custom/alhp", "cpu", "memory", "disk", - "bluetooth", - "pulseaudio", "network", + "pulseaudio", + "bluetooth", "battery", + "custom/alhp", "custom/razer-mouse-battery", "tray", "clock", ], "hyprland/workspaces": { - "icon-size": 32, - "spacing": 16, + "icon-size": 28, + "spacing": 12, "on-scroll-up": "hyprctl dispatch workspace r+1", "on-scroll-down": "hyprctl dispatch workspace r-1", }, "cpu": { "interval": 5, - "format": " {usage}%", - "max-length": 10, - }, - "disk": { - "interval": 30, - "format": "󰋊 {percentage_used}%", - "path": "/", - "tooltip": true, - "unit": "GB", - "tooltip-format": "Available {free} of {total}", + "format": " {usage}%", }, "memory": { "interval": 10, - "format": " {percentage}%", - "max-length": 10, + "format": " {percentage}%", "tooltip": true, - "tooltip-format": "RAM - {used:0.1f}GiB used", + "tooltip-format": "RAM: {used:.1f}GiB / {total:.1f}GiB", }, - "wlr/taskbar": { - "format": "{icon} {title:.17}", - "icon-size": 28, - "spacing": 3, - "on-click-middle": "close", - "tooltip-format": "{title}", - "ignore-list": [], - "on-click": "activate", - }, - "tray": { - "icon-size": 18, - "spacing": 3, - }, - "clock": { - "format": "{:%R | %d.%m.%Y}", - "tooltip-format": "{calendar}", - "calendar": { - "mode": "year", - "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", - }, + "disk": { + "interval": 30, + "format": "󰋊 {percentage_used}%", + "tooltip": true, + "tooltip-format": "Avail: {free} / {total}", }, "network": { - "format-wifi": "{essid} ({signalStrength}%) {icon}", - "format-ethernet": "{ifname}", - "format-disconnected": "󰌙", - "tooltip-format": "{ifname} via {gwaddr} 󰊗", - "tooltip-format-wifi": "{essid} ({signalStrength}%) ", - "tooltip-format-ethernet": "{ifname} ", - "tooltip-format-disconnected": "Disconnected", - "format-icons": ["󰤯 ", "󰤟 ", "󰤢 ", "󰤢 ", "󰤨 "], + // only show the Wi-Fi glyph on wifi… + "format-wifi": " {essid} ({signalStrength}%)", + // …and this little link-icon on Ethernet + "format-ethernet": " {ifname}", + "format-disconnected": "󰌙 Disconnected", + "tooltip-format": "{ifname} via {gwaddr}", + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": " Muted", + "scroll-step": 5, + "on-click": "pavucontrol", + "interval": 30, + "format-icons": { + // match these to the sink NAMES you see in `pactl list sinks` + "alsa_output.usb-SteelSeries_Arctis_7_-00.analog-stereo": "", // SteelSeries headset + "alsa_output.pci-0000_0a_00.4.iec958-stereo": "", // speaker icon for your soundbar + "bluez_output.50_5E_5C_2D_F3_B2.1": "", // Bluetooth earbud icon + "default": ["", ""], // fallback (low/hi) + }, + }, + "bluetooth": { + "format": " {status}", + "format-connected": " {device_alias} ({device_battery_percentage}%)", }, "battery": { "states": { @@ -102,89 +78,38 @@ "warning": 30, "critical": 20, }, - "format": "{icon} {capacity}%", - "format-charging": " {capacity}%", - "format-plugged": " {capacity}%", - "format-alt": "{time} {icon}", - "format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"], - }, - "pulseaudio": { - "format": "{volume}% {icon} ", - "format-bluetooth": "{volume}% {icon} ", - "format-muted": " ", - "format-icons": { - "alsa_output.pci-0000_00_1f.3.analog-stereo": "", - "alsa_output.pci-0000_00_1f.3.analog-stereo-muted": "", - "headphone": "", - "hands-free": "", - "headset": "\uF025", - "phone": "", - "phone-muted": "", - "portable": "", - "car": "", - "default": ["", ""], - }, - "scroll-step": 5, - "on-click": "pavucontrol", - "ignored-sinks": ["Easy Effects Sink"], - }, - "privacy": { - "icon-spacing": 4, - "icon-size": 14, - "transition-duration": 250, - "modules": [ - { - "type": "screenshare", - "tooltip": true, - "tooltip-icon-size": 12, - }, - { - "type": "audio-out", - "tooltip": true, - "tooltip-icon-size": 12, - }, - { - "type": "audio-in", - "tooltip": true, - "tooltip-icon-size": 12, - }, - ], - }, - "mpris": { - "format": "{player_icon} {dynamic}", - "format-paused": "{status_icon} {dynamic}", - "dynamic-len": 50, - "ellipsis": "…", - "player-icons": { - "default": "▶", - "mpv": "🎵", - }, - "status-icons": { - "paused": "⏸", - }, - }, - "bluetooth": { - "format": " {status}", - //"on-click": "", - "format-connected": " {device_alias}", - "format-connected-battery": " {device_alias} {device_battery_percentage}%", - "tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected", - "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}", - "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}", - "tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%", + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", }, "custom/alhp": { - "id": "custom-alhp", "exec": "$HOME/.config/waybar/scripts/alhp.sh", "return-type": "json", "interval": 60, + "format": "{text}", "tooltip": true, - "format": "{text}", }, "custom/razer-mouse-battery": { - "format": "{text}", - "return-type": "json", "exec": "$HOME/.config/waybar/scripts/razer_basilisk_v3_pro_battery_info.sh", + "return-type": "json", "interval": 10, + "format": "{text}", + }, + "tray": { + "icon-size": 18, + "spacing": 4, + }, + "clock": { + "format": "{:%R | %d.%m.%Y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "weeks-pos": "right", + }, + "actions": { + "on-click-right": "mode", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down", + }, }, } diff --git a/.config/waybar/scripts/razer_basilisk_v3_pro_battery_info.sh b/.config/waybar/scripts/razer_basilisk_v3_pro_battery_info.sh index 016770d..6963675 100755 --- a/.config/waybar/scripts/razer_basilisk_v3_pro_battery_info.sh +++ b/.config/waybar/scripts/razer_basilisk_v3_pro_battery_info.sh @@ -2,12 +2,12 @@ # Path to your Razer HID battery info #BASE="/sys/bus/hid/drivers/razermouse/0003:1532:00AB.000A" -BASE="/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.0/0003:1532:00AB.0009" +BASE_MOUSE="/sys/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-8/1-8.1/1-8.1.2/1-8.1.2:1.0/0003:1532:00AB.0009" # Read raw level and charging status -raw=$(cat "$BASE/charge_level") -status=$(cat "$BASE/charge_status") # 1=charging, 0=not charging -type=$(cat "$BASE/device_type") +raw=$(cat "$BASE_MOUSE/charge_level") +status=$(cat "$BASE_MOUSE/charge_status") # 1=charging, 0=not charging +type=$(cat "$BASE_MOUSE/device_type") # Compute % percent=$(( raw * 100 / 255 )) @@ -18,10 +18,10 @@ tooltip="$type" if [[ $status -eq 1 ]]; then icon="⚡" cls="charging" - text="$icon $percent%" + text="󰍽 $icon $percent%" else cls="not_charging" - text="$percent%" + text="󰍽 $percent%" fi # Output Waybar‐friendly JSON diff --git a/.config/waybar/style.css##hostname.cn-arch b/.config/waybar/style.css##hostname.cn-arch index d8959a2..8039625 100644 --- a/.config/waybar/style.css##hostname.cn-arch +++ b/.config/waybar/style.css##hostname.cn-arch @@ -1,218 +1,85 @@ -/*base background color*/ -@define-color bg_main rgba(25, 25, 25, 0.65); -@define-color bg_main_tooltip rgba(0, 0, 0, 0.7); - -/*base background color of selections */ -@define-color bg_hover rgba(200, 200, 200, 0.3); -/*base background color of active elements */ -@define-color bg_active rgba(100, 100, 100, 0.5); - -/*base border color*/ -@define-color border_main rgba(255, 255, 255, 0.2); - -/*text color for entries, views and content in general */ -@define-color content_main white; -/*text color for entries that are unselected */ -@define-color content_inactive rgba(255, 255, 255, 0.25); +/* Palette */ +@define-color bg_main rgba(11, 27, 43, 0.85); +@define-color bg_main_tooltip rgba(11, 27, 43, 0.95); +@define-color bg_hover rgba(79, 132, 204, 0.3); +@define-color bg_active rgba(53, 107, 171, 0.7); +@define-color border_main rgba(79, 132, 204, 0.5); +@define-color content_main #CAD3E8; +@define-color content_inactive rgba(202, 211, 232, 0.4); +@define-color warning_color #FFCC33; +/* Reset & Font */ * { - text-shadow: none; - box-shadow: none; - border: none; - border-radius: 0; font-family: "Inconsolata Go Nerd Font"; font-size: 14px; + text-shadow: none; + box-shadow: none; + border-radius: 0; + margin: 0; + padding: 0; } +/* Bar Background */ window#waybar { background: @bg_main; + color: @content_main; border-top: 1px solid @border_main; - color: @content_main; } +/* Tooltips */ tooltip { - font-size: 14px; background: @bg_main_tooltip; - border-radius: 5px; - border-width: 1px; - border-style: solid; - border-color: @border_main; -} -tooltip label { - color: @content_main; + border: 1px solid @border_main; + border-radius: 4px; + padding: 4px 6px; } +/* Module Spacing & Hover */ .module { - margin-left: 2px; - margin-right: 2px; + padding: 0 6px; + margin: 0 2px; +} +.module:hover { + background: @bg_hover; } -#workspaces { - color: transparent; - margin-right: 1.5px; - margin-left: 1.5px; +/* Separator Border */ +#cpu, +#memory, +#disk, +#network, +#pulseaudio, +#bluetooth, +#custom-alhp, +#custom-razer-mouse-battery { + border-right: 1px solid @border_main; } + +/* Workspaces Buttons */ #workspaces button { - padding: 3px; + padding: 4px 6px; color: @content_inactive; } #workspaces button.active { - color: whitesmoke; background: @bg_active; + color: @content_main; } #workspaces button.focused { - color: @bg_active; -} -#workspaces button.urgent { - background: rgba(255, 200, 0, 0.35); - color: @warning_color; -} -#workspaces button:hover { background: @bg_hover; color: @content_main; } - -#cpu, -#disk, -#memory { - border-bottom: 1px solid grey; - padding-right: 5px; - padding-left: 5px; -} - -#tray { - padding-left: 5px; - padding-right: 5px; -} -#tray > .passive { - border-bottom: none; -} -#tray > .active { -} -#tray > .needs-attention { - border-bottom: 3px solid @warning_color; -} -#tray > widget { - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); -} -#tray > widget:hover { - background: @bg_hover; -} - -#pulseaudio { - border-bottom: 1px solid grey; - padding-right: 5px; - padding-left: 5px; - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); -} -#pulseaudio:hover { - background: @bg_hover; -} - -#network { - border-bottom: 1px solid grey; - padding-right: 5px; - padding-left: 5px; +#workspaces button.urgent { + background: rgba(255, 204, 51, 0.35); + color: @warning_color; } +/* Tray & Clock Padding */ +#tray, #clock { - padding-right: 5px; - padding-left: 5px; - transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); -} -#clock:hover { - background: @bg_hover; + padding: 0 6px; } -#privacy { -} -#privacy-item { - padding-left: 5px; - padding-right: 5px; -} -#privacy-item.screenshare { - background: #850404; -} -#privacy-item.audio-in { - background: #6c045e; -} -#privacy-item.audio-out { - background: #02605b; -} - -#mpris { - padding-left: 5px; - padding-right: 5px; -} -#mpris.playing { -} -#mpris.paused { -} -#mpris.stopped { -} -#mpris.firefox { - border-bottom: 1px solid #fd8728; -} -#mpris.spotify { - border-bottom: 1px solid #17d860; -} -#mpris.mpv { - border-bottom: 1px solid #420042; -} -#mpris.chromium { - border-bottom: 1px solid #1a73e8; -} - -#bluetooth { - padding-right: 5px; - padding-left: 5px; -} -#bluetooth.disabled { - border-bottom: 1px solid grey; -} -#bluetooth.off { - border-bottom: 1px solid grey; -} -#bluetooth.on { - border-bottom: 1px solid #0059fd; -} -#bluetooth.connected { - border-bottom: 1px solid #00b7fa; -} -#bluetooth.discoverable { -} -#bluetooth.discovering { -} -#bluetooth.pairable { -} -#bluetooth.no-controller { - background: darkred; -} - -#custom-alhp { - padding-left: 5px; - padding-right: 5px; -} -#custom-alhp.good { - border-bottom: 1px solid #adff2f; -} -#custom-alhp.stale { - border-bottom: 1px solid #f6ac00; -} -#custom-alhp.bad { - border-bottom: 1px solid #ff4500; -} -#custom-alhp.down { - border-bottom: 1px solid #800000; -} - -#custom-razer-mouse-battery { - padding-left: 5px; - padding-right: 5px; -} -#custom-razer-mouse-battery.charging { - border-bottom: 1px solid #adff2f; -} -#custom-razer-mouse-battery.not_charging { - border-bottom: 1px solid #f6ac00; +/* Critical Battery Color */ +#battery.critical span { + color: @warning_color; }