feat(hypr): Enabling lockscreen and switching daemon

This commit is contained in:
js0ny 2025-04-07 08:50:00 +01:00
parent 68fee530a1
commit 14fe2aad5f
12 changed files with 634 additions and 310 deletions

View file

@ -10,6 +10,31 @@ XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
BROWSER_FLAG=$DOTFILES/platforms/linux/chromium-flags.conf BROWSER_FLAG=$DOTFILES/platforms/linux/chromium-flags.conf
ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.conf ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.conf
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
# --debug|-d)
# export LOG_LEVEL="DEBUG"
# log_debug "Debug mode enabled"
# shift
# ;;
--force|-f)
FORCE_FILE="true"
echo "Force update enabled"
shift
;;
*)
echo "Unknown argument: $1"
echo "Usage: chromium-flags.sh [--debug|-d] [--force|-f]"
exit 1
;;
esac
done
}
parse_args "$@"
# Browser Flags # Browser Flags
browser_flags_path=( browser_flags_path=(
@ -24,23 +49,23 @@ browser_flags_path=(
electron_flags_path=( electron_flags_path=(
"$XDG_CONFIG_HOME/electron-flags.conf" # General "$XDG_CONFIG_HOME/electron-flags.conf" # General
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode "$XDG_CONFIG_HOME/code-flags.conf" # VSCode
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # Slack "$XDG_CONFIG_HOME/qq-electron-flags.conf" # QQ
) )
for path in "${browser_flags_path[@]}"; do for path in "${browser_flags_path[@]}"; do
if [ -f "$path" ]; then if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Browser Flags: $path" echo "[INFO] Found Browser Flags: $path"
else else
echo "[INFO] Creating Browser Flags: $path" echo "[INFO] Creating Browser Flags: $path"
ln -s "$BROWSER_FLAG" "$path" ln -sf "$BROWSER_FLAG" "$path"
fi fi
done done
for path in "${electron_flags_path[@]}"; do for path in "${electron_flags_path[@]}"; do
if [ -f "$path" ]; then if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Electron Flags: $path" echo "[INFO] Found Electron Flags: $path"
else else
echo "[INFO] Creating Electron Flags: $path" echo "[INFO] Creating Electron Flags: $path"
ln -s "$ELECTRON_FLAG" "$path" ln -sf "$ELECTRON_FLAG" "$path"
fi fi
done done

View file

@ -0,0 +1,71 @@
#!/usr/bin/env bash
# vim:ft=bash
# chromium-flags.sh
# Set Chromium & Electron Flags
echo "[INFO] Set Chromium & Electron Flags"
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
BROWSER_FLAG=$DOTFILES/platforms/linux/chromium-flags.hypr.conf
ELECTRON_FLAG=$DOTFILES/platforms/linux/electron-flags.hypr.conf
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
# --debug|-d)
# export LOG_LEVEL="DEBUG"
# log_debug "Debug mode enabled"
# shift
# ;;
--force|-f)
FORCE_FILE="true"
echo "Force update enabled"
shift
;;
*)
echo "Unknown argument: $1"
echo "Usage: chromium-flags.sh [--debug|-d] [--force|-f]"
exit 1
;;
esac
done
}
parse_args "$@"
# Browser Flags
browser_flags_path=(
"$XDG_CONFIG_HOME/chromium-flags.conf" # Chromium
"$XDG_CONFIG_HOME/chrome-flags.conf" # Google Chrome
"$XDG_CONFIG_HOME/thorium-flags.conf" # Thorium
"$XDG_CONFIG_HOME/vivaldi-flags.conf" # Vivaldi
"$XDG_CONFIG_HOME/vivaldi-stable.conf" # Vivaldi
)
electron_flags_path=(
"$XDG_CONFIG_HOME/electron-flags.conf" # General
"$XDG_CONFIG_HOME/code-flags.conf" # VSCode
"$XDG_CONFIG_HOME/qq-electron-flags.conf" # QQ
)
for path in "${browser_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Browser Flags: $path"
else
echo "[INFO] Creating Browser Flags: $path"
ln -sf "$BROWSER_FLAG" "$path"
fi
done
for path in "${electron_flags_path[@]}"; do
if [ -f "$path" ] && [ "$FORCE_FILE" != "true" ]; then
echo "[INFO] Found Electron Flags: $path"
else
echo "[INFO] Creating Electron Flags: $path"
ln -sf "$ELECTRON_FLAG" "$path"
fi
done

