diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 36 | ||||
-rw-r--r-- | X11/xresources | 2 | ||||
-rw-r--r-- | bash/.bash_logout | 2 | ||||
-rw-r--r-- | bash/.bashrc | 24 | ||||
-rw-r--r-- | hypr/hyprland.conf | 38 | ||||
-rwxr-xr-x | installers/wc | 6 | ||||
-rw-r--r-- | kitty/kitty.conf | 6 | ||||
-rw-r--r-- | niri/config.kdl | 44 | ||||
-rw-r--r-- | scroll/config | 582 | ||||
-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 | 42 | ||||
-rw-r--r-- | waybar/style.css | 7 | ||||
-rw-r--r-- | zsh/.zshrc | 3 |
16 files changed, 888 insertions, 43 deletions
@@ -237,6 +237,7 @@ RVXX EXEX.settings RVXX v2/ RVXX v2.settings SchildiChat/ +scroll/config.d/user.conf Serenity/ Session/ Shibalba EXEX.settings @@ -1,11 +1,17 @@ VIM := $(shell command -v vim 2>/dev/null) +BCONFS := bash/.bash_logout bash/.bashrc ZCONFS := zsh/zshenv zsh/zshrc SCONFS := sh/profile DCONFS := doas.conf all: -install: install-hyprplugins install-zshconfigs install-shconfigs vimplug-vim +install: install-zshconfigs install-shconfigs vimplug-vim wc + +wc: + @echo "Installing wayland compositor stuff..." + @./installers/wc + @echo "Done." install-hyprplugins: install-hyprsplit install-hyprland-plugins @@ -23,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) @@ -51,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/X11/xresources b/X11/xresources index 63f2348..13799fc 100644 --- a/X11/xresources +++ b/X11/xresources @@ -493,3 +493,5 @@ dmenu.selhiforeground: #198844 ! white *.color7: #b4b7b5 *.color15: #ffffff +Xcursor.theme: BreezeX-Black +Xcursor.size: 32 diff --git a/bash/.bash_logout b/bash/.bash_logout new file mode 100644 index 0000000..9bccd62 --- /dev/null +++ b/bash/.bash_logout @@ -0,0 +1,2 @@ +clear +reset diff --git a/bash/.bashrc b/bash/.bashrc new file mode 100644 index 0000000..600352a --- /dev/null +++ b/bash/.bashrc @@ -0,0 +1,24 @@ +# Syntax Highlighting +source /usr/share/blesh/ble.sh + +# Incorporate my SH agnostic stuff +[ -f "$XDG_CONFIG_HOME/sh/aliases" ] && source "$XDG_CONFIG_HOME/sh/aliases" +[ -f "$XDG_CONFIG_HOME/sh/functions" ] && source "$XDG_CONFIG_HOME/sh/functions" + +# History Search +bind '"\e[A": history-search-backward' +bind '"\e[B": history-search-forward' + +# History Cleaning +export HISTCONTROL="erasedups:ignorespace" + +# Run-Help Ability +run-help() { help "$READLINE_LINE" 2>/dev/null || man "$READLINE_LINE"; } +bind -m vi-insert -x '"\eh": run-help' +bind -m emacs -x '"\eh": run-help' + +# CD when typing directory name +shopt -s autocd + +# Set my prompt +export PS1='\e[42m[\u@\H]\e[46\w\e[42m\$\e(B\e[m ' diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index f3a9393..ba1f623 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,7 @@ 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)$ #}}} #{{{ Mods @@ -239,12 +238,12 @@ $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+CTRL, H, layoutmsg, movewindowto l #HYPRSCROLLING +bind = $mainMod+CTRL, 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, 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 @@ -253,6 +252,12 @@ bind = $mainMod+SHIFT, R, layoutmsg, colresize +conf #HYPRSCROLLING bind = $mainMod+SHIFT, Return, layoutmsg, promote #HYPRSCROLLING #}}} +#{{{ tab binds +bind = $mainMod+ALT, O, togglegroup +bind = $mainMod+ALT, J, changegroupactive, f +bind = $mainMod+ALT, K, changegroupactive, b +#}}} + #{{{ Group binds # Group binds #bind = $mainMod CONTROL, G, togglegroup, @@ -372,8 +377,9 @@ submap = reset #}}} #{{{ Menu bindings -bind = $mainMod, R, exec, sh -c "tofi-drun --drun-launch=true -c $HOME/.config/tofi/themes/dmenu_vertical" +bind = $mainMod, E, exec, sh -c "tofi-drun --drun-launch=true -c $HOME/.config/tofi/themes/dmenu_vertical" bind = $mainMod, D, exec, sh -c "$(tofi-run -c $HOME/.config/tofi/themes/dmenu_vertical)" +bind = $mainMod, R, exec, rs bind = $mainMod $secdMod, Q, exec, qbc bind = $mainMod $secdMod, W, exec, lwc bind = $mainMod $secdMod, E, exec, mbc 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/kitty/kitty.conf b/kitty/kitty.conf index 59a7f5e..095607b 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -1151,7 +1151,7 @@ color8 #969896 #: black color1 #89231d -color9 #ec0101 +color9 #cc342b #: red @@ -1170,8 +1170,8 @@ color12 #3971ed #: blue -color5 #6e3c85 -color13 #8400c1 +color5 #784e93 +color13 #a36ac7 #: magenta diff --git a/niri/config.kdl b/niri/config.kdl index 9971a8d..16e8c11 100644 --- a/niri/config.kdl +++ b/niri/config.kdl @@ -15,6 +15,8 @@ input { // For example: // layout "us,ru" // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" + layout "us" + options "caps:escape" } // Enable numlock on startup, omitting this setting disables it. @@ -69,9 +71,9 @@ input { // Find more information on the wiki: // https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs // Remember to uncomment the node by removing "/-"! -output "eDP-1" { +/-output "eDP-1" { // Uncomment this line to disable this output. - // off + //off // Resolution and, optionally, refresh rate of the output. // The format is "<width>x<height>" or "<width>x<height>@<refresh rate>". @@ -100,6 +102,20 @@ output "eDP-1" { position x=0 y=0 } +/-output "DP-2" { + mode "1920x1080@75.000" + scale 1 + transform "normal" + position x=0 y=0 +} + +/-output "HDMI-A-1" { + mode "1920x1080@75.000" + scale 1 + transform "normal" + position x=1920 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 @@ -115,7 +131,7 @@ layout { // together with the previously focused column. center-focused-column "never" - // You can customize the widths that "switch-preset-column-width" (Mod+E) toggles between. + // 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. @@ -128,7 +144,7 @@ layout { // fixed 1920 } - // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+E) toggles between. + // 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. @@ -189,8 +205,8 @@ layout { off width 4 - active-color "#ffc87f" - inactive-color "#505050" + active-color "#198844" + inactive-color "#1b1d1c" // Color of the border around windows that request your attention. urgent-color "#9b0000" @@ -255,10 +271,15 @@ layout { // See the binds section below for more spawn examples. // This line starts waybar, a commonly used bar for Wayland compositors. -spawn-at-startup "dinit" -spawn-at-startup "waybar" "-c" "~/.config/waybar/config-niri" -//spawn-at-startup "swaybg" "-i" "~/Pictures/background.png" -//spawn-at-startup "swayidle" +spawn-at-startup "waybar" +spawn-at-startup "hyprpaper" +spawn-at-startup "hypridle" +spawn-at-startup "dunst" +spawn-at-startup "xwayland-satellite" + +environment { + DISPLAY ":0" +} // 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. @@ -585,4 +606,7 @@ binds { // 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; } + + // Browsers + Super+Alt+W { spawn "lwc"; } } diff --git a/scroll/config b/scroll/config new file mode 100644 index 0000000..e689a61 --- /dev/null +++ b/scroll/config @@ -0,0 +1,582 @@ +# vim: ft=swayconfig +# +# Default config for scroll +# +# Copy this to ~/.config/scroll/config and edit it to your liking. +# +# Read `man 5 scroll` for a complete reference. + +include ~/.config/scroll/config.d/* + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 +# Home row direction keys, like vim +set $left Left +set $down Down +set $up Up +set $right Right +# Your preferred terminal emulator +set $term kitty +# Your preferred application launcher +set $rmenu tofi-drun --drun-launch=true -c ~/.config/tofi/themes/dmenu_vertical +set $dmenu dmenu_run -l 15 +# Your preferred file manager +set $filemanager kitty -e lf + +# The scripts directory +set $scripts $home/.config/scroll/scripts + +exec waybar +exec hypridle +exec hyprpaper + +### Output configuration +# +# Default wallpaper (more resolutions are available in /usr/share/backgrounds/scroll/) +# output * bg /usr/share/backgrounds/scroll/Sway_Wallpaper_Blue_1920x1080.png fill +# +# Example configuration: +# +# output HDMI-A-1 resolution 1920x1080 position 1920,0 +# +# 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: +# +# exec swayidle -w \ +# timeout 300 'swaylock -f -c 000000' \ +# timeout 600 'scrollmsg "output * power off"' resume 'scrollmsg "output * power on"' \ +# before-sleep 'swaylock -f -c 000000' +# +# This will lock your screen after 300 seconds of inactivity, then turn off +# your displays after another 300 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. + +### Input configuration +# +# Example configuration: +# +# input type:touchpad { +# dwt enabled +# tap enabled +# natural_scroll enabled +# middle_emulation enabled +# } +# +# input type:keyboard { +# xkb_layout "eu" +# } +# +# You can also configure each device individually. +# Read `man 5 scroll-input` for more information about this section. + +### Windows defaults +default_border pixel 2 +gaps inner 4 +gaps outer 20 +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 + +# Layout settings +layout_default_width 0.5 +layout_default_height 1.0 +layout_widths [0.33333333 0.5 0.666666667 1.0] +layout_heights [0.33333333 0.5 0.666666667 1.0] + +fullscreen_movefocus true + +mouse_warping none + +# Animations +animations { + enabled yes + 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 +# +# Basics: +# + # Start a terminal + bindsym $mod+Return exec $term + + # Kill focused window + bindsym $mod+Backspace kill + bindsym $mod+Shift+Backspace kill unfocused + bindsym $mod+Ctrl+Backspace kill all + + # Start your launcher + bindsym $mod+e exec $rmenu + bindsym $mod+d exec $dmenu + + # 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. + # Despite the name, also works for non-floating windows. + # Change normal to inverse to use left mouse button for resizing and right + # mouse button for dragging. + floating_modifier $mod normal + + # Reload the configuration file + bindsym $mod+Shift+c reload + + # Closes the active application (hopefully) + 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' + + # Layout mode + bindsym $mod+bracketleft set_mode h + bindsym $mod+bracketright set_mode v +# +# Moving around: +# + # Move your focus around + bindsym $mod+h focus left + bindsym $mod+j focus down + bindsym $mod+k focus up + bindsym $mod+l focus right + bindsym $mod+home focus beginning + bindsym $mod+end focus end + # Move the focused window with the same, but add Ctrl + bindsym $mod+Ctrl+h move left + bindsym $mod+Ctrl+j move down + bindsym $mod+Ctrl+k move up + bindsym $mod+Ctrl+l move right + bindsym $mod+Ctrl+home move beginning + bindsym $mod+Ctrl+end move end + # nomode + bindsym $mod+Alt+h move left nomode + bindsym $mod+Alt+j move down nomode + bindsym $mod+Alt+k move up nomode + bindsym $mod+Alt+l move right nomode + bindsym $mod+Alt+home move beginning nomode + bindsym $mod+Alt+end move end nomode + + # Focus other monitors + bindsym $mod+Shift+h focus output left + bindsym $mod+Shift+j focus output down + bindsym $mod+Shift+k focus output up + bindsym $mod+Shift+l focus output right +# +# Workspaces: +# + # Switch to workspace + bindsym $mod+1 workspace number 1 + bindsym $mod+2 workspace number 2 + bindsym $mod+3 workspace number 3 + bindsym $mod+4 workspace number 4 + bindsym $mod+5 workspace number 5 + bindsym $mod+6 workspace number 6 + bindsym $mod+7 workspace number 7 + bindsym $mod+8 workspace number 8 + bindsym $mod+9 workspace number 9 + # 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 + bindsym $mod+Shift+3 move container to workspace number 3; workspace number 3 + bindsym $mod+Shift+4 move container to workspace number 4; workspace number 4 + bindsym $mod+Shift+5 move container to workspace number 5; workspace number 5 + bindsym $mod+Shift+6 move container to workspace number 6; workspace number 6 + 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 + # Note: workspaces can have any name you want, not just numbers. + # We just use 1-10 as the default. + + 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 + bindsym $mod+Shift+comma scale_workspace incr -0.05 + bindsym --whole-window $mod+Shift+button4 scale_workspace incr -0.05 + bindsym $mod+Shift+period scale_workspace incr 0.05 + bindsym --whole-window $mod+Shift+button5 scale_workspace incr 0.05 + bindsym $mod+Shift+Ctrl+period scale_workspace reset + + # Overview + bindsym --no-repeat $mod+tab scale_workspace overview + bindsym --whole-window button8 scale_workspace overview + + # Jump + # jump_labels_color #9e1530FF + # jump_labels_background #15309eFF + # jump_labels_scale 0.9 + # jump_labels_keys asdf + bindsym --no-repeat $mod+slash jump + bindsym --no-repeat $mod+Shift+slash jump container + bindsym --no-repeat $mod+Ctrl+slash jump workspaces + bindsym --no-repeat $mod+Alt+slash jump floating + + # Content + bindsym $mod+comma scale_content incr -0.05 + bindsym --whole-window $mod+button4 scale_content incr -0.05 + bindsym $mod+period scale_content incr 0.05 + bindsym --whole-window $mod+button5 scale_content incr 0.05 + bindsym $mod+Ctrl+period scale_content reset + +# +# Layout stuff: +# + # Make the current focus fullscreen + bindsym $mod+f fullscreen + #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+space floating toggle + + # Toggle sticky + bindsym $mod+Shift+Ctrl+a sticky toggle + # Toggle pin + bindsym --no-repeat $mod+a pin beginning + bindsym --no-repeat $mod+Shift+a pin end + + # Selection + bindsym --no-repeat $mod+Insert selection toggle + bindsym --no-repeat $mod+Ctrl+Insert selection reset + bindsym --no-repeat $mod+Shift+Insert selection move + bindsym --no-repeat $mod+Ctrl+Shift+Insert selection workspace + bindsym --no-repeat $mod+Alt+Insert selection to_trail + + # Marks + # bindsym $mod+m exec scroll-mark-toggle.sh + # bindsym $mod+Shift+m exec scroll-mark-remove.sh + # bindsym $mod+apostrophe exec scroll-mark-switch.sh + +# +# Scratchpad: +# + # Scroll has a "scratchpad", which is a bag of holding for windows. + # You can send windows there and get them back later. + + # Move the currently focused window to the 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+Ctrl+z workspace back_and_forth + +# +# Mode modifiers +# +mode "modifiers" { + bindsym $right set_mode after; mode default + bindsym $left set_mode before; mode default + bindsym home set_mode beginning; mode default + bindsym end set_mode end; mode default + bindsym $up set_mode focus; mode default + bindsym $down set_mode nofocus; mode default + bindsym h set_mode center_horiz; mode default + bindsym Shift+h set_mode nocenter_horiz; mode default + bindsym v set_mode center_vert; mode default + bindsym Shift+v set_mode nocenter_vert; mode default + bindsym r set_mode reorder_auto; mode default + bindsym Shift+r set_mode noreorder_auto; mode default + + # Return to default mode + bindsym Escape mode "default" +} +bindsym $mod+backslash mode "modifiers" + +# +# Resizing containers: +# +bindsym $mod+minus cycle_size h prev +bindsym $mod+equal cycle_size h next +bindsym $mod+Shift+minus cycle_size v prev +bindsym $mod+Shift+equal cycle_size v next + +mode "setsizeh" { + bindsym 1 set_size h 0.125; mode default + bindsym 2 set_size h 0.1666666667; mode default + bindsym 3 set_size h 0.25; mode default + bindsym 4 set_size h 0.333333333; mode default + bindsym 5 set_size h 0.375; mode default + bindsym 6 set_size h 0.5; mode default + bindsym 7 set_size h 0.625; mode default + bindsym 8 set_size h 0.6666666667; mode default + bindsym 9 set_size h 0.75; mode default + bindsym 0 set_size h 0.833333333; mode default + bindsym minus set_size h 0.875; mode default + bindsym equal set_size h 1.0; mode default + + # Return to default mode + bindsym Escape mode "default" +} +bindsym $mod+b mode "setsizeh" + +mode "setsizev" { + bindsym 1 set_size v 0.125; mode default + bindsym 2 set_size v 0.1666666667; mode default + bindsym 3 set_size v 0.25; mode default + bindsym 4 set_size v 0.333333333; mode default + bindsym 5 set_size v 0.375; mode default + bindsym 6 set_size v 0.5; mode default + bindsym 7 set_size v 0.625; mode default + bindsym 8 set_size v 0.6666666667; mode default + bindsym 9 set_size v 0.75; mode default + bindsym 0 set_size v 0.833333333; mode default + bindsym minus set_size v 0.875; mode default + bindsym equal set_size v 1.0; mode default + + # Return to default mode + bindsym Escape mode "default" +} +bindsym $mod+Shift+b mode "setsizev" + +mode "resize" { + # left will shrink the containers width + # right will grow the containers width + # up will shrink the containers height + # down will grow the containers height + bindsym $left resize shrink width 100px + bindsym $down resize grow height 100px + bindsym $up resize shrink height 100px + bindsym $right resize grow width 100px + + # Return to default mode + bindsym Escape mode "default" +} +bindsym $mod+Shift+r mode "resize" + +mode "align" { + bindsym c align center; mode default + bindsym m align middle; mode default + bindsym r align reset; mode default + bindsym $left align left; mode default + bindsym $right align right; mode default + bindsym $up align up; mode default + bindsym $down align down; mode default + bindsym Escape mode "default" +} +bindsym $mod+c mode "align" + +mode "fit_size" { + bindsym w fit_size h visible proportional; mode default + bindsym Shift+w fit_size v visible proportional; mode default + bindsym Ctrl+w fit_size h visible equal; mode default + bindsym Ctrl+Shift+w fit_size v visible equal; mode default + + bindsym $right fit_size h toend proportional; mode default + bindsym Shift+$right fit_size v toend proportional; mode default + bindsym Ctrl+$right fit_size h toend equal; mode default + bindsym Ctrl+Shift+$right fit_size v toend equal; mode default + + bindsym $left fit_size h tobeg proportional; mode default + bindsym Shift+$left fit_size v tobeg proportional; mode default + bindsym Ctrl+$left fit_size h tobeg equal; mode default + bindsym Ctrl+Shift+$left fit_size v tobeg equal; mode default + + bindsym $up fit_size h active proportional; mode default + bindsym Shift+$up fit_size v active proportional; mode default + #bindsym Ctrl+$up fit_size h active equal; mode default + #bindsym Ctrl+Shift+$up fit_size v active equal; mode default + + bindsym $down fit_size h all proportional; mode default + bindsym Shift+$down fit_size v all proportional; mode default + bindsym Ctrl+$down fit_size h all equal; mode default + bindsym Ctrl+Shift+$down fit_size v all equal; mode default + bindsym Escape mode "default" +} +bindsym $mod+w mode "fit_size" + +mode "trailmark" { + bindsym bracketright trailmark next + bindsym bracketleft trailmark prev + bindsym semicolon trailmark toggle; mode default + bindsym Escape mode "default" +} +bindsym $mod+semicolon mode "trailmark" + +mode "trail" { + bindsym bracketright trail next + bindsym bracketleft trail prev + bindsym semicolon trail new; mode default + bindsym d trail delete; mode default + bindsym c trail clear; mode default + bindsym insert trail to_selection; mode default + bindsym Escape mode "default" +} +bindsym $mod+Shift+semicolon mode "trail" + +mode "spaces" { + bindsym 1 space load 1; mode default + bindsym 2 space load 2; mode default + bindsym 3 space load 3; mode default + bindsym 4 space load 4; mode default + bindsym 5 space load 5; mode default + bindsym 6 space load 6; mode default + bindsym 7 space load 7; mode default + bindsym 8 space load 8; mode default + bindsym 9 space load 9; mode default + bindsym 0 space load 0; mode default + bindsym Shift+1 space save 1; mode default + bindsym Shift+2 space save 2; mode default + bindsym Shift+3 space save 3; mode default + bindsym Shift+4 space save 4; mode default + bindsym Shift+5 space save 5; mode default + bindsym Shift+6 space save 6; mode default + bindsym Shift+7 space save 7; mode default + bindsym Shift+8 space save 8; mode default + bindsym Shift+9 space save 9; mode default + bindsym Shift+0 space save 0; mode default + bindsym Ctrl+1 space restore 1; mode default + bindsym Ctrl+2 space restore 2; mode default + bindsym Ctrl+3 space restore 3; mode default + bindsym Ctrl+4 space restore 4; mode default + bindsym Ctrl+5 space restore 5; mode default + bindsym Ctrl+6 space restore 6; mode default + bindsym Ctrl+7 space restore 7; mode default + bindsym Ctrl+8 space restore 8; mode default + bindsym Ctrl+9 space restore 9; mode default + bindsym Ctrl+0 space restore 0; mode default + bindsym Escape mode "default" +} +bindsym $mod+g mode "spaces" + +# +# Utilities: +# + # Special keys to adjust volume via PulseAudio + 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 + bindsym --locked XF86AudioPause exec playerctl play-pause + bindsym --locked XF86AudioPrev exec playerctl previous + bindsym --locked XF86AudioNext exec playerctl next + bindsym --locked XF86AudioStop exec playerctl stop + + # Special keys to adjust brightness via brightnessctl + 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 + +bindgesture swipe:4:right workspace next +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: +# +# Opens a terminal when creating workspace 6 +# workspace 6 exec kitty + + +# +# Status Bar: +# +# Read `man 5 scroll-bar` for more information about this section. +bar { + 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/* 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 26b3f75..77e7e6d 100644 --- a/waybar/config +++ b/waybar/config @@ -15,6 +15,26 @@ // Modules configuration + "sway/workspaces": { + "all-outputs": false, + "persistent-workspaces": { + "1": ["eDP-1"], + "2": ["eDP-1"], + "3": ["eDP-1"], + "4": ["eDP-1"], + "5": ["eDP-1"], + "6": ["eDP-1"], + "7": ["eDP-1"], + "8": ["eDP-1"], + "9": ["eDP-1"], + }, + "format": "{value}", + }, + "niri/workspaces": { + "format": "{value}", + "all-outputs": false, + "on-click": "activate" + }, "hyprland/workspaces": { "format": "{icon}", "active-only": false, @@ -42,13 +62,27 @@ "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": { + "separate-outputs": true, + "icon": true, + "format": "{title}", + "expand": true + }, + "niri/window": { + "separate-outputs": true, + "icon": true, + "format": "{title}", + "expand": true + }, "hyprland/window": { "separate-outputs": true, - "format": "{}" + "icon": true, + "format": "{title}", + "expand": true, }, "keyboard-state": { "numlock": true, @@ -144,7 +178,7 @@ "scroll-step": 0.1 }, "custom/launcher":{ - "format": ">", + "format": ">_", "on-click": "rofi -show drun", //"on-click-right": "killall rofi" }, diff --git a/waybar/style.css b/waybar/style.css index fefb890..9398381 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -56,6 +56,10 @@ window#waybar.hidden { background: #198844; } +#workspaces button.focused { + background: #198844; +} + /* #workspaces button.active:hover { background: #6e3c85; @@ -278,7 +282,8 @@ label:focus { } #tray { - background-color: transparent; + border-radius: 20px; + background-color: black; color: #ffffff; } @@ -120,5 +120,6 @@ bindkey -M vicmd "k" history-substring-search-up bindkey -M vicmd "j" history-substring-search-down #source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh -zinit light zsh-users/zsh-syntax-highlighting +zinit light 'zsh-users/zsh-syntax-highlighting' +zinit ice wait atload'_history_substring_search_config' #zprof |