add labwc and update stuff

This commit is contained in:
Hydroxycarbamide 2025-07-04 21:27:19 +02:00
parent 189e89212d
commit 8f02c07390
Signed by: Siklos
GPG key ID: C06D07D96997549A
24 changed files with 1687 additions and 202 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
# }

View file

@ -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 = <span foreground="##$textAlpha"><i>󰌾 Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
hide_input = false
check_color = $accent
fail_color = $red
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
capslock_color = $yellow
position = 0, -47
halign = center
valign = center
}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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)$

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,7 @@
XKB_DEFAULT_LAYOUT=us
XKB_DEFAULT_OPTIONS=compose:ralt
XCURSOR_THEME=Qogir-dark
XCURSOR_SIZE=24
QT_QPA_PLATFORMTHEME=qt6ct

449
dot_config/labwc/rc.xml Normal file
View file

@ -0,0 +1,449 @@
<labwc_config>
<theme>
<name></name>
<cornerRadius>8</cornerRadius>
<keepBorder>yes</keepBorder>
<dropShadows>yes</dropShadows>
<font place="ActiveWindow">
<name>Lexend</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="InactiveWindow">
<name>Lexend</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="MenuHeader">
<name>Lexend</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="MenuItem">
<name>Lexend</name>
<size>10</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
<font place="OnScreenDisplay">
<name>Lexend</name>
<size>12</size>
<slant>normal</slant>
<weight>normal</weight>
</font>
</theme>
<desktops number="4" />
<core>
<decoration>server</decoration>
<gap>20</gap>
<adaptiveSync>fullscreen</adaptiveSync>
<allowTearing>no</allowTearing>
<reuseOutputMode>yes</reuseOutputMode>
<xwaylandPersistence>no</xwaylandPersistence>
</core>
<focus>
<followMouse>yes</followMouse>
<followMouseRequiresMovement>yes</followMouseRequiresMovement>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<resistance>
<screenEdgeStrength>30</screenEdgeStrength>
<windowEdgeStrength>30</windowEdgeStrength>
<!-- resistance for maximized/tiled windows -->
<unSnapThreshold>30</unSnapThreshold>
<!-- resistance for vertically/horizontally maximized windows -->
<unMaximizeThreshold>150</unMaximizeThreshold>
</resistance>
<snapping>
<!-- Set range to 0 to disable window snapping completely -->
<range>40</range>
<overlay enabled="yes">
<delay inner="200" outer="200" />
</overlay>
<topMaximize>yes</topMaximize>
<notifyClient>always</notifyClient>
</snapping>
<regions>
<region name="top-right" x="50%" y="0%" width="50%" height="50%"></region>
<region name="bottom-right" x="50%" y="50%" width="50%" height="50%"></region>
<region name="bottom-left" x="0%" y="0%" width="50%" height="50%"></region>
<region name="top-left" x="0%" y="50%" width="50%" height="50%"></region>
<region name="half-left" x="0%" y="0%" width="50%" height="100%"></region>
<region name="half-right" x="50%" y="0%" width="50%" height="100%"></region>
<region name="half-top" x="0%" y="0%" width="100%" height="50%"></region>
<region name="half-bottom" x="0%" y="50%" width="100%" height="50%"></region>
<region name="center-full" x="0%" y="0%" width="100%" height="100%"></region>
</regions>
<keyboard>
<repeatRate>50</repeatRate>
<repeatDelay>200</repeatDelay>
<keybind key="W-S-q"><action name="Exit" /></keybind>
<keybind key="W-S-r"><action name="Reconfigure" /></keybind>
<keybind key="W-Return"><action name="Execute" command="footclient"/></keybind>
<keybind key="W-S-e"><action name="Execute" command="xdg-open ."/></keybind>
<keybind key="W-e"><action name="Execute" command="wezterm start --class fm-term yazi"/></keybind>
<keybind key="W-d"><action name="Execute" command="anyrun"/></keybind>
<keybind key="W-w"><action name="Execute" command="rofi -show window"/></keybind>
<keybind key="W-q"><action name="Execute" command="wlogout -p layer-shell"/></keybind>
<keybind key="W-v"><action name="Execute" command="sh -c 'cliphist list | rofi -dmenu | cliphist decode | wl-copy'"/></keybind>
<keybind key="W-S-s"><action name="Execute" command="hyprshot -m region"/></keybind>
<keybind key="W-p"><action name="Execute" command="hyprshot -m output"/></keybind>
<keybind key="W-C-S-s"><action name="Execute" command="tesseract-shot.sh"/></keybind>
<keybind key="W-b"><action name="Execute" command="killall -SIGUSR1 waybar"/></keybind>
<keybind key="W-c"><action name="Close"/></keybind>
<keybind key="W-S-c"><action name="Kill"/></keybind>
<keybind key="W-f">
<action name="ToggleMaximize" />
</keybind>
<keybind key="W-Space">
<action name="ToggleMaximize" />
</keybind>
<keybind key="W-S-f">
<action name="ToggleFullscreen" />
</keybind>
<keybind key="XF86_AudioLowerVolume">
<action name="Execute" command="swayosd-client --output-volume lower" />
</keybind>
<keybind key="XF86_AudioRaiseVolume">
<action name="Execute" command="swayosd-client --output-volume raise" />
</keybind>
<keybind key="XF86_AudioMute">
<action name="Execute" command="swayosd-client --output-volume mute-toggle" />
</keybind>
<keybind key="XF86_MonBrightnessUp">
<action name="Execute" command="brightnessctl set +10%" />
</keybind>
<keybind key="XF86_MonBrightnessDown">
<action name="Execute" command="brightnessctl set 10%-" />
</keybind>
<keybind key="W-1"><action name="GoToDesktop" to="1" /></keybind>
<keybind key="W-2"><action name="GoToDesktop" to="2" /></keybind>
<keybind key="W-3"><action name="GoToDesktop" to="3" /></keybind>
<keybind key="W-4"><action name="GoToDesktop" to="4" /></keybind>
<keybind key="W-S-1"><action name="SendToDesktop" to="1" /></keybind>
<keybind key="W-S-2"><action name="SendToDesktop" to="2" /></keybind>
<keybind key="W-S-3"><action name="SendToDesktop" to="3" /></keybind>
<keybind key="W-S-4"><action name="SendToDesktop" to="4" /></keybind>
<!-- <keybind key="A-Tab"> -->
<!-- <action name="NextWindow" /> -->
<!-- </keybind> -->
<!-- <keybind key="A-S-Tab"> -->
<!-- <action name="PreviousWindow" /> -->
<!-- </keybind> -->
<keybind key="W-i">
<action name="NextWindow" />
</keybind>
<keybind key="W-m">
<action name="PreviousWindow" />
</keybind>
<keybind key="W-j">
<action name="NextWindow" />
</keybind>
<keybind key="W-k">
<action name="PreviousWindow" />
</keybind>
<keybind key="W-l">
<action name="NextWindow" />
</keybind>
<keybind key="W-h">
<action name="PreviousWindow" />
</keybind>
<keybind key="W-period">
<action name="FocusOutput" direction="left" wrap="yes" />
</keybind>
<keybind key="W-comma">
<action name="FocusOutput" direction="right" wrap="yes" />
</keybind>
<keybind key="W-Tab">
<action name="FocusOutput" direction="right" wrap="yes" />
</keybind>
<keybind key="W-S-period">
<action name="MoveToOutput" direction="left" wrap="yes" />
</keybind>
<keybind key="W-S-comma">
<action name="MoveToOutput" direction="right" wrap="yes" />
</keybind>
<keybind key="W-S-Tab">
<action name="MoveToOutput" direction="right" wrap="yes" />
</keybind>
<!-- <keybind key="A-Left"> -->
<!-- <action name="MoveToEdge" direction="left" /> -->
<!-- </keybind> -->
<!-- <keybind key="A-Right"> -->
<!-- <action name="MoveToEdge" direction="right" /> -->
<!-- </keybind> -->
<!-- <keybind key="A-Up"> -->
<!-- <action name="MoveToEdge" direction="up" /> -->
<!-- </keybind> -->
<!-- <keybind key="A-Down"> -->
<!-- <action name="MoveToEdge" direction="down" /> -->
<!-- </keybind> -->
<keybind key="W-Left">
<action name="SnapToEdge" direction="left" />
</keybind>
<keybind key="W-Right">
<action name="SnapToEdge" direction="right" />
</keybind>
<keybind key="W-Up">
<action name="SnapToEdge" direction="up" />
</keybind>
<keybind key="W-Down">
<action name="SnapToEdge" direction="down" />
</keybind>
<!-- <keybind key="A-Space"> -->
<!-- <action name="ShowMenu" menu="client-menu" atCursor="no" /> -->
<!-- </keybind> -->
</keyboard>
<mouse>
<!-- time is in ms -->
<doubleClickTime>500</doubleClickTime>
<context name="All">
<mousebind direction="W-Up" action="Scroll">
<action name="PreviousWindow" />
</mousebind>
<mousebind direction="W-Down" action="Scroll">
<action name="NextWindow" />
</mousebind>
</context>
<context name="Frame">
<mousebind button="W-Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="W-Left" action="Drag">
<action name="Move" />
</mousebind>
<mousebind button="W-Right" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="W-Right" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Top">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Left">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Right">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="Bottom">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="BRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="BLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize" />
</mousebind>
</context>
<context name="TitleBar">
<mousebind button="Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind direction="Up" action="Scroll">
<action name="Unshade" />
<action name="Focus" />
</mousebind>
<mousebind direction="Down" action="Scroll">
<action name="Unfocus" />
<action name="Shade" />
</mousebind>
</context>
<context name="Title">
<mousebind button="Left" action="Drag">
<action name="Move" />
</mousebind>
<mousebind button="Left" action="DoubleClick">
<action name="ToggleMaximize" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ShowMenu" menu="client-menu" />
</mousebind>
</context>
<context name="Maximize">
<mousebind button="Left" action="Click">
<action name="ToggleMaximize" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ToggleMaximize" direction="horizontal" />
</mousebind>
<mousebind button="Middle" action="Click">
<action name="ToggleMaximize" direction="vertical" />
</mousebind>
</context>
<context name="WindowMenu">
<mousebind button="Left" action="Click">
<action name="ShowMenu" menu="client-menu" atCursor="no" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ShowMenu" menu="client-menu" atCursor="no" />
</mousebind>
</context>
<context name="Icon">
<mousebind button="Left" action="Click">
<action name="ShowMenu" menu="client-menu" atCursor="no" />
</mousebind>
<mousebind button="Right" action="Click">
<action name="ShowMenu" menu="client-menu" atCursor="no" />
</mousebind>
</context>
<context name="Shade">
<mousebind button="Left" action="Click">
<action name="ToggleShade" />
</mousebind>
</context>
<context name="AllDesktops">
<mousebind button="Left" action="Click">
<action name="ToggleOmnipresent" />
</mousebind>
</context>
<context name="Iconify">
<mousebind button="Left" action="Click">
<action name="Iconify" />
</mousebind>
</context>
<context name="Close">
<mousebind button="Left" action="Click">
<action name="Close" />
</mousebind>
</context>
<context name="Client">
<mousebind button="Left" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus" />
<action name="Raise" />
</mousebind>
</context>
<context name="Root">
<mousebind button="Left" action="Press">
<action name="ShowMenu" menu="root-menu" />
</mousebind>
<mousebind button="Right" action="Press">
<action name="ShowMenu" menu="root-menu" />
</mousebind>
<mousebind button="Middle" action="Press">
<action name="ShowMenu" menu="root-menu" />
<!-- openbox default, swap with above line to activate -->
<!-- <action name="ShowMenu" menu="client-list-combined-menu" /> -->
</mousebind>
<mousebind direction="Up" action="Scroll">
<action name="GoToDesktop" to="left" wrap="yes" />
</mousebind>
<mousebind direction="Down" action="Scroll">
<action name="GoToDesktop" to="right" wrap="yes" />
</mousebind>
</context>
</mouse>
<libinput>
<device category="default">
<naturalScroll></naturalScroll>
<leftHanded></leftHanded>
<pointerSpeed>0.0</pointerSpeed>
<accelProfile>flat</accelProfile>
<tap>yes</tap>
<tapButtonMap></tapButtonMap>
<tapAndDrag></tapAndDrag>
<dragLock></dragLock>
<middleEmulation></middleEmulation>
<disableWhileTyping></disableWhileTyping>
<clickMethod></clickMethod>
<sendEventsMode></sendEventsMode>
<calibrationMatrix></calibrationMatrix>
<scrollFactor>1.0</scrollFactor>
</device>
</libinput>
<windowSwitcher show="yes" preview="yes" outlines="yes" allWorkspaces="no">
<fields>
<!-- <field content="type" width="25%" /> -->
<field content="icon" width="5%" />
<field content="desktop_entry_name" width="30%" />
<!-- <field content="trimmed_identifier" width="25%" /> -->
<!-- <field content="identifier" width="25%" /> -->
<field content="title" width="50%" />
</fields>
</windowSwitcher>
<menu>
<ignoreButtonReleasePeriod>250</ignoreButtonReleasePeriod>
<showIcons>yes</showIcons>
</menu>
</labwc_config>

