diff --git a/dot_config/hypr/appearance.conf b/dot_config/hypr/appearance.conf
index 1b1a534..bd1f7c6 100644
--- a/dot_config/hypr/appearance.conf
+++ b/dot_config/hypr/appearance.conf
@@ -24,6 +24,10 @@ group {
}
}
+ecosystem {
+ no_update_news = true
+}
+
# Tearing
env = WLR_DRM_NO_ATOMIC,1
windowrulev2 = immediate, class:^(cs2|osu\!|love|osu-lazer)$
@@ -97,7 +101,6 @@ dwindle {
}
master {
- always_center_master = false
mfact = 0.55
new_status = master
}
@@ -106,7 +109,7 @@ misc {
disable_hyprland_logo = true
disable_splash_rendering = true
# force_hypr_chan = true
- vrr = 0
+ vrr = 2
# vfr = true
# animate_mouse_windowdragging = true
diff --git a/dot_config/hypr/binds.conf b/dot_config/hypr/binds.conf
index 0560aca..a9d4c2a 100644
--- a/dot_config/hypr/binds.conf
+++ b/dot_config/hypr/binds.conf
@@ -8,27 +8,32 @@ bindm = $mod, mouse:273, resizewindow
# hyprctl / misc dispatchers
bind = $mod SHIFT, R, exec, hyprctl reload
bind = $mod SHIFT, Q, exit,
+# bind = $mod SHIFT, Q, exec, uwsm stop
# bind = $mod, Q, exec, rofi -show power-menu -modi power-menu:rofi-power-menu
bind = $mod, Q, exec, wlogout -p layer-shell
bind = $mod, C, killactive,
# screenshot
bind = $mod SHIFT, S, exec, hyprshot -m region
-bind = $mod CONTROL SHIFT, S, exec, grim -g "$(slurp)" /tmp/grim.png && tesseract -l eng+jpn /tmp/grim.png - | wl-copy && wl-paste | xargs -I{} notify-send "Tesseract" "Copied '{}'"
+bind = $mod CONTROL SHIFT, S, exec, tesseract-shot.sh
bind = $mod, Print, exec, hyprshot -m window
# apps
bind = $mod, Return, exec, footclient
+# bind = $mod, Return, exec, wezterm start --new-tab && hyprctl dispatch focuswindow initialclass:org.wezfurlong.wezterm
bind = $mod SHIFT, Return, exec, footclient -F
bind = $mod SHIFT, E, exec, xdg-open .
# bind = $mod, E, exec, footclient -a "fm-term" tmux new-session -A -s filemanager 'nnn -da -P p'
# bind = $mod, E, exec, kitty --class="fm-term" nnn -a -P p
-bind = $mod, E, exec, footclient -a "fm-term" yazi
+# bind = $mod, E, exec, footclient -a "fm-term" yazi
+bind = $mod, E, exec, wezterm start --class fm-term yazi
bind = $mod, Space, togglefloating,
bind = $mod, T, exec, swaync-client --toggle-panel
# bind = $mod SHIFT, D, exec, tofi-drun --drun-launch=true
-bind = $mod, D, exec, rofi -show drun -theme catppuccin-macchiato
-# bind = $mod, D, exec, anyrun
+# bind = $mod, D, exec, rofi -show drun -theme catppuccin-macchiato
+bind = $mod, D, exec, anyrun
+bind = $mod, S, exec, anyrun
+
bind = $mod, W, exec, rofi -show window -theme catppuccin-macchiato
# bind = ALT_L, Tab, exec, rofi -show window -theme catppuccin-macchiato
# bind = ALT_L, Tab, exec, eww open overview
@@ -43,7 +48,14 @@ bind = CAPS, , exec, swayosd-client --caps-lock-led
# Scratch pad
-bind = $mod CONTROL, Return, exec, footclient -a "floating-foot"
+# bind = $mod CONTROL, Return, exec, footclient -a "floating-foot"
+bind = $mod CONTROL, Return, exec, wezterm start --class floating-foot
+
+bind = $mod, R, togglespecialworkspace, magic
+bind = $mod, R, movetoworkspace, +0
+bind = $mod, R, togglespecialworkspace, magic
+bind = $mod, R, movetoworkspace, special:magic
+bind = $mod, R, togglespecialworkspace, magic
# audio
# bind = , 123, exec, pactl set-sink-volume @DEFAULT_SINK@ +2%
@@ -63,7 +75,7 @@ bind = , 173, exec, playerctl previous
bind = $mod, U, focusurgentorlast,
bind = $mod CONTROL, Tab, movewindow, mon:+1
bind = $mod, Escape, cyclenext
-bind = $mod, S, togglesplit
+# bind = $mod, S, togglesplit
bind = $mod, F, fullscreen, 1
bind = $mod SHIFT, F, fullscreen
@@ -109,6 +121,8 @@ bind = $mod, 5, workspace, 5
bind = $mod, 6, workspace, 6
bind = $mod, 7, workspace, 7
bind = $mod, 8, workspace, 8
+bind = $mod, 9, workspace, 9
+bind = $mod, 0, workspace, 10
# bind = $mod, 1, split-workspace, 1
# bind = $mod, 2, split-workspace, 2
@@ -130,6 +144,8 @@ bind = $mod SHIFT, 5, movetoworkspace, 5
bind = $mod SHIFT, 6, movetoworkspace, 6
bind = $mod SHIFT, 7, movetoworkspace, 7
bind = $mod SHIFT, 8, movetoworkspace, 8
+bind = $mod SHIFT, 9, movetoworkspace, 9
+bind = $mod SHIFT, 0, movetoworkspace, 10
# bind = $mod SHIFT, 1, split-movetoworkspace, 1
# bind = $mod SHIFT, 2, split-movetoworkspace, 2
@@ -168,10 +184,10 @@ bind = $mod SHIFT, period, movewindow, mon:+1
# bind = $mod SHIFT, M, togglespecialworkspace, minimized
# bind = $mod SHIFT, W, exec, pypr expose
-bind = $mod SHIFT, V, exec, pypr toggle volume
-bind = $mod, S, exec, pypr toggle term
-bind = $mod, O, exec, pypr toggle obsidian
-bind = $mod SHIFT, O, exec, pypr toggle logseq
+# bind = $mod SHIFT, V, exec, pypr toggle volume
+# bind = $mod SHIFT, S, exec, pypr toggle term
+# bind = $mod SHIFT, O, exec, pypr toggle obsidian
+# bind = $mod SHIFT, O, exec, pypr toggle logseq
# bind = $mod SHIFT, W, togglespecialworkspace, exposed
# hycov
diff --git a/dot_config/hypr/exec.conf b/dot_config/hypr/exec.conf
index 89c2a20..ee222da 100644
--- a/dot_config/hypr/exec.conf
+++ b/dot_config/hypr/exec.conf
@@ -1,26 +1,29 @@
-# exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=hyprland
+# exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
# exec-once = dbus-update-activation-environment --systemd --all
exec-once = hyprpaper &
-exec-once = swaync &
+# exec-once = sleep 5 && mpvpaper "*" "/home/eric/Pictures/wallpapers/#animated/castorice-honkai-star-rail-moewalls-com.mp4" -o "loop-file=inf no-config hwdec=auto" --fork &
+exec-once = systemctl --user start swaync
# exec-once = transmission-daemon
# exec-once = fcitx5
-exec-once = kdeconnectd &
-exec-once = kdeconnect-indicator &
-exec-once = pypr &
+# exec-once = kdeconnectd &
+# exec-once = kdeconnect-indicator &
+# exec-once = pypr &
exec-once = swayosd-server &
# exec-once = eww daemon
-exec-once = nm-applet
+# exec-once = nm-applet
exec-once=hyprctl setcursor Qogir-dark 24
-exec-once = swayidle before-sleep 'loginctl lock-session' lock 'swaylock'
+# exec-once = swayidle before-sleep 'loginctl lock-session' lock 'swaylock'
+exec-once = systemctl --user restart hypridle
exec-once = wl-paste --type text --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
exec-once = systemctl start --user foot-server
-exec-once = sunshine &
+# exec-once = sunshine &
# exec-once = systemctl start --user gammastep
# exec-once = flatpak run me.kozec.syncthingtk -m &
# exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
exec-once = /usr/lib/polkit-kde-authentication-agent-1 &
-exec-once = waybar &
+exec-once = systemctl --user start waybar
exec-once = hyprpm reload -n
+# exec-once = uwsm finalize
diff --git a/dot_config/hypr/hypridle.conf b/dot_config/hypr/hypridle.conf
new file mode 100644
index 0000000..6972418
--- /dev/null
+++ b/dot_config/hypr/hypridle.conf
@@ -0,0 +1,24 @@
+general {
+ lock_cmd = swaylock
+ before_sleep_cmd = loginctl lock-session # lock before suspend
+ # after_sleep_cmd = hyprctl dispatch dpms on
+}
+
+# Lock the screen
+# listener {
+# timeout = 300
+# on-timeout = loginctl lock-session
+# }
+
+# Turn off screen
+# listener {
+# timeout = 90
+# on-timeout = hyprctl dispatch dpms off
+# on-resume = hyprctl dispatch dpms on
+# }
+
+# Suspend the system
+# listener {
+# timeout = 600
+# on-timeout = systemctl suspend
+# }
diff --git a/dot_config/hypr/hyprlock.conf b/dot_config/hypr/hyprlock.conf
new file mode 100644
index 0000000..f963546
--- /dev/null
+++ b/dot_config/hypr/hyprlock.conf
@@ -0,0 +1,100 @@
+source = $HOME/.config/hypr/macchiato.conf
+
+$accent = $rosewater
+$accentAlpha = $rosewaterAlpha
+$font = JetBrainsMono Nerd Font
+
+# GENERAL
+general {
+ hide_cursor = true
+}
+
+# BACKGROUND
+background {
+ monitor =
+ path = $HOME/Pictures/wallpapers/gray0_ctp_on_line_background.png
+ blur_passes = 0
+ color = $base
+}
+
+# LAYOUT
+label {
+ monitor =
+ text = Layout: $LAYOUT
+ color = $text
+ font_size = 25
+ font_family = $font
+ position = 30, -30
+ halign = left
+ valign = top
+}
+
+# TIME
+label {
+ monitor =
+ text = $TIME
+ color = $text
+ font_size = 90
+ font_family = $font
+ position = -30, 0
+ halign = right
+ valign = top
+}
+
+# DATE
+label {
+ monitor =
+ text = cmd[update:43200000] date +"%A, %d %B %Y"
+ color = $text
+ font_size = 25
+ font_family = $font
+ position = -30, -150
+ halign = right
+ valign = top
+}
+
+# FINGERPRINT
+{
+ monitor = "";
+ text = "$FPRINTPROMPT";
+ color = "$text";
+ font_size = 14;
+ font_family = font;
+ position = "0, -107";
+ halign = "center";
+ valign = "center";
+}
+
+# USER AVATAR
+image {
+ monitor =
+ path = $HOME/.face
+ size = 100
+ border_color = $accent
+ position = 0, 75
+ halign = center
+ valign = center
+}
+
+# INPUT FIELD
+input-field {
+ monitor =
+ size = 300, 60
+ outline_thickness = 4
+ dots_size = 0.2
+ dots_spacing = 0.2
+ dots_center = true
+ outer_color = $accent
+ inner_color = $surface0
+ font_color = $text
+ fade_on_empty = false
+ placeholder_text = Logged in as $USER
+ hide_input = false
+ check_color = $accent
+ fail_color = $red
+ fail_text = $FAIL ($ATTEMPTS)
+ capslock_color = $yellow
+ position = 0, -47
+ halign = center
+ valign = center
+}
diff --git a/dot_config/hypr/hyprpaper.conf b/dot_config/hypr/hyprpaper.conf
index 4142151..d264fd5 100644
--- a/dot_config/hypr/hyprpaper.conf
+++ b/dot_config/hypr/hyprpaper.conf
@@ -1,5 +1,8 @@
-preload = /home/eric/Pictures/wallpapers/ayaka.png
+# preload = /home/eric/Pictures/wallpapers/ayaka.png
-wallpaper = DP-1,/home/eric/Pictures/wallpapers/ayaka.png
-wallpaper = HDMI-A-1,/home/eric/Pictures/wallpapers/ayaka.png
+# wallpaper = DP-1,/home/eric/Pictures/wallpapers/ayaka.png
+# wallpaper = HDMI-A-1,/home/eric/Pictures/wallpapers/ayaka.png
+preload = /home/eric/Pictures/wallpapers/void0/Castorice/xiadie4k.jpeg
+wallpaper = DP-1,/home/eric/Pictures/wallpapers/void0/Castorice/xiadie4k.jpeg
+wallpaper = HDMI-A-1,/home/eric/Pictures/wallpapers/void0/Castorice/xiadie4k.jpeg
diff --git a/dot_config/hypr/input.conf b/dot_config/hypr/input.conf
index 02e94eb..4480340 100644
--- a/dot_config/hypr/input.conf
+++ b/dot_config/hypr/input.conf
@@ -1,9 +1,9 @@
input {
kb_file =
- kb_layout =
- kb_variant =
+ kb_layout = us #,us
+ kb_variant = #,colemak
kb_model =
- kb_options = compose:ralt #,caps:escape
+ kb_options = grp:alt_shift_toggle,compose:ralt #,caps:escape
kb_rules =
repeat_delay = 200
diff --git a/dot_config/hypr/macchiato.conf b/dot_config/hypr/macchiato.conf
new file mode 100644
index 0000000..9e7071a
--- /dev/null
+++ b/dot_config/hypr/macchiato.conf
@@ -0,0 +1,78 @@
+
+$rosewater = rgb(f4dbd6)
+$rosewaterAlpha = f4dbd6
+
+$flamingo = rgb(f0c6c6)
+$flamingoAlpha = f0c6c6
+
+$pink = rgb(f5bde6)
+$pinkAlpha = f5bde6
+
+$mauve = rgb(c6a0f6)
+$mauveAlpha = c6a0f6
+
+$red = rgb(ed8796)
+$redAlpha = ed8796
+
+$maroon = rgb(ee99a0)
+$maroonAlpha = ee99a0
+
+$peach = rgb(f5a97f)
+$peachAlpha = f5a97f
+
+$yellow = rgb(eed49f)
+$yellowAlpha = eed49f
+
+$green = rgb(a6da95)
+$greenAlpha = a6da95
+
+$teal = rgb(8bd5ca)
+$tealAlpha = 8bd5ca
+
+$sky = rgb(91d7e3)
+$skyAlpha = 91d7e3
+
+$sapphire = rgb(7dc4e4)
+$sapphireAlpha = 7dc4e4
+
+$blue = rgb(8aadf4)
+$blueAlpha = 8aadf4
+
+$lavender = rgb(b7bdf8)
+$lavenderAlpha = b7bdf8
+
+$text = rgb(cad3f5)
+$textAlpha = cad3f5
+
+$subtext1 = rgb(b8c0e0)
+$subtext1Alpha = b8c0e0
+
+$subtext0 = rgb(a5adcb)
+$subtext0Alpha = a5adcb
+
+$overlay2 = rgb(939ab7)
+$overlay2Alpha = 939ab7
+
+$overlay1 = rgb(8087a2)
+$overlay1Alpha = 8087a2
+
+$overlay0 = rgb(6e738d)
+$overlay0Alpha = 6e738d
+
+$surface2 = rgb(5b6078)
+$surface2Alpha = 5b6078
+
+$surface1 = rgb(494d64)
+$surface1Alpha = 494d64
+
+$surface0 = rgb(363a4f)
+$surface0Alpha = 363a4f
+
+$base = rgb(24273a)
+$baseAlpha = 24273a
+
+$mantle = rgb(1e2030)
+$mantleAlpha = 1e2030
+
+$crust = rgb(181926)
+$crustAlpha = 181926
diff --git a/dot_config/hypr/pyprland.toml b/dot_config/hypr/pyprland.toml
index 4e6bd4e..b98bf7d 100644
--- a/dot_config/hypr/pyprland.toml
+++ b/dot_config/hypr/pyprland.toml
@@ -18,11 +18,11 @@ max_workspaces = 8
[expose]
include_special = false
-[scratchpads.term]
-animation = "fromTop"
-command = "foot -a foot-dropterm"
-class = "foot-dropterm"
-size = "75% 60%"
+# [scratchpads.term]
+# animation = "fromTop"
+# command = "foot -a foot-dropterm"
+# class = "foot-dropterm"
+# size = "75% 60%"
[scratchpads.obsidian]
animation = "fromTop"
@@ -30,14 +30,13 @@ command = "obsidian"
class = "obsidian"
size = "80% 80%"
-[scratchpads.logseq]
-animation = "fromTop"
-command = "flatpak run com.logseq.Logseq"
-match_by = "class"
-class = "Logseq"
-size = "80% 80%"
-# process_tracking = false
-class_match = true
+# [scratchpads.logseq]
+# animation = "fromTop"
+# command = "flatpak run com.logseq.Logseq"
+# match_by = "class"
+# class = "Logseq"
+# size = "80% 80%"
+# class_match = true
[scratchpads.volume]
animation = "fromRight"
diff --git a/dot_config/hypr/rules.conf b/dot_config/hypr/rules.conf
index 1b00a76..691947a 100644
--- a/dot_config/hypr/rules.conf
+++ b/dot_config/hypr/rules.conf
@@ -2,7 +2,7 @@
### Layers ###
##############
-layerrule = blur, waybar
+# layerrule = blur, waybar
layerrule = blur, launcher
layerrule = blur, lockscreen
# layerrule = blur, swayosd
@@ -26,14 +26,19 @@ windowrulev2 = center, title:^(Move files)$
windowrulev2 = fullscreen, class:^(genshinimpact.exe|starrail.exe|zenlesszonezero.exe)$
windowrulev2 = fullscreenstate 3, class:^(genshinimpact.exe|starrail.exe|zenlesszonezero.exe)$
+# windowrulev2 = idleinhibit fullscreen, class:^(*)$
+# windowrulev2 = idleinhibit fullscreen, title:^(*)$
+windowrulev2 = idleinhibit fullscreen, fullscreen:1
+windowrulev2 = idleinhibit always, class:^(mpv)$
+
# transparency
-windowrulev2 = opacity 1.0 override 0.9 override, class:^(kitty|foot|footclient|floating-foot|VSCodium|Code|neovide)$
+windowrulev2 = opacity 1.0 override 0.9 override, class:^(kitty|org.wezfurlong.wezterm|foot|footclient|floating-foot|VSCodium|Code|neovide)$
# 1 terminal
-windowrulev2 = workspace 1, class:^(kitty|foot|footclient)$
+windowrulev2 = workspace 1, class:^(kitty|foot|footclient|org.wezfurlong.wezterm)$
# 2 browser
-windowrulev2 = workspace 2, class:^(mullvadbrowser|zen-beta|floorp|firefox*|Pulse Browser|librewolf*|LibreWolf*|org.qutebrowser.qutebrowser|chromium|thorium*|brave*|vivaldi*)
+windowrulev2 = workspace 2, class:^(mullvadbrowser|zen|floorp|firefox*|Pulse Browser|librewolf*|LibreWolf*|org.qutebrowser.qutebrowser|chromium|thorium*|brave*|vivaldi*)
# 3 files
windowrulev2 = workspace 3, class:^(thunar|org.qbittorrent.qBittorrent|org.kde.dolphin|pcmanfm-qt|deluge)$|^(org.gnome.Nautilus)$|^(org.gnome.NautilusDevel)$|^(nemo*)|fm-term
@@ -52,4 +57,4 @@ windowrulev2 = workspace 6, class:^(mpv|Spotify)$
windowrulev2 = workspace 7, class:^(WebCord|discord|org.telegram.desktop|Signal|teams-for-linux)$
# 8 settings
-windowrulev2 = workspace 8, class:^(sc-controller|pavucontrol|org.pulseaudio.pavucontrol)$
+windowrulev2 = workspace 8, class:^(sc-controller|pavucontrol|org.pulseaudio.pavucontrol|org.keepassxc.KeePassXC)$
diff --git a/dot_config/hypr/workspaces.conf b/dot_config/hypr/workspaces.conf
index 16aa823..794340d 100644
--- a/dot_config/hypr/workspaces.conf
+++ b/dot_config/hypr/workspaces.conf
@@ -4,10 +4,12 @@ workspace = 1, monitor:DP-1, default:true
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-1
-workspace = 5, monitor:HDMI-A-1
+workspace = 5, monitor:DP-1
workspace = 6, monitor:HDMI-A-1
workspace = 7, monitor:HDMI-A-1
workspace = 8, monitor:HDMI-A-1
+workspace = 9, monitor:HDMI-A-1
+workspace = 10, monitor:HDMI-A-1
workspace = special:exposed,gapsout:60,gapsin:30,bordersize:5,border:true,shadow:false
# With split plugins
diff --git a/dot_config/labwc/autostart b/dot_config/labwc/autostart
new file mode 100644
index 0000000..157fbda
--- /dev/null
+++ b/dot_config/labwc/autostart
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+hyprpaper >/dev/null 2>&1 &
+swayosd-server >/dev/null 2>&1 &
+# swayidle before-sleep 'loginctl lock-session' lock 'swaylock' >/dev/null 2>&1 &
+
+wl-clip-persist --clipboard regular &
+wl-paste --type text --watch cliphist store >/dev/null 2>&1 &
+wl-paste --type image --watch cliphist store >/dev/null 2>&1 &
+
+/usr/lib/polkit-kde-authentication-agent-1 &
+
+systemctl start --user foot-server
+systemctl start --user swaync
+systemctl restart --user hypridle
+systemctl restart --user kanshi
+systemctl restart --user waybar
diff --git a/dot_config/labwc/environment b/dot_config/labwc/environment
new file mode 100644
index 0000000..e0b50cb
--- /dev/null
+++ b/dot_config/labwc/environment
@@ -0,0 +1,7 @@
+XKB_DEFAULT_LAYOUT=us
+XKB_DEFAULT_OPTIONS=compose:ralt
+
+XCURSOR_THEME=Qogir-dark
+XCURSOR_SIZE=24
+
+QT_QPA_PLATFORMTHEME=qt6ct
diff --git a/dot_config/labwc/rc.xml b/dot_config/labwc/rc.xml
new file mode 100644
index 0000000..83f1c36
--- /dev/null
+++ b/dot_config/labwc/rc.xml
@@ -0,0 +1,449 @@
+
+
+
+ 8
+ yes
+ yes
+
+ Lexend
+ 10
+ normal
+ normal
+
+
+ Lexend
+ 10
+ normal
+ normal
+
+
+ Lexend
+ 10
+ normal
+ normal
+
+
+ Lexend
+ 10
+ normal
+ normal
+
+
+ Lexend
+ 12
+ normal
+ normal
+
+
+
+
+
+
+ server
+ 20
+ fullscreen
+ no
+ yes
+ no
+
+
+
+ yes
+ yes
+ no
+
+
+
+ 30
+ 30
+
+ 30
+
+ 150
+
+
+
+
+ 40
+
+
+
+ yes
+ always
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 50
+ 200
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 500
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.0
+ flat
+ yes
+
+
+
+
+
+
+
+
+ 1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dot_config/labwc/themerc-override b/dot_config/labwc/themerc-override
new file mode 100644
index 0000000..c0a910a
--- /dev/null
+++ b/dot_config/labwc/themerc-override
@@ -0,0 +1,115 @@
+# This file contains all themerc options with default values
+#
+# System-wide and local themes can be overridden by creating a copy of this
+# file and renaming it to $HOME/.config/labwc/themerc-override. Be careful
+# though - if you only want to override a small number of specific options,
+# make sure all other lines are commented out or deleted.
+
+# general
+border.width: 2
+
+#
+# The global padding.{width,height} of openbox are not supported because
+# the default labwc button geometry deviates from that of openbox
+#
+window.titlebar.padding.width: 0
+window.titlebar.padding.height: 0
+
+# window border
+window.active.border.color: #f4dbd6
+window.inactive.border.color: #1e2030
+
+# ToggleKeybinds status indicator
+window.active.indicator.toggled-keybind.color: #ff0000
+
+# window titlebar background
+window.active.title.bg.color: #1e2030
+window.inactive.title.bg.color: #181926
+
+# window titlebar text
+window.active.label.text.color: #cad3f5
+window.inactive.label.text.color: #a5adcb
+window.label.text.justify: center
+
+# window button width and spacing
+window.button.width: 26
+window.button.height: 26
+window.button.spacing: 0
+
+# window button hover effect
+window.button.hover.bg.corner-radius: 0
+
+# window buttons
+window.active.button.unpressed.image.color: #cad3f5
+window.inactive.button.unpressed.image.color: #a5adcb
+
+# window drop-shadows
+window.active.shadow.size: 60
+window.inactive.shadow.size: 40
+window.active.shadow.color: #00000060
+window.inactive.shadow.color: #00000040
+
+# Note that "menu", "iconify", "max", "close" buttons colors can be defined
+# individually by inserting the type after the button node, for example:
+#
+# window.active.button.iconify.unpressed.image.color: #333333
+
+# menu
+menu.overlap.x: 0
+menu.overlap.y: 0
+menu.width.min: 20
+menu.width.max: 200
+menu.border.width: 1
+menu.border.color: #181926
+menu.items.bg.color: #1e2030
+menu.items.text.color: #cad3f5
+menu.items.active.bg.color: #363a4f
+menu.items.active.text.color: #cad3f5
+menu.items.padding.x: 7
+menu.items.padding.y: 4
+menu.separator.width: 1
+menu.separator.padding.width: 6
+menu.separator.padding.height: 3
+menu.separator.color: #888888
+menu.title.bg.color: #589bda
+menu.title.text.color: #ffffff
+menu.title.text.justify: Center
+
+# on screen display (window-cycle dialog)
+osd.bg.color: #1e2030
+osd.border.color: #f4dbd6
+osd.border.width: 2
+osd.label.text.color: #cad3f5
+
+# width can be set as percent (of screen width)
+# example 50% or 75% instead of 600, max 100%
+osd.window-switcher.width: 45%
+
+osd.window-switcher.padding: 20
+osd.window-switcher.item.padding.x: 10
+osd.window-switcher.item.padding.y: 5
+osd.window-switcher.item.active.border.width: 2
+osd.window-switcher.preview.border.width: 2
+osd.window-switcher.preview.border.color: #eed49f
+
+osd.workspace-switcher.boxes.width: 20
+osd.workspace-switcher.boxes.height: 20
+
+# Default values for following options change depending on the rendering
+# backend. For software-based renderers, *.bg.enabled is "no" and
+# *.border.enabled is "yes" if not set. For hardware-based renderers,
+# *.bg.enabled is "yes" and *.border.enabled is "no" if not set.
+# Setting *.bg.enabled to "yes" for software-based renderer with translucent
+# background color may severely impact performance.
+#
+# snapping.overlay.region.bg.enabled:
+# snapping.overlay.edge.bg.enabled:
+# snapping.overlay.region.border.enabled:
+# snapping.overlay.edge.border.enabled:
+
+snapping.overlay.region.bg.color: #f4dbd680
+snapping.overlay.edge.bg.color: #f4dbd680
+snapping.overlay.region.border.width: 1
+snapping.overlay.edge.border.width: 1
+snapping.overlay.region.border.color: #dddda6,#000000,#dddda6
+snapping.overlay.edge.border.color: #dddda6,#000000,#dddda6
diff --git a/dot_config/niri/config.kdl b/dot_config/niri/config.kdl
index 31826ba..3d686fa 100644
--- a/dot_config/niri/config.kdl
+++ b/dot_config/niri/config.kdl
@@ -141,6 +141,9 @@ layout {
//
// Alternatively, you can override it with a window rule called
// `draw-border-with-background`.
+ shadow {
+ on
+ }
// You can change how the focus ring looks.
focus-ring {
@@ -199,9 +202,8 @@ layout {
// Proportion sets the width as a fraction of the output width, taking gaps into account.
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
- proportion 0.33333
proportion 0.5
- proportion 0.66667
+ proportion 1.0
// Fixed sets the width in logical pixels exactly.
// fixed 1920
@@ -413,9 +415,11 @@ animations {
/// Workspaces
window-rule {
- match app-id="steam_app_*"
+ // match app-id="steam_app_*"
match app-id="cs2"
+ match app-id="gmod"
match app-id="genshinimpact.exe"
+ match app-id="henpri.exe"
match app-id="starrail.exe"
match app-id="zenlesszonezero.exe"
match app-id="osu!"
@@ -424,7 +428,6 @@ window-rule {
match app-id="SamabakeScramble*"
match app-id="samabakescramble*"
match app-id="gamescope"
- match app-id="steam"
variable-refresh-rate true
open-on-output "DP-1"
@@ -441,8 +444,30 @@ window-rule {
// open-on-workspace "syncplay"
}
+/// Floating rules
+
+
+window-rule {
+ match app-id="firefox$" title="^Picture-in-Picture$"
+ match app-id="floorp$" title="^Picture-in-Picture$"
+ match app-id="zen$" title="^Picture-in-Picture$"
+
+ open-floating true
+ default-floating-position x=50 y=50 relative-to="bottom-right"
+ max-height 320
+}
+window-rule {
+ // match app-id="launcher.exe$" title="^Holoearth Launcher$"
+ match app-id="launcher.exe$"
+ // match title="^Holoearth*"
+ open-floating true
+}
+
+/// Custom rules
+
window-rule {
match app-id="foot*"
+ match app-id=r#"^org\.wezfurlong\.wezterm$"#
match app-id="fm-term"
default-column-width { proportion 0.5; }
}
@@ -463,6 +488,50 @@ window-rule {
clip-to-geometry true
}
+layer-rule {
+ match namespace="^rofi$"
+
+ shadow {
+ on
+ }
+
+ geometry-corner-radius 10
+}
+
+window-rule {
+ match is-window-cast-target=true
+
+ focus-ring {
+ active-color "#ee99a0"
+ inactive-color "#ed8796"
+ }
+
+ border {
+ inactive-color "#ed8796"
+ }
+
+ shadow {
+ color "#7d0d2d70"
+ }
+
+ tab-indicator {
+ active-color "#ee99a0"
+ inactive-color "#ed8796"
+ }
+}
+
+/// Layer rules
+
+layer-rule {
+ match namespace="^swayosd$"
+
+ shadow {
+ on
+ }
+
+ geometry-corner-radius 9999
+}
+
binds {
// Keys consist of modifiers separated by + signs, followed by an XKB key name
// in the end. To find an XKB name for a particular key, you may use a program
@@ -480,14 +549,19 @@ binds {
// Suggested binds for running programs: terminal, app launcher, screen locker.
Mod+Return { spawn "footclient"; }
+ // Mod+Return { spawn "wezterm" "start" "--new-tab"; }
+ // Mod+Return { spawn "wezterm"; }
Mod+B { spawn "killall" "-SIGUSR1" "waybar"; }
// Mod+D { spawn "wofi" "-show" "drun" "-theme" "catppuccin-macchiato"; }
Mod+D { spawn "anyrun"; }
- Mod+W { spawn "rofi" "-show" "window" "-theme" "catppuccin-macchiato"; }
+ Mod+S { spawn "anyrun"; }
+ Mod+Shift+W { spawn "rofi" "-show" "window" "-theme" "catppuccin-macchiato"; }
+ Mod+W repeat=false { toggle-overview; }
Mod+Q repeat=false { spawn "wlogout" "-p" "layer-shell"; }
// Mod+E repeat=false { spawn "kitty" "--class='fm-term'" "nnn" "-da" "-P" "p"; }
- Mod+E repeat=false { spawn "footclient" "-a" "fm-term" "yazi"; }
+ // Mod+E repeat=false { spawn "footclient" "-a" "fm-term" "yazi"; }
+ Mod+E repeat=false { spawn "wezterm" "start" "--class" "fm-term" "yazi"; }
Mod+Shift+E repeat=false { spawn "xdg-open" "."; }
Mod+V { spawn "bash" "-c" "cliphist list | rofi -dmenu | cliphist decode | wl-copy"; }
@@ -527,6 +601,8 @@ binds {
Mod+Shift+K { move-window-up; }
Mod+Shift+L { move-column-right; }
+ Mod+G { toggle-column-tabbed-display; }
+
// Alternative commands that move across workspaces when reaching
// the first or last window in a column.
// Mod+J { focus-window-or-workspace-down; }
@@ -573,11 +649,11 @@ binds {
Mod+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; }
- Mod+I { focus-workspace-up; }
+ Mod+Y { focus-workspace-up; }
Mod+Shift+Page_Down { move-column-to-workspace-down; }
Mod+Shift+Page_Up { move-column-to-workspace-up; }
Mod+Shift+U { move-column-to-workspace-down; }
- Mod+Shift+I { move-column-to-workspace-up; }
+ Mod+Shift+Y { move-column-to-workspace-up; }
// Alternatively, there are commands to move just a single window:
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
@@ -662,7 +738,8 @@ binds {
// Mod+Ctrl+1 { move-window-to-workspace 1; }
// Switches focus between the current and the previous workspace.
- Mod+Tab { focus-workspace-previous; }
+ Mod+Tab { focus-monitor-next; }
+ Mod+Shift+Tab { move-window-to-monitor-next; }
// Mod+Shift+BracketLeft { consume-window-into-column; }
// Mod+Shift+BracketRight { expel-window-from-column; }
@@ -747,7 +824,7 @@ debug {
// Disable the use of the cursor plane.
// The cursor will be rendered together with the rest of the frame.
- disable-cursor-plane
+ // disable-cursor-plane
// Override the DRM device that niri will use for all rendering.
// render-drm-device "/dev/dri/renderD128"
@@ -768,18 +845,19 @@ debug {
// spawn-at-startup "alacritty" "-e" "fish"
spawn-at-startup "hyprpaper"
spawn-at-startup "swaync"
-spawn-at-startup "waybar"
+// spawn-at-startup "waybar"
+spawn-at-startup "systemctl" "restart" "--user" "waybar"
spawn-at-startup "systemctl" "start" "--user" "foot-server"
spawn-at-startup "systemctl" "start" "--user" "xwayland-satellite"
// spawn-at-startup "systemctl" "start" "--user" "gammastep"
spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1"
-spawn-at-startup "kdeconnectd"
-spawn-at-startup "kdeconnect-indicator"
+// spawn-at-startup "kdeconnectd"
+// spawn-at-startup "kdeconnect-indicator"
spawn-at-startup "wl-paste" "--type" "text" "--watch" "cliphist" "store"
spawn-at-startup "wl-paste" "--type" "image" "--watch" "cliphist" "store"
spawn-at-startup "swayosd-server"
spawn-at-startup "swayidle" "before-sleep" "'loginctl lock-session'" "lock" "'swaylock'"
// spawn-at-startup "sunshine"
-spawn-at-startup "systemctl" "restart" "--user" "sunshine"
+// spawn-at-startup "systemctl" "restart" "--user" "sunshine"
// spawn-at-startup "trackma"
// spawn-at-startup "xwayland-satellite"
diff --git a/dot_config/niri/default-config.kdl b/dot_config/niri/default-config.kdl
new file mode 100644
index 0000000..5696a88
--- /dev/null
+++ b/dot_config/niri/default-config.kdl
@@ -0,0 +1,509 @@
+// This config is in the KDL format: https://kdl.dev
+// "/-" comments out the following node.
+// Check the wiki for a full description of the configuration:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Overview
+
+// Input device configuration.
+// Find the full list of options on the wiki:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
+input {
+ keyboard {
+ xkb {
+ // You can set rules, model, layout, variant and options.
+ // For more information, see xkeyboard-config(7).
+
+ // For example:
+ // layout "us,ru"
+ // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps"
+ }
+ }
+
+ // Next sections include libinput settings.
+ // Omitting settings disables them, or leaves them at their default values.
+ touchpad {
+ // off
+ tap
+ // dwt
+ // dwtp
+ natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-method "two-finger"
+ // disabled-on-external-mouse
+ }
+
+ mouse {
+ // off
+ // natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-method "no-scroll"
+ }
+
+ trackpoint {
+ // off
+ // natural-scroll
+ // accel-speed 0.2
+ // accel-profile "flat"
+ // scroll-method "on-button-down"
+ // scroll-button 273
+ // middle-emulation
+ }
+
+ // Uncomment this to make the mouse warp to the center of newly focused windows.
+ // warp-mouse-to-focus
+
+ // Focus windows and outputs automatically when moving the mouse into them.
+ // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
+ // focus-follows-mouse max-scroll-amount="0%"
+}
+
+// You can configure outputs by their name, which you can find
+// by running `niri msg outputs` while inside a niri instance.
+// The built-in laptop monitor is usually called "eDP-1".
+// Find more information on the wiki:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
+// Remember to uncomment the node by removing "/-"!
+/-output "eDP-1" {
+ // Uncomment this line to disable this output.
+ // off
+
+ // Resolution and, optionally, refresh rate of the output.
+ // The format is "x" or "x@".
+ // If the refresh rate is omitted, niri will pick the highest refresh rate
+ // for the resolution.
+ // If the mode is omitted altogether or is invalid, niri will pick one automatically.
+ // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
+ mode "1920x1080@120.030"
+
+ // You can use integer or fractional scale, for example use 1.5 for 150% scale.
+ scale 2
+
+ // Transform allows to rotate the output counter-clockwise, valid values are:
+ // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
+ transform "normal"
+
+ // Position of the output in the global coordinate space.
+ // This affects directional monitor actions like "focus-monitor-left", and cursor movement.
+ // The cursor can only move between directly adjacent outputs.
+ // Output scale and rotation has to be taken into account for positioning:
+ // outputs are sized in logical, or scaled, pixels.
+ // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
+ // so to put another output directly adjacent to it on the right, set its x to 1920.
+ // If the position is unset or results in an overlap, the output is instead placed
+ // automatically.
+ position x=1280 y=0
+}
+
+// Settings that influence how windows are positioned and sized.
+// Find more information on the wiki:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
+layout {
+ // Set gaps around windows in logical pixels.
+ gaps 16
+
+ // When to center a column when changing focus, options are:
+ // - "never", default behavior, focusing an off-screen column will keep at the left
+ // or right edge of the screen.
+ // - "always", the focused column will always be centered.
+ // - "on-overflow", focusing a column will center it if it doesn't fit
+ // together with the previously focused column.
+ center-focused-column "never"
+
+ // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
+ preset-column-widths {
+ // Proportion sets the width as a fraction of the output width, taking gaps into account.
+ // For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
+ // The default preset widths are 1/3, 1/2 and 2/3 of the output.
+ proportion 0.33333
+ proportion 0.5
+ proportion 0.66667
+
+ // Fixed sets the width in logical pixels exactly.
+ // fixed 1920
+ }
+
+ // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
+ // preset-window-heights { }
+
+ // You can change the default width of the new windows.
+ default-column-width { proportion 0.5; }
+ // If you leave the brackets empty, the windows themselves will decide their initial width.
+ // default-column-width {}
+
+ // By default focus ring and border are rendered as a solid background rectangle
+ // behind windows. That is, they will show up through semitransparent windows.
+ // This is because windows using client-side decorations can have an arbitrary shape.
+ //
+ // If you don't like that, you should uncomment `prefer-no-csd` below.
+ // Niri will draw focus ring and border *around* windows that agree to omit their
+ // client-side decorations.
+ //
+ // Alternatively, you can override it with a window rule called
+ // `draw-border-with-background`.
+
+ // You can change how the focus ring looks.
+ focus-ring {
+ // Uncomment this line to disable the focus ring.
+ // off
+
+ // How many logical pixels the ring extends out from the windows.
+ width 4
+
+ // Colors can be set in a variety of ways:
+ // - CSS named colors: "red"
+ // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
+ // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
+
+ // Color of the ring on the active monitor.
+ active-color "#7fc8ff"
+
+ // Color of the ring on inactive monitors.
+ inactive-color "#505050"
+
+ // You can also use gradients. They take precedence over solid colors.
+ // Gradients are rendered the same as CSS linear-gradient(angle, from, to).
+ // The angle is the same as in linear-gradient, and is optional,
+ // defaulting to 180 (top-to-bottom gradient).
+ // You can use any CSS linear-gradient tool on the web to set these up.
+ // Changing the color space is also supported, check the wiki for more info.
+ //
+ // active-gradient from="#80c8ff" to="#bbddff" angle=45
+
+ // You can also color the gradient relative to the entire view
+ // of the workspace, rather than relative to just the window itself.
+ // To do that, set relative-to="workspace-view".
+ //
+ // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
+ }
+
+ // You can also add a border. It's similar to the focus ring, but always visible.
+ border {
+ // The settings are the same as for the focus ring.
+ // If you enable the border, you probably want to disable the focus ring.
+ off
+
+ width 4
+ active-color "#ffc87f"
+ inactive-color "#505050"
+
+ // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
+ // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
+ }
+
+ // Struts shrink the area occupied by windows, similarly to layer-shell panels.
+ // You can think of them as a kind of outer gaps. They are set in logical pixels.
+ // Left and right struts will cause the next window to the side to always be visible.
+ // Top and bottom struts will simply add outer gaps in addition to the area occupied by
+ // layer-shell panels and regular gaps.
+ struts {
+ // left 64
+ // right 64
+ // top 64
+ // bottom 64
+ }
+}
+
+// Add lines like this to spawn processes at startup.
+// Note that running niri as a session supports xdg-desktop-autostart,
+// which may be more convenient to use.
+// See the binds section below for more spawn examples.
+// spawn-at-startup "alacritty" "-e" "fish"
+
+// Uncomment this line to ask the clients to omit their client-side decorations if possible.
+// If the client will specifically ask for CSD, the request will be honored.
+// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
+// This option will also fix border/focus ring drawing behind some semitransparent windows.
+// After enabling or disabling this, you need to restart the apps for this to take effect.
+// prefer-no-csd
+
+// You can change the path where screenshots are saved.
+// A ~ at the front will be expanded to the home directory.
+// The path is formatted with strftime(3) to give you the screenshot date and time.
+screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
+
+// You can also set this to null to disable saving screenshots to disk.
+// screenshot-path null
+
+// Animation settings.
+// The wiki explains how to configure individual animations:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
+animations {
+ // Uncomment to turn off all animations.
+ // off
+
+ // Slow down all animations by this factor. Values below 1 speed them up instead.
+ // slowdown 3.0
+}
+
+// Window rules let you adjust behavior for individual windows.
+// Find more information on the wiki:
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
+
+// Work around WezTerm's initial configure bug
+// by setting an empty default-column-width.
+window-rule {
+ // This regular expression is intentionally made as specific as possible,
+ // since this is the default config, and we want no false positives.
+ // You can get away with just app-id="wezterm" if you want.
+ match app-id=r#"^org\.wezfurlong\.wezterm$"#
+ default-column-width {}
+}
+
+// Open the Firefox picture-in-picture player as floating by default.
+window-rule {
+ // This app-id regular expression will work for both:
+ // - host Firefox (app-id is "firefox")
+ // - Flatpak Firefox (app-id is "org.mozilla.firefox")
+ match app-id=r#"firefox$"# title="^Picture-in-Picture$"
+ open-floating true
+}
+
+// Example: block out two password managers from screen capture.
+// (This example rule is commented out with a "/-" in front.)
+/-window-rule {
+ match app-id=r#"^org\.keepassxc\.KeePassXC$"#
+ match app-id=r#"^org\.gnome\.World\.Secrets$"#
+
+ block-out-from "screen-capture"
+
+ // Use this instead if you want them visible on third-party screenshot tools.
+ // block-out-from "screencast"
+}
+
+// Example: enable rounded corners for all windows.
+// (This example rule is commented out with a "/-" in front.)
+/-window-rule {
+ geometry-corner-radius 12
+ clip-to-geometry true
+}
+
+binds {
+ // Keys consist of modifiers separated by + signs, followed by an XKB key name
+ // in the end. To find an XKB name for a particular key, you may use a program
+ // like wev.
+ //
+ // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
+ // when running as a winit window.
+ //
+ // Most actions that you can bind here can also be invoked programmatically with
+ // `niri msg action do-something`.
+
+ // Mod-Shift-/, which is usually the same as Mod-?,
+ // shows a list of important hotkeys.
+ Mod+Shift+Slash { show-hotkey-overlay; }
+
+ // Suggested binds for running programs: terminal, app launcher, screen locker.
+ Mod+T { spawn "alacritty"; }
+ Mod+D { spawn "fuzzel"; }
+ Super+Alt+L { spawn "swaylock"; }
+
+ // You can also use a shell. Do this if you need pipes, multiple commands, etc.
+ // Note: the entire command goes as a single argument in the end.
+ // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
+
+ // Example volume keys mappings for PipeWire & WirePlumber.
+ // The allow-when-locked=true property makes them work even when the session is locked.
+ XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
+ XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
+ XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
+ XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
+
+ Mod+Q { close-window; }
+
+ Mod+Left { focus-column-left; }
+ Mod+Down { focus-window-down; }
+ Mod+Up { focus-window-up; }
+ Mod+Right { focus-column-right; }
+ Mod+H { focus-column-left; }
+ Mod+J { focus-window-down; }
+ Mod+K { focus-window-up; }
+ Mod+L { focus-column-right; }
+
+ Mod+Ctrl+Left { move-column-left; }
+ Mod+Ctrl+Down { move-window-down; }
+ Mod+Ctrl+Up { move-window-up; }
+ Mod+Ctrl+Right { move-column-right; }
+ Mod+Ctrl+H { move-column-left; }
+ Mod+Ctrl+J { move-window-down; }
+ Mod+Ctrl+K { move-window-up; }
+ Mod+Ctrl+L { move-column-right; }
+
+ // Alternative commands that move across workspaces when reaching
+ // the first or last window in a column.
+ // Mod+J { focus-window-or-workspace-down; }
+ // Mod+K { focus-window-or-workspace-up; }
+ // Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
+ // Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
+
+ Mod+Home { focus-column-first; }
+ Mod+End { focus-column-last; }
+ Mod+Ctrl+Home { move-column-to-first; }
+ Mod+Ctrl+End { move-column-to-last; }
+
+ Mod+Shift+Left { focus-monitor-left; }
+ Mod+Shift+Down { focus-monitor-down; }
+ Mod+Shift+Up { focus-monitor-up; }
+ Mod+Shift+Right { focus-monitor-right; }
+ Mod+Shift+H { focus-monitor-left; }
+ Mod+Shift+J { focus-monitor-down; }
+ Mod+Shift+K { focus-monitor-up; }
+ Mod+Shift+L { focus-monitor-right; }
+
+ Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
+ Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
+ // ...
+
+ // And you can also move a whole workspace to another monitor:
+ // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
+ // ...
+
+ Mod+Page_Down { focus-workspace-down; }
+ Mod+Page_Up { focus-workspace-up; }
+ Mod+U { focus-workspace-down; }
+ Mod+I { focus-workspace-up; }
+ Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
+ Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
+ Mod+Ctrl+U { move-column-to-workspace-down; }
+ Mod+Ctrl+I { move-column-to-workspace-up; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
+ // ...
+
+ Mod+Shift+Page_Down { move-workspace-down; }
+ Mod+Shift+Page_Up { move-workspace-up; }
+ Mod+Shift+U { move-workspace-down; }
+ Mod+Shift+I { move-workspace-up; }
+
+ // You can bind mouse wheel scroll ticks using the following syntax.
+ // These binds will change direction based on the natural-scroll setting.
+ //
+ // To avoid scrolling through workspaces really fast, you can use
+ // the cooldown-ms property. The bind will be rate-limited to this value.
+ // You can set a cooldown on any bind, but it's most useful for the wheel.
+ Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
+ Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
+ Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
+ Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
+
+ Mod+WheelScrollRight { focus-column-right; }
+ Mod+WheelScrollLeft { focus-column-left; }
+ Mod+Ctrl+WheelScrollRight { move-column-right; }
+ Mod+Ctrl+WheelScrollLeft { move-column-left; }
+
+ // Usually scrolling up and down with Shift in applications results in
+ // horizontal scrolling; these binds replicate that.
+ Mod+Shift+WheelScrollDown { focus-column-right; }
+ Mod+Shift+WheelScrollUp { focus-column-left; }
+ Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
+ Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
+
+ // Similarly, you can bind touchpad scroll "ticks".
+ // Touchpad scrolling is continuous, so for these binds it is split into
+ // discrete intervals.
+ // These binds are also affected by touchpad's natural-scroll, so these
+ // example binds are "inverted", since we have natural-scroll enabled for
+ // touchpads by default.
+ // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
+ // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
+
+ // You can refer to workspaces by index. However, keep in mind that
+ // niri is a dynamic workspace system, so these commands are kind of
+ // "best effort". Trying to refer to a workspace index bigger than
+ // the current workspace count will instead refer to the bottommost
+ // (empty) workspace.
+ //
+ // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
+ // will all refer to the 3rd workspace.
+ Mod+1 { focus-workspace 1; }
+ Mod+2 { focus-workspace 2; }
+ Mod+3 { focus-workspace 3; }
+ Mod+4 { focus-workspace 4; }
+ Mod+5 { focus-workspace 5; }
+ Mod+6 { focus-workspace 6; }
+ Mod+7 { focus-workspace 7; }
+ Mod+8 { focus-workspace 8; }
+ Mod+9 { focus-workspace 9; }
+ Mod+Ctrl+1 { move-column-to-workspace 1; }
+ Mod+Ctrl+2 { move-column-to-workspace 2; }
+ Mod+Ctrl+3 { move-column-to-workspace 3; }
+ Mod+Ctrl+4 { move-column-to-workspace 4; }
+ Mod+Ctrl+5 { move-column-to-workspace 5; }
+ Mod+Ctrl+6 { move-column-to-workspace 6; }
+ Mod+Ctrl+7 { move-column-to-workspace 7; }
+ Mod+Ctrl+8 { move-column-to-workspace 8; }
+ Mod+Ctrl+9 { move-column-to-workspace 9; }
+
+ // Alternatively, there are commands to move just a single window:
+ // Mod+Ctrl+1 { move-window-to-workspace 1; }
+
+ // Switches focus between the current and the previous workspace.
+ // Mod+Tab { focus-workspace-previous; }
+
+ // The following binds move the focused window in and out of a column.
+ // If the window is alone, they will consume it into the nearby column to the side.
+ // If the window is already in a column, they will expel it out.
+ Mod+BracketLeft { consume-or-expel-window-left; }
+ Mod+BracketRight { consume-or-expel-window-right; }
+
+ // Consume one window from the right to the bottom of the focused column.
+ Mod+Comma { consume-window-into-column; }
+ // Expel the bottom window from the focused column to the right.
+ Mod+Period { expel-window-from-column; }
+
+ Mod+R { switch-preset-column-width; }
+ Mod+Shift+R { switch-preset-window-height; }
+ Mod+Ctrl+R { reset-window-height; }
+ Mod+F { maximize-column; }
+ Mod+Shift+F { fullscreen-window; }
+ Mod+C { center-column; }
+
+ // Finer width adjustments.
+ // This command can also:
+ // * set width in pixels: "1000"
+ // * adjust width in pixels: "-5" or "+5"
+ // * set width as a percentage of screen width: "25%"
+ // * adjust width as a percentage of screen width: "-10%" or "+10%"
+ // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
+ // set-column-width "100" will make the column occupy 200 physical screen pixels.
+ Mod+Minus { set-column-width "-10%"; }
+ Mod+Equal { set-column-width "+10%"; }
+
+ // Finer height adjustments when in column with other windows.
+ Mod+Shift+Minus { set-window-height "-10%"; }
+ Mod+Shift+Equal { set-window-height "+10%"; }
+
+ // Move the focused window between the floating and the tiling layout.
+ Mod+V { toggle-window-floating; }
+ Mod+Shift+V { switch-focus-between-floating-and-tiling; }
+
+ // Actions to switch layouts.
+ // Note: if you uncomment these, make sure you do NOT have
+ // a matching layout switch hotkey configured in xkb options above.
+ // Having both at once on the same hotkey will break the switching,
+ // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
+ // Mod+Space { switch-layout "next"; }
+ // Mod+Shift+Space { switch-layout "prev"; }
+
+ Print { screenshot; }
+ Ctrl+Print { screenshot-screen; }
+ Alt+Print { screenshot-window; }
+
+ // The quit action will show a confirmation dialog to avoid accidental exits.
+ Mod+Shift+E { quit; }
+ Ctrl+Alt+Delete { quit; }
+
+ // Powers off the monitors. To turn them back on, do any input like
+ // moving the mouse or pressing any other key.
+ Mod+Shift+P { power-off-monitors; }
+}
diff --git a/dot_config/river/executable_init b/dot_config/river/executable_init
index 19b57f0..3718040 100644
--- a/dot_config/river/executable_init
+++ b/dot_config/river/executable_init
@@ -6,6 +6,8 @@
# Super+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
riverctl map normal Super Return spawn footclient
+# riverctl map normal Super Return spawn "wezterm start --new-tab"
+riverctl map normal Super+Shift Return spawn "wezterm"
# Super+C to close the focused view
riverctl map normal Super C close
@@ -17,13 +19,18 @@ riverctl map normal Super+Shift Q exit
riverctl map normal Super+Shift R spawn "$HOME/.config/river/init"
# Rofi menu
-riverctl map normal Super Q spawn 'rofi -show power-menu -modi power-menu:rofi-power-menu'
+# riverctl map normal Super Q spawn 'rofi -show power-menu -modi power-menu:rofi-power-menu'
+riverctl map normal Super Q spawn 'wlogout -p layer-shell'
# Super+J and Super+K to focus the next/previous view in the layout stack
riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous
riverctl map normal Super H focus-view left
riverctl map normal Super L focus-view right
+riverctl map normal Super Down focus-view next
+riverctl map normal Super Up focus-view previous
+riverctl map normal Super Left focus-view left
+riverctl map normal Super Right focus-view right
# Super+Shift+J and Super+Shift+K to swap the focused view with the next/previous
# view in the layout stack
@@ -40,8 +47,11 @@ riverctl map normal Super Comma focus-output previous
riverctl map normal Super+Shift Period send-to-output next
riverctl map normal Super+Shift Comma send-to-output previous
+riverctl map normal Super Tab focus-output next
+riverctl map normal Super+Shift Tab send-to-output next
+
# Super+Return to bump the focused view to the top of the layout stack
-riverctl map normal Super+Shift Return zoom
+# riverctl map normal Super+Shift Return zoom
riverctl map normal Super X zoom
# Super+H and Super+L to decrease/increase the main ratio of rivertile(1)
@@ -51,6 +61,8 @@ riverctl map normal Super+Control L send-layout-cmd rivertile "main-ratio +0.05"
# Super+Shift+H and Super+Shift+L to increment/decrement the main count of rivertile(1)
riverctl map normal Super+Shift+Control H send-layout-cmd rivertile "main-count +1"
riverctl map normal Super+Shift+Control L send-layout-cmd rivertile "main-count -1"
+riverctl map normal Super bracketleft send-layout-cmd rivertile "main-count +1"
+riverctl map normal Super bracketright send-layout-cmd rivertile "main-count -1"
# Super+Alt+{H,J,K,L} to move views
riverctl map normal Super+Alt H move left 100
@@ -154,10 +166,12 @@ done
# Applications
##############
-riverctl map normal Super D spawn "rofi -show drun -theme catppuccin-macchiato"
+#riverctl map normal Super D spawn "rofi -show drun -theme catppuccin-macchiato"
+riverctl map normal Super D spawn "anyrun"
riverctl map normal Super W spawn "rofi -show window -theme catppuccin-macchiato"
# riverctl map normal Super E spawn "kitty --class='fm-term' nnn -da -P p"
-riverctl map normal Super E spawn "footclient -a fm-term yazi"
+# riverctl map normal Super E spawn "footclient -a fm-term yazi"
+riverctl map normal Super E spawn "wezterm start --class fm-term yazi"
riverctl map normal Super+Shift E spawn "xdg-open $HOME"
# shellcheck disable=SC2016
@@ -192,6 +206,7 @@ rivertile -view-padding 6 -outer-padding 10 &
# view-padding 6, \
# outer-padding 10, &
+riverctl allow-tearing disabled
# cursor
@@ -220,18 +235,6 @@ riverctl input *Touchpad tap enabled
# Clipboard
riverctl map normal Super V spawn 'bash -c "cliphist list | rofi -dmenu | cliphist decode | wl-copy"'
-
-##########
-# Monitors
-##########
-
-# wlr-randr
-# wlr-randr --output HDMI-A-1 --on --mode 1920x1080@60Hz --pos 1920,0 --output DP-1 --on --mode 1920x1080@144.001007Hz --pos 0,0
-
-# kanshi
-kanshi &
-
-
#######
# Rules
#######
@@ -239,22 +242,17 @@ kanshi &
# ssd
riverctl rule-add ssd
-# output
-riverctl rule-add -app-id 'cs2' output DP-1
-riverctl rule-add -app-id 'starrail.exe' output DP-1
-riverctl rule-add -app-id 'genshinimpact.exe' output DP-1
-riverctl rule-add -app-id 'zenlesszonezero.exe' output DP-1
-
# tags
declare -a rule_sets
-rule_sets[1]="footclient kitty foot"
-rule_sets[2]="LibreWolf firefox"
+rule_sets[1]="footclient kitty foot org.wezfurlong.wezterm"
+rule_sets[2]="LibreWolf firefox zen*"
rule_sets[3]="org.gnome.Nautilus fm-term org.qbittorrent.qBittorrent syncplay org.kde.dolphin org.kde.ktorrent"
-rule_sets[4]="com.usebottles.bottles cs2 osu* org.prismlauncher.PrismLauncher moe.launcher.sleepy-launcher moe.launcher.an-anime-game-launcher moe.launcher.the-honkers-railway-launcher genshinimpact.exe starrail.exe zenlesszonezero.exe Steam steam steam_app_*"
+rule_sets[4]="com.usebottles.bottles cs2 osu* org.prismlauncher.PrismLauncher moe.launcher.sleepy-launcher moe.launcher.an-anime-game-launcher moe.launcher.the-honkers-railway-launcher genshinimpact.exe starrail.exe zenlesszonezero.exe steam_app_* net.lutris.Lutris"
rule_sets[5]="org.remmina.Remmina Code VSCodium"
rule_sets[6]="io.github.celluloid_player.Celluloid mpv Spotify"
rule_sets[7]="discord vesktop teams-for-linux 'Microsoft Teams - Preview'"
+rule_sets[8]="org.keepassxc.KeePassXC"
for index in "${!rule_sets[@]}"; do
tags=$((1 << (index - 1)))
@@ -264,8 +262,27 @@ for index in "${!rule_sets[@]}"; do
done
done
+riverctl rule-add -app-id "steam" tags $(( 1 << 4 - 1 ))
+riverctl rule-add -app-id "Steam" tags $(( 1 << 4 - 1 ))
+
# tags+
+# output
+riverctl rule-add -app-id 'cs2' output DP-1
+riverctl rule-add -app-id 'starrail.exe' output DP-1
+riverctl rule-add -app-id 'genshinimpact.exe' output DP-1
+riverctl rule-add -app-id 'zenlesszonezero.exe' output DP-1
+
+riverctl rule-add -app-id steam output HDMI-A-1
+riverctl rule-add -app-id 'net.lutris.Lutris' output HDMI-A-1
+
+index=4
+tags=$((1 << (index - 1)))
+for element in ${rule_sets[4]}; do
+ riverctl rule-add -app-id "$element" output DP-1
+ # riverctl rule-add -app-id "$element" tearing
+done
+
#########
# Wayland
@@ -279,13 +296,13 @@ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
###########
## background
-hyprpaper --no-fractional &
+hyprpaper &
## bar
-waybar &
+systemctl --user start waybar
## notification daemon
-swaync &
+systemctl --user start swaync
## kdeconnect
/usr/lib/kdeconnectd &
@@ -296,17 +313,21 @@ swayosd-server &
## systemctl restarts
systemctl start --user foot-server
-systemctl start --user sunshine
+# systemctl restart --user sunshine
# systemctl start --user gammastep.service
+systemctl restart --user hypridle
+systemctl start --user kanshi
## cliphist
wl-paste --type text --watch cliphist store & #Stores only text data
wl-paste --type image --watch cliphist store & #Stores only image data
+## lock
+swayidle before-sleep 'loginctl lock-session' lock 'swaylock' &
+
+# passwords
+keepassxc &
+
# polkit
## /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &
/usr/lib/polkit-kde-authentication-agent-1 &
-
-## lock
-swayidle before-sleep 'loginctl lock-session' lock '/home/eric/.config/hypr/bsplock' &
-
diff --git a/dot_config/waybar/config.jsonc b/dot_config/waybar/config.jsonc
index d58e512..0c6f5a4 100644
--- a/dot_config/waybar/config.jsonc
+++ b/dot_config/waybar/config.jsonc
@@ -1,44 +1,35 @@
[
{
"output": ["DP-1", "HDMI-A-1"],
- "layer": "top",
- "position": "top",
+ "layer": "bottom",
+ "position": "bottom",
"height": 32,
"include": ["~/.config/waybar/default-modules.jsonc"],
"modules-left": [
+ "dwl/tags",
"hyprland/workspaces",
"sway/workspaces#sway",
"niri/workspaces",
- "river/tags"
+ "river/tags",
// "custom/workspaces",
// "river/layout",
- // "group/visualisation"
+ "group/visualisation"
// "custom/media",
// "hyprland/window",
],
- "modules-right": [
- "group/hardware",
- "pulseaudio",
- "network",
- "group/rightmost"
- ]
- },
- {
- "output": ["DP-1", "HDMI-A-1"],
- "layer": "top",
- "position": "bottom",
- "height": 44,
- "include": ["~/.config/waybar/default-modules.jsonc"],
- "modules-left": [
- "group/visualisation"
- ],
"modules-center": [
"group/tray-group",
"wlr/taskbar"
// "mpd",
],
"modules-right": [
+ "group/hardware",
+ // "pulseaudio",
+ "wireplumber",
+ // "hyprland/language",
+ "network",
+ "group/rightmost"
]
}
]
diff --git a/dot_config/waybar/default-modules.jsonc b/dot_config/waybar/default-modules.jsonc
index a8b5d50..8e31883 100644
--- a/dot_config/waybar/default-modules.jsonc
+++ b/dot_config/waybar/default-modules.jsonc
@@ -15,11 +15,11 @@
},
"group/visualisation": {
"orientation": "horizontal",
- // "drawer": {
- // "transition-duration": 500,
- // "children-class": "visualiser",
- // "transition-left-to-right": true
- // },
+ "drawer": {
+ "transition-duration": 500,
+ "children-class": "visualiser",
+ "transition-left-to-right": true
+ },
"modules": [
"cava",
"group/mpdris"
@@ -43,6 +43,9 @@
// "custom/logo"
]
},
+ "dwl/tags": {
+ "num-tags":9
+ },
"hyprland/workspaces": {
"active-only": false,
"disable-scroll": true,
@@ -58,7 +61,7 @@
"6": " ",
"7": " ",
"8": " ",
- "default": ""
+ "default": " "
}
// "persistent-workspaces": {
// "*": 4,
@@ -137,16 +140,18 @@
"wlr/taskbar": {
"all-outputs": true,
"format": "{icon}",
- "icon-size": 24,
- "icon-theme": "Papirus-Dark",
+ "icon-size": 14,
+ "icon-theme": "Adwaita",
+ // "icon-theme": "Papirus-Dark",
"active-first": false,
"tooltip-format": "{title} [{app_id}]",
"on-click": "activate",
+ "on-click-right": "minimize-raise",
"on-click-middle": "close",
"ignore-list": [],
"app_ids-mapping": {
"firefoxdeveloperedition": "firefox-developer-edition",
- "zen-alpha": "firefox"
+ // "zen-alpha": "firefox"
}
},
"tray": {
@@ -195,8 +200,8 @@
"format": "{player_icon} {title}\n{artist} {album}",
// "format": "{player_icon} {dynamic}",
// "format-paused": "{status_icon} {dynamic}",
- "title-len": 60,
- "dynamic-len": 60,
+ "title-len": 100,
+ "dynamic-len": 100,
"player-icons": {
"default": " ",
"mpv": " ",
@@ -219,14 +224,14 @@
// "format": " {}%",
"format": "{icon0}{icon1}{icon2}{icon3}{icon4}{icon5}{icon6}{icon7}{icon8}{icon9}{icon10}{icon11}{icon12}{icon13}{icon14}{icon15}",
"format-icons": [
- "▁", // green
- "▂", // blue
- "▃", // white
- "▄", // white
- "▅", // yellow
- "▆", // yellow
- "▇", // orange
- "█" // red
+ "▁",
+ "▂",
+ "▃",
+ "▄",
+ "▅",
+ "▆",
+ "▇",
+ "█"
]
},
"custom/notification": {
@@ -289,14 +294,14 @@
"format": "{icon}",
"tooltip-format": "CPU: {temperatureC}°C",
"format-icons": [
- " ▁", // green
- " ▂", // blue
- " ▃", // white
- " ▄", // white
- " ▅", // yellow
- " ▆", // yellow
- " ▇", // orange
- " █" // red
+ " ▁", // green
+ " ▂", // blue
+ " ▃", // white
+ " ▄", // white
+ " ▅", // yellow
+ " ▆", // yellow
+ " ▇", // orange
+ " █" // red
]
},
"temperature#amdgpu": {
@@ -307,14 +312,14 @@
"format": "{icon}",
"tooltip-format": "GPU (edge): {temperatureC}°C",
"format-icons": [
- " ▁", // green
- " ▂", // blue
- " ▃", // white
- " ▄", // white
- " ▅", // yellow
- " ▆", // yellow
- " ▇", // orange
- " █" // red
+ " ▁", // green
+ " ▂", // blue
+ " ▃", // white
+ " ▄", // white
+ " ▅", // yellow
+ " ▆", // yellow
+ " ▇", // orange
+ " █" // red
]
},
"network": {
@@ -344,11 +349,24 @@
"on-click-release": "rofi -show power-menu -modi power-menu:rofi-power-menu"
},
"wireplumber": {
- "format": "{volume}%",
- "format-muted": "",
- "on-click": "helvum",
+ // "format": "{volume}%",
+ "format": "{icon}",
+ "format-muted": " ",
+ "on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
+ "on-click-middle": "sh ~/.config/waybar/modules/swap-sinks.sh",
+ "on-click-right": "pavucontrol",
"max-volume": 150,
- "scroll-step": 0.2
+ "scroll-step": 5,
+ "format-icons": [
+ " ▁", // green
+ " ▂", // blue
+ " ▃", // white
+ " ▄", // white
+ " ▅", // yellow
+ " ▆", // yellow
+ " ▇", // orange
+ " █" // red
+ ]
},
"pulseaudio": {
"format": "{icon}",
@@ -393,7 +411,7 @@
"bars": 16,
"lower_cutoff_freq": 50,
"higher_cutoff_freq": 10000,
- "method": "pulse",
+ "method": "pipewire",
"source": "auto",
"stereo": true,
"reverse": false,
diff --git a/dot_config/waybar/modules/executable_swap-sinks.sh b/dot_config/waybar/modules/executable_swap-sinks.sh
new file mode 100644
index 0000000..accff71
--- /dev/null
+++ b/dot_config/waybar/modules/executable_swap-sinks.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+newSink=""
+
+Headphones="alsa_output.usb-Blue_Microphones_Yeti_Stereo_Microphone_797_2018_09_06_94890-00.analog-stereo" #Change this device's to headphone pactl name
+Speaker="alsa_output.pci-0000_0b_00.6.analog-stereo" #Change this to device's speaker pactl name
+currentSink=$(pactl info | sed -n 's/Default Sink: //p')
+
+if [ "$Speaker" = "$currentSink" ]; then
+ newSink="$Headphones"
+else
+ newSink="$Speaker"
+fi
+
+pactl set-default-sink "$newSink"
+
+sleep 0.1
+description=$(pactl list sinks | awk '/State: RUNNING/{active=1} active && /Description:/{print substr($0, index($0, $2)); exit}')
+notify-send -i audio-speakers -u low "Audio Output Changed" "$description"
+
+# pactl list short sink-inputs|while read stream; do
+# streamId=$(echo "$stream"|cut '-d ' -f1)
+# echo "moving stream $streamId"
+# pactl move-sink-input "$streamId" "$newSink"
+# done
diff --git a/dot_config/waybar/style.css b/dot_config/waybar/style.css
index 518a94c..213fd6d 100644
--- a/dot_config/waybar/style.css
+++ b/dot_config/waybar/style.css
@@ -8,13 +8,14 @@
}
window#waybar {
- background: rgba(24, 25, 38, 0.0);
+ /* background: rgba(24, 25, 38, 1.0); */
+ background-color: rgba(10, 10, 10, 1);
color: white;
}
tooltip {
background: rgba(24, 25, 38, 0.95);
- border-radius: 10px;
+ border-radius: 8px;
border-width: 0px;
border-style: solid;
border-color: rgb(24, 25, 38);
@@ -22,12 +23,23 @@ tooltip {
.modules-left,
window.bottom .modules-center,
-window:not(.bottom) .modules-right {
- background-color: #24273a;
- margin: 2px;
+.modules-right {
+ border-color: rgba(255, 255, 255, 0.06);
+ border-width: 1px;
+ border-style: solid;
+ background-color: #171717;
}
-window:not(.bottom) .modules-left,
+window.bottom .modules-center {
+ /* margin: 10px; */
+}
+
+.modules-left,
+.modules-right {
+ /* margin: 10px; */
+}
+
+.modules-left,
.modules-center,
.modules-right {
padding: 2px;
@@ -43,7 +55,7 @@ window:not(.bottom) .modules-left,
#layout,
#custom-notification.notification
{
- border-radius: 10px 10px 10px 10px;
+ border-radius: 8px 8px 8px 8px;
}
#tray,
@@ -57,34 +69,38 @@ widget>label {
#visualisation
{
- color: #1e2030;
- background-color: #f4dbd6;
+ color: #0a0a0a;
+ background-color: #e5e5e5;
}
#layout {
- color: #f4dbd6;
+ color: #e5e5e5;
}
#layout.focused {
margin-right: 2px;
- color: #1e2030;
- background-color: #f4dbd6;
+ color: #0a0a0a;
+ background-color: #e5e5e5;
}
#tags button {
- color: #939ab7;
+ color: #737373;
margin-right: 2px;
- border-radius: 10px;
+ border-radius: 8px;
}
#tags button.occupied {
- color: #f4dbd6;
+ color: #e5e5e5;
+}
+
+#workspaces {
+ margin-right: 2px;
}
#workspaces button {
- color: #f4dbd6;
- border-radius: 10px;
+ color: #e5e5e5;
+ border-radius: 8px;
margin-left: 1px;
margin-right: 1px;
}
@@ -99,35 +115,35 @@ widget>label {
#workspaces button.empty,
#workspaces.sway button.persistent {
- color: #939ab7;
+ color: #737373;
}
#workspaces button.empty.active {
- background-color: #939ab7;
+ background-color: #737373;
}
#tags button.urgent,
#workspaces button.urgent {
- color: #0f0f0f;
- background-color: #9ec3c4;
+ color: #0a0a0a;
+ background-color: #fda4af;
}
#workspaces button:hover {
- background-color: rgba(244, 219, 214, 0.7);
- color: #0f0f0f;
+ background-color: #a3a3a3;
+ color: #0a0a0a;
}
#workspaces.sway button.persistent:hover,
#workspaces button.empty:hover {
- background-color: rgba(147, 154, 183, 0.7);
- color: #0f0f0f;
+ background-color: #404040;
+ color: #0a0a0a;
}
#workspaces button.active,
#workspaces button.focused,
#tags button.focused {
- color: #0f0f0f;
- background-color: #f4dbd6;
+ color: #0a0a0a;
+ background-color: #e5e5e5;
}
@@ -136,27 +152,26 @@ widget>label {
}
#custom-notification {
- color: #eb6f92;
+ color: #e5e5e5;
padding-left: 12px;
margin-right: 2px;
}
#custom-notification.notification {
- color: #0f0f0f;
- background-color: #eb6f92;
+ color: #0a0a0a;
+ background-color: #e5e5e5;
}
#taskbar button {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-left: 8px;
- padding-right: 8px;
- border-radius: 0px;
- transition-duration: 150ms;
+ margin: 0px 2px;
+ padding: 2px 8px;
+ border-radius: 8px;
+ transition-duration: 600ms;
+ transition-timing-function: cubic-bezier(0.34, 1.56, 0.64, 1);
}
#taskbar button:hover {
- background-color: #363a4f;
+ background-color: #404040;
}
#taskbar button:last-child {
@@ -165,24 +180,30 @@ widget>label {
#taskbar button.maximized,
#taskbar button.fullscreen {
- border-top: 1px solid #8aadf4;
+ border: 2px solid #e5e5e5;
+}
+
+
+#taskbar button.minimized {
+ border-bottom: 2px solid #e5e5e5;
}
#taskbar button.active {
- background-color: #494d64;
- border-bottom: 2px solid #b7bdf8;
+ background-color: #e5e5e5;
+ border-radius: 8px;
+ /* border-bottom: 2px solid #b7bdf8; */
}
#clock {
color: #1e2030;
- background-color: #8aadf4;
+ background-color: #e5e5e5;
}
#custom-updates {
margin-right: 2px;
color: #1e2030;
- background-color: #9ccfd8;
+ background-color: #e5e5e5;
}
#custom-downloads {
@@ -194,19 +215,19 @@ widget>label {
}
#network {
- color: #f5a97f;
+ color: #e5e5e5;
}
#cpu {
- color: #a6da95;
+ color: #e5e5e5;
}
#pulseaudio {
- color: #7dc4e4;
+ color: #e5e5e5;
}
#pulseaudio.bluetooth {
- color: #8aadf4;
+ color: #e5e5e5;
}
#pulseaudio.muted {
@@ -245,11 +266,11 @@ widget>label {
}
#memory {
- color: #b7bdf8;
+ color: #e5e5e5;
}
#temperature {
- color: #91d7e3;
+ color: #e5e5e5;
}
#temperature.critical {
diff --git a/dot_config/yazi/keymap.toml b/dot_config/yazi/keymap.toml
index 47fda45..c4a97c4 100644
--- a/dot_config/yazi/keymap.toml
+++ b/dot_config/yazi/keymap.toml
@@ -61,6 +61,7 @@ keymap = [
# Operation
{ on = "o", run = "open", desc = "Open selected files" },
{ on = "O", run = "open --interactive", desc = "Open selected files interactively" },
+ { on = "O", run = "open --interactive", desc = "Open selected files interactively" },
{ on = "", run = "enter", desc = "Open selected files" },
{ on = "", run = "enter", desc = "Open selected files interactively" },
{ on = "y", run = "yank", desc = "Yank selected files (copy)" },
diff --git a/dot_config/yazi/yazi.toml b/dot_config/yazi/yazi.toml
index b57c028..c762e03 100644
--- a/dot_config/yazi/yazi.toml
+++ b/dot_config/yazi/yazi.toml
@@ -73,7 +73,7 @@ rules = [
# Empty file
{ mime = "inode/x-empty", use = [ "edit", "reveal" ] },
# Fallback
- { name = "*", use = [ "open", "reveal" ] },
+ { name = "*", use = [ "edit", "open", "reveal" ] },
]
[tasks]