Compare commits
2 Commits
649e324ac7
...
810060dc10
| Author | SHA1 | Date | |
|---|---|---|---|
| 810060dc10 | |||
| 03e8aa1343 |
@@ -7,7 +7,7 @@
|
|||||||
animations {
|
animations {
|
||||||
enabled = yes
|
enabled = yes
|
||||||
bezier = overshot, 0.13, 0.99, 0.29, 1.1
|
bezier = overshot, 0.13, 0.99, 0.29, 1.1
|
||||||
animation = windowsIn, 1, 4, overshot, slide
|
animation = windowsIn, 1, 4, overshot, popin
|
||||||
animation = windowsOut, 1, 5, default, popin 80%
|
animation = windowsOut, 1, 5, default, popin 80%
|
||||||
animation = border, 1, 5, default
|
animation = border, 1, 5, default
|
||||||
animation = workspacesIn, 1, 6, overshot, slide
|
animation = workspacesIn, 1, 6, overshot, slide
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
source = ~/.config/hypr/config/defaults.conf
|
source = ~/.config/hypr/config/defaults.conf
|
||||||
|
|
||||||
# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing #
|
# Autostart wiki https://wiki.hyprland.org/0.45.0/Configuring/Keywords/#executing #
|
||||||
|
|
||||||
exec-once = /home/michaelb/.config/hypr/scripts/launch-waybar.sh &
|
exec-once = /home/michaelb/.config/hypr/scripts/launch-waybar.sh &
|
||||||
exec-once = blueman-applet &
|
exec-once = blueman-applet &
|
||||||
exec-once = fcitx5 -d &
|
exec-once = fcitx5 -d &
|
||||||
@@ -26,5 +25,11 @@ exec-once = $idlehandler
|
|||||||
|
|
||||||
# Clipboard fix
|
# Clipboard fix
|
||||||
# https://github.com/hyprwm/Hyprland/issues/2319#issuecomment-2409983376
|
# https://github.com/hyprwm/Hyprland/issues/2319#issuecomment-2409983376
|
||||||
exec-once = wl-paste -t text -w xclip -selection clipboard &
|
#exec-once = wl-paste -t text -w xclip -selection clipboard &
|
||||||
exec-once = wl-paste --watch cliphist store &
|
#exec-once = wl-paste --watch cliphist store &
|
||||||
|
|
||||||
|
# vicinae
|
||||||
|
exec-once = vicinae server
|
||||||
|
|
||||||
|
# pyprland
|
||||||
|
exec-once = /usr/bin/pypr --debug /tmp/pypr.log
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
$wallpaper = /usr/share/wallpapers/downloaded/pexels-zetong-li-880728-18780512.jpg
|
$wallpaper = /usr/share/wallpapers/downloaded/pexels-jplenio-1102912.jpg
|
||||||
$background = rgb(0D0F10)
|
$background = rgb(0E0E11)
|
||||||
$foreground = rgb(FCF1D3)
|
$foreground = rgb(FDF2DE)
|
||||||
$color0 = rgb(38393A)
|
$color0 = rgb(38393C)
|
||||||
$color1 = rgb(7F4E47)
|
$color1 = rgb(424652)
|
||||||
$color2 = rgb(7D7F54)
|
$color2 = rgb(6A3E40)
|
||||||
$color3 = rgb(8B7C7D)
|
$color3 = rgb(736956)
|
||||||
$color4 = rgb(61868C)
|
$color4 = rgb(897C88)
|
||||||
$color5 = rgb(D2D1E6)
|
$color5 = rgb(9B8166)
|
||||||
$color6 = rgb(F5D782)
|
$color6 = rgb(F9D9A2)
|
||||||
$color7 = rgb(F2E3B8)
|
$color7 = rgb(F4E4C8)
|
||||||
$color8 = rgb(A99F81)
|
$color8 = rgb(AA9F8C)
|
||||||
$color9 = rgb(7F4E47)
|
$color9 = rgb(424652)
|
||||||
$color10 = rgb(7D7F54)
|
$color10 = rgb(6A3E40)
|
||||||
$color11 = rgb(8B7C7D)
|
$color11 = rgb(736956)
|
||||||
$color12 = rgb(61868C)
|
$color12 = rgb(897C88)
|
||||||
$color13 = rgb(D2D1E6)
|
$color13 = rgb(9B8166)
|
||||||
$color14 = rgb(F5D782)
|
$color14 = rgb(F9D9A2)
|
||||||
$color15 = rgb(F2E3B8)
|
$color15 = rgb(F4E4C8)
|
||||||
@@ -9,16 +9,16 @@ source = ~/.config/hypr/config/colors.conf
|
|||||||
decoration {
|
decoration {
|
||||||
active_opacity = 1
|
active_opacity = 1
|
||||||
inactive_opacity = 0.7
|
inactive_opacity = 0.7
|
||||||
rounding = 10
|
rounding = 1
|
||||||
dim_inactive = true
|
dim_inactive = true
|
||||||
dim_strength = 0.1
|
dim_strength = 0.1
|
||||||
|
|
||||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#blur
|
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#blur
|
||||||
blur {
|
blur {
|
||||||
size = 15
|
size = 30
|
||||||
passes = 2 # more passes = more resource intensive.
|
passes = 2 # more passes = more resource intensive.
|
||||||
xray = true
|
xray = true
|
||||||
noise = 0.03
|
noise = 0.01
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#shadow
|
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#shadow
|
||||||
|
|||||||
@@ -2,9 +2,11 @@
|
|||||||
# ┃ Defaults Configuration ┃
|
# ┃ Defaults Configuration ┃
|
||||||
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||||
|
|
||||||
$filemanager = dolphin
|
$filemanager = nemo
|
||||||
$applauncher = tofi-drun --drun-launch=true
|
#$applauncher = tofi-drun --drun-launch=true
|
||||||
#$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run
|
#$applauncher = rofi -show combi -modi window,run,combi -combi-modi window,run
|
||||||
|
$dmenu = vicinae dmenu --placeholder
|
||||||
|
$applauncher = vicinae toggle
|
||||||
$terminal = kitty
|
$terminal = kitty
|
||||||
$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000'
|
$idlehandler = swayidle -w timeout 300 'swaylock -f -c 000000' before-sleep 'swaylock -f -c 000000'
|
||||||
$capturing = grim -g "$(slurp)" - | swappy -f -
|
$capturing = grim -g "$(slurp)" - | swappy -f -
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ envd = XCURSOR_SIZE,24
|
|||||||
envd = QT_CURSOR_SIZE,24
|
envd = QT_CURSOR_SIZE,24
|
||||||
|
|
||||||
# Force electron apps to use wayland
|
# Force electron apps to use wayland
|
||||||
# env = ELECTRON_OZONE_PLATFORM_HINT, auto
|
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||||
# env = QT_QPA_PLATFORM, wayland
|
env = QT_QPA_PLATFORM, wayland
|
||||||
# env = SDL_VIDEODRIVER, wayland
|
env = SDL_VIDEODRIVER, wayland
|
||||||
# env = CLUTTER_BACKEND, wayland
|
env = CLUTTER_BACKEND, wayland
|
||||||
# env = XDG_SESSION_TYPE, wayland
|
env = XDG_SESSION_TYPE, wayland
|
||||||
# env = MOZ_ENABLE_WAYLAND, 1
|
env = MOZ_ENABLE_WAYLAND, 1
|
||||||
# env = NIXOS_OZONE_WL, 1
|
env = NIXOS_OZONE_WL, 1
|
||||||
|
|
||||||
# fixes full screen flickering
|
# fixes full screen flickering
|
||||||
env = WLR_DRM_NO_DIRECT_SCANOUT,1
|
env = WLR_DRM_NO_DIRECT_SCANOUT,1
|
||||||
|
|||||||
@@ -1,14 +1,11 @@
|
|||||||
|
# 0. Includes
|
||||||
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
||||||
# ┃ Keybinds ┃
|
|
||||||
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
||||||
|
|
||||||
source = ~/.config/hypr/config/defaults.conf
|
source = ~/.config/hypr/config/defaults.conf
|
||||||
|
|
||||||
|
# 1. Applications
|
||||||
# https://wiki.hyprland.org/Configuring/Binds/
|
# https://wiki.hyprland.org/Configuring/Binds/
|
||||||
bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal
|
bindd = $mainMod, RETURN, Opens your preferred terminal emulator ($terminal), exec, $terminal
|
||||||
bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager
|
bindd = $mainMod, E, Opens your preferred filemanager ($filemanager), exec, $filemanager
|
||||||
bindd = $mainMod, A, Screen capture selection, exec, $capturing
|
#bindd = $mainMod, A, Screen capture selection, exec, $capturing
|
||||||
bindd = $mainMod, Q, Closes (not kill) current window, killactive,
|
bindd = $mainMod, Q, Closes (not kill) current window, killactive,
|
||||||
bindd = $mainMod SHIFT, M, Exits Hyprland by terminating the user sessions, exec, loginctl terminate-user ""
|
bindd = $mainMod SHIFT, M, Exits Hyprland by terminating the user sessions, exec, loginctl terminate-user ""
|
||||||
bindd = $mainMod, V, Switches current window between floating and tiling mode, togglefloating,
|
bindd = $mainMod, V, Switches current window between floating and tiling mode, togglefloating,
|
||||||
@@ -146,14 +143,14 @@ bind = , PRINT, exec, hyprshot -m output
|
|||||||
# Screenshot a region
|
# Screenshot a region
|
||||||
bind = $shiftMod, PRINT, exec, hyprshot -m region
|
bind = $shiftMod, PRINT, exec, hyprshot -m region
|
||||||
# Screenrec
|
# Screenrec
|
||||||
bind = $mainMod, S, exec, ~/.config/hypr/scripts/record-or-screenshot.sh
|
bind = $mainMod, S, exec, ~/.config/hypr/scripts/record-or-screenshot.sh -d "$dmenu"
|
||||||
|
|
||||||
# ======= Color Picker =======
|
# ======= Color Picker =======
|
||||||
bindd = $mainMod, P, Launch hyprpicker to pick a color, exec, hyprpicker -a
|
bindd = $mainMod, P, Launch hyprpicker to pick a color, exec, hyprpicker -a
|
||||||
|
|
||||||
# ======= Additional Settings =======
|
# ======= Additional Settings =======
|
||||||
|
#bind = $mainMod, c, exec, cliphist list | tofi --prompt-text="clip:" | cliphist decode | wl-copy
|
||||||
bind = $mainMod, c, exec, cliphist list | tofi --prompt-text="clip:" | cliphist decode | wl-copy
|
bind = $mainMod, c, exec, vicinae vicinae://extensions/vicinae/clipboard/history
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Binds
|
# https://wiki.hyprland.org/Configuring/Binds
|
||||||
binds {
|
binds {
|
||||||
|
|||||||
@@ -4,10 +4,15 @@
|
|||||||
|
|
||||||
# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/
|
# Monitor wiki https://wiki.hyprland.org/0.45.0/Configuring/Monitors/
|
||||||
|
|
||||||
monitor = eDP-2, highres@highrr, 0x0, 1, vrr, 0
|
monitor = desc:BOE NE156FHM-NX6, highres@highrr, 0x0, 1, vrr, 1
|
||||||
monitor = DP-2, highres@highrr, auto-left, 1, vrr, 0
|
# monitor = DP-2, highres@highrr, auto-left, 1, vrr, 0
|
||||||
|
|
||||||
monitor = HDMI-A-1, highres@highrr, auto-left, 1, transform, 1
|
monitor = HDMI-A-1, highres@highrr, auto-right, 1, transform, 1
|
||||||
|
monitor = desc:Samsung Electric Company S24F350 H4ZK111233, highres@highrr, auto-right, 1, transform, 1
|
||||||
|
monitor = desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1
|
||||||
|
#monitor = desc:Samsung Electric Company S24F350 H4ZR302705, highres@highrr, auto-right, 1
|
||||||
|
|
||||||
|
# monitor = HDMI-A-1, highres@highrr, auto-right, 1, vrr, 0
|
||||||
|
|
||||||
# If you need to scale things like steam etc, please uncomment these lines.
|
# If you need to scale things like steam etc, please uncomment these lines.
|
||||||
# Adjust GDK_SCALE accordingly to your liking.
|
# Adjust GDK_SCALE accordingly to your liking.
|
||||||
|
|||||||
12
.config/hypr/config/plugins.conf
Normal file
12
.config/hypr/config/plugins.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# https://github.com/sandwichfarm/hyprexpo-plus
|
||||||
|
# currently not working
|
||||||
|
plugin {
|
||||||
|
hyprexpo {
|
||||||
|
columns = 3
|
||||||
|
gap_size = 5
|
||||||
|
workspace_method = center current # [center/first] [workspace] e.g. first 1 or center m+1
|
||||||
|
keynav_enable = 1
|
||||||
|
keynav_wrap_h = 1 # wrap horizontally at row edges
|
||||||
|
keynav_wrap_v = 1 # wrap vertically at column edges
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -20,15 +20,6 @@ general {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#gestures
|
|
||||||
gestures {
|
|
||||||
workspace_swipe = true
|
|
||||||
workspace_swipe_fingers = 4
|
|
||||||
workspace_swipe_distance = 250
|
|
||||||
workspace_swipe_min_speed_to_force = 15
|
|
||||||
workspace_swipe_create_new = false
|
|
||||||
}
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#group
|
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#group
|
||||||
group {
|
group {
|
||||||
col.border_active = $color6
|
col.border_active = $color6
|
||||||
@@ -67,6 +58,7 @@ misc {
|
|||||||
vrr = 2
|
vrr = 2
|
||||||
# Hypridle cmatrix fix:
|
# Hypridle cmatrix fix:
|
||||||
session_lock_xray = true
|
session_lock_xray = true
|
||||||
|
middle_click_paste = false
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render
|
# https://wiki.hyprland.org/0.45.0/Configuring/Variables/#render
|
||||||
@@ -90,3 +82,8 @@ master {
|
|||||||
cursor {
|
cursor {
|
||||||
no_hardware_cursors = true
|
no_hardware_cursors = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
device {
|
||||||
|
name = logitech-gaming-mouse-g502
|
||||||
|
sensitivity=0.9
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,49 +5,217 @@
|
|||||||
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
|
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
|
||||||
|
|
||||||
# Float Necessary Windows
|
# Float Necessary Windows
|
||||||
windowrule = float, title:Rofi
|
windowrule {
|
||||||
windowrule = float, class:^(org.pulseaudio.pavucontrol)
|
name = windowrule-1
|
||||||
windowrule = float, class:^()$,title:^(Picture in picture)$
|
float = on
|
||||||
windowrule = float, class:^()$,title:^(Save File)$
|
match:title = Rofi
|
||||||
windowrule = float, class:^()$,title:^(Open File)$
|
}
|
||||||
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
|
|
||||||
windowrule = float, class:^(blueman-manager)$
|
windowrule {
|
||||||
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
|
name = windowrule-2
|
||||||
windowrule = float, class:^(pomodorolm)$
|
float = on
|
||||||
windowrule = float, title:^(Extension:.*)$
|
match:class = ^(org.pulseaudio.pavucontrol)
|
||||||
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
|
}
|
||||||
windowrule = float, class:^(CachyOSHello)$
|
|
||||||
windowrule = float, class:^(zenity)$
|
windowrule {
|
||||||
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
|
name = windowrule-3
|
||||||
windowrule = float, class:^(Zotero)$,title:^(Progress)$
|
float = on
|
||||||
|
match:class = ^()$
|
||||||
|
match:title = ^(Picture in picture)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-4
|
||||||
|
float = on
|
||||||
|
match:class = ^()$
|
||||||
|
match:title = ^(Save File)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-5
|
||||||
|
float = on
|
||||||
|
match:class = ^()$
|
||||||
|
match:title = ^(Open File)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-6
|
||||||
|
float = on
|
||||||
|
match:class = ^(LibreWolf)$
|
||||||
|
match:title = ^(Picture-in-Picture)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-7
|
||||||
|
float = on
|
||||||
|
match:class = ^(blueman-manager)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-8
|
||||||
|
float = on
|
||||||
|
match:class = ^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-9
|
||||||
|
float = on
|
||||||
|
size = 260 340
|
||||||
|
match:class = ^(pomodorolm)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-10
|
||||||
|
float = on
|
||||||
|
match:title = ^(Extension:.*)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-11
|
||||||
|
float = on
|
||||||
|
match:class = ^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-12
|
||||||
|
float = on
|
||||||
|
match:class = ^(CachyOSHello)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-13
|
||||||
|
float = on
|
||||||
|
match:class = ^(zenity)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-14
|
||||||
|
float = on
|
||||||
|
match:class = ^()$
|
||||||
|
match:title = ^(Steam - Self Updater)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-15
|
||||||
|
float = on
|
||||||
|
match:class = ^(Zotero)$
|
||||||
|
match:title = ^(Progress)$
|
||||||
|
}
|
||||||
|
|
||||||
# Increase the opacity
|
# Increase the opacity
|
||||||
windowrule = opacity 0.92, class:^(thunar|nemo|dolphin)$
|
windowrule {
|
||||||
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
|
name = windowrule-16
|
||||||
windowrule = opacity 0.95, title:^(QQ|Telegram)$
|
opacity = 0.92
|
||||||
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
|
match:class = ^(thunar|nemo|dolphin)$
|
||||||
windowrule = opacity 1, class:^(kitty)$
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-17
|
||||||
|
opacity = 0.96
|
||||||
|
match:class = ^(discord|armcord|webcord)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-18
|
||||||
|
opacity = 0.95
|
||||||
|
match:title = ^(QQ|Telegram)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-19
|
||||||
|
opacity = 0.95
|
||||||
|
match:title = ^(NetEase Cloud Music Gtk4)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-20
|
||||||
|
opacity = 1
|
||||||
|
match:class = ^(kitty)$
|
||||||
|
}
|
||||||
|
|
||||||
# General window rules
|
# General window rules
|
||||||
windowrule = size 260 340, class:^(pomodorolm)$
|
windowrule {
|
||||||
windowrule = float, title:^(Picture-in-Picture)$
|
name = windowrule-21
|
||||||
windowrule = size 960 540, title:^(Picture-in-Picture)$
|
float = on
|
||||||
windowrule = move 25%-, title:^(Picture-in-Picture)$
|
size = 960 540
|
||||||
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
|
move = ((monitor_w*0.25)-)
|
||||||
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
match:title = ^(Picture-in-Picture)$
|
||||||
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
}
|
||||||
windowrule = pin, title:^(danmufloat)$
|
|
||||||
windowrule = rounding 5, title:^(danmufloat|termfloat)$
|
windowrule {
|
||||||
windowrule = animation slide right, class:^(kitty|Alacritty)$
|
name = windowrule-22
|
||||||
windowrule = noblur, class:^(org.mozilla.firefox)$
|
float = on
|
||||||
windowrule = nodim, class:^(zen)$
|
match:title = ^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
|
||||||
windowrule = float, title:^(Zotero Settings)$
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-23
|
||||||
|
move = ((monitor_w*0.25)-)
|
||||||
|
size = 960 540
|
||||||
|
match:title = ^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-24
|
||||||
|
pin = on
|
||||||
|
match:title = ^(danmufloat)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-25
|
||||||
|
rounding = 5
|
||||||
|
match:title = ^(danmufloat|termfloat)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-26
|
||||||
|
animation = slide right
|
||||||
|
match:class = ^(kitty|Alacritty)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-27
|
||||||
|
no_blur = on
|
||||||
|
match:class = ^(org.mozilla.firefox)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-28
|
||||||
|
no_dim = on
|
||||||
|
match:class = ^(zen)$
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-29
|
||||||
|
float = on
|
||||||
|
match:title = ^(Zotero Settings)$
|
||||||
|
}
|
||||||
|
|
||||||
# Decorations related to floating windows on workspaces 1 to 10
|
# Decorations related to floating windows on workspaces 1 to 10
|
||||||
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
|
windowrule {
|
||||||
windowrule = bordercolor $color4, floating:1, onworkspace:w[fv1-10]
|
name = windowrule-30
|
||||||
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
|
border_size = 2
|
||||||
|
border_color = $color4
|
||||||
|
rounding = 8
|
||||||
|
match:float = 1
|
||||||
|
match:workspace = w[fv1-10]
|
||||||
|
}
|
||||||
|
|
||||||
# Decorations related to tiling windows on workspaces 1 to 10
|
# Decorations related to tiling windows on workspaces 1 to 10
|
||||||
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
|
windowrule {
|
||||||
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
|
name = windowrule-31
|
||||||
windowrule = opacity 0.9, title:^(.+nvim$)
|
border_size = 3
|
||||||
|
rounding = 4
|
||||||
|
match:float = 0
|
||||||
|
match:workspace = f[1-10]
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-32
|
||||||
|
opacity = 0.9
|
||||||
|
match:title = ^(.+nvim$)
|
||||||
|
}
|
||||||
|
|
||||||
# Windows Rules End #
|
# Windows Rules End #
|
||||||
|
|
||||||
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
|
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
|
||||||
@@ -64,13 +232,61 @@ windowrule = opacity 0.9, title:^(.+nvim$)
|
|||||||
# Workspaces Rules End #
|
# Workspaces Rules End #
|
||||||
|
|
||||||
# Layers Rules #
|
# Layers Rules #
|
||||||
layerrule = animation slide top, logout_dialog
|
layerrule {
|
||||||
|
name = layerrule-1
|
||||||
|
animation = slide top
|
||||||
|
match:namespace = logout_dialog
|
||||||
|
}
|
||||||
|
|
||||||
# layerrule = animation popin 50%, waybar
|
# layerrule = animation popin 50%, waybar
|
||||||
layerrule = animation slide down, waybar
|
layerrule {
|
||||||
layerrule = animation fade 50%, wallpaper
|
name = layerrule-2
|
||||||
|
animation = slide down
|
||||||
|
match:namespace = waybar
|
||||||
|
}
|
||||||
|
|
||||||
|
layerrule {
|
||||||
|
name = layerrule-3
|
||||||
|
animation = fade 50%
|
||||||
|
match:namespace = wallpaper
|
||||||
|
}
|
||||||
|
|
||||||
|
# vicinae
|
||||||
|
layerrule {
|
||||||
|
name = vicinae-blur
|
||||||
|
blur = on
|
||||||
|
animation = popin
|
||||||
|
dim_around = on
|
||||||
|
ignore_alpha = 1
|
||||||
|
match:namespace = vicinae
|
||||||
|
}
|
||||||
|
|
||||||
# Layers Rules End #
|
# Layers Rules End #
|
||||||
|
|
||||||
# Zotero Libreoffice
|
# Zotero Libreoffice
|
||||||
windowrule = float,class:^(Zotero)$,title:^(Citation Dialog)$
|
windowrule {
|
||||||
windowrule = center,class:^(Zotero)$,title:^(Citation Dialog)$
|
name = windowrule-33
|
||||||
windowrule = noanim,class:^(Zotero)$,title:^(Citation Dialog)$
|
float = on
|
||||||
|
center = on
|
||||||
|
no_anim = on
|
||||||
|
match:class = ^(Zotero)$
|
||||||
|
match:title = ^(Citation Dialog)$
|
||||||
|
}
|
||||||
|
|
||||||
|
# gnome calendar
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-cal
|
||||||
|
float = on
|
||||||
|
center = on
|
||||||
|
match:class = ^(org.gnome.Calendar)$
|
||||||
|
match:title = ^(Calendar)$
|
||||||
|
animation = popin
|
||||||
|
opacity = 0.8
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule {
|
||||||
|
name = waypaper-fix
|
||||||
|
match:class = ^(waypaper)$
|
||||||
|
float = on
|
||||||
|
center = on
|
||||||
|
}
|
||||||
77
.config/hypr/config/windowrules.conf_bak
Normal file
77
.config/hypr/config/windowrules.conf_bak
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||||
|
# ┃ Windowrules Configuration ┃
|
||||||
|
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
||||||
|
|
||||||
|
# Windows Rules https://wiki.hyprland.org/0.45.0/Configuring/Window-Rules/ #
|
||||||
|
|
||||||
|
# Float Necessary Windows
|
||||||
|
windowrule = float, title:Rofi
|
||||||
|
windowrule = float, class:^(org.pulseaudio.pavucontrol)
|
||||||
|
windowrule = float, class:^()$,title:^(Picture in picture)$
|
||||||
|
windowrule = float, class:^()$,title:^(Save File)$
|
||||||
|
windowrule = float, class:^()$,title:^(Save File)$
|
||||||
|
windowrule = float, class:^()$,title:^(Open File)$
|
||||||
|
windowrule = float, class:^(LibreWolf)$,title:^(Picture-in-Picture)$
|
||||||
|
windowrule = float, class:^(blueman-manager)$
|
||||||
|
windowrule = float, class:^(xdg-desktop-portal-gtk|xdg-desktop-portal-kde|xdg-desktop-portal-hyprland)(.*)$
|
||||||
|
windowrule = float, class:^(pomodorolm)$
|
||||||
|
windowrule = float, title:^(Extension:.*)$
|
||||||
|
windowrule = float, class:^(polkit-gnome-authentication-agent-1|hyprpolkitagent|org.org.kde.polkit-kde-authentication-agent-1)(.*)$
|
||||||
|
windowrule = float, class:^(CachyOSHello)$
|
||||||
|
windowrule = float, class:^(zenity)$
|
||||||
|
windowrule = float, class:^()$,title:^(Steam - Self Updater)$
|
||||||
|
windowrule = float, class:^(Zotero)$,title:^(Progress)$
|
||||||
|
# Increase the opacity
|
||||||
|
windowrule = opacity 0.92, class:^(thunar|nemo|dolphin)$
|
||||||
|
windowrule = opacity 0.96, class:^(discord|armcord|webcord)$
|
||||||
|
windowrule = opacity 0.95, title:^(QQ|Telegram)$
|
||||||
|
windowrule = opacity 0.95, title:^(NetEase Cloud Music Gtk4)$
|
||||||
|
windowrule = opacity 1, class:^(kitty)$
|
||||||
|
# General window rules
|
||||||
|
windowrule = size 260 340, class:^(pomodorolm)$
|
||||||
|
windowrule = float, title:^(Picture-in-Picture)$
|
||||||
|
windowrule = size 960 540, title:^(Picture-in-Picture)$
|
||||||
|
windowrule = move 25%-, title:^(Picture-in-Picture)$
|
||||||
|
windowrule = float, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp|nwg-look|nwg-displays)$
|
||||||
|
windowrule = move 25%-, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||||
|
windowrule = size 960 540, title:^(imv|mpv|danmufloat|termfloat|nemo|ncmpcpp)$
|
||||||
|
windowrule = pin, title:^(danmufloat)$
|
||||||
|
windowrule = rounding 5, title:^(danmufloat|termfloat)$
|
||||||
|
windowrule = animation slide right, class:^(kitty|Alacritty)$
|
||||||
|
windowrule = noblur, class:^(org.mozilla.firefox)$
|
||||||
|
windowrule = nodim, class:^(zen)$
|
||||||
|
windowrule = float, title:^(Zotero Settings)$
|
||||||
|
# Decorations related to floating windows on workspaces 1 to 10
|
||||||
|
windowrule = bordersize 2, floating:1, onworkspace:w[fv1-10]
|
||||||
|
windowrule = bordercolor $color4, floating:1, onworkspace:w[fv1-10]
|
||||||
|
windowrule = rounding 8, floating:1, onworkspace:w[fv1-10]
|
||||||
|
# Decorations related to tiling windows on workspaces 1 to 10
|
||||||
|
windowrule = bordersize 3, floating:0, onworkspace:f[1-10]
|
||||||
|
windowrule = rounding 4, floating:0, onworkspace:f[1-10]
|
||||||
|
windowrule = opacity 0.9, title:^(.+nvim$)
|
||||||
|
# Windows Rules End #
|
||||||
|
|
||||||
|
# Workspaces Rules https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/ #
|
||||||
|
# workspace = 1, default:true, monitor:$priMon
|
||||||
|
# workspace = 6, default:true, monitor:$secMon
|
||||||
|
# Workspace selectors https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#workspace-selectors
|
||||||
|
# workspace = r[1-5], monitor:$priMon
|
||||||
|
# workspace = r[6-10], monitor:$secMon
|
||||||
|
# workspace = special:scratchpad, on-created-empty:$applauncher
|
||||||
|
# no_gaps_when_only deprecated instead workspaces rules with selectors can do the same
|
||||||
|
# Smart gaps from 0.45.0 https://wiki.hyprland.org/0.45.0/Configuring/Workspace-Rules/#smart-gaps
|
||||||
|
#workspace = w[tv1-10], gapsout:5, gapsin:3
|
||||||
|
#workspace = f[1], gapsout:5, gapsin:3
|
||||||
|
# Workspaces Rules End #
|
||||||
|
|
||||||
|
# Layers Rules #
|
||||||
|
layerrule = animation slide top, logout_dialog
|
||||||
|
# layerrule = animation popin 50%, waybar
|
||||||
|
layerrule = animation slide down, waybar
|
||||||
|
layerrule = animation fade 50%, wallpaper
|
||||||
|
# Layers Rules End #
|
||||||
|
|
||||||
|
# Zotero Libreoffice
|
||||||
|
windowrule = float,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||||
|
windowrule = center,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||||
|
windowrule = noanim,class:^(Zotero)$,title:^(Citation Dialog)$
|
||||||
@@ -7,10 +7,6 @@ workspace = 2, monitor:eDP-2
|
|||||||
workspace = 3, monitor:eDP-2
|
workspace = 3, monitor:eDP-2
|
||||||
workspace = 4, monitor:eDP-2
|
workspace = 4, monitor:eDP-2
|
||||||
|
|
||||||
workspace = 5, monitor:DP-2
|
workspace = 7, monitor:desc:Samsung Electric Company S24F350 H4ZR302705
|
||||||
workspace = 6, monitor:DP-2
|
|
||||||
workspace = 7, monitor:DP-2
|
|
||||||
workspace = 8, monitor:DP-2
|
workspace = 8, monitor:DP-2
|
||||||
|
workspace = 9, monitor:HDMI-A-1
|
||||||
workspace = 7, monitor:HDMI-A-1
|
|
||||||
workspace = 8, monitor:HDMI-A-1
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ listener {
|
|||||||
on-timeout = ~/.config/swaylock/lockscript.sh # lock screen when timeout has passed
|
on-timeout = ~/.config/swaylock/lockscript.sh # lock screen when timeout has passed
|
||||||
}
|
}
|
||||||
|
|
||||||
listener {
|
# listener {
|
||||||
timeout = 900 # 15min
|
# timeout = 900 # 15min
|
||||||
on-timeout = hyprctl dispatch dpms off 5.5 # screen off when timeout has passed
|
# on-timeout = hyprctl dispatch dpms off 5.5 # screen off when timeout has passed
|
||||||
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
|
# on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
|
||||||
}
|
# }
|
||||||
|
|||||||
4
.config/hypr/pyprland.toml
Normal file
4
.config/hypr/pyprland.toml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[pyprland]
|
||||||
|
plugins = [
|
||||||
|
"shift_monitors",
|
||||||
|
]
|
||||||
@@ -79,8 +79,8 @@ profile_dual() {
|
|||||||
profile_triple() {
|
profile_triple() {
|
||||||
# Ensure both externals are on (and only those two)
|
# Ensure both externals are on (and only those two)
|
||||||
disable_all_externals
|
disable_all_externals
|
||||||
|
enable_line "$EXT2" # ext2 first so it appears in the middle
|
||||||
enable_line "$EXT1"
|
enable_line "$EXT1"
|
||||||
enable_line "$EXT2"
|
|
||||||
# You can drop EXT_FALLBACK if you don't actually need it:
|
# You can drop EXT_FALLBACK if you don't actually need it:
|
||||||
# enable_line "$EXT_FALLBACK"
|
# enable_line "$EXT_FALLBACK"
|
||||||
notify "Profile: Triple" "Enabled both externals"
|
notify "Profile: Triple" "Enabled both externals"
|
||||||
|
|||||||
@@ -1,20 +1,22 @@
|
|||||||
#!/bin/env bash
|
#!/bin/env bash
|
||||||
|
|
||||||
# Menu launcher wrapper
|
# CLI options
|
||||||
menu_prompt() {
|
DMENU_CMD=""
|
||||||
if command -v tofi &>/dev/null; then
|
while getopts ":d:" opt; do
|
||||||
printf "%b" "$1" | tofi --prompt-text="$2"
|
case "$opt" in
|
||||||
elif command -v fuzzel &>/dev/null; then
|
d) DMENU_CMD="$OPTARG" ;;
|
||||||
printf "%b" "$1" | fuzzel -d -p "$2" -w 25 -l 10
|
*) ;;
|
||||||
elif command -v wofi &>/dev/null; then
|
esac
|
||||||
printf "%b" "$1" | wofi --dmenu --prompt="$2"
|
done
|
||||||
elif command -v rofi &>/dev/null; then
|
shift $((OPTIND - 1))
|
||||||
printf "%b" "$1" | rofi -dmenu -p "$2"
|
|
||||||
else
|
if [ -z "$DMENU_CMD" ]; then
|
||||||
notify-send "No compatible launcher found" "Install tofi, fuzzel, wofi, or rofi."
|
notify-send "Missing launcher" "Use -d to provide a dmenu command"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
read -r -a DMENU_ARR <<< "$DMENU_CMD"
|
||||||
|
DMENU_BIN="${DMENU_ARR[0]}"
|
||||||
|
command -v "$DMENU_BIN" &>/dev/null || { notify-send "Launcher not found" "$DMENU_BIN is not installed"; exit 1; }
|
||||||
|
|
||||||
# Directories
|
# Directories
|
||||||
SCREENSHOT_DIR="${HOME}/Pictures"
|
SCREENSHOT_DIR="${HOME}/Pictures"
|
||||||
@@ -29,7 +31,7 @@ if pgrep -u "$USER" wl-screenrec > /dev/null; then
|
|||||||
notify-send "Recording stopped"
|
notify-send "Recording stopped"
|
||||||
|
|
||||||
# Ask if user wants to compress the video
|
# Ask if user wants to compress the video
|
||||||
COMPRESS=$(menu_prompt "✅ compress\n❌ keep original" "🗜️ Compress video?")
|
COMPRESS=$(printf "%b" "✅ compress\n❌ keep original" | "${DMENU_ARR[@]}" "🗜️ Compress video?")
|
||||||
if [[ "$COMPRESS" == "✅ compress" ]]; then
|
if [[ "$COMPRESS" == "✅ compress" ]]; then
|
||||||
# Find the most recent video file
|
# Find the most recent video file
|
||||||
LATEST_VIDEO=$(find "$RECORDING_DIR" -name "*.mp4" -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-)
|
LATEST_VIDEO=$(find "$RECORDING_DIR" -name "*.mp4" -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-)
|
||||||
@@ -39,7 +41,7 @@ if pgrep -u "$USER" wl-screenrec > /dev/null; then
|
|||||||
if ffmpeg -i "$LATEST_VIDEO" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "$COMPRESSED_VIDEO" -y &>/dev/null; then
|
if ffmpeg -i "$LATEST_VIDEO" -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k "$COMPRESSED_VIDEO" -y &>/dev/null; then
|
||||||
notify-send "Compression complete" "$COMPRESSED_VIDEO"
|
notify-send "Compression complete" "$COMPRESSED_VIDEO"
|
||||||
# Ask if user wants to delete original
|
# Ask if user wants to delete original
|
||||||
DELETE_ORIGINAL=$(menu_prompt "🗑️ delete original\n📁 keep both" "Delete original?")
|
DELETE_ORIGINAL=$(printf "%b" "🗑️ delete original\n📁 keep both" | "${DMENU_ARR[@]}" "Delete original?")
|
||||||
if [[ "$DELETE_ORIGINAL" == "🗑️ delete original" ]]; then
|
if [[ "$DELETE_ORIGINAL" == "🗑️ delete original" ]]; then
|
||||||
rm "$LATEST_VIDEO"
|
rm "$LATEST_VIDEO"
|
||||||
notify-send "Original deleted" "Keeping compressed version only"
|
notify-send "Original deleted" "Keeping compressed version only"
|
||||||
@@ -66,12 +68,12 @@ record all
|
|||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
|
|
||||||
SELECTION=$(menu_prompt "$OPTIONS" " ")
|
SELECTION=$(printf "%b" "$OPTIONS" | "${DMENU_ARR[@]}" " ")
|
||||||
[ -z "$SELECTION" ] && exit 0
|
[ -z "$SELECTION" ] && exit 0
|
||||||
|
|
||||||
# Ask for audio mode if it's a recording
|
# Ask for audio mode if it's a recording
|
||||||
select_audio_mode() {
|
select_audio_mode() {
|
||||||
AUDIO_MODE=$(menu_prompt "🎤 mic\n💻 internal\n🚫 none" "🎙️ Audio?")
|
AUDIO_MODE=$(printf "%b" "🎤 mic\n💻 internal\n🚫 none" | "${DMENU_ARR[@]}" "🎙️ Audio?")
|
||||||
[ -z "$AUDIO_MODE" ] && echo "__cancel__" && return
|
[ -z "$AUDIO_MODE" ] && echo "__cancel__" && return
|
||||||
|
|
||||||
case "$AUDIO_MODE" in
|
case "$AUDIO_MODE" in
|
||||||
|
|||||||
0
.config/hypr/workspaces.conf
Normal file
0
.config/hypr/workspaces.conf
Normal file
@@ -1,26 +1,25 @@
|
|||||||
[colors.bright]
|
[colors.bright]
|
||||||
black = "{{color8}}"
|
black = "{{color8}}" # Often a brighter version of normal black, could be slightly desaturated light grey
|
||||||
red = "{{color9}}"
|
red = "{{color9}}" # More saturated red for emphasis
|
||||||
green = "{{color10}}"
|
green = "{{color10}}" # More saturated green for emphasis
|
||||||
yellow = "{{color11}}"
|
yellow = "{{color11}}" # More saturated yellow, good for prompts or warnings
|
||||||
blue = "{{color12}}"
|
blue = "{{color12}}" # More saturated blue
|
||||||
magenta = "{{color13}}"
|
magenta = "{{color13}}" # More saturated magenta
|
||||||
cyan = "{{color14}}"
|
cyan = "{{color14}}" # Make cyan lighter to stand out on dark backgrounds
|
||||||
white = "{{color15}}"
|
white = "{{color15}}" # Should be the brightest possible
|
||||||
|
|
||||||
[colors.cursor]
|
[colors.cursor]
|
||||||
cursor = "{{cursor}}"
|
cursor = "{{cursor}}"
|
||||||
|
|
||||||
[colors.normal]
|
[colors.normal]
|
||||||
black = "{{color0}}"
|
black = "{{color0}}" # Main dark grey/black
|
||||||
red = "{{color1}}"
|
red = "{{color1}}" # Normal red
|
||||||
green = "{{color2}}"
|
green = "{{color2}}" # Normal green
|
||||||
yellow = "{{color3}}"
|
yellow = "{{color3}}" # Normal yellow
|
||||||
blue = "{{color4}}"
|
blue = "{{color4}}" # Normal blue
|
||||||
magenta = "{{color5}}"
|
magenta = "{{color5}}" # Normal magenta
|
||||||
cyan = "{{color6}}"
|
cyan = "{{color6}}" # This needs attention. If background is dark, this should be brighter than the background. If background is light, darker.
|
||||||
white = "{{color7}}"
|
white = "{{color7}}" # Main light grey/white
|
||||||
|
|
||||||
[colors.primary]
|
[colors.primary]
|
||||||
background = "{{background}}"
|
background = "{{background}}"
|
||||||
foreground = "{{foreground}}"
|
foreground = "{{foreground}}" # Force foreground to be the absolute brightest color from the palette
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ width = 100%
|
|||||||
height = 100%
|
height = 100%
|
||||||
|
|
||||||
hide-cursor = false
|
hide-cursor = false
|
||||||
text-color = #{{ color1 | strip }}55
|
text-color = #{{ color1 | strip }}88
|
||||||
prompt-color = #{{ foreground | strip }}77
|
prompt-color = #{{ foreground | strip }}99
|
||||||
selection-color = #{{ color5 | strip }}
|
selection-color = #{{ color5 | strip }}
|
||||||
background-color = #{{ background | strip }}99
|
background-color = #{{ background | strip }}99
|
||||||
|
|
||||||
|
|||||||
119
.config/wallust/templates/vicinae.toml
Normal file
119
.config/wallust/templates/vicinae.toml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
# Vicinae Theme - Wallust Generated
|
||||||
|
# This file is a template. Place it in your wallust templates directory
|
||||||
|
# and configure wallust.toml to output it to your vicinae themes folder.
|
||||||
|
# obtained from https://github.com/saatvik333/niri-dotfiles
|
||||||
|
|
||||||
|
[meta]
|
||||||
|
name = "Wallust Generated"
|
||||||
|
description = "Dynamic theme generated from current wallpaper"
|
||||||
|
variant = "dark" # Wallust defaults to dark variants usually.
|
||||||
|
inherits = "vicinae-dark"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Core Colors
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.core]
|
||||||
|
accent = "{{color4}}" # Standard ANSI Blue for primary actions
|
||||||
|
accent_foreground = "{{background}}" # Text on accent should be dark for contrast
|
||||||
|
background = "{{background}}" # Main wallpaper-derived background
|
||||||
|
foreground = "{{foreground}}" # Main text color
|
||||||
|
secondary_background = "{{color0 | lighten(0.05)}}" # Slightly elevated surface
|
||||||
|
border = "{{color8 | darken(0.3)}}" # Subtler border than raw bright-black
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Window-Specific Colors
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.main_window]
|
||||||
|
border = "{{color8 | darken(0.3)}}"
|
||||||
|
|
||||||
|
[colors.settings_window]
|
||||||
|
border = "{{color8 | darken(0.3)}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Accent Colors
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.accents]
|
||||||
|
blue = "{{color4}}"
|
||||||
|
green = "{{color2}}"
|
||||||
|
magenta = "{{color5}}"
|
||||||
|
orange = "{{color3}}" # ANSI Yellow/Orange are often swapped or similar
|
||||||
|
red = "{{color1}}"
|
||||||
|
yellow = "{{color3}}"
|
||||||
|
cyan = "{{color6}}"
|
||||||
|
purple = "{{color5}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Text Colors
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.text]
|
||||||
|
default = "{{foreground}}"
|
||||||
|
muted = "{{foreground | darken(0.4)}}" # Derived from foreground for consistent tone
|
||||||
|
danger = "{{color1}}" # Red for errors
|
||||||
|
success = "{{color2}}" # Green for success
|
||||||
|
placeholder = "{{foreground | darken(0.6)}}" # Even darker than muted
|
||||||
|
selection = { background = "{{color4}}", foreground = "{{background}}" }
|
||||||
|
|
||||||
|
[colors.text.links]
|
||||||
|
default = "{{color4}}"
|
||||||
|
visited = "{{color5 | darken(0.1)}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Input Fields
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.input]
|
||||||
|
border = "{{color8 | darken(0.3)}}"
|
||||||
|
border_focus = "{{color4}}"
|
||||||
|
border_error = "{{color1}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Buttons
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.button.primary]
|
||||||
|
background = "{{color0 | lighten(0.1)}}" # Explicitly elevated button background
|
||||||
|
foreground = "{{foreground}}"
|
||||||
|
hover = { background = "{{color8 | darken(0.1)}}" } # Smoother hover state
|
||||||
|
focus = { outline = "{{color4}}" }
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Lists
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.list.item.hover]
|
||||||
|
background = "{{color8 | darken(0.2)}}" # darker hover for better text contrast
|
||||||
|
foreground = "{{foreground}}"
|
||||||
|
|
||||||
|
[colors.list.item.selection]
|
||||||
|
background = "{{color8}}" # Selected item background
|
||||||
|
foreground = "{{foreground}}"
|
||||||
|
secondary_background = "{{color8}}"
|
||||||
|
secondary_foreground = "{{foreground}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Grid Items
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.grid.item]
|
||||||
|
background = "{{color0 | lighten(0.05)}}"
|
||||||
|
hover = { outline = "{{foreground | darken(0.2)}}" }
|
||||||
|
selection = { outline = "{{color4}}" }
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Scrollbars
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.scrollbars]
|
||||||
|
background = "{{color0}}"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Loading Indicators
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
[colors.loading]
|
||||||
|
bar = "{{color4}}"
|
||||||
|
spinner = "{{color4}}"
|
||||||
@@ -41,6 +41,7 @@ check_contrast = true
|
|||||||
|
|
||||||
[templates]
|
[templates]
|
||||||
waybar = { template = 'waybar.css', target = '~/.config/waybar/colors-wallust.css' }
|
waybar = { template = 'waybar.css', target = '~/.config/waybar/colors-wallust.css' }
|
||||||
|
vicinae = { src = 'vicinae.toml', dst = '~/.local/share/vicinae/themes/wallust.toml'}
|
||||||
# alacritty = { template = 'alacritty.toml', target = '~/.config/alacritty/colors.toml' }
|
# alacritty = { template = 'alacritty.toml', target = '~/.config/alacritty/colors.toml' }
|
||||||
hyprland = { template = 'hyprland.conf', target = '~/.config/hypr/config/colors.conf' }
|
hyprland = { template = 'hyprland.conf', target = '~/.config/hypr/config/colors.conf' }
|
||||||
vscode = { template = 'vscode', target = '~/.cache/wal/colors' }
|
vscode = { template = 'vscode', target = '~/.cache/wal/colors' }
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
@define-color cursor #AA9BB0;
|
@define-color cursor #9D7C73;
|
||||||
@define-color background #1B1D1E;
|
@define-color background #0E0E11;
|
||||||
@define-color foreground #E1E9EE;
|
@define-color foreground #FDF2DE;
|
||||||
@define-color color0 #424345;
|
@define-color color0 #38393C;
|
||||||
@define-color color1 #58120D;
|
@define-color color1 #424652;
|
||||||
@define-color color2 #744E72;
|
@define-color color2 #6A3E40;
|
||||||
@define-color color3 #517185;
|
@define-color color3 #736956;
|
||||||
@define-color color4 #DD2A4A;
|
@define-color color4 #897C88;
|
||||||
@define-color color5 #DEACB3;
|
@define-color color5 #9B8166;
|
||||||
@define-color color6 #A9BFCE;
|
@define-color color6 #F9D9A2;
|
||||||
@define-color color7 #CCD7DE;
|
@define-color color7 #F4E4C8;
|
||||||
@define-color color8 #8E969B;
|
@define-color color8 #AA9F8C;
|
||||||
@define-color color9 #58120D;
|
@define-color color9 #424652;
|
||||||
@define-color color10 #744E72;
|
@define-color color10 #6A3E40;
|
||||||
@define-color color11 #517185;
|
@define-color color11 #736956;
|
||||||
@define-color color12 #DD2A4A;
|
@define-color color12 #897C88;
|
||||||
@define-color color13 #DEACB3;
|
@define-color color13 #9B8166;
|
||||||
@define-color color14 #A9BFCE;
|
@define-color color14 #F9D9A2;
|
||||||
@define-color color15 #CCD7DE;
|
@define-color color15 #F4E4C8;
|
||||||
|
|||||||
@@ -1,385 +0,0 @@
|
|||||||
{
|
|
||||||
// -------------------------------------------------------------------------
|
|
||||||
// Global configuration
|
|
||||||
// -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
"layer": "top",
|
|
||||||
|
|
||||||
"position": "top",
|
|
||||||
|
|
||||||
"height": 20,
|
|
||||||
|
|
||||||
"margin-left": 10,
|
|
||||||
"margin-bottom": 0,
|
|
||||||
"margin-right": 10,
|
|
||||||
|
|
||||||
"spacing": 5, // Gaps between modules (4px)
|
|
||||||
|
|
||||||
"modules-left": [
|
|
||||||
//"custom/rofi",
|
|
||||||
"hyprland/workspaces",
|
|
||||||
"custom/weather",
|
|
||||||
"clock",
|
|
||||||
//"hyprland/submap",
|
|
||||||
"temperature",
|
|
||||||
//"idle_inhibitor",
|
|
||||||
//"mpd",
|
|
||||||
"custom/spotify"
|
|
||||||
],
|
|
||||||
"modules-center": [
|
|
||||||
"hyprland/window"
|
|
||||||
//"custom/gammastep"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"backlight",
|
|
||||||
"custom/storage",
|
|
||||||
"memory",
|
|
||||||
"cpu",
|
|
||||||
"battery",
|
|
||||||
//"pulseaudio",
|
|
||||||
"wireplumber",
|
|
||||||
"bluetooth",
|
|
||||||
//"custom/screenshot_t",
|
|
||||||
"tray",
|
|
||||||
"custom/power"
|
|
||||||
],
|
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
|
||||||
// Modules
|
|
||||||
// -------------------------------------------------------------------------
|
|
||||||
|
|
||||||
"custom/sp1": {
|
|
||||||
"format": " | ",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
"custom/sp2": {
|
|
||||||
"format": " |",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/rofi": {
|
|
||||||
"format": "",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click-right": "nwg-drawer",
|
|
||||||
"on-click": "wofi --show run",
|
|
||||||
"on-click-middle": "pkill -9 wofi"
|
|
||||||
},
|
|
||||||
"custom/screenshot_t":{
|
|
||||||
"format":" ",
|
|
||||||
"on-click": "~/.config/hypr/scripts/screenshot_full",
|
|
||||||
"on-click-right":"~/.config/hypr/scripts/screenshot_area"
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock#1": {
|
|
||||||
"format": " {:%a}",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "gsimplecal"
|
|
||||||
},
|
|
||||||
"clock#2": {
|
|
||||||
"format": " {:%d-%h-%Y}",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "gsimplecal"
|
|
||||||
},
|
|
||||||
"clock#3": {
|
|
||||||
"format": " {:%H:%M:%S %p}",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "gsimplecal"
|
|
||||||
},
|
|
||||||
|
|
||||||
"bluetooth": {
|
|
||||||
// "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system
|
|
||||||
"format": "",
|
|
||||||
"format-connected": " {num_connections} connected",
|
|
||||||
"tooltip-format": "{controller_alias}\t{controller_address}",
|
|
||||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}",
|
|
||||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
|
||||||
"on-click": "blueman-manager"
|
|
||||||
},
|
|
||||||
|
|
||||||
"temperature": {
|
|
||||||
// "thermal-zone": 1,
|
|
||||||
"interval": 4,
|
|
||||||
//"hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input",
|
|
||||||
"critical-threshold": 80,
|
|
||||||
// "format-critical": " {temperatureC}°C",
|
|
||||||
"format-critical": " {temperatureC}°C",
|
|
||||||
"format": "{icon} {temperatureC}°C",
|
|
||||||
"format-icons": ["", "", ""],
|
|
||||||
"max-length": 7,
|
|
||||||
"min-length": 7,
|
|
||||||
"on-click": "xsensors"
|
|
||||||
},
|
|
||||||
|
|
||||||
"memory": {
|
|
||||||
"interval": 30,
|
|
||||||
"format": " {used:0.2f} / {total:0.0f} GB",
|
|
||||||
"on-click": "alacritty -e btop"
|
|
||||||
},
|
|
||||||
|
|
||||||
"battery": {
|
|
||||||
"interval": 2,
|
|
||||||
"states": {
|
|
||||||
"good": 95,
|
|
||||||
"warning": 30,
|
|
||||||
"critical": 15
|
|
||||||
},
|
|
||||||
"format": "{icon} {capacity}%",
|
|
||||||
"format-charging": " {capacity}%",
|
|
||||||
"format-plugged": " {capacity}%",
|
|
||||||
"format-icons": [
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"format-wifi": " {essid} ({signalStrength}%)",
|
|
||||||
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
|
|
||||||
"format-linked": "{ifname} (No IP) ",
|
|
||||||
"format": "",
|
|
||||||
"format-disconnected": "",
|
|
||||||
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
|
||||||
"on-click": "wl-copy $(ip address show up scope global | grep inet | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c5-)",
|
|
||||||
"on-click-right": "wl-copy $(ip address show up scope global | grep inet6 | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c6-)",
|
|
||||||
"tooltip-format": " {bandwidthUpBits} {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n",
|
|
||||||
"tooltip-format-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits} {bandwidthDownBits}",
|
|
||||||
"interval": 10
|
|
||||||
},
|
|
||||||
"custom/storage": {
|
|
||||||
"format": " {}",
|
|
||||||
"format-alt": "{percentage}% ",
|
|
||||||
"format-alt-click": "click-right",
|
|
||||||
"return-type": "json",
|
|
||||||
"interval": 60,
|
|
||||||
"exec": "~/.config/waybar/modules/storage.sh"
|
|
||||||
},
|
|
||||||
|
|
||||||
"backlight": {
|
|
||||||
"device": "intel_backlight",
|
|
||||||
"format": "{icon} {percent}%",
|
|
||||||
"format-alt": "{percent}% {icon}",
|
|
||||||
"format-alt-click": "click-right",
|
|
||||||
//"format-icons": ["", ""],
|
|
||||||
"format-icons": ["", ""],
|
|
||||||
"on-scroll-down": "brightnessctl s 5%-",
|
|
||||||
"on-scroll-up": "brightnessctl s +5%"
|
|
||||||
},
|
|
||||||
"idle_inhibitor": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activated": "",
|
|
||||||
"deactivated": ""
|
|
||||||
},
|
|
||||||
"tooltip": "true"
|
|
||||||
},
|
|
||||||
"custom/weather": {
|
|
||||||
"format": "{}",
|
|
||||||
"format-alt": "{alt}: {}",
|
|
||||||
"format-alt-click": "click-right",
|
|
||||||
"interval": 3600,
|
|
||||||
"exec": "curl -s 'https://wttr.in/?format=1'",
|
|
||||||
//"return-type": "json",
|
|
||||||
//"exec": "~/.config/waybar/modules/weather.sh",
|
|
||||||
"exec-if": "ping wttr.in -c1"
|
|
||||||
},
|
|
||||||
"custom/pacman": {
|
|
||||||
"format": "<big></big> {}",
|
|
||||||
"interval": 3600, // every hour
|
|
||||||
"exec": "checkupdates | wc -l", // # of updates
|
|
||||||
"exec-if": "exit 0", // always run; consider advanced run conditions
|
|
||||||
"on-click": "alacritty -e 'paru'; pkill -SIGRTMIN+8 waybar", // update system
|
|
||||||
"signal": 8,
|
|
||||||
"max-length": 5,
|
|
||||||
"min-length": 3
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/spotify": {
|
|
||||||
"exec": "~/.config/waybar/mediaplayer.py --player spotify",
|
|
||||||
"format": "{} ",
|
|
||||||
"return-type": "json",
|
|
||||||
"on-click": "playerctl play-pause",
|
|
||||||
"on-scroll-up": "playerctl next",
|
|
||||||
"on-scroll-down": "playerctl previous"
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/media": {
|
|
||||||
"format": "{0} {1}",
|
|
||||||
"return-type": "json",
|
|
||||||
"max-length": 40,
|
|
||||||
"format-icons": {
|
|
||||||
"spotify": "",
|
|
||||||
"default": "🎜"
|
|
||||||
},
|
|
||||||
"escape": true,
|
|
||||||
//"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder
|
|
||||||
// "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/power": {
|
|
||||||
"format": " ",
|
|
||||||
"tooltip": false,
|
|
||||||
"on-click": "wlogout"
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock": {
|
|
||||||
"format": " {:%H:%M %e %b}",
|
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
|
||||||
"today-format": "<b>{}</b>"
|
|
||||||
},
|
|
||||||
|
|
||||||
"clock#date": {
|
|
||||||
"format": " {:%H:%M \n %e %b}",
|
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
|
||||||
"today-format": "<b>{}</b>"
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/gammastep": {
|
|
||||||
"interval": 5,
|
|
||||||
"return-type": "json",
|
|
||||||
"exec": {
|
|
||||||
"pre": "if unit_status=\"$(systemctl --user is-active gammastep)\"; then\nstatus=\"$unit_status ($(journalctl --user -u gammastep.service -g 'Period: ' | tail -1 | cut -d ':' -f6 | xargs))\"\nelse\nstatus=\"$unit_status\"\nfi",
|
|
||||||
"alt": "${status:-inactive}",
|
|
||||||
"tooltip": "Gammastep is $status",
|
|
||||||
},
|
|
||||||
"format": "{icon}",
|
|
||||||
"format-icons": {
|
|
||||||
"activating": " ",
|
|
||||||
"deactivating": " ",
|
|
||||||
"inactive": "? ",
|
|
||||||
"active (Night)": " ",
|
|
||||||
"active (Nighttime)": " ",
|
|
||||||
"active (Transition (Night)": " ",
|
|
||||||
"active (Transition (Nighttime)": " ",
|
|
||||||
"active (Day)": " ",
|
|
||||||
"active (Daytime)": " ",
|
|
||||||
"active (Transition (Day)": " ",
|
|
||||||
"active (Transition (Daytime)": " ",
|
|
||||||
},
|
|
||||||
"on-click": "systemctl --user is-active gammastep && systemctl --user stop gammastep || systemctl --user start gammastep",
|
|
||||||
},
|
|
||||||
|
|
||||||
"cpu": {
|
|
||||||
"interval": 1,
|
|
||||||
//"format": " {}%", // Icon: microchip
|
|
||||||
"format": "{max_frequency}GHz <span color=\"darkgray\">| {usage}%</span>",
|
|
||||||
"max-length": 13,
|
|
||||||
"min-length": 13
|
|
||||||
},
|
|
||||||
|
|
||||||
"mpd": {
|
|
||||||
"max-length": 25,
|
|
||||||
"format": "<span foreground='#bb9af7'></span> {title}",
|
|
||||||
"format-paused": " {title}",
|
|
||||||
"format-stopped": "<span foreground='#bb9af7'></span>",
|
|
||||||
"format-disconnected": "",
|
|
||||||
"on-click": "mpc --quiet toggle",
|
|
||||||
"on-click-right": "mpc update; mpc ls | mpc add",
|
|
||||||
"on-click-middle": "alacritty -e ncmpcpp",
|
|
||||||
"on-scroll-up": "mpc --quiet prev",
|
|
||||||
"on-scroll-down": "mpc --quiet next",
|
|
||||||
"smooth-scrolling-threshold": 5,
|
|
||||||
"tooltip-format": "{title} - {artist} ({elapsedTime:%M:%S}/{totalTime:%H:%M:%S})"
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/title": {
|
|
||||||
"format": "{}",
|
|
||||||
"interval": 0,
|
|
||||||
"return-type": "json",
|
|
||||||
//"max-length": 35,
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
|
|
||||||
"custom/title#name": {
|
|
||||||
"format": "{}",
|
|
||||||
"interval": 0,
|
|
||||||
"return-type": "json",
|
|
||||||
|
|
||||||
"max-length": 35,
|
|
||||||
"exec": "$HOME/.scripts/title"
|
|
||||||
},
|
|
||||||
|
|
||||||
/*"custom/keyboard": {
|
|
||||||
"format": " {}",
|
|
||||||
"interval": 1,
|
|
||||||
"exec": "$HOME/.config/waybar/get_kbdlayout.sh"
|
|
||||||
},*/
|
|
||||||
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"all-outputs": true,
|
|
||||||
"format": "{name}",
|
|
||||||
"format-icons": {
|
|
||||||
"1": "一",
|
|
||||||
"2": "二",
|
|
||||||
"3": "三",
|
|
||||||
"4": "四",
|
|
||||||
"5": "五",
|
|
||||||
"6": "六",
|
|
||||||
"7": "七",
|
|
||||||
"8": "八",
|
|
||||||
"9": "九",
|
|
||||||
"10": "十",
|
|
||||||
},
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null",
|
|
||||||
"sort-by-number": true,
|
|
||||||
"active-only": false,
|
|
||||||
},
|
|
||||||
|
|
||||||
"hyprland/window": {
|
|
||||||
"max-length": 100,
|
|
||||||
"separate-outputs": true
|
|
||||||
},
|
|
||||||
|
|
||||||
"pulseaudio": {
|
|
||||||
"scroll-step": 3, // %, can be a float
|
|
||||||
"format": "{icon} {volume}% {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-source": "",
|
|
||||||
"format-source-muted": "",
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": "",
|
|
||||||
"hands-free": "",
|
|
||||||
"headset": "",
|
|
||||||
"phone": "",
|
|
||||||
"portable": "",
|
|
||||||
"car": "",
|
|
||||||
"default": ["", "", ""]
|
|
||||||
},
|
|
||||||
"on-click": "pavucontrol",
|
|
||||||
"on-click-right": "amixer sset Master toggle"
|
|
||||||
},
|
|
||||||
|
|
||||||
"wireplumber": {
|
|
||||||
"on-click": "pavucontrol",
|
|
||||||
"on-click-right": "amixer sset Master toggle 1>/dev/null",
|
|
||||||
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
|
||||||
//on-scroll-down: "${wpctl} set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+";
|
|
||||||
//on-scroll-up: "${wpctl} set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-";
|
|
||||||
"format": "<span foreground='#fab387'>{icon}</span> {volume}%",
|
|
||||||
"format-muted": " ",
|
|
||||||
"format-source": "",
|
|
||||||
"format-source-muted": "",
|
|
||||||
//"format-muted": "<span foreground='#fab387'> </span>",
|
|
||||||
//"format-icons": [ "<span foreground='#fab387'></span>" ]
|
|
||||||
"format-icons": {
|
|
||||||
"headphone": " ",
|
|
||||||
"hands-free": " ",
|
|
||||||
"headset": " ",
|
|
||||||
"phone": " ",
|
|
||||||
"portable": " ",
|
|
||||||
"car": " ",
|
|
||||||
"default": [" ", " ", " "]
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 15,
|
|
||||||
"spacing": 5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
439
.config/waybar/config.jsonc
Normal file
439
.config/waybar/config.jsonc
Normal file
@@ -0,0 +1,439 @@
|
|||||||
|
{
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// Global configuration
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
"layer": "top",
|
||||||
|
|
||||||
|
"position": "top",
|
||||||
|
|
||||||
|
"height": 36,
|
||||||
|
|
||||||
|
"margin-left": 2,
|
||||||
|
"margin-bottom": 1,
|
||||||
|
"margin-right": 2,
|
||||||
|
|
||||||
|
"spacing": 1, // Gaps between modules (4px)
|
||||||
|
|
||||||
|
"modules-left": [
|
||||||
|
"clock",
|
||||||
|
"custom/weather",
|
||||||
|
//"custom/rofi",
|
||||||
|
"hyprland/workspaces",
|
||||||
|
//"hyprland/submap",
|
||||||
|
//"idle_inhibitor",
|
||||||
|
//"mpd",
|
||||||
|
"custom/spotify",
|
||||||
|
"hyprland/window",
|
||||||
|
],
|
||||||
|
// "modules-center": [
|
||||||
|
// //"custom/gammastep"
|
||||||
|
// ],
|
||||||
|
"modules-right": [
|
||||||
|
//"wlr/taskbar",
|
||||||
|
//"custom/storage",
|
||||||
|
"memory",
|
||||||
|
"cpu",
|
||||||
|
"temperature",
|
||||||
|
"battery",
|
||||||
|
//"pulseaudio",
|
||||||
|
"wireplumber",
|
||||||
|
"cava",
|
||||||
|
//"backlight",
|
||||||
|
"bluetooth",
|
||||||
|
//"custom/screenshot_t",
|
||||||
|
"custom/power_profiles",
|
||||||
|
//"tray",
|
||||||
|
"custom/power",
|
||||||
|
],
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
// Modules
|
||||||
|
// -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
"wlr/taskbar": {
|
||||||
|
"on-click": "activate",
|
||||||
|
"on-click-middle": "close",
|
||||||
|
"format": "{icon}",
|
||||||
|
"icon-size": 12,
|
||||||
|
"icon-theme": "Numix-Circle",
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/sp1": {
|
||||||
|
"format": " | ",
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
"custom/sp2": {
|
||||||
|
"format": " |",
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/rofi": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click-right": "nwg-drawer",
|
||||||
|
"on-click": "wofi --show run",
|
||||||
|
"on-click-middle": "pkill -9 wofi",
|
||||||
|
},
|
||||||
|
"custom/screenshot_t": {
|
||||||
|
"format": " ",
|
||||||
|
"on-click": "~/.config/hypr/scripts/screenshot_full",
|
||||||
|
"on-click-right": "~/.config/hypr/scripts/screenshot_area",
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock#1": {
|
||||||
|
"format": " {:%a}",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "gnome-calendar",
|
||||||
|
},
|
||||||
|
"clock#2": {
|
||||||
|
"format": " {:%d-%h-%Y}",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "gnome-calendar",
|
||||||
|
},
|
||||||
|
"clock#3": {
|
||||||
|
"format": " {:%H:%M:%S %p}",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click": "gnome-calendar",
|
||||||
|
},
|
||||||
|
|
||||||
|
"bluetooth": {
|
||||||
|
// "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system
|
||||||
|
"format": "ᛒ {status}",
|
||||||
|
"format-connected": "ᛒ {device_alias}",
|
||||||
|
"format-disabled": "ᛒ off",
|
||||||
|
"tooltip-format": "{controller_alias}\t{controller_address}",
|
||||||
|
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}",
|
||||||
|
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
||||||
|
"on-click": "blueman-manager",
|
||||||
|
},
|
||||||
|
|
||||||
|
"temperature": {
|
||||||
|
// "thermal-zone": 1,
|
||||||
|
"interval": 4,
|
||||||
|
//"hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input",
|
||||||
|
"critical-threshold": 80,
|
||||||
|
// "format-critical": " {temperatureC}°C",
|
||||||
|
"format-critical": " {temperatureC}°C",
|
||||||
|
"format": "{icon} {temperatureC}°C",
|
||||||
|
"format-icons": ["", "", ""],
|
||||||
|
"max-length": 7,
|
||||||
|
"min-length": 7,
|
||||||
|
"on-click": "xsensors",
|
||||||
|
},
|
||||||
|
|
||||||
|
"memory": {
|
||||||
|
"interval": 30,
|
||||||
|
"format": " {used:0.2f} / {total:0.0f} GB",
|
||||||
|
"on-click": "kitty -e btop",
|
||||||
|
},
|
||||||
|
|
||||||
|
"battery": {
|
||||||
|
"interval": 2,
|
||||||
|
"states": {
|
||||||
|
"good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15,
|
||||||
|
},
|
||||||
|
"format": "{icon} {capacity}%",
|
||||||
|
"format-charging": " {capacity}%",
|
||||||
|
"format-plugged": " {capacity}%",
|
||||||
|
"format-icons": ["", "", "", "", ""],
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-wifi": " {essid} ({signalStrength}%)",
|
||||||
|
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format": "",
|
||||||
|
"format-disconnected": "",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}",
|
||||||
|
"on-click": "wl-copy $(ip address show up scope global | grep inet | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c5-)",
|
||||||
|
"on-click-right": "wl-copy $(ip address show up scope global | grep inet6 | head -n1 | cut -d/ -f 1 | tr -d [:space:] | cut -c6-)",
|
||||||
|
"tooltip-format": " {bandwidthUpBits} {bandwidthDownBits}\n{ifname}\n{ipaddr}/{cidr}\n",
|
||||||
|
"tooltip-format-wifi": " {essid} {frequency}MHz\nStrength: {signaldBm}dBm ({signalStrength}%)\nIP: {ipaddr}/{cidr}\n {bandwidthUpBits} {bandwidthDownBits}",
|
||||||
|
"interval": 10,
|
||||||
|
},
|
||||||
|
"custom/storage": {
|
||||||
|
"format": " {}",
|
||||||
|
"format-alt": "{percentage}% ",
|
||||||
|
"format-alt-click": "click-right",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 60,
|
||||||
|
"exec": "~/.config/waybar/modules/storage.sh",
|
||||||
|
},
|
||||||
|
|
||||||
|
"backlight": {
|
||||||
|
"device": "intel_backlight",
|
||||||
|
"format": "{icon} {percent}%",
|
||||||
|
"format-alt": "{percent}% {icon}",
|
||||||
|
"format-alt-click": "click-right",
|
||||||
|
//"format-icons": ["", ""],
|
||||||
|
"format-icons": ["", ""],
|
||||||
|
"on-scroll-down": "brightnessctl s 5%-",
|
||||||
|
"on-scroll-up": "brightnessctl s +5%",
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": "",
|
||||||
|
},
|
||||||
|
"tooltip": "true",
|
||||||
|
},
|
||||||
|
"custom/weather": {
|
||||||
|
"format": "{}",
|
||||||
|
"format-alt": "{alt}: {}",
|
||||||
|
"format-alt-click": "click-right",
|
||||||
|
"interval": 3600,
|
||||||
|
"exec": "curl -s 'https://wttr.in/?format=1'",
|
||||||
|
//"return-type": "json",
|
||||||
|
//"exec": "~/.config/waybar/modules/weather.sh",
|
||||||
|
"exec-if": "ping wttr.in -c1",
|
||||||
|
},
|
||||||
|
"custom/pacman": {
|
||||||
|
"format": "<big></big> {}",
|
||||||
|
"interval": 3600, // every hour
|
||||||
|
"exec": "checkupdates | wc -l", // # of updates
|
||||||
|
"exec-if": "exit 0", // always run; consider advanced run conditions
|
||||||
|
"on-click": "alacritty -e 'paru'; pkill -SIGRTMIN+8 waybar", // update system
|
||||||
|
"signal": 8,
|
||||||
|
"max-length": 5,
|
||||||
|
"min-length": 3,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/spotify": {
|
||||||
|
"exec": "~/.config/waybar/mediaplayer.py --player spotify",
|
||||||
|
"format": "{} ",
|
||||||
|
"return-type": "json",
|
||||||
|
"on-click": "playerctl play-pause",
|
||||||
|
"on-scroll-up": "playerctl next",
|
||||||
|
"on-scroll-down": "playerctl previous",
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/media": {
|
||||||
|
"format": "{0} {1}",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 40,
|
||||||
|
"format-icons": {
|
||||||
|
"spotify": "",
|
||||||
|
"default": "🎜",
|
||||||
|
},
|
||||||
|
"escape": true,
|
||||||
|
//"exec": "~/.config/waybar/mediaplayer.py" // Script in resources folder
|
||||||
|
// "exec": "~/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock": {
|
||||||
|
"format": " {:%H:%M %e %b}",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"today-format": "<b>{}</b>",
|
||||||
|
"on-click": "gnome-calendar",
|
||||||
|
},
|
||||||
|
|
||||||
|
"clock#date": {
|
||||||
|
"format": " {:%H:%M \n %e %b}",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"today-format": "<b>{}</b>",
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/gammastep": {
|
||||||
|
"interval": 5,
|
||||||
|
"return-type": "json",
|
||||||
|
"exec": {
|
||||||
|
"pre": "if unit_status=\"$(systemctl --user is-active gammastep)\"; then\nstatus=\"$unit_status ($(journalctl --user -u gammastep.service -g 'Period: ' | tail -1 | cut -d ':' -f6 | xargs))\"\nelse\nstatus=\"$unit_status\"\nfi",
|
||||||
|
"alt": "${status:-inactive}",
|
||||||
|
"tooltip": "Gammastep is $status",
|
||||||
|
},
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activating": " ",
|
||||||
|
"deactivating": " ",
|
||||||
|
"inactive": "? ",
|
||||||
|
"active (Night)": " ",
|
||||||
|
"active (Nighttime)": " ",
|
||||||
|
"active (Transition (Night)": " ",
|
||||||
|
"active (Transition (Nighttime)": " ",
|
||||||
|
"active (Day)": " ",
|
||||||
|
"active (Daytime)": " ",
|
||||||
|
"active (Transition (Day)": " ",
|
||||||
|
"active (Transition (Daytime)": " ",
|
||||||
|
},
|
||||||
|
"on-click": "systemctl --user is-active gammastep && systemctl --user stop gammastep || systemctl --user start gammastep",
|
||||||
|
},
|
||||||
|
|
||||||
|
"cpu": {
|
||||||
|
"interval": 1,
|
||||||
|
//"format": " {}%", // Icon: microchip
|
||||||
|
"format": "{max_frequency}GHz <span color=\"darkgray\">| {usage}%</span>",
|
||||||
|
"max-length": 13,
|
||||||
|
"min-length": 13,
|
||||||
|
},
|
||||||
|
|
||||||
|
"mpd": {
|
||||||
|
"max-length": 25,
|
||||||
|
"format": "<span foreground='#bb9af7'></span> {title}",
|
||||||
|
"format-paused": " {title}",
|
||||||
|
"format-stopped": "<span foreground='#bb9af7'></span>",
|
||||||
|
"format-disconnected": "",
|
||||||
|
"on-click": "mpc --quiet toggle",
|
||||||
|
"on-click-right": "mpc update; mpc ls | mpc add",
|
||||||
|
"on-click-middle": "alacritty -e ncmpcpp",
|
||||||
|
"on-scroll-up": "mpc --quiet prev",
|
||||||
|
"on-scroll-down": "mpc --quiet next",
|
||||||
|
"smooth-scrolling-threshold": 5,
|
||||||
|
"tooltip-format": "{title} - {artist} ({elapsedTime:%M:%S}/{totalTime:%H:%M:%S})",
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/title": {
|
||||||
|
"format": "{}",
|
||||||
|
"interval": 0,
|
||||||
|
"return-type": "json",
|
||||||
|
//"max-length": 35,
|
||||||
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/title#name": {
|
||||||
|
"format": "{}",
|
||||||
|
"interval": 0,
|
||||||
|
"return-type": "json",
|
||||||
|
|
||||||
|
"max-length": 35,
|
||||||
|
"exec": "$HOME/.scripts/title",
|
||||||
|
},
|
||||||
|
|
||||||
|
/*"custom/keyboard": {
|
||||||
|
"format": " {}",
|
||||||
|
"interval": 1,
|
||||||
|
"exec": "$HOME/.config/waybar/get_kbdlayout.sh"
|
||||||
|
},*/
|
||||||
|
|
||||||
|
"hyprland/workspaces": {
|
||||||
|
"all-outputs": false,
|
||||||
|
"format": "{name}",
|
||||||
|
"format-icons": {
|
||||||
|
"1": "一",
|
||||||
|
"2": "二",
|
||||||
|
"3": "三",
|
||||||
|
"4": "四",
|
||||||
|
"5": "五",
|
||||||
|
"6": "六",
|
||||||
|
"7": "七",
|
||||||
|
"8": "八",
|
||||||
|
"9": "九",
|
||||||
|
"10": "十",
|
||||||
|
},
|
||||||
|
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null",
|
||||||
|
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null",
|
||||||
|
"sort-by-number": true,
|
||||||
|
"active-only": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"hyprland/window": {
|
||||||
|
"max-length": 200,
|
||||||
|
"separate-outputs": true,
|
||||||
|
},
|
||||||
|
|
||||||
|
"pulseaudio": {
|
||||||
|
"scroll-step": 3, // %, can be a float
|
||||||
|
"format": "{icon} {volume}% {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-source": "",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""],
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
"on-click-right": "amixer sset Master toggle",
|
||||||
|
},
|
||||||
|
|
||||||
|
"wireplumber": {
|
||||||
|
"on-click": "pavucontrol",
|
||||||
|
"on-click-right": "amixer sset Master toggle 1>/dev/null",
|
||||||
|
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||||
|
//on-scroll-down: "${wpctl} set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+";
|
||||||
|
//on-scroll-up: "${wpctl} set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-";
|
||||||
|
"format": "<span foreground='#fab387'>{icon}</span> {volume}%",
|
||||||
|
"format-muted": " ",
|
||||||
|
"format-source": "",
|
||||||
|
"format-source-muted": "",
|
||||||
|
//"format-muted": "<span foreground='#fab387'> </span>",
|
||||||
|
//"format-icons": [ "<span foreground='#fab387'></span>" ]
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": " ",
|
||||||
|
"hands-free": " ",
|
||||||
|
"headset": " ",
|
||||||
|
"phone": " ",
|
||||||
|
"portable": " ",
|
||||||
|
"car": " ",
|
||||||
|
"default": [" ", " ", " "],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 15,
|
||||||
|
"spacing": 5,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/power_profiles": {
|
||||||
|
"format": "{}",
|
||||||
|
"return-type": "json",
|
||||||
|
"interval": 2,
|
||||||
|
"exec": "~/.config/waybar/modules/power_profiles.py",
|
||||||
|
"menu": "on-click",
|
||||||
|
"menu-file": "~/.config/waybar/modules/power_profiles_menu.xml",
|
||||||
|
"menu-actions": {
|
||||||
|
"performance": "~/.config/waybar/modules/power_profiles.py --set performance",
|
||||||
|
"balanced": "~/.config/waybar/modules/power_profiles.py --set balanced",
|
||||||
|
"power-saver": "~/.config/waybar/modules/power_profiles.py --set power-saver",
|
||||||
|
},
|
||||||
|
"tooltip": true,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/power": {
|
||||||
|
"format": "⏻ ",
|
||||||
|
"tooltip": false,
|
||||||
|
"menu": "on-click",
|
||||||
|
"menu-file": "~/.config/waybar/modules/power_menu.xml",
|
||||||
|
"menu-actions": {
|
||||||
|
"shutdown": "shutdown",
|
||||||
|
"reboot": "reboot",
|
||||||
|
"suspend": "systemctl suspend",
|
||||||
|
"hibernate": "systemctl hibernate",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
"cava": {
|
||||||
|
// "cava_config": "$XDG_CONFIG_HOME/cava/cava.conf",
|
||||||
|
"framerate": 30,
|
||||||
|
"autosens": 1,
|
||||||
|
"sensitivity": 100,
|
||||||
|
"bars": 14,
|
||||||
|
"lower_cutoff_freq": 50,
|
||||||
|
"higher_cutoff_freq": 10000,
|
||||||
|
"hide_on_silence": false,
|
||||||
|
// "format_silent": "quiet",
|
||||||
|
"method": "pulse",
|
||||||
|
"source": "auto",
|
||||||
|
"stereo": true,
|
||||||
|
"reverse": false,
|
||||||
|
"bar_delimiter": 0,
|
||||||
|
"monstercat": false,
|
||||||
|
"waves": false,
|
||||||
|
"noise_reduction": 0.77,
|
||||||
|
"input_delay": 2,
|
||||||
|
"format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
|
||||||
|
"actions": {
|
||||||
|
"on-click-right": "mode",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
127
.config/waybar/mediaplayer.py
Executable file
127
.config/waybar/mediaplayer.py
Executable file
@@ -0,0 +1,127 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import argparse
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
import signal
|
||||||
|
import gi
|
||||||
|
import json
|
||||||
|
gi.require_version('Playerctl', '2.0')
|
||||||
|
from gi.repository import Playerctl, GLib
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def write_output(text, player):
|
||||||
|
logger.info('Writing output')
|
||||||
|
|
||||||
|
output = {'text': text,
|
||||||
|
'class': 'custom-' + player.props.player_name,
|
||||||
|
'alt': player.props.player_name}
|
||||||
|
|
||||||
|
sys.stdout.write(json.dumps(output) + '\n')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def on_play(player, status, manager):
|
||||||
|
logger.info('Received new playback status')
|
||||||
|
on_metadata(player, player.props.metadata, manager)
|
||||||
|
|
||||||
|
|
||||||
|
def on_metadata(player, metadata, manager):
|
||||||
|
logger.info('Received new metadata')
|
||||||
|
track_info = ''
|
||||||
|
|
||||||
|
if player.props.player_name == 'spotify' and \
|
||||||
|
'mpris:trackid' in metadata.keys() and \
|
||||||
|
':ad:' in player.props.metadata['mpris:trackid']:
|
||||||
|
track_info = 'AD PLAYING'
|
||||||
|
elif player.get_artist() != '' and player.get_title() != '':
|
||||||
|
track_info = '{artist} - {title}'.format(artist=player.get_artist(),
|
||||||
|
title=player.get_title())
|
||||||
|
else:
|
||||||
|
track_info = player.get_title()
|
||||||
|
|
||||||
|
if player.props.status != 'Playing' and track_info:
|
||||||
|
track_info = ' ' + track_info
|
||||||
|
write_output(track_info, player)
|
||||||
|
|
||||||
|
|
||||||
|
def on_player_appeared(manager, player, selected_player=None):
|
||||||
|
if player is not None and (selected_player is None or player.name == selected_player):
|
||||||
|
init_player(manager, player)
|
||||||
|
else:
|
||||||
|
logger.debug("New player appeared, but it's not the selected player, skipping")
|
||||||
|
|
||||||
|
|
||||||
|
def on_player_vanished(manager, player):
|
||||||
|
logger.info('Player has vanished')
|
||||||
|
sys.stdout.write('\n')
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def init_player(manager, name):
|
||||||
|
logger.debug('Initialize player: {player}'.format(player=name.name))
|
||||||
|
player = Playerctl.Player.new_from_name(name)
|
||||||
|
player.connect('playback-status', on_play, manager)
|
||||||
|
player.connect('metadata', on_metadata, manager)
|
||||||
|
manager.manage_player(player)
|
||||||
|
on_metadata(player, player.props.metadata, manager)
|
||||||
|
|
||||||
|
|
||||||
|
def signal_handler(sig, frame):
|
||||||
|
logger.debug('Received signal to stop, exiting')
|
||||||
|
sys.stdout.write('\n')
|
||||||
|
sys.stdout.flush()
|
||||||
|
# loop.quit()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_arguments():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
|
||||||
|
# Increase verbosity with every occurance of -v
|
||||||
|
parser.add_argument('-v', '--verbose', action='count', default=0)
|
||||||
|
|
||||||
|
# Define for which player we're listening
|
||||||
|
parser.add_argument('--player')
|
||||||
|
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
arguments = parse_arguments()
|
||||||
|
|
||||||
|
# Initialize logging
|
||||||
|
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
|
||||||
|
format='%(name)s %(levelname)s %(message)s')
|
||||||
|
|
||||||
|
# Logging is set by default to WARN and higher.
|
||||||
|
# With every occurrence of -v it's lowered by one
|
||||||
|
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
|
||||||
|
|
||||||
|
# Log the sent command line arguments
|
||||||
|
logger.debug('Arguments received {}'.format(vars(arguments)))
|
||||||
|
|
||||||
|
manager = Playerctl.PlayerManager()
|
||||||
|
loop = GLib.MainLoop()
|
||||||
|
|
||||||
|
manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
|
||||||
|
manager.connect('player-vanished', on_player_vanished)
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
|
signal.signal(signal.SIGTERM, signal_handler)
|
||||||
|
|
||||||
|
for player in manager.props.player_names:
|
||||||
|
if arguments.player is not None and arguments.player != player.name:
|
||||||
|
logger.debug('{player} is not the filtered player, skipping it'
|
||||||
|
.format(player=player.name)
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
|
||||||
|
init_player(manager, player)
|
||||||
|
|
||||||
|
loop.run()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
31
.config/waybar/modules/power_menu.xml
Normal file
31
.config/waybar/modules/power_menu.xml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkMenu" id="menu">
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="suspend">
|
||||||
|
<property name="label">Suspend</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="hibernat">
|
||||||
|
<property name="label">Hibernate</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="shutdown">
|
||||||
|
<property name="label">Shutdown</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="reboot">
|
||||||
|
<property name="label">Reboot</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
|
|
||||||
150
.config/waybar/modules/power_profiles.py
Executable file
150
.config/waybar/modules/power_profiles.py
Executable file
@@ -0,0 +1,150 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import subprocess
|
||||||
|
import json
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def get_current_profile():
|
||||||
|
"""Get the current power profile"""
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
["powerprofilesctl", "get"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
if result.returncode == 0:
|
||||||
|
return result.stdout.strip()
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error getting profile: {e}", file=sys.stderr)
|
||||||
|
return "unknown"
|
||||||
|
|
||||||
|
def get_available_profiles():
|
||||||
|
"""Get list of available power profiles"""
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
["powerprofilesctl", "list"],
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
if result.returncode == 0:
|
||||||
|
profiles = []
|
||||||
|
for line in result.stdout.split('\n'):
|
||||||
|
line = line.strip()
|
||||||
|
if line and ':' in line and not line.startswith('Cpu') and not line.startswith('Platform') and not line.startswith('Degraded'):
|
||||||
|
profile_name = line.split(':')[0].strip()
|
||||||
|
if profile_name and not profile_name.startswith('*'):
|
||||||
|
profiles.append(profile_name)
|
||||||
|
elif profile_name.startswith('*'):
|
||||||
|
profiles.append(profile_name[1:].strip())
|
||||||
|
return profiles
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error getting profiles: {e}", file=sys.stderr)
|
||||||
|
return []
|
||||||
|
|
||||||
|
def set_profile(profile):
|
||||||
|
"""Set the power profile"""
|
||||||
|
try:
|
||||||
|
subprocess.run(
|
||||||
|
["powerprofilesctl", "set", profile],
|
||||||
|
capture_output=True,
|
||||||
|
timeout=5
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error setting profile: {e}", file=sys.stderr)
|
||||||
|
|
||||||
|
def write_menu_file(menu_path, profiles, current):
|
||||||
|
"""Write a GTK menu XML file for Waybar."""
|
||||||
|
items = []
|
||||||
|
if not profiles:
|
||||||
|
items.append(
|
||||||
|
" <child>\n"
|
||||||
|
" <object class=\"GtkMenuItem\" id=\"none\">\n"
|
||||||
|
" <property name=\"label\">No profiles</property>\n"
|
||||||
|
" <property name=\"sensitive\">false</property>\n"
|
||||||
|
" </object>\n"
|
||||||
|
" </child>\n"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
for profile in profiles:
|
||||||
|
label = profile
|
||||||
|
if profile == current:
|
||||||
|
label = f"{profile} (current)"
|
||||||
|
items.append(
|
||||||
|
" <child>\n"
|
||||||
|
f" <object class=\"GtkMenuItem\" id=\"{profile}\">\n"
|
||||||
|
f" <property name=\"label\">{label}</property>\n"
|
||||||
|
" </object>\n"
|
||||||
|
" </child>\n"
|
||||||
|
)
|
||||||
|
|
||||||
|
content = (
|
||||||
|
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
|
"<interface>\n"
|
||||||
|
" <object class=\"GtkMenu\" id=\"menu\">\n"
|
||||||
|
+ "".join(items) +
|
||||||
|
" </object>\n"
|
||||||
|
"</interface>\n"
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
menu_path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
|
menu_path.write_text(content)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error writing menu file: {e}", file=sys.stderr)
|
||||||
|
|
||||||
|
def format_output(profile):
|
||||||
|
"""Format output for waybar"""
|
||||||
|
# Icons for each profile
|
||||||
|
icons = {
|
||||||
|
"performance": "⚡",
|
||||||
|
"balanced": "⚖",
|
||||||
|
"power-saver": "🔋"
|
||||||
|
}
|
||||||
|
|
||||||
|
icon = icons.get(profile, "⚡")
|
||||||
|
|
||||||
|
output = {
|
||||||
|
"text": f"{icon}",
|
||||||
|
"alt": profile,
|
||||||
|
"class": f"power-profile-{profile}",
|
||||||
|
"tooltip": f"Current: {profile}"
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.dumps(output)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
menu_path = Path("~/.config/waybar/modules/power_profiles_menu.xml").expanduser()
|
||||||
|
|
||||||
|
if len(sys.argv) > 2 and sys.argv[1] == "--set":
|
||||||
|
target = sys.argv[2]
|
||||||
|
set_profile(target)
|
||||||
|
current = get_current_profile()
|
||||||
|
available = get_available_profiles()
|
||||||
|
write_menu_file(menu_path, available, current)
|
||||||
|
print(format_output(current))
|
||||||
|
return
|
||||||
|
|
||||||
|
if len(sys.argv) > 1 and sys.argv[1] == "--next":
|
||||||
|
# Cycle to next profile
|
||||||
|
current = get_current_profile()
|
||||||
|
available = get_available_profiles()
|
||||||
|
write_menu_file(menu_path, available, current)
|
||||||
|
|
||||||
|
if current in available and available:
|
||||||
|
idx = available.index(current)
|
||||||
|
next_profile = available[(idx + 1) % len(available)]
|
||||||
|
set_profile(next_profile)
|
||||||
|
print(format_output(next_profile))
|
||||||
|
else:
|
||||||
|
print(format_output(current))
|
||||||
|
return
|
||||||
|
|
||||||
|
# Just display current profile
|
||||||
|
current = get_current_profile()
|
||||||
|
available = get_available_profiles()
|
||||||
|
write_menu_file(menu_path, available, current)
|
||||||
|
print(format_output(current))
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
20
.config/waybar/modules/power_profiles_menu.xml
Normal file
20
.config/waybar/modules/power_profiles_menu.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<object class="GtkMenu" id="menu">
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="performance">
|
||||||
|
<property name="label">performance</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="balanced">
|
||||||
|
<property name="label">balanced (current)</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem" id="power-saver">
|
||||||
|
<property name="label">power-saver</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
@@ -1,31 +1,33 @@
|
|||||||
/* Import wallust colors */
|
/* Import wallust colors */
|
||||||
@import url("colors-wallust.css");
|
@import url("colors-wallust.css");
|
||||||
|
|
||||||
|
/* Global defaults */
|
||||||
* {
|
* {
|
||||||
font-family: "Fira Sans Semibold", "Font Awesome 6 Free", FontAwesome, Roboto,
|
font-family:
|
||||||
|
"Fira Sans Condensed", "Font Awesome 6 Free", FontAwesome, Roboto,
|
||||||
Helvetica, Arial, sans-serif;
|
Helvetica, Arial, sans-serif;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 900;
|
font-weight: 500;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reset all styles */
|
|
||||||
* {
|
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
margin: 0;
|
transition: background-color 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left,
|
||||||
|
.modules-right {
|
||||||
|
background-color: rgba(17, 24, 39, 0.5);
|
||||||
|
margin-top: 2px;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 3px 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The whole bar */
|
/* The whole bar */
|
||||||
#waybar {
|
#waybar {
|
||||||
background-color: alpha(@background, 0);
|
background-color: alpha(@background, 0);
|
||||||
color: @foreground;
|
color: @foreground;
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: 0.5s;
|
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
@@ -48,6 +50,12 @@ window#waybar.empty #window {
|
|||||||
font-size: 9px; /* Slightly smaller font size */
|
font-size: 9px; /* Slightly smaller font size */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
background-color: transparent;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
#workspaces button.active {
|
#workspaces button.active {
|
||||||
color: @foreground;
|
color: @foreground;
|
||||||
background: @color3;
|
background: @color3;
|
||||||
@@ -61,21 +69,15 @@ window#waybar.empty #window {
|
|||||||
background-color: @color9;
|
background-color: @color9;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
background-color: rgba(17, 24, 39, 0.5);
|
|
||||||
margin-top: 2px;
|
|
||||||
border-radius: 3px;
|
|
||||||
padding: 3px 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
background-color: alpha(@background, 0.5);
|
background-color: alpha(@background, 0.1);
|
||||||
color: @foreground;
|
color: @foreground;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding: 1px 10px; /* Reduced padding */
|
padding: 1px 10px; /* Reduced padding */
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Shared module styling */
|
||||||
#clock,
|
#clock,
|
||||||
#battery,
|
#battery,
|
||||||
#cpu,
|
#cpu,
|
||||||
@@ -84,27 +86,52 @@ window#waybar.empty #window {
|
|||||||
#custom-weather,
|
#custom-weather,
|
||||||
#bluetooth,
|
#bluetooth,
|
||||||
#custom-media,
|
#custom-media,
|
||||||
|
#custom-power_profiles,
|
||||||
|
#custom-power,
|
||||||
#temperature,
|
#temperature,
|
||||||
#backlight,
|
#backlight,
|
||||||
#network,
|
#network,
|
||||||
#wireplumber,
|
#wireplumber,
|
||||||
#pulseaudio {
|
#pulseaudio {
|
||||||
background-color: alpha(@background, 0.3);
|
background-color: alpha(@foreground, 0.15);
|
||||||
color: @foreground;
|
color: @foreground;
|
||||||
padding: 0 10px;
|
padding: 0px 10px;
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#clock:hover,
|
||||||
|
#battery:hover,
|
||||||
|
#cpu:hover,
|
||||||
|
#memory:hover,
|
||||||
|
#custom-storage:hover,
|
||||||
|
#custom-weather:hover,
|
||||||
|
#bluetooth:hover,
|
||||||
|
#custom-media:hover,
|
||||||
|
#custom-power_profiles:hover,
|
||||||
|
#custom-power:hover,
|
||||||
|
#temperature:hover,
|
||||||
|
#backlight:hover,
|
||||||
|
#network:hover,
|
||||||
|
#wireplumber:hover,
|
||||||
|
#pulseaudio:hover {
|
||||||
|
background: @color2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth {
|
||||||
|
background-color: alpha(@color3, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
#bluetooth.disabled {
|
#bluetooth.disabled {
|
||||||
background-color: alpha(@color8, 0);
|
background-color: alpha(@color2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical:not(.charging) {
|
#battery.critical:not(.charging) {
|
||||||
color: @color1;
|
color: @color1;
|
||||||
|
background-color: alpha(@color2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#temperature.critical {
|
#temperature.critical {
|
||||||
background-color: alpha(@foreground, 0.5);
|
background-color: alpha(@color2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#tray > .passive {
|
#tray > .passive {
|
||||||
@@ -125,20 +152,22 @@ window#waybar.empty #window {
|
|||||||
color: rgba(45, 52, 54, 1);
|
color: rgba(45, 52, 54, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#language {
|
/* Language + keyboard state */
|
||||||
background: rgba(0, 176, 147, 0.5);
|
#language,
|
||||||
color: rgba(116, 8, 100, 0.5);
|
#keyboard-state {
|
||||||
padding: 0 0px;
|
padding: 0 0px;
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
min-width: 16px;
|
min-width: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
background: rgba(0, 176, 147, 0.5);
|
||||||
|
color: rgba(116, 8, 100, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
#keyboard-state {
|
#keyboard-state {
|
||||||
background: rgba(151, 225, 173, 0.5);
|
background: rgba(151, 225, 173, 0.5);
|
||||||
color: rgba(0, 0, 0, 0.5);
|
color: rgba(0, 0, 0, 0.5);
|
||||||
padding: 0 0px;
|
|
||||||
margin: 0 5px;
|
|
||||||
min-width: 16px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#keyboard-state > label {
|
#keyboard-state > label {
|
||||||
@@ -148,3 +177,30 @@ window#waybar.empty #window {
|
|||||||
#keyboard-state > label.locked {
|
#keyboard-state > label.locked {
|
||||||
background: rgba(0, 0, 0, 0.2);
|
background: rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#taskbar {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button {
|
||||||
|
padding: 0px 3px 0px 6px;
|
||||||
|
margin: 2px 1px;
|
||||||
|
border-radius: 6px;
|
||||||
|
color: @foreground;
|
||||||
|
transition: all 0.3s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button.active {
|
||||||
|
background: alpha(@foreground, 0.2);
|
||||||
|
transition: all 0.4s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu {
|
||||||
|
border-radius: 15px;
|
||||||
|
background: rgba(22, 19, 32, 0);
|
||||||
|
color: #b5e8e0;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
menuitem {
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
|||||||
10
.config/waybar/waybar.sh
Executable file
10
.config/waybar/waybar.sh
Executable file
@@ -0,0 +1,10 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# Terminate already running bar instances
|
||||||
|
killall -q waybar
|
||||||
|
|
||||||
|
# Wait until the processes have been shut down
|
||||||
|
while pgrep -x waybar >/dev/null; do sleep 1; done
|
||||||
|
|
||||||
|
# Launch main
|
||||||
|
waybar &
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
language = en
|
language = en
|
||||||
folder = /usr/share/wallpapers
|
folder = /usr/share/wallpapers
|
||||||
monitors = All
|
monitors = All
|
||||||
wallpaper = /usr/share/wallpapers/wallpaper/lofoten2.jpg
|
wallpaper = /usr/share/wallpapers/downloaded/pexels-blooddrainer-1655901.jpg
|
||||||
show_path_in_tooltip = True
|
show_path_in_tooltip = True
|
||||||
backend = swww
|
backend = swaybg
|
||||||
fill = fill
|
fill = fill
|
||||||
sort = name
|
sort = name
|
||||||
color = #ffffff
|
color = #ffffff
|
||||||
@@ -12,9 +12,9 @@ subfolders = True
|
|||||||
all_subfolders = False
|
all_subfolders = False
|
||||||
show_hidden = False
|
show_hidden = False
|
||||||
show_gifs_only = False
|
show_gifs_only = False
|
||||||
post_command = wallust run '$wallpaper'
|
post_command = wallust run '$wallpaper' -s
|
||||||
number_of_columns = 3
|
number_of_columns = 3
|
||||||
swww_transition_type = none
|
swww_transition_type = wipe
|
||||||
swww_transition_step = 90
|
swww_transition_step = 90
|
||||||
swww_transition_angle = 0
|
swww_transition_angle = 0
|
||||||
swww_transition_duration = 2
|
swww_transition_duration = 2
|
||||||
@@ -22,5 +22,6 @@ swww_transition_fps = 60
|
|||||||
mpvpaper_sound = False
|
mpvpaper_sound = False
|
||||||
mpvpaper_options =
|
mpvpaper_options =
|
||||||
use_xdg_state = False
|
use_xdg_state = False
|
||||||
zen_mode = False
|
zen_mode = True
|
||||||
|
stylesheet = /home/michaelb/.config/waypaper/style.css
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user