View file

@ -0,0 +1,5 @@
--UseOzonePlatform=wayland
--ozone-platform=wayland
--password-store=kwallet6
--enable-wayland-ime
--force-device-scale-factor=1.75

View file

@ -0,0 +1,5 @@
--enable-features=WaylandWindowDecorations
--enable-features=UseOzonePlatform
--ozone-platform-hint=auto
--enable-wayland-ime
--force-device-scale-factor=1.75

View file

@ -9,6 +9,6 @@ general {
listener { listener {
timeout = 600 # in seconds timeout = 600 # in seconds
on-timeout = notify-send "You are idle!" # command to run when timeout has passed on-timeout = swaylock # command to run when timeout has passed
on-resume = notify-send "Welcome back!" # command to run when activity is detected after timeout has fired. on-resume = notify-send "Welcome back!" # command to run when activity is detected after timeout has fired.
} }

View file

@ -44,7 +44,7 @@ xwayland {
# monitor=,preferred,auto,auto # monitor=,preferred,auto,auto
# Format: # Format:
# MONITOR_NAME,RESOLUTION@REFRESH_RATE,OFFSET_XxOFFSET_Y,SCALE # MONITOR_NAME,RESOLUTION@REFRESH_RATE,OFFSET_XxOFFSET_Y,SCALE
monitor=DP-2,3840x2160@60,0x0,1.875 monitor=DP-2,3840x2160@60,0x0,1.667
################### ###################
@ -71,10 +71,11 @@ $menu = rofi
# Top Bar # Top Bar
exec-once = waybar & exec-once = waybar &
# Notifications # Notifications
exec-once = mako & exec-once = dunst &
# exec-once = hyprpanel & # exec-once = hyprpanel &
# wallpapers # wallpapers
exec-once = hyprpaper & exec-once = swww-daemon &
exec-once = hypridle &
# Authentication agent # Authentication agent
exec-once = systemctl --user start hyprpolkitagent exec-once = systemctl --user start hyprpolkitagent
# Input Method # Input Method
@ -106,8 +107,7 @@ env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps
# https://discuss.kde.org/t/the-themes-i-use-with-qt6ct-are-not-applied-in-discover/17118 # https://discuss.kde.org/t/the-themes-i-use-with-qt6ct-are-not-applied-in-discover/17118
env = QT_QUICK_CONTROLS_STYLE,org.kde.desktop env = QT_QUICK_CONTROLS_STYLE,org.kde.desktop
env = LC_CTYPE,zh_CN.UTF-8 env = LC_CTYPE,en_GB.UTF-8
env = LC_ALL,zh_CN.UTF-8
##################### #####################
@ -144,8 +144,8 @@ decoration {
rounding = 10 rounding = 10
# Change transparency of focused and unfocused windows # Change transparency of focused and unfocused windows
active_opacity = 1.0 active_opacity = 0.97
inactive_opacity = 1.0 inactive_opacity = 0.85
shadow { shadow {
enabled = true enabled = true
@ -268,8 +268,11 @@ bind = $mainMod, R, exec, $terminal
bind = $mainMod, Q, killactive, bind = $mainMod, Q, killactive,
# bind = $mainMod, M, exit, # bind = $mainMod, M, exit,
bind = $mainMod, F, exec, $fileManager bind = $mainMod, F, exec, $fileManager
bind = $mainMod, V, exec, cliphist list | rofi --dmenu | cliphist decode | wl-copy bind = $mainMod, V, exec, cliphist list | $menu -dmenu | cliphist decode | wl-copy
bind = $mainMod SHIFT, F, togglefloating bind = $mainMod, W, exec, $menu -show window
bind = $mainMod SHIFT, F, exec, hyprctl --batch "dispatch togglefloating ; dispatch resizeactive exact 800 1000 ; dispatch centerwindow 1;"
bind = alt, space, exec, $menu -show drun bind = alt, space, exec, $menu -show drun
bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, P, pseudo, # dwindle
@ -284,12 +287,14 @@ bind = $mainMod, h, movefocus, l
bind = $mainMod, i, movefocus, r bind = $mainMod, i, movefocus, r
bind = $mainMod, e, movefocus, u bind = $mainMod, e, movefocus, u
bind = $mainMod, n, movefocus, d bind = $mainMod, n, movefocus, d
bind = $mainMod alt, h, swapwindow, l bind = $mainMod SHIFT, h, swapwindow, l
bind = $mainMod alt, i, swapwindow, r bind = $mainMod SHIFT, i, swapwindow, r
bind = $mainMod alt, e, swapwindow, u bind = $mainMod SHIFT, e, swapwindow, u
bind = $mainMod alt, n, swapwindow, d bind = $mainMod SHIFT, n, swapwindow, d
bind = $mainMod, c, exec, hyprshot -m region -o $HOME/Pictures/Screenshots/ bind = $mainMod SHIFT, l, exec, swaylock
bind = $mainMod, c, exec, grimblast copysave area $HOME/Pictures/Screenshots/"$(date +%Y%m%d-%H%M%S)"
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, workspace, 1
@ -359,3 +364,5 @@ windowrulev2 = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland # Fix some dragging issues with XWayland
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0 windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
windowrulev2 = float, class:qt6ct,

View file

@ -9,4 +9,5 @@
# ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr # ln -sf $DOTFILES/platforms/linux/hypr $XDG_CONFIG_HOME/hypr
preload = ~/Pictures/Wallpaper/current.jpg preload = ~/Pictures/Wallpaper/current.jpg
wallpaper = DP-2, ~/Pictures/Wallpaper/current.jpg preload = ~/Pictures/Wallpaper/current.png
wallpaper = DP-2, ~/Pictures/Wallpaper/current.png

View file

@ -3,6 +3,14 @@ _k_friendly_name=活动管理器
switch-to-activity-32e1f2d2-08d1-4a8b-886a-0a062f999068=none,none,Switch to activity "Default" switch-to-activity-32e1f2d2-08d1-4a8b-886a-0a062f999068=none,none,Switch to activity "Default"
switch-to-activity-e1ebfdac-0f52-47a5-9e7a-d9eb5cc26845=none,none,切换到活动“默认” switch-to-activity-e1ebfdac-0f52-47a5-9e7a-d9eb5cc26845=none,none,切换到活动“默认”
[Clementine]
_k_friendly_name=Clementine
next_album=Shift+Media Next,none,Next album
next_track=none,none,下一个曲目
play_pause=none,none,播放/暂停
prev_track=none,none,上一个曲目
stop=none,none,停止
[KDE Keyboard Layout Switcher] [KDE Keyboard Layout Switcher]
Switch keyboard layout to English (Colemak)=none,none,Switch keyboard layout to English (Colemak) Switch keyboard layout to English (Colemak)=none,none,Switch keyboard layout to English (Colemak)
Switch keyboard layout to English (US)=none,none,Switch keyboard layout to English (US) Switch keyboard layout to English (US)=none,none,Switch keyboard layout to English (US)
@ -54,6 +62,11 @@ Reboot Without Confirmation=none,,重启 (无需确认)
Shut Down=none,,关机 Shut Down=none,,关机
_k_friendly_name=会话管理 _k_friendly_name=会话管理
[ktorrent]
_k_friendly_name=KTorrent
queue_suspend=Alt+Shift+P,Alt+Shift+P,暂停种子
show_kt=Alt+Shift+T,Alt+Shift+T,显示/隐藏 KTorrent
[kwin] [kwin]
Activate Window Demanding Attention=Meta+Ctrl+A,Meta+Ctrl+A,激活请求注意的窗口 Activate Window Demanding Attention=Meta+Ctrl+A,Meta+Ctrl+A,激活请求注意的窗口
Cycle Overview=none,none,循环显示桌面概览和网格视图 Cycle Overview=none,none,循环显示桌面概览和网格视图

View file

@ -1,37 +0,0 @@
{
"include": "~/.config/waybar/modules",
"name": "main-bar",
"id": "main-bar",
"layer": "top",
"mode": "dock",
"exclusive": true,
"passthrough": false,
"position": "top",
"output": "DP-2",
"height": 32,
"width": "",
"spacing": 6,
"margin": 0,
"margin-top": 0,
"margin-bottom": 0,
"margin-left": 0,
"margin-right": 0,
"fixed-center": true,
"ipc": true,
"modules-left": [
"custom/menu",
"hyprland/workspaces"
],
// "modules-center": [
// "hyprland/window",
// "mpd"
// ],
"modules-right": [
"tray",
"pulseaudio",
"custom/weather",
"battery",
"clock",
"custom/power"
]
}

View file

@ -0,0 +1,213 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"include": [
"~/.config/waybar/modules/hyprland-workspace.jsonc"
],
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces#rw",
"sway/mode",
"sway/scratchpad"
],
"modules-center": [
"hyprland/window"
],
"modules-right": [
"tray",
// "idle_inhibitor",
"pulseaudio",
"network",
// "power-profiles-daemon",
"cpu",
"memory",
"temperature",
"backlight",
// "hyprland/language",
"battery",
"clock"
],
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%Y-%m-%d}"
},
"cpu": {
"format": "{usage}% ",
"tooltip": false
},
"memory": {
"format": "{}% "
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{temperatureC}°C {icon}",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{percent}% {icon}",
"format-icons": ["🌑", "🌘", "🌗", "🌖", "🌕"]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-full": "{capacity}% {icon}",
"format-charging": "{capacity}% ",
"format-plugged": "{capacity}% ",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "{essid} ({signalStrength}%) ",
"format-ethernet": "{ipaddr}/{cidr} ",
"tooltip-format": "{ifname} via {gwaddr} ",
"format-linked": "{ifname} (No IP) ",
"format-disconnected": "Disconnected ⚠",
"format-alt": "{ifname}: {ipaddr}/{cidr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{volume}% {icon} {format_source}",
"format-bluetooth": "{volume}% {icon} {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": " {format_source}",
"format-source": "{volume}% ",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

View file

@ -1,149 +0,0 @@
// Waybar modules configuration
{
// waybar-backlight
"backlight": {
"interval": 2,
"align": 0,
"rotate": 0,
//"device": "amdgpu_bl0",
"format": "{icon} {percent}%",
"format-icons": [
"",
"",
"",
""
],
// Commands to execute on events
"on-click": "",
"on-click-middle": "",
"on-click-right": "",
"on-update": "",
"on-scroll-up": "light -A 5%",
"on-scroll-down": "light -U 5%",
"smooth-scrolling-threshold": 1
},
"hyprland/workspaces": {
"format": "{icon} {windows}",
"format-window-separator": " ",
"window-rewrite-default": "",
"window-rewrite": {
"title<.*youtube.*>": "",
"class<firefox>": "",
"class<.*wezterm>": "",
"class<kitty>": "",
"class<wofi>": "󱓞",
"class<firefox> title<.*github.*>": "",
"class<Vivaldi.*>": "󰰬",
"obsidian": "󱓩",
"foot": "",
"Cider": "",
"class<org.kde.dolphin>": "",
"code": "󰨞",
"class<.*telegram.*>": "",
"discord": "",
"neovide": "",
"class<org.kde.okular>": "",
"class<.*wechat.*>": "",
"QQ": "",
"class<Tor Browser>": "",
"Zotero": "",
"class<ticktick>": "",
"class<net.ankiweb.Anki>": "",
}
},
// waybar-battery
"battery": {
"interval": 60,
"align": 0,
"rotate": 0,
//"bat": "BAT1",
//"adapter": "ACAD",
"full-at": 100,
"design-capacity": false,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-full": "{icon} Full",
//"format-good": "",
"format-alt": "{icon} {time}",
"format-icons": [
"",
"",
"",
"",
""
],
"format-time": "{H}h {M}min",
"tooltip": true
},
// waybar-clock
"clock": {
"interval": 1,
"align": 0,
"rotate": 0,
"tooltip-format": "<big>{:%B %Y}</big>\n<tt><small>{calendar}</small></tt>",
"format": " {:%H:%M:%S}",
"format-alt": " {:%a %b %d, %G}"
},
// waybar-cpu
"cpu": {
"interval": 5,
"format": " {usage}%"
},
// waybar-custom
"custom/menu": {
"format": "󰣇 ",
"tooltip": false,
"on-click": "wofi"
},
"custom/power": {
"format": "⏻",
"tooltip": false,
"on-click": "wlogout"
},
// weather-custom
"custom/weather": {
"format": "{}",
"format-alt": "{alt}: {}",
"format-alt-click": "click-right",
"interval": 1800,
"return-type": "json",
"exec": "~/.config/hypr/scripts/weather.sh",
"exec-if": "ping wttr.in -c1"
},
// waybar-tray
"tray": {
"icon-size": 16,
"spacing": 10
},
"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": "",
"phone": "",
"phone-muted": "",
"portable": "",
"car": "",
"default": [
"",
""
]
},
"scroll-step": 1,
"on-click": "pavucontrol",
"ignored-sinks": [
"Easy Effects Sink"
]
}
}

View file

@ -1,184 +1,354 @@
/** ********** Fonts ********** **/ @define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;*
* { * {
font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; font-family: 'Maple Mono NF SC', 'Noto Sans Mono', 'Font Awesome 6 Free', 'Font Awesome 6 Brands', monospace;
font-size: 12px; font-size: 13px;
} }
/** ********** Waybar Window ********** **/
window#waybar { window#waybar {
background-color: #1e1e2e; /* background-color: rgba(43, 48, 59, 0.5); */
color: #1e1e2e; /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
border-bottom: 2px solid #313244; background-color: @base;
color: #ffffff;
transition-property: background-color; transition-property: background-color;
transition-duration: .5s; transition-duration: .5s;
} }
window#waybar.hidden { window#waybar.hidden {
opacity: 0.5; opacity: 0.2;
} }
/** ********** Backlight ********** **/ /*
#backlight { window#waybar.empty {
background-color: #cba6f7; background-color: transparent;
}
window#waybar.solo {
background-color: #FFFFFF;
}
*/
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px #ffffff;
}
/* you can set a style on hover for any module like this */
#pulseaudio:hover {
background-color: #a37800;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #ffffff;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.focused {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#power-profiles-daemon,
#mpd {
padding: 0 10px;
color: #ffffff;
}
#window,
#workspaces {
margin: 0 4px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
background-color: #64727D;
} }
/** ********** Battery ********** **/
#battery { #battery {
background-color: #f9e2af; background-color: #ffffff;
color: #000000;
} }
#battery.charging { #battery.charging, #battery.plugged {
} color: #ffffff;
background-color: #26A65B;
#battery.plugged {
} }
@keyframes blink { @keyframes blink {
to { to {
background-color: #ffffff;
color: #000000; color: #000000;
} }
} }
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: #f38ba8; background-color: #f53c3c;
color: #f38ba8; color: #ffffff;
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: steps(12);
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-direction: alternate; animation-direction: alternate;
} }
/** ********** Clock ********** **/ #power-profiles-daemon {
#clock { padding-right: 15px;
background-color: #a6e3a1; }
#power-profiles-daemon.performance {
background-color: #f53c3c;
color: #ffffff;
}
#power-profiles-daemon.balanced {
background-color: #2980b9;
color: #ffffff;
}
#power-profiles-daemon.power-saver {
background-color: #2ecc71;
color: #000000;
}
label:focus {
background-color: #000000;
} }
/** ********** CPU ********** **/
#cpu { #cpu {
background-color: #89dceb; background-color: #2ecc71;
color: #000000;
} }
/** ********** Memory ********** **/
#memory { #memory {
background-color: #eba0ac; background-color: #9b59b6;
} }
/** ********** Disk ********** **/
#disk { #disk {
background-color: #b4befe; background-color: #964B00;
} }
/** ********** Tray ********** **/ #backlight {
#tray { background-color: #90b1b1;
background-color: #cdd6f4;
} }
#network {
background-color: #2980b9;
}
#network.disconnected {
background-color: #f53c3c;
}
#pulseaudio {
background-color: #f1c40f;
color: #000000;
}
#pulseaudio.muted {
background-color: #90b1b1;
color: #2a5c45;
}
#wireplumber {
background-color: #fff0f5;
color: #000000;
}
#wireplumber.muted {
background-color: #f53c3c;
}
#custom-media {
background-color: #66cc99;
color: #2a5c45;
min-width: 100px;
}
#custom-media.custom-spotify {
background-color: #66cc99;
}
#custom-media.custom-vlc {
background-color: #ffa000;
}
#temperature {
background-color: #f0932b;
}
#temperature.critical {
background-color: #eb4d4b;
}
#tray {
background-color: #2980b9;
}
#tray > .passive { #tray > .passive {
-gtk-icon-effect: dim; -gtk-icon-effect: dim;
} }
#tray > .needs-attention { #tray > .needs-attention {
-gtk-icon-effect: highlight; -gtk-icon-effect: highlight;
} background-color: #eb4d4b;
#tray > .active { }
#idle_inhibitor {
background-color: #2d3436;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
} }
/** ********** MPD ********** **/
#mpd { #mpd {
background-color: #94e2d5; background-color: #66cc99;
color: #2a5c45;
} }
#mpd.disconnected { #mpd.disconnected {
background-color: #f38ba8; background-color: #f53c3c;
} }
#mpd.stopped { #mpd.stopped {
background-color: #f5c2e7; background-color: #90b1b1;
}
#mpd.playing {
background-color: #74c7ec;
} }
#mpd.paused { #mpd.paused {
background-color: #51a37a;
} }
/** ********** Pulseaudio ********** **/ #language {
#pulseaudio { background: #00b093;
background-color: #fab387; color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
} }
#pulseaudio.bluetooth { #keyboard-state {
background-color: #f5c2e7; background: #97e1ad;
} color: #000000;
#pulseaudio.muted { padding: 0 0px;
background-color: #313244; margin: 0 5px;
color: #cdd6f4; min-width: 16px;
} }
/** ********** Network ********** **/ #keyboard-state > label {
#network { padding: 0 5px;
background-color: #89b4fa;
} }
#network.disconnected,#network.disabled { #keyboard-state > label.locked {
background-color: #313244; background: rgba(0, 0, 0, 0.2);
color: #cdd6f4;
}
#network.linked {
}
#network.ethernet {
}
#network.wifi {
} }
/** ********** Custom ********** **/ #scratchpad {
#custom-menu, #custom-power, #custom-weather, #custom-updater { background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
margin: 6px 0px;
padding: 2px 8px;
} }
#custom-menu { #scratchpad.empty {
background-color: #f5c2e7; background-color: transparent;
margin-left: 6px;
padding: 2px 6px;
font-size: 16px;
} }
#custom-power { #privacy {
background-color: #f38ba8; padding: 0;
margin-right: 6px;
padding: 2px 8px;
font-size: 16px;
} }
#custom-updater { #privacy-item {
background-color: #e6ed7b; padding: 0 5px;
margin-right: 6px; color: white;
padding: 2px 8px;
font-size: 12px;
} }
#custom-weather { #privacy-item.screenshare {
background-color: #cba6f7; background-color: #cf5700;
margin-right: 6px;
padding: 2px 8px;
font-size: 12px;
} }
/** Common style **/ #privacy-item.audio-in {
#backlight, background-color: #1ca000;
#battery, }
#clock,
#cpu, #privacy-item.audio-out {
#disk, background-color: #0069d4;
#mode,
#memory,
#mpd,
#tray,
#pulseaudio,
#network {
border-radius: 4px;
margin: 6px 0px;
padding: 2px 8px;
} }