diff --git a/.config/hypr/custom/execs.conf b/.config/hypr/custom/execs.conf
index 52bd513..f8abb96 100644
--- a/.config/hypr/custom/execs.conf
+++ b/.config/hypr/custom/execs.conf
@@ -5,5 +5,8 @@ exec-once = corectrl
exec-once = otd-daemon # run driver veikk
exec-once = fcitx5
+exec-once = waybar -c ~/.config/waybar/primary_screen/config.jsonc
+exec-once = waybar -c ~/.config/waybar/secondary_screen/config.jsonc
+
exec = gsettings set org.gnome.desktop.interface icon-theme 'Nordzy'
exec = hyprctl setcursor Gruvbox-Retro 20
diff --git a/.config/hypr/custom/general.conf b/.config/hypr/custom/general.conf
index c5680cf..f81f401 100644
--- a/.config/hypr/custom/general.conf
+++ b/.config/hypr/custom/general.conf
@@ -17,6 +17,7 @@ workspace = 6, monitor:HDMI-A-1,
workspace = 8, monitor:HDMI-A-1,
workspace = 10, monitor:HDMI-A-1,
+
decoration {
blur {
enabled = false
@@ -50,6 +51,10 @@ general {
layout = master
}
+master {
+ new_on_top = true
+}
+
dwindle {
preserve_split = true # you probably want this
#no_gaps_when_only = true
diff --git a/.config/hypr/custom/keybinding.conf b/.config/hypr/custom/keybinding.conf
index bcfa464..aab6a80 100644
--- a/.config/hypr/custom/keybinding.conf
+++ b/.config/hypr/custom/keybinding.conf
@@ -5,7 +5,6 @@
unbind = Super, W
unbind = Super, T
unbind = Alt, E
-
# disbale side
unbind = Super, B
unbind = Super, M
@@ -17,53 +16,51 @@ unbind = Super, H
unbind = Super, J
unbind = Super, K
unbind = Super, L
+unbind = Ctrl+Alt, mouse_down
+unbind = Ctrl+Alt, mouse_up
+unbind = SUPER, mouse:273
-# move windown
+# move focus
bind = Alt, H, exec, source /home/duckq1u/.config/hypr/scripts/focusStateToLeft.sh # [hidden]
-# bind = Alt, H, movefocus, l # [hidden]
-
bind = Alt, L, exec, source /home/duckq1u/.config/hypr/scripts/focusStateToRight.sh # [hidden]
-# bind = Alt, L, movefocus, r # [hidden]
-
bind = Alt, K, fullscreenstate, 0 # [hidden]
bind = Alt, K, movefocus, u # [hidden]
-
bind = Alt, J, fullscreenstate, 0 # [hidden]
bind = Alt, J, movefocus, d # [hidden]
-##! Window arrangement
-#/# bind = Super+Shift, ←/↑/→/↓,, # Window: move in direction
+##! Move window
bind = Ctrl+Alt, H, exec, source /home/duckq1u/.config/hypr/scripts/windowtoleft.sh # [hidden]
-# bind = Ctrl+Alt, H, movewindow, l # [hidden]
-
-# bind = Ctrl+Alt, L, fullscreenstate, 0 # [hidden]
bind = Ctrl+Alt, L, exec, source /home/duckq1u/.config/hypr/scripts/windowtoright.sh # [hidden]
-
bind = Ctrl+Alt, K, movewindow, u # [hidden]
bind = Ctrl+Alt, J, movewindow, d # [hidden]
-# bind = Ctrl+Alt, M, exec, pavucontrol # Launch pavucontrol (volume mixer)
-bind = Alt, Q, killactive,
-bind = Alt, F, fullscreen, 1
-# bind = Alt, R, exec, killall ags ydotool; ags & # Restart widgets
+## switch workspace
+bind = Shift+Alt, L, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2inscrease.sh
+bind = Shift+Alt, H, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2descrease.sh
+bindt = Ctrl+Alt, mouse:272, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2descrease.sh
+bindt = Ctrl+Alt, mouse:273, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2inscrease.sh
+
+bindm = ALT, mouse:272, movewindow # [hidden]
+
+bind = Alt, Q, killactive,
+bind = Alt, F, fullscreen, 1
+bind = Shift+Alt, F, fullscreen, 0
bind = Alt, E, exec, nautilus --new-window # Launch Nautilus (file manager)
-# bind = Alt, M, exec, ags run-js 'openMusicControls.value = (!mpris.getPlayer() ? false : !openMusicControls.value);' # Toggle music controls
-# bind = Alt, N, exec, ags -t 'sideright' # Toggle right sidebar
bind = Alt, T, exec, kitty
-bind = Alt, B, exec, brave
-# bind = Alt, F, exec, rofi
+bind = Alt, B, exec, thorium-browser
+bind = Shift+Alt, B, exec, brave
bind = Alt, O, exec, obsidian --no-sandbox --ozone-platform=wayland --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations %U
bind = Alt, V, exec, vesktop --no-sandbox --ozone-platform=wayland --ozone-platform-hint=auto --enable-features=UseOzonePlatform,WaylandWindowDecorations %U
bind = SUPER, SUPER_L, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch application launcher
+bind = Ctrl+SUPER, Ctrl+SUPER_L, exec, rofi
-bind = Shift+Alt, L, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2inscrease.sh
-bind = Shift+Alt, H, exec, source /home/duckq1u/.config/hypr/scripts/workspaceV2descrease.sh
-bind = Alt, S, exec, volumecontrol.sh -s ''
+bind = Alt, M, exec, volumecontrol.sh -s ''
+
$mainMod = Super # super / meta / windows key
$scrPath = $HOME/.local/share/bin # set scripts path
diff --git a/.config/hypr/custom/windowrules.conf b/.config/hypr/custom/windowrules.conf
index 52a6ba4..2d2b78c 100644
--- a/.config/hypr/custom/windowrules.conf
+++ b/.config/hypr/custom/windowrules.conf
@@ -1,4 +1,5 @@
windowrulev2 = bordercolor rgb(FF0000) rgb(880808),fullscreen:1
+# windowrule = fullscreen unset
diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf
index f7c8303..77279c9 100644
--- a/.config/hypr/hyprland.conf
+++ b/.config/hypr/hyprland.conf
@@ -29,7 +29,7 @@ exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CUR
exec-once = dbus-update-activation-environment --systemd --all # for XDPH
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps
-exec-once = waybar # launch the system bar
+# exec-once = waybar # launch the system bar
exec-once = blueman-applet # systray app for Bluetooth
exec-once = udiskie --no-automount --smart-tray # front-end that allows to manage removable media
exec-once = nm-applet --indicator # systray app for Network/Wifi
diff --git a/.config/hypr/scripts/focusStateToLeft.sh b/.config/hypr/scripts/focusStateToLeft.sh
index bdfeed7..49c12e6 100644
--- a/.config/hypr/scripts/focusStateToLeft.sh
+++ b/.config/hypr/scripts/focusStateToLeft.sh
@@ -12,3 +12,4 @@ if [ $window_state -eq 1 ]; then
fi
hyprctl dispatch movefocus l
+exit 0
diff --git a/.config/hypr/scripts/focusStateToRight.sh b/.config/hypr/scripts/focusStateToRight.sh
index 32f2216..f9ae2c6 100644
--- a/.config/hypr/scripts/focusStateToRight.sh
+++ b/.config/hypr/scripts/focusStateToRight.sh
@@ -15,3 +15,4 @@ if [ $window_state -eq 1 ]; then
fi
hyprctl dispatch movefocus r
+exit 0
diff --git a/.config/hypr/scripts/windowtoleft.sh b/.config/hypr/scripts/windowtoleft.sh
index 4748793..1c7d2f5 100644
--- a/.config/hypr/scripts/windowtoleft.sh
+++ b/.config/hypr/scripts/windowtoleft.sh
@@ -25,10 +25,10 @@ if [ $window_x_position -eq 14 ] && [ $window_state -eq 1 ]; then
if [ $current_workspace -eq 1 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace-1))
- hyprctl dispatch focusmonitor 0
- hyprctl dispatch workspace $((current_workspace-2))
- hyprctl dispatch focusmonitor 1
+ hyprctl dispatch movetoworkspace $((window_at_workspace-1)) \
+ && hyprctl dispatch focusmonitor 0 \
+ && hyprctl dispatch workspace $((current_workspace-2)) \
+ && hyprctl dispatch focusmonitor 1
exit 0
fi
@@ -37,10 +37,10 @@ if [ $window_x_position -eq 14 ] && [ $window_width -eq 1892 ]; then
if [ $current_workspace -eq 1 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace-1))
- hyprctl dispatch focusmonitor 0
- hyprctl dispatch workspace $((current_workspace-2))
- hyprctl dispatch focusmonitor 1
+ hyprctl dispatch movetoworkspace $((window_at_workspace-1)) \
+ && hyprctl dispatch focusmonitor 0 \
+ && hyprctl dispatch workspace $((current_workspace-2)) \
+ && hyprctl dispatch focusmonitor 1
exit 0
fi
@@ -50,12 +50,13 @@ if [ $window_x_position -eq 14 ]; then
if [ $current_workspace -eq 1 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace-1))
- hyprctl dispatch focusmonitor 0
- hyprctl dispatch workspace $((current_workspace-2))
- hyprctl dispatch focusmonitor 1
+ hyprctl dispatch movetoworkspace $((window_at_workspace-1)) \
+ && hyprctl dispatch focusmonitor 0 \
+ && hyprctl dispatch workspace $((current_workspace-2)) \
+ && hyprctl dispatch focusmonitor 1
exit 0
fi
# Nếu không thoả điều kiện di chuyển, di chuyển cửa sổ sang phải
hyprctl dispatch movewindow l
+exit 0
diff --git a/.config/hypr/scripts/windowtoright.sh b/.config/hypr/scripts/windowtoright.sh
index 743257d..3626497 100644
--- a/.config/hypr/scripts/windowtoright.sh
+++ b/.config/hypr/scripts/windowtoright.sh
@@ -1,5 +1,4 @@
#!/bin/bash
-
# Lấy thông tin của cửa sổ hiện tại chỉ một lần
window_info=$(hyprctl activewindow)
@@ -25,10 +24,10 @@ if [ $window_x_position -eq 1934 ] && [ $window_state -eq 1 ]; then
if [ $current_workspace -eq 6 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace+1))
- hyprctl dispatch focusmonitor 1
- hyprctl dispatch workspace $((current_workspace+2))
- hyprctl dispatch focusmonitor 0
+ hyprctl dispatch movetoworkspace $((window_at_workspace+1)) \
+ && hyprctl dispatch focusmonitor 1 \
+ && hyprctl dispatch workspace $((current_workspace+2)) \
+ && hyprctl dispatch focusmonitor 0
exit 0
fi
@@ -37,10 +36,10 @@ if [ $window_x_position -eq 1934 ] && [ $window_width -eq 1892 ]; then
if [ $current_workspace -eq 6 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace+1))
- hyprctl dispatch focusmonitor 1
- hyprctl dispatch workspace $((current_workspace+2))
- hyprctl dispatch focusmonitor 0
+ hyprctl dispatch movetoworkspace $((window_at_workspace+1)) \
+ && hyprctl dispatch focusmonitor 1 \
+ && hyprctl dispatch workspace $((current_workspace+2)) \
+ && hyprctl dispatch focusmonitor 0
exit 0
fi
@@ -50,12 +49,13 @@ if [ $window_x_position -eq 2990 ]; then
if [ $current_workspace -eq 6 ]; then
exit 1
fi
- hyprctl dispatch movetoworkspace $((window_at_workspace+1))
- hyprctl dispatch focusmonitor 1
- hyprctl dispatch workspace $((current_workspace+2))
- hyprctl dispatch focusmonitor 0
+ hyprctl dispatch movetoworkspace $((window_at_workspace+1)) \
+ && hyprctl dispatch focusmonitor 1 \
+ && hyprctl dispatch workspace $((current_workspace+2)) \
+ && hyprctl dispatch focusmonitor 0
exit 0
fi
# Nếu không thoả điều kiện di chuyển, di chuyển cửa sổ sang phải
hyprctl dispatch movewindow r
+exit 0
diff --git a/.config/hypr/scripts/workspaceV2descrease.sh b/.config/hypr/scripts/workspaceV2descrease.sh
index b41fed9..89e7fe9 100644
--- a/.config/hypr/scripts/workspaceV2descrease.sh
+++ b/.config/hypr/scripts/workspaceV2descrease.sh
@@ -26,13 +26,10 @@ if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -g
fi
-hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển
-# Switch focus and workspace for both monitors
-hyprctl dispatch focusmonitor 0
-hyprctl dispatch workspace $primary_monitor_workspace
-
-hyprctl dispatch focusmonitor 1
-hyprctl dispatch workspace $secondary_monitor_workspace
-
-# Optionally focus back to the original monitor if desired (adjust this part if needed)
-hyprctl dispatch focusmonitor $current_monitor
+hyprctl dispatch fullscreenstate 0 \
+&&hyprctl dispatch focusmonitor 1 \
+&&hyprctl dispatch workspace $primary_monitor_workspace \
+&&hyprctl dispatch focusmonitor 0 \
+&&hyprctl dispatch workspace $secondary_monitor_workspace \
+&&hyprctl dispatch focusmonitor $current_monitor \
+exit 0
diff --git a/.config/hypr/scripts/workspaceV2inscrease.sh b/.config/hypr/scripts/workspaceV2inscrease.sh
index 78308d4..f4b42a4 100644
--- a/.config/hypr/scripts/workspaceV2inscrease.sh
+++ b/.config/hypr/scripts/workspaceV2inscrease.sh
@@ -25,14 +25,12 @@ if [ "$primary_monitor_workspace" -le 0 ] || [ "$secondary_monitor_workspace" -g
exit 1
fi
+hyprctl dispatch fullscreenstate 0 \
+&&hyprctl dispatch focusmonitor 0 \
+&&hyprctl dispatch workspace $primary_monitor_workspace \
+&&hyprctl dispatch focusmonitor 1 \
+&&hyprctl dispatch workspace $secondary_monitor_workspace \
+&&hyprctl dispatch focusmonitor $current_monitor
+exit 0
-hyprctl dispatch fullscreenstate 0 # minimize trước khi di chuyển
-# Switch focus and workspace for both monitors
-hyprctl dispatch focusmonitor 0
-hyprctl dispatch workspace $primary_monitor_workspace
-hyprctl dispatch focusmonitor 1
-hyprctl dispatch workspace $secondary_monitor_workspace
-
-# Optionally focus back to the original monitor if desired (adjust this part if needed)
-hyprctl dispatch focusmonitor $current_monitor
diff --git a/.config/hypr/windowrules.conf b/.config/hypr/windowrules.conf
index 71af27c..72f3a50 100644
--- a/.config/hypr/windowrules.conf
+++ b/.config/hypr/windowrules.conf
@@ -53,9 +53,15 @@
windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$
windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$
+
windowrulev2 = float,title:^(About Mozilla Firefox)$
+
+windowrulev2 = float,class:^(brave)$,title:^(Picture-in-Picture)$
+windowrulev2 = float,class:^(brave)$,title:^(Library)$
+
windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = float,class:^(firefox)$,title:^(Library)$
+
windowrulev2 = float,class:^(kitty)$,title:^(top)$
windowrulev2 = float,class:^(kitty)$,title:^(btop)$
windowrulev2 = float,class:^(kitty)$,title:^(htop)$
diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf
index 81e1ba7..a7b9163 100644
--- a/.config/kitty/kitty.conf
+++ b/.config/kitty/kitty.conf
@@ -36,7 +36,7 @@ map cmd+v paste_from_clipboard
map ctrl+shift+s paste_from_selection
-background #000000
+background #24273a
foreground #ffffff
cursor #bbbbbb
selection_background #b5d5ff
diff --git a/.config/kitty/theme.conf b/.config/kitty/theme.conf
new file mode 100644
index 0000000..52be9aa
--- /dev/null
+++ b/.config/kitty/theme.conf
@@ -0,0 +1,55 @@
+
+# gruvbox-dark colorscheme for kitty
+# snazzy theme used as base
+
+cursor #928374
+cursor_text_color background
+
+visual_bell_color #8ec07c
+bell_border_color #8ec07c
+
+active_border_color #d3869b
+inactive_border_color #665c54
+
+active_tab_foreground #fbf1c7
+active_tab_background #665c54
+inactive_tab_foreground #a89984
+inactive_tab_background #3c3836
+
+foreground #ebdbb2
+background #272727
+selection_foreground #655b53
+selection_background #ebdbb2
+url_color #d65c0d
+
+# black
+color0 #272727
+color8 #928373
+
+# red
+color1 #cc231c
+color9 #fb4833
+
+# green
+color2 #989719
+color10 #b8ba25
+
+# yellow
+color3 #d79920
+color11 #fabc2e
+
+# blue
+color4 #448488
+color12 #83a597
+
+# magenta
+color5 #b16185
+color13 #d3859a
+
+# cyan
+color6 #689d69
+color14 #8ec07b
+
+# white
+color7 #a89983
+color15 #ebdbb2
diff --git a/.config/waybar/primary_screen/config.ctl b/.config/waybar/primary_screen/config.ctl
new file mode 100644
index 0000000..d59e0f3
--- /dev/null
+++ b/.config/waybar/primary_screen/config.ctl
@@ -0,0 +1,25 @@
+0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|top|( cpu memory custom/cpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0||bottom|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0||top|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|31|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/notifications custom/keybindhint )
+0|31|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+1|31|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+0|31|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+0|32|bottom||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|left||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|top||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|right||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|31|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|31|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|bottom|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|left|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|top|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|right|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|40|top|( hyprland/workspaces )|( custom/cava idle_inhibitor clock )|( backlight pulseaudio pulseaudio#microphone tray battery custom/keybindhint custom/cliphist custom/power )
diff --git a/.config/waybar/primary_screen/config.jsonc b/.config/waybar/primary_screen/config.jsonc
new file mode 100644
index 0000000..9804e51
--- /dev/null
+++ b/.config/waybar/primary_screen/config.jsonc
@@ -0,0 +1,322 @@
+// --// waybar config generated by wbarconfgen.sh //-- //
+{
+ // sourced from header module //
+ "output": "DP-1",
+ "layer": "top",
+ "position": "top",
+ "mod": "dock",
+ "height": 31,
+ "exclusive": true,
+ "passthrough": false,
+ "gtk-layer-shell": true,
+ "reload_style_on_change": true,
+ // positions generated based on config.ctl //
+ "modules-left": [
+ "custom/padd",
+
+ "custom/l_end",
+ "custom/power",
+ "custom/cliphist",
+ "custom/r_end",
+
+ "custom/l_end",
+ "privacy",
+ "tray",
+ "custom/r_end",
+
+ "custom/padd",
+ ],
+ "modules-center": [
+ "custom/padd",
+
+ "custom/l_end",
+ "network",
+ "custom/r_end",
+
+ "custom/l_end",
+ "memory",
+ "cpu",
+ "custom/r_end",
+
+ "custom/l_end",
+ "idle_inhibitor",
+ "clock",
+ "custom/r_end",
+
+ "custom/padd",
+ ],
+ "modules-right": [
+ "custom/padd",
+
+ "custom/l_end",
+ "backlight",
+ "pulseaudio",
+ "custom/r_end",
+
+ "custom/l_end",
+ "wlr/taskbar",
+ "custom/r_end",
+
+ "custom/padd",
+ ],
+ // sourced from modules based on config.ctl //
+ "hyprland/workspaces": {
+ "disable-scroll": true,
+ "rotate": 0,
+ "all-outputs": true,
+ "active-only": false,
+ "persistent-workspaces": {},
+ },
+ "custom/cava": {
+ "format": "{}",
+ "exec": "waybar_cava.sh",
+ "restart-interval": 1,
+ "hide-empty": true,
+ },
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "rotate": 0,
+ "format-paused": "{status_icon} {dynamic}",
+ "player-icons": {
+ "default": "▶",
+ "mpv": "🎵",
+ },
+ "status-icons": {
+ "paused": "",
+ },
+ // "ignored-players": ["firefox"]
+ "max-length": 1000,
+ "interval": 1,
+ },
+ "cpu": {
+ "interval": 10,
+ "format": " {usage}%",
+ "rotate": 0,
+ "format-alt": "{icon0}{icon1}{icon2}{icon3}",
+ "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
+ },
+ "memory": {
+ "states": {
+ "c": 90, // critical
+ "h": 60, // high
+ "m": 30, // medium
+ },
+ "interval": 30,
+ "format": " {used}gb",
+ "rotate": 0,
+ "format-m": " {used}gb",
+ "format-h": " {used}gb",
+ "format-c": " {used}gb",
+ "format-alt": " {percentage}%",
+ "max-length": 10,
+ "tooltip": true,
+ "tooltip-format": " {percentage}%\n {used:0.1f}gb/{total:0.1f}gb",
+ },
+ "custom/power": {
+ "format": " {}",
+ "rotate": 0,
+ "exec": "echo ; echo logout",
+ "on-click": "logoutlaunch.sh 2",
+ "on-click-right": "logoutlaunch.sh 1",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ },
+ "custom/cliphist": {
+ "format": " {}",
+ "rotate": 0,
+ "exec": "echo ; echo clipboard history",
+ "on-click": "sleep 0.1 && cliphist.sh c",
+ "on-click-right": "sleep 0.1 && cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && cliphist.sh w",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ },
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "rotate": 0,
+ "icon-size": 25,
+ "icon-theme": "Gruvbox-Plus-Dark",
+ "spacing": 0,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition",
+ "jetbrains-datagrip": "DataGrip",
+ },
+ },
+ "custom/spotify": {
+ "exec": "mediaplayer.py --player spotify",
+ "format": " {}",
+ "rotate": 0,
+ "return-type": "json",
+ "on-click": "playerctl play-pause --player spotify",
+ "on-click-right": "playerctl next --player spotify",
+ "on-click-middle": "playerctl previous --player spotify",
+ "on-scroll-up": "volumecontrol.sh -p spotify i",
+ "on-scroll-down": "volumecontrol.sh -p spotify d",
+ "max-length": 25,
+ "escape": true,
+ "tooltip": true,
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "rotate": 0,
+ "format-icons": {
+ "activated": " ",
+ "deactivated": " ",
+ },
+ },
+ "clock": {
+ "format": "{:%I:%M %p | %d·%m·%y}",
+ "rotate": 0,
+ "format-alt": "{:%R %d·%m·%y}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "weekdays": "{}",
+ "today": "{}",
+ },
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-click-forward": "tz_up",
+ "on-click-backward": "tz_down",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down",
+ },
+ },
+ "privacy": {
+ "icon-size": 14,
+ "icon-spacing": 5,
+ "transition-duration": 250,
+ "modules": [
+ {
+ "type": "screenshare",
+ "tooltip": true,
+ "tooltip-icon-size": 24,
+ },
+ {
+ "type": "audio-in",
+ "tooltip": true,
+ "tooltip-icon-size": 24,
+ },
+ ],
+ },
+ "tray": {
+ "icon-size": 25,
+ "rotate": 0,
+ "spacing": 5,
+ },
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 30,
+ "critical": 20,
+ },
+ "format": "{icon} {capacity}%",
+ "rotate": 0,
+ "format-charging": " {capacity}%",
+ "format-plugged": " {capacity}%",
+ "format-alt": "{time} {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
+ },
+ "backlight": {
+ "device": "intel_backlight",
+ "rotate": 0,
+ "format": "{icon} {percent}%",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "on-scroll-up": "brightnessctl set 1%+",
+ "on-scroll-down": "brightnessctl set 1%-",
+ "min-length": 6,
+ },
+ "network": {
+ "tooltip": true,
+ "format-wifi": " ",
+ "rotate": 0,
+ "format-ethernet": " {bandwidthDownBytes} {bandwidthUpBytes} ",
+ "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}",
+ "format-linked": " {ifname} (No IP)",
+ "format-disconnected": " ",
+ "tooltip-format-disconnected": "Disconnected",
+ // "format-alt": " {bandwidthDownBytes} {bandwidthUpBytes}",
+ "interval": 2,
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}",
+ "rotate": 0,
+ "format-muted": "婢",
+ // "on-click": "pavucontrol -t 3",
+ "on-click": "volumecontrol.sh -s ''",
+ "on-click-right": "volumecontrol.sh -s ''",
+ // "on-click-middle": "volumecontrol.sh -o m",
+ "on-click-middle": "pavucontrol -t 3",
+ "on-scroll-up": "volumecontrol.sh -o i",
+ "on-scroll-down": "volumecontrol.sh -o d",
+ "tooltip-format": "{icon} {desc} // {volume}%",
+ "scroll-step": 5,
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": [" ", " ", " "],
+ },
+ },
+ "pulseaudio#microphone": {
+ "format": "{format_source}",
+ "rotate": 0,
+ "format-source": "",
+ "format-source-muted": "",
+ "on-click": "pavucontrol -t 4",
+ "on-click-middle": "volumecontrol.sh -i m",
+ "on-scroll-up": "volumecontrol.sh -i i",
+ "on-scroll-down": "volumecontrol.sh -i d",
+ "tooltip-format": "{format_source} {source_desc} // {source_volume}%",
+ "scroll-step": 5,
+ },
+ // modules for padding //
+ "custom/l_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/r_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/sl_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/sr_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/rl_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/rr_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/padd": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+}
diff --git a/.config/waybar/primary_screen/modules/backlight.jsonc b/.config/waybar/primary_screen/modules/backlight.jsonc
new file mode 100644
index 0000000..b289e68
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/backlight.jsonc
@@ -0,0 +1,10 @@
+ "backlight": {
+ "device": "intel_backlight",
+ "rotate": ${r_deg},
+ "format": "{icon} {percent}%",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "on-scroll-up": "brightnessctl set 1%+",
+ "on-scroll-down": "brightnessctl set 1%-",
+ "min-length": 6
+ },
+
diff --git a/.config/waybar/primary_screen/modules/battery.jsonc b/.config/waybar/primary_screen/modules/battery.jsonc
new file mode 100644
index 0000000..51d6482
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/battery.jsonc
@@ -0,0 +1,14 @@
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 30,
+ "critical": 20
+ },
+ "format": "{icon} {capacity}%",
+ "rotate": ${r_deg},
+ "format-charging": " {capacity}%",
+ "format-plugged": " {capacity}%",
+ "format-alt": "{time} {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
+ },
+
diff --git a/.config/waybar/primary_screen/modules/bluetooth.jsonc b/.config/waybar/primary_screen/modules/bluetooth.jsonc
new file mode 100644
index 0000000..919bbd8
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/bluetooth.jsonc
@@ -0,0 +1,15 @@
+ "bluetooth": {
+ "format": "",
+ "rotate": ${r_deg},
+ "format-disabled": "",
+ "format-connected": " {num_connections}",
+ "format-connected-battery": "{icon} {num_connections}",
+ // "format-connected-battery": "{icon} {device_alias}-{device_battery_percentage}%",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
+ // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device If this config option is not defined or none of the devices in the list are connected, it will fall back to showing the last connected device.
+ "tooltip-format": "{controller_alias}\n{num_connections} connected",
+ "tooltip-format-connected": "{controller_alias}\n{num_connections} connected\n\n{device_enumerate}",
+ "tooltip-format-enumerate-connected": "{device_alias}",
+ "tooltip-format-enumerate-connected-battery": "{device_alias}\t{icon} {device_battery_percentage}%"
+ },
+
diff --git a/.config/waybar/primary_screen/modules/cava.jsonc b/.config/waybar/primary_screen/modules/cava.jsonc
new file mode 100644
index 0000000..d5d2277
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/cava.jsonc
@@ -0,0 +1,6 @@
+"custom/cava": {
+ "format": "{}",
+ "exec": "waybar_cava.sh",
+ "restart-interval": 1,
+ "hide-empty": true
+},
\ No newline at end of file
diff --git a/.config/waybar/primary_screen/modules/cliphist.jsonc b/.config/waybar/primary_screen/modules/cliphist.jsonc
new file mode 100644
index 0000000..02024fa
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/cliphist.jsonc
@@ -0,0 +1,11 @@
+ "custom/cliphist": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo clipboard history",
+ "on-click": "sleep 0.1 && cliphist.sh c",
+ "on-click-right": "sleep 0.1 && cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && cliphist.sh w",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/clock.jsonc b/.config/waybar/primary_screen/modules/clock.jsonc
new file mode 100644
index 0000000..17f9a15
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/clock.jsonc
@@ -0,0 +1,25 @@
+ "clock": {
+ "format": "{:%I:%M %p}",
+ "rotate": ${r_deg},
+ "format-alt": "{:%R %d·%m·%y}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-click-forward": "tz_up",
+ "on-click-backward": "tz_down",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ }
+ },
+
diff --git a/.config/waybar/primary_screen/modules/cpu.jsonc b/.config/waybar/primary_screen/modules/cpu.jsonc
new file mode 100644
index 0000000..cc89cb0
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/cpu.jsonc
@@ -0,0 +1,8 @@
+ "cpu": {
+ "interval": 10,
+ "format": " {usage}%",
+ "rotate": ${r_deg},
+ "format-alt": "{icon0}{icon1}{icon2}{icon3}",
+ "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"]
+ },
+
diff --git a/.config/waybar/primary_screen/modules/cpuinfo.jsonc b/.config/waybar/primary_screen/modules/cpuinfo.jsonc
new file mode 100644
index 0000000..fb6bb76
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/cpuinfo.jsonc
@@ -0,0 +1,10 @@
+ "custom/cpuinfo": {
+ "exec": " cpuinfo.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000
+ },
+
diff --git a/.config/waybar/primary_screen/modules/footer.jsonc b/.config/waybar/primary_screen/modules/footer.jsonc
new file mode 100644
index 0000000..1387f74
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/footer.jsonc
@@ -0,0 +1,47 @@
+
+// modules for padding //
+
+ "custom/l_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/r_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/sl_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/sr_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/rl_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/rr_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/padd": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ }
+
+}
+
diff --git a/.config/waybar/primary_screen/modules/gpuinfo.jsonc b/.config/waybar/primary_screen/modules/gpuinfo.jsonc
new file mode 100644
index 0000000..f9f5d61
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/gpuinfo.jsonc
@@ -0,0 +1,41 @@
+ "custom/gpuinfo": {
+ "exec": " gpuinfo.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ "on-click": "gpuinfo.sh --toggle",
+ },
+
+ "custom/gpuinfo#nvidia": {
+ "exec": " gpuinfo.sh --use nvidia ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
+ "custom/gpuinfo#amd": {
+ "exec": " gpuinfo.sh --use amd ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
+ "custom/gpuinfo#intel": {
+ "exec": " gpuinfo.sh --use intel ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
diff --git a/.config/waybar/primary_screen/modules/header.jsonc b/.config/waybar/primary_screen/modules/header.jsonc
new file mode 100644
index 0000000..688d476
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/header.jsonc
@@ -0,0 +1,13 @@
+// --// waybar config generated by wbarconfgen.sh //-- //
+
+{
+// sourced from header module //
+
+ "layer": "top",
+ "position": "${w_position}",
+ "mod": "dock",
+ "${hv_pos}": ${w_height},
+ "exclusive": true,
+ "passthrough": false,
+ "gtk-layer-shell": true,
+ "reload_style_on_change": true,
diff --git a/.config/waybar/primary_screen/modules/idle_inhibitor.jsonc b/.config/waybar/primary_screen/modules/idle_inhibitor.jsonc
new file mode 100644
index 0000000..d109a95
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/idle_inhibitor.jsonc
@@ -0,0 +1,9 @@
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "rotate": ${r_deg},
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+
diff --git a/.config/waybar/primary_screen/modules/keybindhint.jsonc b/.config/waybar/primary_screen/modules/keybindhint.jsonc
new file mode 100644
index 0000000..e9edd21
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/keybindhint.jsonc
@@ -0,0 +1,6 @@
+ "custom/keybindhint": {
+ "format": " ",
+ "rotate": ${r_deg},
+ "on-click": "keybinds_hint.sh"
+ },
+
diff --git a/.config/waybar/primary_screen/modules/language.jsonc b/.config/waybar/primary_screen/modules/language.jsonc
new file mode 100644
index 0000000..6045d28
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/language.jsonc
@@ -0,0 +1,6 @@
+ "hyprland/language": {
+ "format": "{short} {variant}",
+ "rotate": ${r_deg},
+ "on-click": "keyboardswitch.sh",
+ },
+
diff --git a/.config/waybar/primary_screen/modules/memory.jsonc b/.config/waybar/primary_screen/modules/memory.jsonc
new file mode 100644
index 0000000..5908996
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/memory.jsonc
@@ -0,0 +1,18 @@
+ "memory": {
+ "states": {
+ "c": 90, // critical
+ "h": 60, // high
+ "m": 30, // medium
+ },
+ "interval": 30,
+ "format": " {used}gb",
+ "rotate": ${r_deg},
+ "format-m": " {used}gb",
+ "format-h": " {used}gb",
+ "format-c": " {used}gb",
+ "format-alt": " {percentage}%",
+ "max-length": 10,
+ "tooltip": true,
+ "tooltip-format": " {percentage}%\n {used:0.1f}gb/{total:0.1f}gb"
+ },
+
diff --git a/.config/waybar/primary_screen/modules/mpris.jsonc b/.config/waybar/primary_screen/modules/mpris.jsonc
new file mode 100644
index 0000000..04ff2cd
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/mpris.jsonc
@@ -0,0 +1,16 @@
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "rotate": ${r_deg},
+ "format-paused": "{status_icon} {dynamic}",
+ "player-icons": {
+ "default": "▶",
+ "mpv": "🎵"
+ },
+ "status-icons": {
+ "paused": ""
+ },
+ // "ignored-players": ["firefox"]
+ "max-length": 1000,
+ "interval": 1
+ },
+
diff --git a/.config/waybar/primary_screen/modules/network.jsonc b/.config/waybar/primary_screen/modules/network.jsonc
new file mode 100644
index 0000000..1c5231d
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/network.jsonc
@@ -0,0 +1,13 @@
+ "network": {
+ "tooltip": true,
+ "format-wifi": " ",
+ "rotate": ${r_deg},
+ "format-ethernet": " ",
+ "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}",
+ "format-linked": " {ifname} (No IP)",
+ "format-disconnected": " ",
+ "tooltip-format-disconnected": "Disconnected",
+ "format-alt": " {bandwidthDownBytes} {bandwidthUpBytes}",
+ "interval": 2,
+ },
+
diff --git a/.config/waybar/primary_screen/modules/notifications.jsonc b/.config/waybar/primary_screen/modules/notifications.jsonc
new file mode 100644
index 0000000..125e87a
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/notifications.jsonc
@@ -0,0 +1,29 @@
+ "custom/notifications": {
+ "format": "{icon} {}",
+ "rotate": ${r_deg},
+ "format-icons": {
+ "email-notification": "",
+ "chat-notification": "",
+ "warning-notification": "",
+ "error-notification": "",
+ "network-notification": "",
+ "battery-notification": "",
+ "update-notification": "",
+ "music-notification": "",
+ "volume-notification": "",
+ "notification": "",
+ "dnd": "",
+ "none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which dunstctl",
+ "exec": "notifications.py",
+ "on-scroll-down": "sleep 0.1 && dunstctl history-pop",
+ "on-click": "dunstctl set-paused toggle",
+ "on-click-middle": "dunstctl history-clear",
+ "on-click-right": "dunstctl close-all",
+ "interval": 1,
+ "tooltip": true,
+ "escape": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/power.jsonc b/.config/waybar/primary_screen/modules/power.jsonc
new file mode 100644
index 0000000..a41eaf6
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/power.jsonc
@@ -0,0 +1,10 @@
+ "custom/power": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo logout",
+ "on-click": "logoutlaunch.sh 2",
+ "on-click-right": "logoutlaunch.sh 1",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/privacy.jsonc b/.config/waybar/primary_screen/modules/privacy.jsonc
new file mode 100644
index 0000000..8556586
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/privacy.jsonc
@@ -0,0 +1,18 @@
+ "privacy": {
+ "icon-size": ${i_priv},
+ "icon-spacing": 5,
+ "transition-duration": 250,
+ "modules": [
+ {
+ "type": "screenshare",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ },
+ {
+ "type": "audio-in",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ }
+ ]
+ },
+
diff --git a/.config/waybar/primary_screen/modules/pulseaudio.jsonc b/.config/waybar/primary_screen/modules/pulseaudio.jsonc
new file mode 100644
index 0000000..c5770a7
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/pulseaudio.jsonc
@@ -0,0 +1,35 @@
+"pulseaudio": {
+ "format": "{icon} {volume}",
+ "rotate": ${r_deg},
+ "format-muted": "婢",
+ "on-click": "pavucontrol -t 3",
+ "on-click-right": "volumecontrol.sh -s ''",
+ "on-click-middle": "volumecontrol.sh -o m",
+ "on-scroll-up": "volumecontrol.sh -o i",
+ "on-scroll-down": "volumecontrol.sh -o d",
+ "tooltip-format": "{icon} {desc} // {volume}%",
+ "scroll-step": 5,
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ }
+},
+
+"pulseaudio#microphone": {
+ "format": "{format_source}",
+ "rotate": ${r_deg},
+ "format-source": "",
+ "format-source-muted": "",
+ "on-click": "pavucontrol -t 4",
+ "on-click-middle": "volumecontrol.sh -i m",
+ "on-scroll-up": "volumecontrol.sh -i i",
+ "on-scroll-down": "volumecontrol.sh -i d",
+ "tooltip-format": "{format_source} {source_desc} // {source_volume}%",
+ "scroll-step": 5
+},
+
diff --git a/.config/waybar/primary_screen/modules/spotify.jsonc b/.config/waybar/primary_screen/modules/spotify.jsonc
new file mode 100644
index 0000000..13bd6bc
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/spotify.jsonc
@@ -0,0 +1,15 @@
+ "custom/spotify": {
+ "exec": "mediaplayer.py --player spotify",
+ "format": " {}",
+ "rotate": ${r_deg},
+ "return-type": "json",
+ "on-click": "playerctl play-pause --player spotify",
+ "on-click-right": "playerctl next --player spotify",
+ "on-click-middle": "playerctl previous --player spotify",
+ "on-scroll-up": "volumecontrol.sh -p spotify i",
+ "on-scroll-down": "volumecontrol.sh -p spotify d",
+ "max-length": 25,
+ "escape": true,
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/style.css b/.config/waybar/primary_screen/modules/style.css
new file mode 100644
index 0000000..93da5c3
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/style.css
@@ -0,0 +1,151 @@
+* {
+ border: none;
+ border-radius: 0px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ font-size: ${s_fontpx}px;
+ min-height: 10px;
+}
+
+@import "theme.css";
+
+window#waybar {
+ background: @bar-bg;
+}
+
+tooltip {
+ background: @main-bg;
+ color: @main-fg;
+ border-radius: ${t_radius}px;
+ border-width: 0px;
+}
+
+#workspaces button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: ${w_radius}px;
+ margin-${x1}: ${w_margin}px;
+ margin-${x2}: ${w_margin}px;
+ margin-${x3}: 0px;
+ padding-${x3}: ${w_paddin}px;
+ padding-${x4}: ${w_paddin}px;
+ margin-${x4}: 0px;
+ color: @main-fg;
+ animation: ws_normal 20s ease-in-out 1;
+}
+
+#workspaces button.active {
+ background: @wb-act-bg;
+ color: @wb-act-fg;
+ margin-${x3}: ${w_margin}px;
+ padding-${x3}: ${w_padact}px;
+ padding-${x4}: ${w_padact}px;
+ margin-${x4}: ${w_margin}px;
+ animation: ws_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#workspaces button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-fg;
+ animation: ws_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: ${w_radius}px;
+ margin-${x1}: ${w_margin}px;
+ margin-${x2}: ${w_margin}px;
+ margin-${x3}: 0px;
+ padding-${x3}: ${w_paddin}px;
+ padding-${x4}: ${w_paddin}px;
+ margin-${x4}: 0px;
+ color: @wb-color;
+ animation: tb_normal 20s ease-in-out 1;
+}
+
+#taskbar button.active {
+ background: @wb-act-bg;
+ color: @wb-act-color;
+ margin-${x3}: ${w_margin}px;
+ padding-${x3}: ${w_padact}px;
+ padding-${x4}: ${w_padact}px;
+ margin-${x4}: ${w_margin}px;
+ animation: tb_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-color;
+ animation: tb_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#tray menu * {
+ min-height: 16px
+}
+
+#tray menu separator {
+ min-height: 10px
+}
+
+${modules_ls}
+#custom-l_end,
+#custom-r_end,
+#custom-sl_end,
+#custom-sr_end,
+#custom-rl_end,
+#custom-rr_end {
+ color: @main-fg;
+ background: @main-bg;
+ opacity: 1;
+ margin: ${x1g_margin}px ${x2g_margin}px ${x3g_margin}px ${x4g_margin}px;
+ padding-${x3}: ${g_paddin}px;
+ padding-${x4}: ${g_paddin}px;
+}
+
+#workspaces,
+#taskbar {
+ padding: 0px;
+}
+
+#custom-r_end {
+ border-radius: ${x1rb_radius}px ${x2rb_radius}px ${x3rb_radius}px ${x4rb_radius}px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-l_end {
+ border-radius: ${x1lb_radius}px ${x2lb_radius}px ${x3lb_radius}px ${x4lb_radius}px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
+
+#custom-sr_end {
+ border-radius: 0px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-sl_end {
+ border-radius: 0px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
+
+#custom-rr_end {
+ border-radius: ${x1rc_radius}px ${x2rc_radius}px ${x3rc_radius}px ${x4rc_radius}px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-rl_end {
+ border-radius: ${x1lc_radius}px ${x2lc_radius}px ${x3lc_radius}px ${x4lc_radius}px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
diff --git a/.config/waybar/primary_screen/modules/taskbar.jsonc b/.config/waybar/primary_screen/modules/taskbar.jsonc
new file mode 100644
index 0000000..630d574
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/taskbar.jsonc
@@ -0,0 +1,18 @@
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "rotate": ${r_deg},
+ "icon-size": ${i_task},
+ "icon-theme": "${i_theme}",
+ "spacing": 0,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition",
+ "jetbrains-datagrip": "DataGrip"
+ }
+ },
+
diff --git a/.config/waybar/primary_screen/modules/theme.jsonc b/.config/waybar/primary_screen/modules/theme.jsonc
new file mode 100644
index 0000000..6482c6e
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/theme.jsonc
@@ -0,0 +1,11 @@
+ "custom/theme": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch theme",
+ "on-click": "themeswitch.sh -n",
+ "on-click-right": "themeswitch.sh -p",
+ "on-click-middle": "sleep 0.1 && themeselect.sh",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/tray.jsonc b/.config/waybar/primary_screen/modules/tray.jsonc
new file mode 100644
index 0000000..d7c0bce
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/tray.jsonc
@@ -0,0 +1,6 @@
+ "tray": {
+ "icon-size": ${i_size},
+ "rotate": ${r_deg},
+ "spacing": 5
+ },
+
diff --git a/.config/waybar/primary_screen/modules/updates.jsonc b/.config/waybar/primary_screen/modules/updates.jsonc
new file mode 100644
index 0000000..996f732
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/updates.jsonc
@@ -0,0 +1,10 @@
+ "custom/updates": {
+ "exec": "systemupdate.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "on-click": "hyprctl dispatch exec 'systemupdate.sh up'",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ "signal": 20,
+ },
diff --git a/.config/waybar/primary_screen/modules/wallchange.jsonc b/.config/waybar/primary_screen/modules/wallchange.jsonc
new file mode 100644
index 0000000..0c839ca
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/wallchange.jsonc
@@ -0,0 +1,11 @@
+ "custom/wallchange": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch wallpaper",
+ "on-click": "swwwallpaper.sh -n",
+ "on-click-right": "swwwallpaper.sh -p",
+ "on-click-middle": "sleep 0.1 && swwwallselect.sh",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/wbar.jsonc b/.config/waybar/primary_screen/modules/wbar.jsonc
new file mode 100644
index 0000000..7738657
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/wbar.jsonc
@@ -0,0 +1,11 @@
+ "custom/wbar": {
+ "format": "{}", // //
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch bar // dock",
+ "on-click": "wbarconfgen.sh n",
+ "on-click-right": "wbarconfgen.sh p",
+ "on-click-middle": "sleep 0.1 && quickapps.sh kitty firefox spotify code dolphin",
+ "interval" : 86400,
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/primary_screen/modules/window.jsonc b/.config/waybar/primary_screen/modules/window.jsonc
new file mode 100644
index 0000000..3c56b28
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/window.jsonc
@@ -0,0 +1,17 @@
+ "hyprland/window": {
+ "format": " {}",
+ "rotate": ${r_deg},
+ "separate-outputs": true,
+ "rewrite": {
+ "${USER}@${set_sysname}:(.*)": "$1 ",
+ "(.*) — Mozilla Firefox": "$1 ",
+ "(.*)Mozilla Firefox": "Firefox ",
+ "(.*) - Visual Studio Code": "$1 ",
+ "(.*)Visual Studio Code": "Code ",
+ "(.*) — Dolphin": "$1 ",
+ "(.*)Spotify": "Spotify ",
+ "(.*)Steam": "Steam "
+ },
+ "max-length": 50
+ },
+
diff --git a/.config/waybar/primary_screen/modules/workspaces.jsonc b/.config/waybar/primary_screen/modules/workspaces.jsonc
new file mode 100644
index 0000000..c1e580a
--- /dev/null
+++ b/.config/waybar/primary_screen/modules/workspaces.jsonc
@@ -0,0 +1,13 @@
+ "hyprland/workspaces": {
+ "disable-scroll": true,
+ "rotate": ${r_deg},
+ "all-outputs": true,
+ "active-only": false,
+ "on-click": "activate",
+ "disable-scroll": false,
+ "on-scroll-up": "hyprctl dispatch workspace -1",
+ "on-scroll-down": "hyprctl dispatch workspace +1",
+ "persistent-workspaces": {
+ }
+ },
+
diff --git a/.config/waybar/primary_screen/style.css b/.config/waybar/primary_screen/style.css
new file mode 100644
index 0000000..bc9cca6
--- /dev/null
+++ b/.config/waybar/primary_screen/style.css
@@ -0,0 +1,178 @@
+* {
+ border: none;
+ border-radius: 0px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ font-size: 20px;
+ min-height: 10px;
+}
+
+@import "theme.css";
+
+window#waybar {
+ background: @bar-bg;
+}
+
+tooltip {
+ background: @main-bg;
+ color: @main-fg;
+ border-radius: 7px;
+ border-width: 0px;
+}
+
+#workspaces button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 0px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-right: 0px;
+ color: @main-fg;
+ animation: ws_normal 20s ease-in-out 1;
+}
+
+#workspaces button.active {
+ background: @wb-act-bg;
+ color: @wb-act-fg;
+ margin-left: 3px;
+ padding-left: 12px;
+ padding-right: 12px;
+ margin-right: 3px;
+ animation: ws_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#workspaces button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-fg;
+ animation: ws_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 0px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-right: 0px;
+ color: @wb-color;
+ animation: tb_normal 20s ease-in-out 1;
+}
+
+#taskbar button.active {
+ background: @wb-act-bg;
+ color: @wb-act-color;
+ margin-left: 3px;
+ padding-left: 12px;
+ padding-right: 12px;
+ margin-right: 3px;
+ animation: tb_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-color;
+ animation: tb_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#tray menu * {
+ min-height: 16px
+}
+
+#tray menu separator {
+ min-height: 10px
+}
+
+#backlight,
+#battery,
+#bluetooth,
+#custom-cava,
+#custom-cliphist,
+#clock,
+#custom-cpuinfo,
+#cpu,
+#custom-gpuinfo,
+#idle_inhibitor,
+#custom-keybindhint,
+#language,
+#memory,
+#mpris,
+#network,
+#custom-notifications,
+#custom-power,
+#privacy,
+#pulseaudio,
+#custom-spotify,
+#taskbar,
+#custom-theme,
+#tray,
+#custom-updates,
+#custom-wallchange,
+#custom-wbar,
+#window,
+#workspaces,
+#custom-l_end,
+#custom-r_end,
+#custom-sl_end,
+#custom-sr_end,
+#custom-rl_end,
+#custom-rr_end {
+ color: @main-fg;
+ background: @main-bg;
+ opacity: 1;
+ margin: 4px 0px 4px 0px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+#workspaces,
+#taskbar {
+ padding: 0px;
+}
+
+#custom-r_end {
+ border-radius: 0px 15px 15px 0px;
+ /* margin-right: 9px; */
+ padding-right: 3px;
+}
+
+#custom-l_end {
+ border-radius: 15px 0px 0px 15px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
+
+#custom-sr_end {
+ border-radius: 0px;
+ margin-right: 9px;
+ padding-right: 3px;
+}
+
+#custom-sl_end {
+ border-radius: 0px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
+
+#custom-rr_end {
+ border-radius: 0px 7px 7px 0px;
+ margin-right: 9px;
+ padding-right: 3px;
+}
+
+#custom-rl_end {
+ border-radius: 7px 0px 0px 7px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
diff --git a/.config/waybar/primary_screen/theme.css b/.config/waybar/primary_screen/theme.css
new file mode 100644
index 0000000..691cf6b
--- /dev/null
+++ b/.config/waybar/primary_screen/theme.css
@@ -0,0 +1,10 @@
+@define-color bar-bg rgba(0, 0, 0, 0);
+
+@define-color main-bg #11111b;
+@define-color main-fg #cdd6f4;
+
+@define-color wb-act-bg #a6adc8;
+@define-color wb-act-fg #313244;
+
+@define-color wb-hvr-bg #f5c2e7;
+@define-color wb-hvr-fg #313244;
diff --git a/.config/waybar/secondary_screen/config.ctl b/.config/waybar/secondary_screen/config.ctl
new file mode 100644
index 0000000..d59e0f3
--- /dev/null
+++ b/.config/waybar/secondary_screen/config.ctl
@@ -0,0 +1,25 @@
+0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock )|( hyprland/workspaces hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|top|( cpu memory custom/cpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( hyprland/window )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0||bottom|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0||top|( hyprland/workspaces hyprland/window )|( idle_inhibitor clock )|( cpu memory custom/cpuinfo custom/gpuinfo ) ( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|31|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/notifications custom/keybindhint )
+0|31|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+1|31|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+0|31|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( wlr/taskbar custom/spotify ) |( idle_inhibitor clock )|( privacy tray battery ) ( backlight network pulseaudio pulseaudio#microphone custom/keybindhint )
+0|32|bottom||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|left||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|top||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|32|right||( custom/power ) ( privacy tray battery ) ( wlr/taskbar idle_inhibitor clock ) ( custom/cliphist ) ( custom/wbar ) ( custom/wallchange ) ( custom/theme )|
+0|31|bottom|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|31|top|( cpu memory custom/cpuinfo custom/gpuinfo ) ( idle_inhibitor clock ) ( hyprland/workspaces )|( wlr/taskbar )|( backlight network pulseaudio pulseaudio#microphone custom/updates custom/keybindhint ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|bottom|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|left|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|top|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|29|right|( wlr/taskbar mpris )|( idle_inhibitor clock )|( backlight network pulseaudio pulseaudio#microphone custom/updates ) ( privacy tray battery ) ( custom/wallchange custom/theme custom/wbar custom/cliphist custom/power )
+0|28|bottom|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|left|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|top|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|28|right|( custom/power custom/cliphist custom/wbar custom/theme custom/wallchange ) ( idle_inhibitor clock custom/spotify )|( wlr/taskbar )|( privacy tray ) ( backlight network pulseaudio pulseaudio#microphone )
+0|40|top|( hyprland/workspaces )|( custom/cava idle_inhibitor clock )|( backlight pulseaudio pulseaudio#microphone tray battery custom/keybindhint custom/cliphist custom/power )
diff --git a/.config/waybar/secondary_screen/config.jsonc b/.config/waybar/secondary_screen/config.jsonc
new file mode 100644
index 0000000..d95c395
--- /dev/null
+++ b/.config/waybar/secondary_screen/config.jsonc
@@ -0,0 +1,307 @@
+// --// waybar config generated by wbarconfgen.sh //-- //
+{
+ // sourced from header module //
+ "output": "HDMI-A-1",
+ "layer": "top",
+ "position": "top",
+ "mod": "dock",
+ "height": 31,
+ "exclusive": true,
+ "passthrough": false,
+ "gtk-layer-shell": true,
+ "reload_style_on_change": true,
+ // positions generated based on config.ctl //
+ "modules-left": [
+ "custom/padd",
+
+ "custom/l_end",
+ "wlr/taskbar",
+ "custom/r_end",
+
+ "custom/l_end",
+ "hyprland/workspaces",
+ "custom/r_end",
+
+ "custom/padd",
+ ],
+ "modules-center": [
+ "custom/padd",
+ "custom/padd",
+ ],
+ "modules-right": [
+ "custom/padd",
+
+ "custom/l_end",
+ "idle_inhibitor",
+ "clock",
+ "custom/spotify",
+ "custom/r_end",
+
+ "custom/l_end",
+ "custom/cava",
+ "mpris",
+ "custom/r_end",
+
+ "custom/padd",
+ ],
+ // sourced from modules based on config.ctl //
+ "hyprland/workspaces": {
+ "disable-scroll": true,
+ "rotate": 0,
+ "all-outputs": true,
+ "active-only": false,
+ "persistent-workspaces": {},
+ },
+ "custom/cava": {
+ "format": "{} ",
+ "exec": "waybar_cava.sh",
+ "restart-interval": 1,
+ "hide-empty": true,
+ },
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "rotate": 0,
+ "format-paused": "{status_icon} {dynamic}",
+ "player-icons": {
+ "default": "",
+ "mpv": "🎵",
+ },
+ "status-icons": {
+ "paused": "▶",
+ },
+ // "ignored-players": ["firefox"]
+ "max-length": 1000,
+ "interval": 1,
+ },
+ "cpu": {
+ "interval": 10,
+ "format": " {usage}%",
+ "rotate": 0,
+ "format-alt": "{icon0}{icon1}{icon2}{icon3}",
+ "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"],
+ },
+ "memory": {
+ "states": {
+ "c": 90, // critical
+ "h": 60, // high
+ "m": 30, // medium
+ },
+ "interval": 30,
+ "format": " {used}gb",
+ "rotate": 0,
+ "format-m": " {used}gb",
+ "format-h": " {used}gb",
+ "format-c": " {used}gb",
+ "format-alt": " {percentage}%",
+ "max-length": 10,
+ "tooltip": true,
+ "tooltip-format": " {percentage}%\n {used:0.1f}gb/{total:0.1f}gb",
+ },
+ "custom/power": {
+ "format": " {}",
+ "rotate": 0,
+ "exec": "echo ; echo logout",
+ "on-click": "logoutlaunch.sh 2",
+ "on-click-right": "logoutlaunch.sh 1",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ },
+ "custom/cliphist": {
+ "format": " {}",
+ "rotate": 0,
+ "exec": "echo ; echo clipboard history",
+ "on-click": "sleep 0.1 && cliphist.sh c",
+ "on-click-right": "sleep 0.1 && cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && cliphist.sh w",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ },
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "rotate": 0,
+ "icon-size": 25,
+ "icon-theme": "Gruvbox-Plus-Dark",
+ "spacing": 0,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": ["Alacritty"],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition",
+ "jetbrains-datagrip": "DataGrip",
+ },
+ },
+ "custom/spotify": {
+ "exec": "mediaplayer.py --player spotify",
+ "format": " {}",
+ "rotate": 0,
+ "return-type": "json",
+ "on-click": "playerctl play-pause --player spotify",
+ "on-click-right": "playerctl next --player spotify",
+ "on-click-middle": "playerctl previous --player spotify",
+ "on-scroll-up": "volumecontrol.sh -p spotify i",
+ "on-scroll-down": "volumecontrol.sh -p spotify d",
+ "max-length": 25,
+ "escape": true,
+ "tooltip": true,
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "rotate": 0,
+ "format-icons": {
+ "activated": " ",
+ "deactivated": " ",
+ },
+ },
+ "clock": {
+ "format": "{:%I:%M %p}",
+ "rotate": 0,
+ "format-alt": "{:%R %d·%m·%y}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "weekdays": "{}",
+ "today": "{}",
+ },
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-click-forward": "tz_up",
+ "on-click-backward": "tz_down",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down",
+ },
+ },
+ "privacy": {
+ "icon-size": 14,
+ "icon-spacing": 5,
+ "transition-duration": 250,
+ "modules": [
+ {
+ "type": "screenshare",
+ "tooltip": true,
+ "tooltip-icon-size": 24,
+ },
+ {
+ "type": "audio-in",
+ "tooltip": true,
+ "tooltip-icon-size": 24,
+ },
+ ],
+ },
+ "tray": {
+ "icon-size": 25,
+ "rotate": 0,
+ "spacing": 5,
+ },
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 30,
+ "critical": 20,
+ },
+ "format": "{icon} {capacity}%",
+ "rotate": 0,
+ "format-charging": " {capacity}%",
+ "format-plugged": " {capacity}%",
+ "format-alt": "{time} {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
+ },
+ "backlight": {
+ "device": "intel_backlight",
+ "rotate": 0,
+ "format": "{icon} {percent}%",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "on-scroll-up": "brightnessctl set 1%+",
+ "on-scroll-down": "brightnessctl set 1%-",
+ "min-length": 6,
+ },
+ "network": {
+ "tooltip": true,
+ "format-wifi": " ",
+ "rotate": 0,
+ "format-ethernet": " {bandwidthDownBytes} {bandwidthUpBytes}",
+ "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}",
+ "format-linked": " {ifname} (No IP)",
+ "format-disconnected": " ",
+ "tooltip-format-disconnected": "Disconnected",
+ // "format-alt": " {bandwidthDownBytes} {bandwidthUpBytes}",
+ "interval": 2,
+ },
+ "pulseaudio": {
+ "format": "{icon} {volume}",
+ "rotate": 0,
+ "format-muted": "婢",
+ // "on-click": "pavucontrol -t 3",
+ "on-click": "volumecontrol.sh -s ''",
+ "on-click-right": "volumecontrol.sh -s ''",
+ // "on-click-middle": "volumecontrol.sh -o m",
+ "on-click-middle": "pavucontrol -t 3",
+ "on-scroll-up": "volumecontrol.sh -o i",
+ "on-scroll-down": "volumecontrol.sh -o d",
+ "tooltip-format": "{icon} {desc} // {volume}%",
+ "scroll-step": 5,
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": [" ", " ", " "],
+ },
+ },
+ "pulseaudio#microphone": {
+ "format": "{format_source}",
+ "rotate": 0,
+ "format-source": "",
+ "format-source-muted": "",
+ "on-click": "pavucontrol -t 4",
+ "on-click-middle": "volumecontrol.sh -i m",
+ "on-scroll-up": "volumecontrol.sh -i i",
+ "on-scroll-down": "volumecontrol.sh -i d",
+ "tooltip-format": "{format_source} {source_desc} // {source_volume}%",
+ "scroll-step": 5,
+ },
+ // modules for padding //
+ "custom/l_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/r_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/sl_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/sr_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/rl_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/rr_end": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+ "custom/padd": {
+ "format": " ",
+ "interval": "once",
+ "tooltip": false,
+ },
+}
diff --git a/.config/waybar/secondary_screen/modules/backlight.jsonc b/.config/waybar/secondary_screen/modules/backlight.jsonc
new file mode 100644
index 0000000..b289e68
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/backlight.jsonc
@@ -0,0 +1,10 @@
+ "backlight": {
+ "device": "intel_backlight",
+ "rotate": ${r_deg},
+ "format": "{icon} {percent}%",
+ "format-icons": ["", "", "", "", "", "", "", "", ""],
+ "on-scroll-up": "brightnessctl set 1%+",
+ "on-scroll-down": "brightnessctl set 1%-",
+ "min-length": 6
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/battery.jsonc b/.config/waybar/secondary_screen/modules/battery.jsonc
new file mode 100644
index 0000000..51d6482
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/battery.jsonc
@@ -0,0 +1,14 @@
+ "battery": {
+ "states": {
+ "good": 95,
+ "warning": 30,
+ "critical": 20
+ },
+ "format": "{icon} {capacity}%",
+ "rotate": ${r_deg},
+ "format-charging": " {capacity}%",
+ "format-plugged": " {capacity}%",
+ "format-alt": "{time} {icon}",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""]
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/bluetooth.jsonc b/.config/waybar/secondary_screen/modules/bluetooth.jsonc
new file mode 100644
index 0000000..919bbd8
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/bluetooth.jsonc
@@ -0,0 +1,15 @@
+ "bluetooth": {
+ "format": "",
+ "rotate": ${r_deg},
+ "format-disabled": "",
+ "format-connected": " {num_connections}",
+ "format-connected-battery": "{icon} {num_connections}",
+ // "format-connected-battery": "{icon} {device_alias}-{device_battery_percentage}%",
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
+ // "format-device-preference": [ "device1", "device2" ], // preference list deciding the displayed device If this config option is not defined or none of the devices in the list are connected, it will fall back to showing the last connected device.
+ "tooltip-format": "{controller_alias}\n{num_connections} connected",
+ "tooltip-format-connected": "{controller_alias}\n{num_connections} connected\n\n{device_enumerate}",
+ "tooltip-format-enumerate-connected": "{device_alias}",
+ "tooltip-format-enumerate-connected-battery": "{device_alias}\t{icon} {device_battery_percentage}%"
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/cava.jsonc b/.config/waybar/secondary_screen/modules/cava.jsonc
new file mode 100644
index 0000000..d5d2277
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/cava.jsonc
@@ -0,0 +1,6 @@
+"custom/cava": {
+ "format": "{}",
+ "exec": "waybar_cava.sh",
+ "restart-interval": 1,
+ "hide-empty": true
+},
\ No newline at end of file
diff --git a/.config/waybar/secondary_screen/modules/cliphist.jsonc b/.config/waybar/secondary_screen/modules/cliphist.jsonc
new file mode 100644
index 0000000..02024fa
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/cliphist.jsonc
@@ -0,0 +1,11 @@
+ "custom/cliphist": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo clipboard history",
+ "on-click": "sleep 0.1 && cliphist.sh c",
+ "on-click-right": "sleep 0.1 && cliphist.sh d",
+ "on-click-middle": "sleep 0.1 && cliphist.sh w",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/clock.jsonc b/.config/waybar/secondary_screen/modules/clock.jsonc
new file mode 100644
index 0000000..17f9a15
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/clock.jsonc
@@ -0,0 +1,25 @@
+ "clock": {
+ "format": "{:%I:%M %p}",
+ "rotate": ${r_deg},
+ "format-alt": "{:%R %d·%m·%y}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click-right": "mode",
+ "on-click-forward": "tz_up",
+ "on-click-backward": "tz_down",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ }
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/cpu.jsonc b/.config/waybar/secondary_screen/modules/cpu.jsonc
new file mode 100644
index 0000000..cc89cb0
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/cpu.jsonc
@@ -0,0 +1,8 @@
+ "cpu": {
+ "interval": 10,
+ "format": " {usage}%",
+ "rotate": ${r_deg},
+ "format-alt": "{icon0}{icon1}{icon2}{icon3}",
+ "format-icons": ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█"]
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/cpuinfo.jsonc b/.config/waybar/secondary_screen/modules/cpuinfo.jsonc
new file mode 100644
index 0000000..fb6bb76
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/cpuinfo.jsonc
@@ -0,0 +1,10 @@
+ "custom/cpuinfo": {
+ "exec": " cpuinfo.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/footer.jsonc b/.config/waybar/secondary_screen/modules/footer.jsonc
new file mode 100644
index 0000000..1387f74
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/footer.jsonc
@@ -0,0 +1,47 @@
+
+// modules for padding //
+
+ "custom/l_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/r_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/sl_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/sr_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/rl_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/rr_end": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ },
+
+ "custom/padd": {
+ "format": " ",
+ "interval" : "once",
+ "tooltip": false
+ }
+
+}
+
diff --git a/.config/waybar/secondary_screen/modules/gpuinfo.jsonc b/.config/waybar/secondary_screen/modules/gpuinfo.jsonc
new file mode 100644
index 0000000..f9f5d61
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/gpuinfo.jsonc
@@ -0,0 +1,41 @@
+ "custom/gpuinfo": {
+ "exec": " gpuinfo.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ "on-click": "gpuinfo.sh --toggle",
+ },
+
+ "custom/gpuinfo#nvidia": {
+ "exec": " gpuinfo.sh --use nvidia ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
+ "custom/gpuinfo#amd": {
+ "exec": " gpuinfo.sh --use amd ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
+ "custom/gpuinfo#intel": {
+ "exec": " gpuinfo.sh --use intel ",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "interval": 5, // once every 5 seconds
+ "tooltip": true,
+ "max-length": 1000,
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/header.jsonc b/.config/waybar/secondary_screen/modules/header.jsonc
new file mode 100644
index 0000000..688d476
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/header.jsonc
@@ -0,0 +1,13 @@
+// --// waybar config generated by wbarconfgen.sh //-- //
+
+{
+// sourced from header module //
+
+ "layer": "top",
+ "position": "${w_position}",
+ "mod": "dock",
+ "${hv_pos}": ${w_height},
+ "exclusive": true,
+ "passthrough": false,
+ "gtk-layer-shell": true,
+ "reload_style_on_change": true,
diff --git a/.config/waybar/secondary_screen/modules/idle_inhibitor.jsonc b/.config/waybar/secondary_screen/modules/idle_inhibitor.jsonc
new file mode 100644
index 0000000..d109a95
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/idle_inhibitor.jsonc
@@ -0,0 +1,9 @@
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "rotate": ${r_deg},
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ }
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/keybindhint.jsonc b/.config/waybar/secondary_screen/modules/keybindhint.jsonc
new file mode 100644
index 0000000..e9edd21
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/keybindhint.jsonc
@@ -0,0 +1,6 @@
+ "custom/keybindhint": {
+ "format": " ",
+ "rotate": ${r_deg},
+ "on-click": "keybinds_hint.sh"
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/language.jsonc b/.config/waybar/secondary_screen/modules/language.jsonc
new file mode 100644
index 0000000..6045d28
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/language.jsonc
@@ -0,0 +1,6 @@
+ "hyprland/language": {
+ "format": "{short} {variant}",
+ "rotate": ${r_deg},
+ "on-click": "keyboardswitch.sh",
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/memory.jsonc b/.config/waybar/secondary_screen/modules/memory.jsonc
new file mode 100644
index 0000000..5908996
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/memory.jsonc
@@ -0,0 +1,18 @@
+ "memory": {
+ "states": {
+ "c": 90, // critical
+ "h": 60, // high
+ "m": 30, // medium
+ },
+ "interval": 30,
+ "format": " {used}gb",
+ "rotate": ${r_deg},
+ "format-m": " {used}gb",
+ "format-h": " {used}gb",
+ "format-c": " {used}gb",
+ "format-alt": " {percentage}%",
+ "max-length": 10,
+ "tooltip": true,
+ "tooltip-format": " {percentage}%\n {used:0.1f}gb/{total:0.1f}gb"
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/mpris.jsonc b/.config/waybar/secondary_screen/modules/mpris.jsonc
new file mode 100644
index 0000000..04ff2cd
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/mpris.jsonc
@@ -0,0 +1,16 @@
+ "mpris": {
+ "format": "{player_icon} {dynamic}",
+ "rotate": ${r_deg},
+ "format-paused": "{status_icon} {dynamic}",
+ "player-icons": {
+ "default": "▶",
+ "mpv": "🎵"
+ },
+ "status-icons": {
+ "paused": ""
+ },
+ // "ignored-players": ["firefox"]
+ "max-length": 1000,
+ "interval": 1
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/network.jsonc b/.config/waybar/secondary_screen/modules/network.jsonc
new file mode 100644
index 0000000..1c5231d
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/network.jsonc
@@ -0,0 +1,13 @@
+ "network": {
+ "tooltip": true,
+ "format-wifi": " ",
+ "rotate": ${r_deg},
+ "format-ethernet": " ",
+ "tooltip-format": "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}",
+ "format-linked": " {ifname} (No IP)",
+ "format-disconnected": " ",
+ "tooltip-format-disconnected": "Disconnected",
+ "format-alt": " {bandwidthDownBytes} {bandwidthUpBytes}",
+ "interval": 2,
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/notifications.jsonc b/.config/waybar/secondary_screen/modules/notifications.jsonc
new file mode 100644
index 0000000..125e87a
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/notifications.jsonc
@@ -0,0 +1,29 @@
+ "custom/notifications": {
+ "format": "{icon} {}",
+ "rotate": ${r_deg},
+ "format-icons": {
+ "email-notification": "",
+ "chat-notification": "",
+ "warning-notification": "",
+ "error-notification": "",
+ "network-notification": "",
+ "battery-notification": "",
+ "update-notification": "",
+ "music-notification": "",
+ "volume-notification": "",
+ "notification": "",
+ "dnd": "",
+ "none": ""
+ },
+ "return-type": "json",
+ "exec-if": "which dunstctl",
+ "exec": "notifications.py",
+ "on-scroll-down": "sleep 0.1 && dunstctl history-pop",
+ "on-click": "dunstctl set-paused toggle",
+ "on-click-middle": "dunstctl history-clear",
+ "on-click-right": "dunstctl close-all",
+ "interval": 1,
+ "tooltip": true,
+ "escape": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/power.jsonc b/.config/waybar/secondary_screen/modules/power.jsonc
new file mode 100644
index 0000000..a41eaf6
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/power.jsonc
@@ -0,0 +1,10 @@
+ "custom/power": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo logout",
+ "on-click": "logoutlaunch.sh 2",
+ "on-click-right": "logoutlaunch.sh 1",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/privacy.jsonc b/.config/waybar/secondary_screen/modules/privacy.jsonc
new file mode 100644
index 0000000..8556586
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/privacy.jsonc
@@ -0,0 +1,18 @@
+ "privacy": {
+ "icon-size": ${i_priv},
+ "icon-spacing": 5,
+ "transition-duration": 250,
+ "modules": [
+ {
+ "type": "screenshare",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ },
+ {
+ "type": "audio-in",
+ "tooltip": true,
+ "tooltip-icon-size": 24
+ }
+ ]
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/pulseaudio.jsonc b/.config/waybar/secondary_screen/modules/pulseaudio.jsonc
new file mode 100644
index 0000000..c5770a7
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/pulseaudio.jsonc
@@ -0,0 +1,35 @@
+"pulseaudio": {
+ "format": "{icon} {volume}",
+ "rotate": ${r_deg},
+ "format-muted": "婢",
+ "on-click": "pavucontrol -t 3",
+ "on-click-right": "volumecontrol.sh -s ''",
+ "on-click-middle": "volumecontrol.sh -o m",
+ "on-scroll-up": "volumecontrol.sh -o i",
+ "on-scroll-down": "volumecontrol.sh -o d",
+ "tooltip-format": "{icon} {desc} // {volume}%",
+ "scroll-step": 5,
+ "format-icons": {
+ "headphone": "",
+ "hands-free": "",
+ "headset": "",
+ "phone": "",
+ "portable": "",
+ "car": "",
+ "default": ["", "", ""]
+ }
+},
+
+"pulseaudio#microphone": {
+ "format": "{format_source}",
+ "rotate": ${r_deg},
+ "format-source": "",
+ "format-source-muted": "",
+ "on-click": "pavucontrol -t 4",
+ "on-click-middle": "volumecontrol.sh -i m",
+ "on-scroll-up": "volumecontrol.sh -i i",
+ "on-scroll-down": "volumecontrol.sh -i d",
+ "tooltip-format": "{format_source} {source_desc} // {source_volume}%",
+ "scroll-step": 5
+},
+
diff --git a/.config/waybar/secondary_screen/modules/spotify.jsonc b/.config/waybar/secondary_screen/modules/spotify.jsonc
new file mode 100644
index 0000000..13bd6bc
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/spotify.jsonc
@@ -0,0 +1,15 @@
+ "custom/spotify": {
+ "exec": "mediaplayer.py --player spotify",
+ "format": " {}",
+ "rotate": ${r_deg},
+ "return-type": "json",
+ "on-click": "playerctl play-pause --player spotify",
+ "on-click-right": "playerctl next --player spotify",
+ "on-click-middle": "playerctl previous --player spotify",
+ "on-scroll-up": "volumecontrol.sh -p spotify i",
+ "on-scroll-down": "volumecontrol.sh -p spotify d",
+ "max-length": 25,
+ "escape": true,
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/style.css b/.config/waybar/secondary_screen/modules/style.css
new file mode 100644
index 0000000..93da5c3
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/style.css
@@ -0,0 +1,151 @@
+* {
+ border: none;
+ border-radius: 0px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ font-size: ${s_fontpx}px;
+ min-height: 10px;
+}
+
+@import "theme.css";
+
+window#waybar {
+ background: @bar-bg;
+}
+
+tooltip {
+ background: @main-bg;
+ color: @main-fg;
+ border-radius: ${t_radius}px;
+ border-width: 0px;
+}
+
+#workspaces button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: ${w_radius}px;
+ margin-${x1}: ${w_margin}px;
+ margin-${x2}: ${w_margin}px;
+ margin-${x3}: 0px;
+ padding-${x3}: ${w_paddin}px;
+ padding-${x4}: ${w_paddin}px;
+ margin-${x4}: 0px;
+ color: @main-fg;
+ animation: ws_normal 20s ease-in-out 1;
+}
+
+#workspaces button.active {
+ background: @wb-act-bg;
+ color: @wb-act-fg;
+ margin-${x3}: ${w_margin}px;
+ padding-${x3}: ${w_padact}px;
+ padding-${x4}: ${w_padact}px;
+ margin-${x4}: ${w_margin}px;
+ animation: ws_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#workspaces button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-fg;
+ animation: ws_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: ${w_radius}px;
+ margin-${x1}: ${w_margin}px;
+ margin-${x2}: ${w_margin}px;
+ margin-${x3}: 0px;
+ padding-${x3}: ${w_paddin}px;
+ padding-${x4}: ${w_paddin}px;
+ margin-${x4}: 0px;
+ color: @wb-color;
+ animation: tb_normal 20s ease-in-out 1;
+}
+
+#taskbar button.active {
+ background: @wb-act-bg;
+ color: @wb-act-color;
+ margin-${x3}: ${w_margin}px;
+ padding-${x3}: ${w_padact}px;
+ padding-${x4}: ${w_padact}px;
+ margin-${x4}: ${w_margin}px;
+ animation: tb_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-color;
+ animation: tb_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#tray menu * {
+ min-height: 16px
+}
+
+#tray menu separator {
+ min-height: 10px
+}
+
+${modules_ls}
+#custom-l_end,
+#custom-r_end,
+#custom-sl_end,
+#custom-sr_end,
+#custom-rl_end,
+#custom-rr_end {
+ color: @main-fg;
+ background: @main-bg;
+ opacity: 1;
+ margin: ${x1g_margin}px ${x2g_margin}px ${x3g_margin}px ${x4g_margin}px;
+ padding-${x3}: ${g_paddin}px;
+ padding-${x4}: ${g_paddin}px;
+}
+
+#workspaces,
+#taskbar {
+ padding: 0px;
+}
+
+#custom-r_end {
+ border-radius: ${x1rb_radius}px ${x2rb_radius}px ${x3rb_radius}px ${x4rb_radius}px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-l_end {
+ border-radius: ${x1lb_radius}px ${x2lb_radius}px ${x3lb_radius}px ${x4lb_radius}px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
+
+#custom-sr_end {
+ border-radius: 0px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-sl_end {
+ border-radius: 0px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
+
+#custom-rr_end {
+ border-radius: ${x1rc_radius}px ${x2rc_radius}px ${x3rc_radius}px ${x4rc_radius}px;
+ margin-${x4}: ${e_margin}px;
+ padding-${x4}: ${e_paddin}px;
+}
+
+#custom-rl_end {
+ border-radius: ${x1lc_radius}px ${x2lc_radius}px ${x3lc_radius}px ${x4lc_radius}px;
+ margin-${x3}: ${e_margin}px;
+ padding-${x3}: ${e_paddin}px;
+}
diff --git a/.config/waybar/secondary_screen/modules/taskbar.jsonc b/.config/waybar/secondary_screen/modules/taskbar.jsonc
new file mode 100644
index 0000000..630d574
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/taskbar.jsonc
@@ -0,0 +1,18 @@
+ "wlr/taskbar": {
+ "format": "{icon}",
+ "rotate": ${r_deg},
+ "icon-size": ${i_task},
+ "icon-theme": "${i_theme}",
+ "spacing": 0,
+ "tooltip-format": "{title}",
+ "on-click": "activate",
+ "on-click-middle": "close",
+ "ignore-list": [
+ "Alacritty"
+ ],
+ "app_ids-mapping": {
+ "firefoxdeveloperedition": "firefox-developer-edition",
+ "jetbrains-datagrip": "DataGrip"
+ }
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/theme.jsonc b/.config/waybar/secondary_screen/modules/theme.jsonc
new file mode 100644
index 0000000..6482c6e
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/theme.jsonc
@@ -0,0 +1,11 @@
+ "custom/theme": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch theme",
+ "on-click": "themeswitch.sh -n",
+ "on-click-right": "themeswitch.sh -p",
+ "on-click-middle": "sleep 0.1 && themeselect.sh",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/tray.jsonc b/.config/waybar/secondary_screen/modules/tray.jsonc
new file mode 100644
index 0000000..d7c0bce
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/tray.jsonc
@@ -0,0 +1,6 @@
+ "tray": {
+ "icon-size": ${i_size},
+ "rotate": ${r_deg},
+ "spacing": 5
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/updates.jsonc b/.config/waybar/secondary_screen/modules/updates.jsonc
new file mode 100644
index 0000000..996f732
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/updates.jsonc
@@ -0,0 +1,10 @@
+ "custom/updates": {
+ "exec": "systemupdate.sh",
+ "return-type": "json",
+ "format": "{}",
+ "rotate": ${r_deg},
+ "on-click": "hyprctl dispatch exec 'systemupdate.sh up'",
+ "interval": 86400, // once every day
+ "tooltip": true,
+ "signal": 20,
+ },
diff --git a/.config/waybar/secondary_screen/modules/wallchange.jsonc b/.config/waybar/secondary_screen/modules/wallchange.jsonc
new file mode 100644
index 0000000..0c839ca
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/wallchange.jsonc
@@ -0,0 +1,11 @@
+ "custom/wallchange": {
+ "format": "{}",
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch wallpaper",
+ "on-click": "swwwallpaper.sh -n",
+ "on-click-right": "swwwallpaper.sh -p",
+ "on-click-middle": "sleep 0.1 && swwwallselect.sh",
+ "interval" : 86400, // once every day
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/wbar.jsonc b/.config/waybar/secondary_screen/modules/wbar.jsonc
new file mode 100644
index 0000000..7738657
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/wbar.jsonc
@@ -0,0 +1,11 @@
+ "custom/wbar": {
+ "format": "{}", // //
+ "rotate": ${r_deg},
+ "exec": "echo ; echo switch bar // dock",
+ "on-click": "wbarconfgen.sh n",
+ "on-click-right": "wbarconfgen.sh p",
+ "on-click-middle": "sleep 0.1 && quickapps.sh kitty firefox spotify code dolphin",
+ "interval" : 86400,
+ "tooltip": true
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/window.jsonc b/.config/waybar/secondary_screen/modules/window.jsonc
new file mode 100644
index 0000000..3c56b28
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/window.jsonc
@@ -0,0 +1,17 @@
+ "hyprland/window": {
+ "format": " {}",
+ "rotate": ${r_deg},
+ "separate-outputs": true,
+ "rewrite": {
+ "${USER}@${set_sysname}:(.*)": "$1 ",
+ "(.*) — Mozilla Firefox": "$1 ",
+ "(.*)Mozilla Firefox": "Firefox ",
+ "(.*) - Visual Studio Code": "$1 ",
+ "(.*)Visual Studio Code": "Code ",
+ "(.*) — Dolphin": "$1 ",
+ "(.*)Spotify": "Spotify ",
+ "(.*)Steam": "Steam "
+ },
+ "max-length": 50
+ },
+
diff --git a/.config/waybar/secondary_screen/modules/workspaces.jsonc b/.config/waybar/secondary_screen/modules/workspaces.jsonc
new file mode 100644
index 0000000..c1e580a
--- /dev/null
+++ b/.config/waybar/secondary_screen/modules/workspaces.jsonc
@@ -0,0 +1,13 @@
+ "hyprland/workspaces": {
+ "disable-scroll": true,
+ "rotate": ${r_deg},
+ "all-outputs": true,
+ "active-only": false,
+ "on-click": "activate",
+ "disable-scroll": false,
+ "on-scroll-up": "hyprctl dispatch workspace -1",
+ "on-scroll-down": "hyprctl dispatch workspace +1",
+ "persistent-workspaces": {
+ }
+ },
+
diff --git a/.config/waybar/secondary_screen/style.css b/.config/waybar/secondary_screen/style.css
new file mode 100644
index 0000000..bc9cca6
--- /dev/null
+++ b/.config/waybar/secondary_screen/style.css
@@ -0,0 +1,178 @@
+* {
+ border: none;
+ border-radius: 0px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ font-size: 20px;
+ min-height: 10px;
+}
+
+@import "theme.css";
+
+window#waybar {
+ background: @bar-bg;
+}
+
+tooltip {
+ background: @main-bg;
+ color: @main-fg;
+ border-radius: 7px;
+ border-width: 0px;
+}
+
+#workspaces button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 0px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-right: 0px;
+ color: @main-fg;
+ animation: ws_normal 20s ease-in-out 1;
+}
+
+#workspaces button.active {
+ background: @wb-act-bg;
+ color: @wb-act-fg;
+ margin-left: 3px;
+ padding-left: 12px;
+ padding-right: 12px;
+ margin-right: 3px;
+ animation: ws_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#workspaces button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-fg;
+ animation: ws_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button {
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ margin-top: 3px;
+ margin-bottom: 3px;
+ margin-left: 0px;
+ padding-left: 3px;
+ padding-right: 3px;
+ margin-right: 0px;
+ color: @wb-color;
+ animation: tb_normal 20s ease-in-out 1;
+}
+
+#taskbar button.active {
+ background: @wb-act-bg;
+ color: @wb-act-color;
+ margin-left: 3px;
+ padding-left: 12px;
+ padding-right: 12px;
+ margin-right: 3px;
+ animation: tb_active 20s ease-in-out 1;
+ transition: all 0.4s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#taskbar button:hover {
+ background: @wb-hvr-bg;
+ color: @wb-hvr-color;
+ animation: tb_hover 20s ease-in-out 1;
+ transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+}
+
+#tray menu * {
+ min-height: 16px
+}
+
+#tray menu separator {
+ min-height: 10px
+}
+
+#backlight,
+#battery,
+#bluetooth,
+#custom-cava,
+#custom-cliphist,
+#clock,
+#custom-cpuinfo,
+#cpu,
+#custom-gpuinfo,
+#idle_inhibitor,
+#custom-keybindhint,
+#language,
+#memory,
+#mpris,
+#network,
+#custom-notifications,
+#custom-power,
+#privacy,
+#pulseaudio,
+#custom-spotify,
+#taskbar,
+#custom-theme,
+#tray,
+#custom-updates,
+#custom-wallchange,
+#custom-wbar,
+#window,
+#workspaces,
+#custom-l_end,
+#custom-r_end,
+#custom-sl_end,
+#custom-sr_end,
+#custom-rl_end,
+#custom-rr_end {
+ color: @main-fg;
+ background: @main-bg;
+ opacity: 1;
+ margin: 4px 0px 4px 0px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+#workspaces,
+#taskbar {
+ padding: 0px;
+}
+
+#custom-r_end {
+ border-radius: 0px 15px 15px 0px;
+ /* margin-right: 9px; */
+ padding-right: 3px;
+}
+
+#custom-l_end {
+ border-radius: 15px 0px 0px 15px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
+
+#custom-sr_end {
+ border-radius: 0px;
+ margin-right: 9px;
+ padding-right: 3px;
+}
+
+#custom-sl_end {
+ border-radius: 0px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
+
+#custom-rr_end {
+ border-radius: 0px 7px 7px 0px;
+ margin-right: 9px;
+ padding-right: 3px;
+}
+
+#custom-rl_end {
+ border-radius: 7px 0px 0px 7px;
+ margin-left: 9px;
+ padding-left: 3px;
+}
diff --git a/.config/waybar/secondary_screen/theme.css b/.config/waybar/secondary_screen/theme.css
new file mode 100644
index 0000000..691cf6b
--- /dev/null
+++ b/.config/waybar/secondary_screen/theme.css
@@ -0,0 +1,10 @@
+@define-color bar-bg rgba(0, 0, 0, 0);
+
+@define-color main-bg #11111b;
+@define-color main-fg #cdd6f4;
+
+@define-color wb-act-bg #a6adc8;
+@define-color wb-act-fg #313244;
+
+@define-color wb-hvr-bg #f5c2e7;
+@define-color wb-hvr-fg #313244;