View file

@ -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

View file

@ -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"

View file

@ -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 "<width>x<height>" or "<width>x<height>@<refresh rate>".
// 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; }
}

View file

@ -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' &

View file

@ -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"
]
}
]

View file

@ -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,
@ -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} <span>{title}</span>\n{artist} <i>{album}</i>",
// "format": "{player_icon} {dynamic}",
// "format-paused": "{status_icon} <i>{dynamic}</i>",
"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": [
"<span color='#a6da95'>▁</span>", // green
"<span color='#8aadf4'>▂</span>", // blue
"<span color='#b7bdf8'>▃</span>", // white
"<span color='#b7bdf8'>▄</span>", // white
"<span color='#eed49f'>▅</span>", // yellow
"<span color='#f5a97f'>▆</span>", // yellow
"<span color='#ee99a0'>▇</span>", // orange
"<span color='#ed8796'>█</span>" // red
"<span color='#171717'>▁</span>",
"<span color='#262626'>▂</span>",
"<span color='#404040'>▃</span>",
"<span color='#525252'>▄</span>",
"<span color='#737373'>▅</span>",
"<span color='#a3a3a3'>▆</span>",
"<span color='#d4d4d4'>▇</span>",
"<span color='#e5e5e5'>█</span>"
]
},
"custom/notification": {
@ -289,14 +294,14 @@
"format": "{icon}",
"tooltip-format": "CPU: {temperatureC}°C",
"format-icons": [
"<span color='#a6da95'> ▁</span>", // green
"<span color='#8aadf4'> ▂</span>", // blue
"<span color='#b7bdf8'> ▃</span>", // white
"<span color='#b7bdf8'> ▄</span>", // white
"<span color='#eed49f'> ▅</span>", // yellow
"<span color='#f5a97f'> ▆</span>", // yellow
"<span color='#ee99a0'> ▇</span>", // orange
"<span color='#ed8796'> █</span>" // red
"<span color='#171717'> ▁</span>", // green
"<span color='#262626'> ▂</span>", // blue
"<span color='#404040'> ▃</span>", // white
"<span color='#525252'> ▄</span>", // white
"<span color='#737373'> ▅</span>", // yellow
"<span color='#a3a3a3'> ▆</span>", // yellow
"<span color='#d4d4d4'> ▇</span>", // orange
"<span color='#e5e5e5'> █</span>" // red
]
},
"temperature#amdgpu": {
@ -307,14 +312,14 @@
"format": "{icon}",
"tooltip-format": "GPU (edge): {temperatureC}°C",
"format-icons": [
"<span color='#a6da95'> ▁</span>", // green
"<span color='#8aadf4'> ▂</span>", // blue
"<span color='#b7bdf8'> ▃</span>", // white
"<span color='#b7bdf8'> ▄</span>", // white
"<span color='#eed49f'> ▅</span>", // yellow
"<span color='#f5a97f'> ▆</span>", // yellow
"<span color='#ee99a0'> ▇</span>", // orange
"<span color='#ed8796'> █</span>" // red
"<span color='#171717'> ▁</span>", // green
"<span color='#262626'> ▂</span>", // blue
"<span color='#404040'> ▃</span>", // white
"<span color='#525252'> ▄</span>", // white
"<span color='#737373'> ▅</span>", // yellow
"<span color='#a3a3a3'> ▆</span>", // yellow
"<span color='#d4d4d4'> ▇</span>", // orange
"<span color='#e5e5e5'> █</span>" // 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": "<span color='#ed8796'> </span>",
"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": [
"<span color='#171717'> ▁</span>", // green
"<span color='#262626'> ▂</span>", // blue
"<span color='#404040'> ▃</span>", // white
"<span color='#525252'> ▄</span>", // white
"<span color='#737373'> ▅</span>", // yellow
"<span color='#a3a3a3'> ▆</span>", // yellow
"<span color='#d4d4d4'> ▇</span>", // orange
"<span color='#e5e5e5'> █</span>" // 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,

View file

@ -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

View file

@ -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 {

View file

@ -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 = "<Enter>", run = "enter", desc = "Open selected files" },
{ on = "<S-Enter>", run = "enter", desc = "Open selected files interactively" },
{ on = "y", run = "yank", desc = "Yank selected files (copy)" },

View file

@ -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]