diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 43 | ||||
-rw-r--r-- | hypr/hyprland.conf | 37 | ||||
-rwxr-xr-x | installers/wc | 6 | ||||
-rw-r--r-- | scroll/config | 150 | ||||
-rw-r--r-- | scroll/scripts/maximize.lua | 42 | ||||
-rw-r--r-- | scroll/scripts/scratchpad.lua | 64 | ||||
-rw-r--r-- | scroll/scripts/swallow.lua | 32 | ||||
-rw-r--r-- | waybar/config | 6 |
9 files changed, 303 insertions, 78 deletions
@@ -237,6 +237,7 @@ RVXX EXEX.settings RVXX v2/ RVXX v2.settings SchildiChat/ +scroll/config.d/user.conf Serenity/ Session/ Shibalba EXEX.settings @@ -6,18 +6,15 @@ DCONFS := doas.conf all: -install: install-hyprplugins install-zshconfigs install-shconfigs vimplug-vim +install: install-zshconfigs install-shconfigs vimplug-vim wc -install-hyprplugins: install-hyprsplit install-hyprland-plugins - -install-bashconfigs: $(BCONFS) install-shconfigs - @echo "Installing bash conf files..." - @echo ".bashrc..." - @ln -sf `pwd`/bash/.bashrc ~/.bashrc - @echo ".bash_logout..." - @ln -sf `pwd`/bash/.bash_logout ~/.bash_logout +wc: + @echo "Installing wayland compositor stuff..." + @./installers/wc @echo "Done." +install-hyprplugins: install-hyprsplit install-hyprland-plugins + install-hyprsplit: @echo "Installing hyprsplit..." @hyprpm add https://github.com/shezdy/hyprsplit || echo "Already installed!" @@ -32,12 +29,26 @@ install-hyprland-plugins: @hyprpm enable hyprscrolling @echo "Done." -install-zshconfigs: $(ZCONFS) - @echo "Installing zsh conf files..." - @echo ".zshenv..." - @ln -sf `pwd`/zsh/zshenv ~/.zshenv - @echo ".zshrc..." - @ln -sf `pwd`/zsh/zshrc ~/.zshrc +install-scrollconf: scroll/config.d/user.conf + +scroll/config.d/user.conf: + @echo "Generating user.conf..." + @mkdir -p scroll/config.d + @echo 'set $$home' $(shell echo $(HOME)) > scroll/config.d/user.conf + @echo "Done." + +install-bashconfigs: $(BCONFS) install-shconfigs + @echo "Installing bash conf files..." + @echo ".bashrc..." + @ln -sf `pwd`/bash/.bashrc ~/.bashrc + @echo ".bash_logout..." + @ln -sf `pwd`/bash/.bash_logout ~/.bash_logout + @echo "Done." + +install-zshconfigs: install-shconfigs + @echo "Settings up ZDOTDIR..." + @echo "Installing .zprofile..." + @ln -sf `pwd`/sh/profile ~/.zprofile @echo "Done." install-shconfigs: $(SCONFS) @@ -60,4 +71,4 @@ doas-conf: $(DCONFS) @sudo cp -n doas.conf /etc/doas.conf @echo "Done." -.PHONY: install-hyprplugins install-zshconfigs install-shconfigs vimplug-vim doas-conf install +.PHONY: install-hyprplugins install-zshconfigs install-shconfigs vimplug-vim doas-conf install install-scrollconf install-bashconfigs diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 90cc7b1..68948f5 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -139,7 +139,7 @@ decoration { #{{{ Animations options animations { - enabled = no + enabled = yes # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = myBezier, 0.05, 0.9, 0.1, 1.05 animation = windows, 1, 7, myBezier @@ -175,16 +175,6 @@ master { } #}}} -#{{{ Hyprscrolling layout options -plugin:hyprscrolling { - fullscreen_on_one_column = true - column_width = 0.5 - explicit_column_widths = 0.333, 0.5, 0.667, 1.0 - focus_fit_method = 1 - follow_focus = true -} -#}}} - #{{{ Gestures options gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more @@ -198,6 +188,14 @@ plugin { num_workspaces = 9 persistent_workspaces = true } + + hyprscrolling { + fullscreen_on_one_column = true + column_width = 0.5 + explicit_column_widths = 0.333, 0.5, 0.667, 1.0 + focus_fit_method = 1 + follow_focus = true + } } #}}} @@ -207,6 +205,9 @@ plugin { # Example windowrule v2 # windowrule = float, class:^(kitty)$, title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +windowrulev2 = workspace special:easyeffects silent, class: ^(com\.github\.wwmm\.easyeffects)$ +# Fix brave xray menus +windowrulev2 = xray 0, class: ^(\s*), title: ^(\s*)$ #}}} #{{{ Mods @@ -239,12 +240,14 @@ $secdMod = ALT # hyprscrolling layout binds #bind = $mainMod+SHIFT, H, layoutmsg, move -1 #HYPRSCROLLING #bind = $mainMod+SHIFT, L, layoutmsg, move +1 #HYPRSCROLLING -bind = $mainMod+ALT, H, layoutmsg, movewindowto l #HYPRSCROLLING -bind = $mainMod+ALT, L, layoutmsg, movewindowto r #HYPRSCROLLING -bind = $mainMod+SHIFT, H, movewindow, l #HYPRSCROLLING -bind = $mainMod+SHIFT, L, movewindow, r #HYPRSCROLLING -bind = $mainMod+SHIFT, K, movewindow, u #HYPRSCROLLING -bind = $mainMod+SHIFT, J, movewindow, d #HYPRSCROLLING +bind = $mainMod+SHIFT, H, layoutmsg, movewindowto l #HYPRSCROLLING +bind = $mainMod+SHIFT, J, layoutmsg, movewindowto d #HYPRSCROLLING +bind = $mainMod+SHIFT, K, layoutmsg, movewindowto u #HYPRSCROLLING +bind = $mainMod+SHIFT, L, layoutmsg, movewindowto r #HYPRSCROLLING +#bind = $mainMod+SHIFT, H, movewindow, l #HYPRSCROLLING +#bind = $mainMod+SHIFT, L, movewindow, r #HYPRSCROLLING +#bind = $mainMod+SHIFT, K, movewindow, u #HYPRSCROLLING +#bind = $mainMod+SHIFT, J, movewindow, d #HYPRSCROLLING bind = $mainMod, H, layoutmsg, focus l #HYPRSCROLLING bind = $mainMod, J, layoutmsg, focus d #HYPRSCROLLING bind = $mainMod, K, layoutmsg, focus u #HYPRSCROLLING diff --git a/installers/wc b/installers/wc new file mode 100755 index 0000000..bfdb299 --- /dev/null +++ b/installers/wc @@ -0,0 +1,6 @@ +#!/bin/sh + +pgrep -x Hyprland && make install-hyprplugins +pgrep -x scroll && make install-scrollconf + + diff --git a/scroll/config b/scroll/config index c715eed..e689a61 100644 --- a/scroll/config +++ b/scroll/config @@ -6,6 +6,8 @@ # # Read `man 5 scroll` for a complete reference. +include ~/.config/scroll/config.d/* + ### Variables # # Logo key. Use Mod1 for Alt. @@ -23,7 +25,9 @@ set $dmenu dmenu_run -l 15 # Your preferred file manager set $filemanager kitty -e lf -bar mode invisible +# The scripts directory +set $scripts $home/.config/scroll/scripts + exec waybar exec hypridle exec hyprpaper @@ -39,6 +43,10 @@ exec hyprpaper # # You can get the names of your outputs by running: scrollmsg -t get_outputs +#output eDP-1 resolution 1920x1080 position 0 0 +#output HDMI-A-1 resolution 1920x1080 position 1920 0 +#output DP-2 resolution 1920x1080 position 0 0 + ### Idle configuration # # Example configuration: @@ -74,9 +82,9 @@ exec hyprpaper default_border pixel 2 gaps inner 4 gaps outer 20 -client.focused #15439e #000000 #e0e0e0 #2e9ef4 #15439e -client.focused_inactive #595959 #000000 #e0e0e0 #2e9ef4 #595959 -client.unfocused #595959 #000000 #e0e0e0 #2e9ef4 #595959 +client.focused #198844 #000000 #e0e0e0 #198844 #198844 +client.focused_inactive #1b1d1c #000000 #e0e0e0 #1b1d1c #1b1d1c +client.unfocused #1b1d1c #000000 #e0e0e0 #1b1d1c #1b1d1c # Idle inhibit for fullscreen windows for_window [all] inhibit_idle fullscreen @@ -89,15 +97,15 @@ layout_heights [0.33333333 0.5 0.666666667 1.0] fullscreen_movefocus true -mouse_warping container +mouse_warping none # Animations animations { enabled yes - default yes 300 var 3 [ 0.215 0.61 0.355 1 ] - window_open yes 300 var 3 [ 0 0 1 1 ] - window_move yes 300 var 3 [ 0.215 0.61 0.355 1 ] off 0.05 6 [0 0.6 0.4 0 1 0 0.4 -0.6 1 -0.6] - window_size yes 300 var 3 [ -0.35 0 0 0.5 ] + default yes 100 var 3 [ 0.215 0.61 0.355 1 ] + window_open yes 100 var 3 [ 0 0 1 1 ] + window_move yes 100 var 3 [ 0.215 0.61 0.355 1 ] off 0.05 6 [0 0.6 0.4 0 1 0 0.4 -0.6 1 -0.6] + window_size yes 100 var 3 [ -0.35 0 0 0.5 ] } ### Key bindings @@ -113,10 +121,14 @@ animations { bindsym $mod+Ctrl+Backspace kill all # Start your launcher - bindsym $mod+r exec $rmenu + bindsym $mod+e exec $rmenu bindsym $mod+d exec $dmenu - bindsym $mod+e exec $filemanager + # Launch your file manager + bindsym $mod+Alt+f exec $filemanager + + # Lock your screen + bindsym $mod+q exec loginctl lock-session # Drag floating windows by holding down $mod and left mouse button. # Resize them with right mouse button + $mod. @@ -129,7 +141,7 @@ animations { bindsym $mod+Shift+c reload # Closes the active application (hopefully) - bindsym $mod+Shift+q view_close + bindsym $mod+Shift+q kill # Exit scroll (logs you out of your Wayland session) bindsym $mod+Shift+e exec scrollnag -t warning -m 'You pressed the exit shortcut. Do you really want to exit scroll? This will end your Wayland session.' -B 'Yes, exit scroll' 'scrollmsg exit' @@ -180,7 +192,6 @@ animations { bindsym $mod+7 workspace number 7 bindsym $mod+8 workspace number 8 bindsym $mod+9 workspace number 9 - bindsym $mod+0 workspace number 10 # Move focused container to workspace bindsym $mod+Shift+1 move container to workspace number 1; workspace number 1 bindsym $mod+Shift+2 move container to workspace number 2; workspace number 2 @@ -191,12 +202,13 @@ animations { bindsym $mod+Shift+7 move container to workspace number 7; workspace number 7 bindsym $mod+Shift+8 move container to workspace number 8; workspace number 8 bindsym $mod+Shift+9 move container to workspace number 9; workspace number 9 - bindsym $mod+Shift+0 move container to workspace number 10; workspace number 10 # Note: workspaces can have any name you want, not just numbers. # We just use 1-10 as the default. - bindsym $mod+Ctrl+1 move workspace to output left - bindsym $mod+Ctrl+2 move workspace to output right + bindsym $mod+Shift+Ctrl+h move container to output left + bindsym $mod+Shift+Ctrl+j move container to output down + bindsym $mod+Shift+Ctrl+k move container to output up + bindsym $mod+Shift+Ctrl+l move container to output right # Scaling # Workspace @@ -232,17 +244,20 @@ animations { # # Make the current focus fullscreen bindsym $mod+f fullscreen - bindsym $mod+Ctrl+f fullscreen global - bindsym $mod+Alt+f fullscreen_application toggle + #bindsym $mod+Shift+f fullscreen global + bindsym $mod+Shift+f fullscreen_application toggle bindsym $mod+Ctrl+Alt+f fullscreen_application reset + # Maximize, not fullscreen + bindsym $mod+m lua $scripts/maximize.lua toggle + # Toggle the current focus between tiling and floating mode bindsym $mod+y focus mode_toggle # Toggle layout type (h<->v) bindsym $mod+Shift+y layout_transpose # Float a window - bindsym $mod+Shift+f floating toggle + bindsym $mod+Shift+space floating toggle # Toggle sticky bindsym $mod+Shift+Ctrl+a sticky toggle @@ -269,14 +284,14 @@ animations { # You can send windows there and get them back later. # Move the currently focused window to the scratchpad - bindsym $mod+Shift+z move scratchpad + #bindsym $mod+Shift+z move scratchpad # Show the next scratchpad window or hide the focused scratchpad window. # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+z scratchpad show - bindsym --no-repeat $mod+Alt+z scratchpad jump + #bindsym $mod+z scratchpad show + #bindsym --no-repeat $mod+Alt+z scratchpad jump - bindsym $mod+Ctrl+z workspace back_and_forth + #bindsym $mod+Ctrl+z workspace back_and_forth # # Mode modifiers @@ -460,10 +475,10 @@ bindsym $mod+g mode "spaces" # Utilities: # # Special keys to adjust volume via PulseAudio - bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle - bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5% - bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5% - bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle + bindsym --locked XF86AudioMute exec volsv -t + bindsym --locked XF86AudioLowerVolume exec volsv -d + bindsym --locked XF86AudioRaiseVolume exec volsv -i + bindsym --locked XF86AudioMicMute exec volsv -m # Special keys to control media via playerctl bindsym --locked XF86AudioPlay exec playerctl play-pause @@ -473,12 +488,20 @@ bindsym $mod+g mode "spaces" bindsym --locked XF86AudioStop exec playerctl stop # Special keys to adjust brightness via brightnessctl - bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%- - bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+ + bindsym --locked XF86MonBrightnessDown exec bl -d + bindsym --locked XF86MonBrightnessUp exec bl -i # Special key to take a screenshot with grim bindsym Print exec grim +# Launch lwc librewolf profile interface +bindsym $mod+Alt+w exec lwc +# Launch qbc qutebrowser profile interface +bindsym $mod+Alt+q exec qbc +# Launch dmount dmenu mount script +bindsym $mod+Alt+comma exec dmount +# Launch dmenuumount dmenu umount script +bindsym $mod+Alt+period exec dmenuumount focus_wrapping no @@ -487,6 +510,47 @@ bindgesture swipe:4:left workspace prev bindgesture swipe:4:up scale_workspace overview +# Enable window swallowing (of mpv specifically) +lua $scripts/swallow.lua + +# Scratchpads +for_window [app_id="sphtop"] move scratchpad +for_window [app_id="sphtop"] scratchpad show +bindsym $mod+Ctrl+z lua $scripts/scratchpad.lua sphtop kitty htop +for_window [app_id="spterm"] move scratchpad +for_window [app_id="spterm"] scratchpad show +bindsym $mod+Ctrl+x lua $scripts/scratchpad.lua spterm kitty +for_window [app_id="sppmxr"] move scratchpad +for_window [app_id="sppmxr"] scratchpad show +bindsym $mod+Ctrl+c lua $scripts/scratchpad.lua sppmxr kitty pulsemixer +for_window [app_id="spblue"] move scratchpad +for_window [app_id="spblue"] scratchpad show +bindsym $mod+Ctrl+v lua $scripts/scratchpad.lua spblue kitty bluetoothctl +for_window [app_id="spncmp"] move scratchpad +for_window [app_id="spncmp"] scratchpad show +bindsym $mod+Ctrl+b lua $scripts/scratchpad.lua spncmp kitty ncmpcpp +for_window [app_id="spmutt"] move scratchpad +for_window [app_id="spmutt"] scratchpad show +bindsym $mod+Ctrl+a lua $scripts/scratchpad.lua spmutt kitty neomutt +for_window [app_id="spprof"] move scratchpad +for_window [app_id="spprof"] scratchpad show +bindsym $mod+Ctrl+s lua $scripts/scratchpad.lua spprof kitty profanity +for_window [app_id="spirss"] move scratchpad +for_window [app_id="spirss"] scratchpad show +bindsym $mod+Ctrl+d lua $scripts/scratchpad.lua spirss kitty irssi +for_window [app_id="sptodo"] move scratchpad +for_window [app_id="sptodo"] scratchpad show +bindsym $mod+Ctrl+f lua $scripts/scratchpad.lua sptodo kitty todo +for_window [app_id="sptrmc"] move scratchpad +for_window [app_id="sptrmc"] scratchpad show +bindsym $mod+Ctrl+g lua $scripts/scratchpad.lua sptrmc kitty tremc +for_window [app_id="org.pipewire.Helvum"] move scratchpad +for_window [app_id="org.pipewire.Helvum"] scratchpad show +bindsym $mod+Ctrl+q lua $scripts/scratchpad.lua org.pipewire.Helvum helvum +for_window [app_id="com.github.wwmm.easyeffects"] move scratchpad +for_window [app_id="com.github.wwmm.easyeffects"] scratchpad show +bindsym $mod+Ctrl+e lua $scripts/scratchpad.lua com.github.wwmm.easyeffects easyeffects + # # Workspace rules: # @@ -499,18 +563,20 @@ bindgesture swipe:4:up scale_workspace overview # # Read `man 5 scroll-bar` for more information about this section. bar { - position top - - # When the status_command prints a new line to stdout, scrollbar updates. - # The default just shows the current date and time. - status_command while date +'%Y-%m-%d %X'; do sleep 1; done - - colors { - statusline #ffffff - background #323232 - inactive_workspace #32323200 #32323200 #5c5c5c - scroller #2F343AFF #055E20FF #FFFFFFFF - } + mode invisible + + #position top + + ## When the status_command prints a new line to stdout, scrollbar updates. + ## The default just shows the current date and time. + #status_command while date +'%Y-%m-%d %X'; do sleep 1; done + + #colors { + # statusline #ffffff + # background #323232 + # inactive_workspace #32323200 #32323200 #5c5c5c + # scroller #2F343AFF #055E20FF #FFFFFFFF + #} } # -# include /etc/scroll/config.d/* +include /etc/scroll/config.d/* diff --git a/scroll/scripts/maximize.lua b/scroll/scripts/maximize.lua new file mode 100644 index 0000000..f0df156 --- /dev/null +++ b/scroll/scripts/maximize.lua @@ -0,0 +1,42 @@ +local args, state = ... + +-- Set up views table +local views = scroll.state_get_value(state, "views") +if views == nil then + scroll.state_set_value(state, "views", {}) + views = scroll.state_get_value(state, "views") +end + +local function find_view(view) + for _, v in ipairs(views) do + if v["object"] == view then + return v + end + end + return nil +end + +if args[1] == 'toggle' then + local focused_view = scroll.focused_view() + local view = find_view(focused_view) + if view == nil then + view = { + object = focused_view, + maximized = false, + wf = 0, + hf = 0 + } + table.insert(views, view) + end + view["maximized"] = not view["maximized"] + if view["maximized"] then + local container = scroll.view_get_container(focused_view) + view["wf"] = scroll.container_get_width_fraction(container) + view["hf"] = scroll.container_get_height_fraction(container) + scroll.command(nil, "set_size h 1.0") + scroll.command(nil, "set_size v 1.0") + else + scroll.command(nil, "set_size h " .. view["wf"]) + scroll.command(nil, "set_size v " .. view["hf"]) + end +end diff --git a/scroll/scripts/scratchpad.lua b/scroll/scripts/scratchpad.lua new file mode 100644 index 0000000..6972843 --- /dev/null +++ b/scroll/scripts/scratchpad.lua @@ -0,0 +1,64 @@ +local args, _ = ... +local id = "" +local terminal = false +local command = nil + +for i, arg in ipairs(args) do + if i <= 1 then + id = arg + elseif i == 2 then + if (arg == "kitty") then + terminal = true + else + command = arg + --terminal = true + end + elseif (terminal == true) then + command = arg + break + end +end + +--scroll.command(nil, "exec notify-send \"Spawn command\" \"" .. command .. "\"") + +local function exists(id) + local is_in_array = false + local cons = scroll.scratchpad_get_containers() + for _, con in ipairs(cons) do + local views = scroll.container_get_views(con) + for _, view in ipairs(views) do + local app_id = scroll.view_get_app_id(view) + if (app_id == id) then + is_in_array = true + end + end + end + return is_in_array +end + +local function is_focused(id) + local view = scroll.focused_view() + local app_id = scroll.view_get_app_id(view) + return app_id == id +end + +local function spawn(term, comm) + if (term) then + if (comm) then + scroll.command(nil, "exec kitty --class " .. id .. " -e " .. comm) + else + scroll.command(nil, "exec kitty --class " .. id) + end + else + scroll.command(nil, "exec " .. comm) + end +end + +if (not exists(id)) then + spawn(terminal, command) +end +if (is_focused(id)) then + scroll.command(nil, "scratchpad show") +else + scroll.command(nil, "[app_id=\"" .. id .. "\"] scratchpad show") +end diff --git a/scroll/scripts/swallow.lua b/scroll/scripts/swallow.lua new file mode 100644 index 0000000..5760886 --- /dev/null +++ b/scroll/scripts/swallow.lua @@ -0,0 +1,32 @@ +local function candidate(view) + local app_id = scroll.view_get_app_id(view) + if app_id == "mpv" then + local pview = scroll.view_get_parent_view(view) + if pview ~= nil and pview ~= view then + local papp_id = scroll.view_get_app_id(pview) + if papp_id == "kitty" then + return scroll.view_get_container(pview) + end + end + end + return nil +end + +local function on_create(view, _) + local parent = candidate(view) + if parent ~= nil then + scroll.command(parent, "move scratchpad") + end +end + +local function on_destroy(view, _) + local parent = candidate(view) + if parent ~= nil then + scroll.command(nil, "scratchpad show; floating toggle") + end +end + +scroll.add_callback("view_map", on_create, nil) +scroll.add_callback("view_unmap", on_destroy, nil) + + diff --git a/waybar/config b/waybar/config index 74d0fee..77e7e6d 100644 --- a/waybar/config +++ b/waybar/config @@ -62,8 +62,8 @@ "persistent-workspaces": { "eDP-1": [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], }, - "on-scroll-up": "hyprctl dispatch split-workspace e+1", - "on-scroll-down": "hyprctl dispatch split-workspace e-1", + "on-scroll-up": "hyprctl dispatch split:workspace r+1", + "on-scroll-down": "hyprctl dispatch split:workspace r-1", "on-click": "activate" }, "sway/window": { @@ -82,7 +82,7 @@ "separate-outputs": true, "icon": true, "format": "{title}", - "espand": true, + "expand": true, }, "keyboard-state": { "numlock": true, |