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 + + + + + + + + + + + + + + + + 250 + yes + + 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]