diff options
72 files changed, 2841 insertions, 1081 deletions
@@ -1,3 +1,4 @@ +@companion-app/ 5DB5/ 5db5/ abook/ @@ -27,6 +28,7 @@ calibre/ calibre/conversion carla/ cava/ +CCL Cross-platform Framework/ cef_user_data .charles.config chromium/ @@ -52,6 +54,7 @@ Element/ emacs/ EmeraldWallet/ enchant/ +enigma/ Epic/ Etherdyne/ evolution/ @@ -111,6 +114,7 @@ kde.org/ keepassxc/ khal/ kicad/ +kid3rc Kitware/ kritadisplayrc kritarc @@ -121,6 +125,7 @@ lbry/ LBRY/ LBRY-GTK/ lbry-viewer/ +libaccounts-glib/ libfm/ libreoffice/ LibrePCB/ @@ -165,7 +170,7 @@ notmuch/ npm/ nssdb/ NuGet/ -nvim/plugged/ +nvim/lazy-lock.json nwg-look/ nwg-outputs/ obs-studio/ @@ -174,6 +179,7 @@ okularpartrc okularrc openrazer/ package-lock.json +parallel/ pavucontrol.ini pcmanfm/ pcmanfm-qt/ @@ -193,6 +199,7 @@ Portmaster/ PreSonus/ print-manager/ profanity/profrc +Proton/ Proton AG/ protonfixes/ protonmail/ @@ -230,6 +237,7 @@ RVXX EXEX.settings RVXX v2/ RVXX v2.settings SchildiChat/ +scroll/config.d/user.conf Serenity/ Session/ Shibalba EXEX.settings @@ -238,6 +246,7 @@ SNAPSHOT PLAYER/ snownews/urls.opml solaar/ sonobus/ +spicy/ spotifyd/ spotify-tui/ straw-viewer/ @@ -263,6 +272,7 @@ transmission-daemon/ tremc/ Trolltech.conf .tsrc +tuxclocker.conf ubports-installer/ ultravnc-viewer/ UNDERTALE*/ @@ -280,6 +290,7 @@ waybar/config-Hyprland-* waybar/config-river-* weechat/ whoozle.github.io/ +wireshark/ xmonad/.stack-work xmonad/stack.yaml.lock xmonad/xmonad.hi @@ -299,4 +310,5 @@ zsh/hist zsh/.zcompdump zsh/zcompdump zsh/zfunc +zsh/.zkbd/ zsh/.zsh_theme @@ -1,19 +1,54 @@ VIM := $(shell command -v vim 2>/dev/null) -NVIM := $(shell command -v nvim 2>/dev/null) +BCONFS := bash/.bash_logout bash/.bashrc ZCONFS := zsh/zshenv zsh/zshrc SCONFS := sh/profile DCONFS := doas.conf all: -install: install-zshconfigs install-shconfigs vimplug-vim vimplug-nvim +install: install-zshconfigs install-shconfigs vimplug-vim wc -install-zshconfigs: $(ZCONFS) - @echo "Installing zsh conf files..." - @echo ".zshenv..." - @ln -sf `pwd`/zsh/zshenv ~/.zshenv - @echo ".zshrc..." - @ln -sf `pwd`/zsh/zshrc ~/.zshrc +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!" + @echo "Enabling hyprsplit..." + @hyprpm enable hyprsplit + @echo "Done." + +install-hyprland-plugins: + @echo "Installing hyprland-plugins..." + @hyprpm add https://github.com/hyprwm/hyprland-plugins || echo "Already installed!" + @echo "Enabling hyprscrolling..." + @hyprpm enable hyprscrolling + @echo "Done." + +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) @@ -30,17 +65,10 @@ else @echo "vim not installed." endif -vimplug-nvim: installers/vimplug_nvim.sh -ifdef NVIM - @echo "Installing vim-plug for nvim..." - @$(shell installers/vimplug_nvim.sh) - @echo "Done." -else - @echo "nvim not installed." -endif - doas-conf: $(DCONFS) @echo "Installing doas config files..." @echo "doas.conf..." @sudo cp -n doas.conf /etc/doas.conf @echo "Done." + +.PHONY: install-hyprplugins install-zshconfigs install-shconfigs vimplug-vim doas-conf install install-scrollconf install-bashconfigs @@ -16,7 +16,7 @@ make install` Note that the `make install` will only install the files that are required to be in the home dir to their corresponding place as hard links and install vimplug -for neovim, vim, or both (depending on which are installed). Make sure to save -changes to these files before running `make install`! Additionally, if you only -want my configs for specific programs, I would recommend cloning it into a -separate directory and avoiding the `make install`. +for vim if it is installed. Make sure to save changes to these files before +running `make install`! Additionally, if you only want my configs for specific +programs, I would recommend cloning it into a separate directory and avoiding +the `make install`. diff --git a/X11/xinitrc b/X11/xinitrc index 534bfc6..e949fbc 100755 --- a/X11/xinitrc +++ b/X11/xinitrc @@ -1,5 +1,10 @@ #!/bin/sh [ -x ~/.screenlayout/layout.sh ] && ~/.screenlayout/layout.sh +xwallpaper --zoom ~/Pictures/background.png & +picom & setxkbmap -option "caps:escape" & -xrdb ~/.Xresources -exec awesome +systemctl --user start dunst & +sxhkd & +xss-lock slockd & +xrdb ~/.config/X11/xresources +exec dwm diff --git a/X11/xresources b/X11/xresources index d5c4550..2624d72 100644 --- a/X11/xresources +++ b/X11/xresources @@ -1,6 +1,13 @@ !! dmenu -dmenu.font: mononoki Nerd Font Mono:size=24 +dmenu.font: JetBrainsMono Nerd Font:size=15 + +dmenu.selbackground: #198844 +dmenu.selforeground: #000000 +dmenu.hibackground: #000000 +dmenu.hiforeground: #39c1ed +dmenu.selhibackground: #198844 +dmenu.selhiforeground: #39c1ed !! dwm @@ -30,7 +37,7 @@ st.termname: st-256color st.shell: /usr/bin/tmux ! The following options options can be reloaded via USR1 signal. -!st.font: mononoki Nerd Font Mono:pixelsize=12:antialias=true:autohint=true; +!st.font: JetBrainsMono Nerd Font:pixelsize=12:antialias=true:autohint=true; !st.font2: Symbola:pixelsize=12:antialias=true:autohint=true; st.borderpx: 3 ! st alpha @@ -76,7 +83,7 @@ URxvt.secondaryScreen: 1 URxvt.secondaryScroll: 0 URxvt.secondaryWheel: 1 ! URxvt font -URxvt.font: xft:Fira Code:regular:size=8,xft:symbola:regular:size=9 +URxvt.font: xft:JetBrainsMono:regular:size=8,xft:symbola:regular:size=9 ! fix font spacing URxvt.letterSpace: -1 ! Disable printing @@ -119,7 +126,7 @@ rofi.width: 1366 ! "Number of columns" Set from: Default ! rofi.columns: 1 ! "Font to use" Set from: Default -rofi.font: mononoki 9 +rofi.font: JetBrainsMono 9 ! "Border width" Set from: Default ! rofi.bw: 1 ! "Location on screen" Set from: Default @@ -413,54 +420,11 @@ rofi.color-window: #1d1f21, #101010, #000000 ! "Accept hovered row with custom action" Set from: Default ! rofi.me-accept-custom: Control+MouseDPrimary -!! special -!*.foreground: #c5c8c6 -!*.background: #1d1f21 -!*.cursorColor: #c5c8c6 -! -!! black -!*.color0: #282a2e -!*.color8: #373b41 -! -!! red -!*.color1: #a54242 -!*.color9: #cc6666 -! -!! green -!*.color2: #8c9440 -!*.color10: #b5bd68 -! -!! yellow -!*.color3: #de935f -!*.color11: #f0c674 -! -!! blue -!*.color4: #5f819d -!*.color12: #81a2be -! -!! magenta -!*.color5: #85678f -!*.color13: #b294bb -! -!! cyan -!*.color6: #5e8d87 -!*.color14: #8abeb7 -! -!! white -!*.color7: #707880 -!*.color15: #c5c8c6 -! -!! special +! special *.foreground: #c5c8c6 *.background: #000000 *.cursorColor: #c5c8c6 *.reverseCursor: #333536 -dmenu.selbackground: #39c1ed -dmenu.selforeground: #000000 -dmenu.hibackground: #000000 -dmenu.hiforeground: #198844 -dmenu.selhibackground: #39c1ed -dmenu.selhiforeground: #198844 ! black *.color0: #1b1d1c @@ -493,3 +457,5 @@ dmenu.selhiforeground: #198844 ! white *.color7: #b4b7b5 *.color15: #ffffff +Xcursor.theme: BreezeX-Black +Xcursor.size: 32 diff --git a/X11/xserverrc b/X11/xserverrc new file mode 100755 index 0000000..c96ab6d --- /dev/null +++ b/X11/xserverrc @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/bin/Xorg -nolisten tcp "$@" vt$XDG_VTNR diff --git a/alacritty/alacritty.yml b/alacritty/alacritty.yml index 25af5d4..0b30805 100644 --- a/alacritty/alacritty.yml +++ b/alacritty/alacritty.yml @@ -115,7 +115,7 @@ font: # - (macOS) Menlo # - (Linux/BSD) monospace # - (Windows) Consolas - family: mononoki Nerd Font Mono + family: JetBrainsMono Nerd Font # The `style` can be specified to pick a specific face. style: Regular @@ -126,7 +126,7 @@ font: # # If the bold family is not specified, it will fall back to the # value specified for the normal font. - family: mononoki Nerd Font Mono + family: JetBrainsMono Nerd Font # The `style` can be specified to pick a specific face. style: Bold @@ -137,7 +137,7 @@ font: # # If the italic family is not specified, it will fall back to the # value specified for the normal font. - family: mononoki Nerd Font Mono + family: JetBrainsMono Nerd Font # The `style` can be specified to pick a specific face. style: Italic @@ -148,7 +148,7 @@ font: # # If the bold italic family is not specified, it will fall back to the # value specified for the normal font. - family: mononoki Nerd Font Mono + family: JetBrainsMono Nerd Font # The `style` can be specified to pick a specific face. style: Bold Italic diff --git a/awesome/rc.lua b/awesome/rc.lua index a5605d1..7fa49ef 100644 --- a/awesome/rc.lua +++ b/awesome/rc.lua @@ -58,7 +58,7 @@ awesome_config_folder = config_dir .. "awesome" theme.dir = string.format("%s/awesome/themes/%s", config_dir, theme.name) beautiful.init(theme.dir .. "/theme.lua") beautiful.useless_gap = 5 -font = beautiful.font or "mononoki Nerd Font Mono 18" +font = beautiful.font or "JetBrainsMono Nerd Font 18" -- Library I'm using for swallowing, but it does much more diff --git a/awesome/themes/zachir/theme.lua b/awesome/themes/zachir/theme.lua index bef4f5c..30a575a 100644 --- a/awesome/themes/zachir/theme.lua +++ b/awesome/themes/zachir/theme.lua @@ -12,8 +12,8 @@ local themes_path = gfs.get_themes_dir() local theme = {} -theme.font = "mononoki Nerd Font Mono 18" -theme.font2 = "mononoki Nerd Font Mono 12" +theme.font = "JetBrainsMono Nerd Font 18" +theme.font2 = "JetBrainsMono Nerd Font 12" theme.bg_normal = xrdb.background theme.bg_focus = xrdb.color2 @@ -162,7 +162,7 @@ theme.tabbar_disable = false -- disable the tab bar entirely theme.tabbar_ontop = false theme.tabbar_radius = 0 -- border radius of the tabbar theme.tabbar_style = "default" -- style of the tabbar ("default", "boxes" or "modern") -theme.tabbar_font = "mononoki Nerd Font Mono 24" -- font of the tabbar +theme.tabbar_font = "JetBrainsMono Nerd Font 24" -- font of the tabbar theme.tabbar_size = 40 -- size of the tabbar theme.tabbar_position = "top" -- position of the tabbar theme.tabbar_bg_normal = "#000000" -- background color of the focused client on the tabbar 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/darkman/config.yaml b/darkman/config.yaml deleted file mode 100644 index 5cf7ee4..0000000 --- a/darkman/config.yaml +++ /dev/null @@ -1,3 +0,0 @@ -usegeoclue: false -dbusserver: true -portal: true @@ -12,6 +12,7 @@ permit nopass :wheel cmd pacman permit nopass :wheel cmd cryptsetup permit nopass :wheel cmd systemctl permit setenv { EDITOR } :wheel cmd visudo args +permit setenv { EDITOR } :wheel cmd vidoas args permit setenv { EDITOR } :wheel cmd vimv permit nopass keepenv zachir as zachir diff --git a/dunst/dunstrc b/dunst/dunstrc index 403ffca..6377f26 100644 --- a/dunst/dunstrc +++ b/dunst/dunstrc @@ -86,7 +86,7 @@ ### Text ### - font = mononoki Nerd Font Mono 18 + font = JetBrainsMono Nerd Font 18 # The spacing between lines. If the height is smaller than the # font height, it will get raised to the font height. diff --git a/dwm/autostart.sh b/dwm/autostart.sh new file mode 100755 index 0000000..07f82d1 --- /dev/null +++ b/dwm/autostart.sh @@ -0,0 +1,2 @@ +#!/bin/sh +pgrep -x slstatus || slstatus diff --git a/firejail/mpv.profile b/firejail/mpv.profile new file mode 100644 index 0000000..8ac7ccc --- /dev/null +++ b/firejail/mpv.profile @@ -0,0 +1,2 @@ +whitelist ~/.cache +include /etc/firejail/mpv.profile diff --git a/firejail/neomutt.profile b/firejail/neomutt.profile new file mode 100644 index 0000000..b8fa362 --- /dev/null +++ b/firejail/neomutt.profile @@ -0,0 +1,2 @@ +whitelist /usr/share/mutt-wizard +include /etc/firejail/mpv.profile diff --git a/gtk-2.0/gtkrc b/gtk-2.0/gtkrc index 8c1d035..42f1844 100644 --- a/gtk-2.0/gtkrc +++ b/gtk-2.0/gtkrc @@ -1,12 +1,13 @@ # DO NOT EDIT! This file will be overwritten by nwg-look. # Any customization should be done in ~/.gtkrc-2.0.mine instead. +include "/home/zachir/.gtkrc-2.0.mine" gtk-theme-name="Flat-Remix-GTK-Green-Darkest" -gtk-icon-theme-name="Cosmic" -gtk-font-name="Cantarell 11" +gtk-icon-theme-name="Papirus-Dark" +gtk-font-name="Noto Sans, 10" gtk-cursor-theme-name="BreezeX-Black" -gtk-cursor-theme-size=36 -gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-cursor-theme-size=32 +gtk-toolbar-style=3 gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-button-images=0 gtk-menu-images=0 diff --git a/gtk-3.0/settings.ini b/gtk-3.0/settings.ini index 85d3ba5..809e192 100644 --- a/gtk-3.0/settings.ini +++ b/gtk-3.0/settings.ini @@ -1,10 +1,10 @@ [Settings] gtk-theme-name=Flat-Remix-GTK-Green-Darkest -gtk-icon-theme-name=Cosmic -gtk-font-name=Cantarell 11 +gtk-icon-theme-name=Papirus-Dark +gtk-font-name=Noto Sans, 10 gtk-cursor-theme-name=BreezeX-Black gtk-cursor-theme-size=32 -gtk-toolbar-style=GTK_TOOLBAR_ICONS +gtk-toolbar-style=3 gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-button-images=0 gtk-menu-images=0 @@ -14,4 +14,10 @@ gtk-xft-antialias=1 gtk-xft-hinting=1 gtk-xft-hintstyle=hintslight gtk-xft-rgba=rgb -gtk-application-prefer-dark-theme=0 +gtk-application-prefer-dark-theme=1 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-xft-dpi=98304 diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf index f25f081..3a58aea 100644 --- a/hypr/hypridle.conf +++ b/hypr/hypridle.conf @@ -6,14 +6,14 @@ general { listener { timeout = 150 # 2.5min. - on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-timeout = brightnessctl set 1 # set monitor backlight to minimum, avoid 0 on OLED monitor. on-resume = brightnessctl -r # monitor backlight restore. } # turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. listener { timeout = 150 # 2.5min. - on-timeout = brightnessctl -sd led::kbd_backlight set 0 # turn off keyboard backlight. + on-timeout = brightnessctl -d led::kbd_backlight set 0 # turn off keyboard backlight. on-resume = brightnessctl -rd led::kbd_backlight # turn on keyboard backlight. } diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 8412f87..e51704d 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,32 +1,37 @@ # See https://wiki.hyprland.org/Configuring/Monitors/ #{{{ Monitor config -monitor = eDP-1, 1920x1080@60, 0x0, 1 -monitor = , preferred, auto, 1 +monitor = DP-2, 1920x1080@75, 0x0, 1 monitor = HDMI-A-1, 1920x1080@75, 1920x0, 1 -monitor = DP-1, 1920x1080@60, 0x0, 1 +#monitor = eDP-1, 1920x1080@60, 0x0, 1 +monitor = , preferred, auto, 1 #}}} # See https://wiki.hyprland.org/Configuring/Keywords/ for more +#{{{ Plugins +plugin = /var/cache/hyprpm/zachir/hyprland-plugins/hyprscrolling.so +plugin = /var/cache/hyprpm/zachir/hyprsplit/hyprsplit.so +#}}} + #{{{ Autostart # Execute your favorite apps at launch # exec-once = waybar & hyprpaper & firefox -exec-once = xdph exec-once = hyprpm reload -n +exec-once = xdph exec-once = hyprpaper #exec-once = hypridle exec-once = waybar exec-once = pypr +exec-once = hyprscratch init exec-once = lxqt-policykit-agent -exec-once = import-gsettings gtk-theme 'Flat-Remix-GTK-Green-Darkest-Solid' -exec-once = import-gsettings icon-theme 'Mint-X-Grey' +exec-once = import-gsettings gtk-theme 'Flat-Remix-GTK-Green-Darkest' +exec-once = import-gsettings icon-theme 'Papirus-Dark' exec-once = import-gsettings cursor-theme 'BreezeX-Black' +exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' exec-once = xrdb -load "$XDG_CONFIG_HOME"/X11/xresources -#exec-once = com.github.wwmm.easyeffects -#exec-once = systemctl --user start dunst -#exec-once = systemctl --user start hypridle -exec-once = dunst -exec-once = hypridle +exec-once = systemctl --user start dunst +exec-once = systemctl --user start hypridle +exec-once = xwayland-satellite :1 #exec-once = mpd #}}} @@ -36,6 +41,7 @@ env = HYPRCURSOR_THEME,theme_BreezeX-Black env = HYPRCURSOR_SIZE,32 env = XCURSOR_THEME,BreezeX-Black env = XCURSOR_SIZE,32 +env = DISPLAY=:1 #}}} # Source a file (multi-file configs) @@ -45,6 +51,7 @@ env = XCURSOR_SIZE,32 debug { enable_stdout_logs = false disable_logs = true + full_cm_proto = true } # }}} @@ -69,7 +76,13 @@ input { follow_mouse = 1 mouse_refocus = false touchpad { - natural_scroll = no + disable_while_typing = true + natural_scroll = false + tap_button_map = "lrm" + clickfinger_behavior = true + tap-to-click = true + drag_lock = false + tap-and-drag = true } float_switch_override_focus = 0 sensitivity = 0 # -1.0 - 1.0, 0 means no modification. @@ -86,7 +99,7 @@ general { #col.inactive_border = rgba(595959aa) col.active_border = rgba(198844ee) col.inactive_border = rgba(1b1d1cee) - layout = master + layout = scrolling } #}}} @@ -102,9 +115,9 @@ misc { disable_splash_rendering = true enable_swallow = true swallow_regex = ^(kitty)$ - swallow_exception_regex = ^(.*ueberzug|n?vim .*|love .*)$ + swallow_exception_regex = ^(wev|.*ueberzug|n?vi?m? .*|.*dragon.*)$ vfr = true - vrr = 1 + vrr = 3 } #}}} @@ -118,7 +131,7 @@ decoration { size = 3 passes = 1 new_optimizations = true - xray = false + xray = true } #}}} #{{{ Shadow options @@ -135,7 +148,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 @@ -161,8 +174,9 @@ master { special_scale_factor = 0.55 mfact = 0.55 # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_status = inherit - new_on_top = true + new_status = slave + new_on_top = false + new_on_active = before #no_gaps_when_only = false orientation = left inherit_fullscreen = true @@ -181,6 +195,15 @@ gestures { plugin { hyprsplit { num_workspaces = 9 + persistent_workspaces = true + } + + hyprscrolling { + fullscreen_on_one_column = true + column_width = 0.5 + explicit_column_widths = 0.25, 0.333, 0.5, 0.667, 0.75, 1.0 + focus_fit_method = 1 + follow_focus = true } } #}}} @@ -189,13 +212,24 @@ plugin { # Example windowrule v1 # windowrule = float, ^(kitty)$ # Example windowrule v2 -# windowrulev2 = float, class:^(kitty)$, title:^(kitty)$ +# windowrule = float, class:^(kitty)$, title:^(kitty)$ # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more windowrulev2 = float, class:^(lxqt-policykit-agent)$ windowrulev2 = tile, class:^(REAPER)$, title:^(REAPER v[0-9.]* - Registered to [A-Za-z ]* \(Licensed for personal/small business use\))$ windowrulev2 = tile, class:^(REAPER)$, title:^(reaper)$ windowrulev2 = tile, class:^(REAPER)$, title:^(Mixer)$ windowrulev2 = move onscreen cursor -50% -50%, title:^(menu)$ +windowrulev2 = move cursor,class:REAPER,floating:1 +windowrulev2 = nofocus,class:REAPER,title:^(menu)$ +windowrulev2 = nofocus,class:REAPER,title:^$ +windowrulev2 = workspace special:easyeffects silent, class: ^(com\.github\.wwmm\.easyeffects)$ +windowrulev2 = workspace special:sonobus silent, class: ^(SonoBus)$ +# Fix brave xray menus +windowrulev2 = xray 0, class: ^(\s*), title: ^(\s*)$ +#}}} + +#{{{ Layerrules +layerrule = blur, waybar #}}} #{{{ Mods @@ -210,18 +244,46 @@ $secdMod = ALT #}}} #{{{ Master layout binds -# Master layout binds -bind = $mainMod+SHIFT, Return, layoutmsg, swapwithmaster master #MASTER -bind = $mainMod+SHIFT, J, layoutmsg, swapnext #MASTER -bind = $mainMod+SHIFT, K, layoutmsg, swapprev #MASTER -bind = $mainMod+SHIFT, H, layoutmsg, addmaster #MASTER -bind = $mainMod+SHIFT, L, layoutmsg, removemaster #MASTER -binde = $mainMod, J, layoutmsg, cyclenext #MASTER -binde = $mainMod, K, layoutmsg, cycleprev #MASTER -binde = $mainMod, H, splitratio, -0.01 #MASTER -binde = $mainMod, L, splitratio, +0.01 #MASTER -bind = $mainMod+SHIFT, O, splitratio, exact 0.55 #MASTER -bind = $mainMod, O, splitratio, exact 0.69 #MASTER +## Master layout binds +#bind = $mainMod+SHIFT, Return, layoutmsg, swapwithmaster master #MASTER +#bind = $mainMod+SHIFT, J, layoutmsg, swapnext #MASTER +#bind = $mainMod+SHIFT, K, layoutmsg, swapprev #MASTER +#bind = $mainMod+SHIFT, H, layoutmsg, addmaster #MASTER +#bind = $mainMod+SHIFT, L, layoutmsg, removemaster #MASTER +#binde = $mainMod, J, layoutmsg, cyclenext #MASTER +#binde = $mainMod, K, layoutmsg, cycleprev #MASTER +#binde = $mainMod, H, splitratio, -0.01 #MASTER +#binde = $mainMod, L, splitratio, +0.01 #MASTER +#bind = $mainMod+SHIFT, O, splitratio, exact 0.55 #MASTER +#bind = $mainMod, O, splitratio, exact 0.69 #MASTER +#}}} + +#{{{ hyprscrolling layout binds +# hyprscrolling layout binds +#bind = $mainMod+SHIFT, H, layoutmsg, move -1 #HYPRSCROLLING +#bind = $mainMod+SHIFT, L, layoutmsg, move +1 #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+CONTROL, H, exec, hyprswap.sh -l +bind = $mainMod+CONTROL, L, exec, hyprswap.sh -r +#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 +bind = $mainMod, L, layoutmsg, focus r #HYPRSCROLLING +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 @@ -250,7 +312,7 @@ bind = $mainMod, N, exec, pypr toggle_special bind = $mainMod SHIFT, N, togglespecialworkspace, minimized #}}} -#{{{ Workspace binds (using split-monitor-workspaces plugin!) +#{{{ Workspace binds (using hyprsplit plugin!) # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, split:workspace, 1 bind = $mainMod, 2, split:workspace, 2 @@ -289,6 +351,42 @@ bind = $mainMod SHIFT, comma, movewindow, mon:-1 bind = $mainMod SHIFT, period, movewindow, mon:+1 #}}} +#{{{ Workspace binds (not using hyprsplit plugin) +## Switch workspaces with mainMod + [0-9] +#bind = $mainMod, 1, workspace, 1 +#bind = $mainMod, 2, workspace, 2 +#bind = $mainMod, 3, workspace, 3 +#bind = $mainMod, 4, workspace, 4 +#bind = $mainMod, 5, workspace, 5 +#bind = $mainMod, 6, workspace, 6 +#bind = $mainMod, 7, workspace, 7 +#bind = $mainMod, 8, workspace, 8 +#bind = $mainMod, 9, workspace, 9 +## Move active window to a workspace with mainMod + SHIFT + [0-9] +#bind = $mainMod SHIFT, 1, movetoworkspacesilent, 1 +#bind = $mainMod SHIFT, 2, movetoworkspacesilent, 2 +#bind = $mainMod SHIFT, 3, movetoworkspacesilent, 3 +#bind = $mainMod SHIFT, 4, movetoworkspacesilent, 4 +#bind = $mainMod SHIFT, 5, movetoworkspacesilent, 5 +#bind = $mainMod SHIFT, 6, movetoworkspacesilent, 6 +#bind = $mainMod SHIFT, 7, movetoworkspacesilent, 7 +#bind = $mainMod SHIFT, 8, movetoworkspacesilent, 8 +#bind = $mainMod SHIFT, 9, movetoworkspacesilent, 9 +#bind = $mainMod CONTROL SHIFT, 1, movetoworkspace, 1 +#bind = $mainMod CONTROL SHIFT, 2, movetoworkspace, 2 +#bind = $mainMod CONTROL SHIFT, 3, movetoworkspace, 3 +#bind = $mainMod CONTROL SHIFT, 4, movetoworkspace, 4 +#bind = $mainMod CONTROL SHIFT, 5, movetoworkspace, 5 +#bind = $mainMod CONTROL SHIFT, 6, movetoworkspace, 6 +#bind = $mainMod CONTROL SHIFT, 7, movetoworkspace, 7 +#bind = $mainMod CONTROL SHIFT, 8, movetoworkspace, 8 +#bind = $mainMod CONTROL SHIFT, 9, movetoworkspace, 9 +#bind = $mainMod, comma, focusmonitor, -1 +#bind = $mainMod, period, focusmonitor, +1 +#bind = $mainMod SHIFT, comma, movewindow, mon:-1 +#bind = $mainMod SHIFT, period, movewindow, mon:+1 +#}}} + #{{{ Mouse binds # Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow @@ -307,11 +405,12 @@ submap = reset #}}} #{{{ Menu bindings -bind = $mainMod, R, exec, sh -c "$(tofi-drun -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)" -bind = $mainMod, D, exec, sh -c "$(tofi-run -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)" +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 +bind = $mainMod $secdMod, E, exec, brc bind = $mainMod $secdMod, R, exec, ffc bind = $mainMod $secdMod, 1, exec, bm bind = $mainMod $secdMod, comma, exec, dmount -p @@ -323,91 +422,30 @@ bind = $mainMod $secdMod, P, exec, passmenu #{{{ Misc bindings bind = $mainMod, Return, exec, kitty -bind = $mainMod $secdMod, F, exec, kitty -e lf +bind = $mainMod $secdMod, F, exec, kitty lf bind = $mainMod, W, exec, pkill -USR1 waybar bind = $mainMod, Q, exec, loginctl lock-session bind = $mainMod $secdMod CONTROL, Q, exec, systemctl suspend bind = $mainMod SHIFT, G, exec, get-app-id bind = $mainMod Control, M, exec, volsv -m -bind = $mainMod, Comma, exec, acpi-notify.sh +#bind = $mainMod, Comma, exec, acpi-notify.sh #bind = $mainMod CONTROL, R, exec, startx -- /usr/bin/Xephyr -screen 1920x1080 :1 #}}} #{{{ Scratchpads -bind = $mainMod CONTROL, Z, exec, pypr toggle sphtop -$sphtop = ^(sphtop)$ -windowrule = float,$sphtop -windowrule = workspace special:sphtop silent,$sphtop -windowrule = size 50% 50%,$sphtop -windowrule = move 25% 25%,$sphtop -bind = $mainMod CONTROL, X, exec, pypr toggle spterm -$spterm = ^(spterm)$ -windowrule = float,$spterm -windowrule = workspace special:spterm silent,$dropterm -windowrule = size 50% 50%,$spterm -windowrule = move 25% 25%,$spterm -bind = $mainMod CONTROL, C, exec, pypr toggle sppmxr -$sppmxr = ^(sppmxr)$ -windowrule = float,$sppmxr -windowrule = workspace special:sppmxr silent,$sppmxr -windowrule = size 50% 50%,$sppmxr -windowrule = move 25% 25%,$sppmxr -bind = $mainMod CONTROL, V, exec, pypr toggle spblue -$spblue = ^(spblue)$ -windowrule = float,$spblue -windowrule = workspace special:spblue silent,$spblue -windowrule = size 50% 50%,$spblue -windowrule = move 25% 25%,$spblue -bind = $mainMod CONTROL, B, exec, pypr toggle spncmp -$spncmp = ^(spncmp)$ -windowrule = float,$spncmp -windowrule = workspace special:spncmp silent,$spncmp -windowrule = size 50% 50%,$spncmp -windowrule = move 25% 25%,$spncmp -bind = $mainMod CONTROL, A, exec, pypr toggle spmutt -$spmutt = ^(spmutt)$ -windowrule = float,$spmutt -windowrule = workspace special:spmutt silent,$spmutt -windowrule = size 50% 50%,$spmutt -windowrule = move 25% 25%,$spmutt -bind = $mainMod CONTROL, S, exec, pypr toggle spprof -$spprof = ^(spprof)$ -windowrule = float,$spprof -windowrule = workspace special:spprof silent,$spprof -windowrule = size 50% 50%,$spprof -windowrule = move 25% 25%,$spprof -bind = $mainMod CONTROL, D, exec, pypr toggle spirss -$spirss = ^(spirss)$ -windowrule = float,$spirss -windowrule = workspace special:spirss silent,$spirss -windowrule = size 50% 50%,$spirss -windowrule = move 25% 25%,$spirss -bind = $mainMod CONTROL, F, exec, pypr toggle sptodo -$sptodo = ^(sptodo)$ -windowrule = float,$sptodo -windowrule = workspace special:sptodo silent,$sptodo -windowrule = size 50% 50%,$sptodo -windowrule = move 25% 25%,$sptodo -bind = $mainMod CONTROL, G, exec, pypr toggle sptrmc -$sptrmc = ^(sptrmc)$ -windowrule = float,$sptrmc -windowrule = workspace special:sptrmc silent,$sptrmc -windowrule = size 50% 50%,$sptrmc -windowrule = move 25% 25%,$sptrmc - -bind = $mainMod CONTROL, Q, exec, pypr toggle qpwgraph -$spqpwg = ^(org\.rncbc\.qpwgraph)$ -windowrule = float,$spqpwg -windowrule = workspace special:spqpwg silent,$spqpwg -windowrule = size 50% 50%,$spqpwg -windowrule = move 25% 25%,$spqpwg - -bind = $mainMod CONTROL, E, togglespecialworkspace, speasy -$speasy = ^(com\.github\.wwmm\.easyeffects)$ -windowrule = float,$speasy -windowrule = workspace special:speasy silent,$speasy -windowrule = size 50% 50%,$speasy -windowrule = move 25% 25%,$speasy +bind = $mainMod CONTROL, Z, exec, hyprscratch toggle sphtop +bind = $mainMod CONTROL, X, exec, hyprscratch toggle spterm +bind = $mainMod CONTROL, C, exec, hyprscratch toggle sppmxr +bind = $mainMod CONTROL, V, exec, hyprscratch toggle spblue +bind = $mainMod CONTROL, B, exec, hyprscratch toggle spncmp +bind = $mainMod CONTROL, A, exec, hyprscratch toggle spmutt +bind = $mainMod CONTROL, S, exec, hyprscratch toggle spprof +bind = $mainMod CONTROL, D, exec, hyprscratch toggle spirss +bind = $mainMod CONTROL, F, exec, hyprscratch toggle spvimw +bind = $mainMod CONTROL, G, exec, hyprscratch toggle sptrmc +bind = $mainMod CONTROL, Q, exec, hyprscratch toggle helvum +bind = $mainMod CONTROL, E, exec, hyprscratch toggle easyeffects +bind = $mainMod CONTROL, r, exec, hyprscratch toggle sonobus #}}} #{{{ OBS bindings @@ -441,9 +479,9 @@ bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioMute, exec, volsv -t #bindl = , XF86AudioMicMute, exec, volsv -m bind = , XF86AudioMicMute, exec, volsv -m -bindel = , XF86MonBrightnessUp, exec, bl -i -bindel = , XF86MonBrightnessDown, exec, bl -d -bindl = $mainMod, XF86MonBrightnessUp, exec, bl -I 1 -bindl = $mainMod, XF86MonBrightnessDown, exec, bl -D 1 +bindel = , XF86MonBrightnessUp, exec, bl -x -i +bindel = , XF86MonBrightnessDown, exec, bl -x -d +bindl = $mainMod, XF86MonBrightnessUp, exec, bl -x -I 1 +bindl = $mainMod, XF86MonBrightnessDown, exec, bl -x -D 1 bind = , Print, exec, scrshot #}}} diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index dc05411..8ee636d 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -1,10 +1,10 @@ general { - disable_loading_bar = true hide_cursor = true - grace = 15 - no_fade_in = true - no_fade_out = true - ignore_empty_input = false + immediate_render = true +} + +animations { + enabled = false } background { @@ -41,7 +41,7 @@ input-field { check_color = rgb(204, 136, 34) fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty - fail_transition = 300 # transition time in ms between normal outer_color and fail_color + #fail_transition = 300 # transition time in ms between normal outer_color and fail_color capslock_color = -1 numlock_color = -1 bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf index 19b84f2..728c00c 100644 --- a/hypr/hyprpaper.conf +++ b/hypr/hyprpaper.conf @@ -13,4 +13,3 @@ wallpaper = DP-2,~/Pictures/background.png #wallpaper = monitor2,~/background.png # .. more monitors splash = false -preload = ~/Pictures/background.png diff --git a/hypr/hyprscratch.conf b/hypr/hyprscratch.conf new file mode 100644 index 0000000..08fd39c --- /dev/null +++ b/hypr/hyprscratch.conf @@ -0,0 +1,135 @@ +# Optional globals that apply to all scratchpads +daemon_options = clean +daemon_options = eager + +global_rules = size 50% 50% + +sphtop { + # Mandatory fields + title = sphtop + command = kitty -T sphtop htop + + # Optional fields + options = lazy + options = special +} + +spterm { + # Mandatory fields + title = spterm + command = kitty -T spterm + + # Optional fields + options = lazy + options = special +} + +sppmxr { + # Mandatory fields + title = sppmxr + command = kitty -T sppmxr pulsemixer + + # Optional fields + options = lazy + options = special +} + +spblue { + # Mandatory fields + title = spblue + command = kitty -T spblue bluetoothctl + + # Optional fields + options = lazy + options = special +} + +spncmp { + # Mandatory fields + title = spncmp + command = kitty -T spncmp ncmpcpp + + # Optional fields + options = lazy + options = special +} + +spmutt { + # Mandatory fields + title = spmutt + command = kitty -T spmutt neomutt + + # Optional fields + options = lazy + options = special +} + +spprof { + # Mandatory fields + title = spprof + command = kitty -T spprof profanity + + # Optional fields + options = lazy + options = special +} + +spirss { + # Mandatory fields + title = spirss + command = kitty -T spirss irssi + + # Optional fields + options = lazy + options = special +} + +spvimw { + # Mandatory fields + title = spvimw + command = kitty -T spvimw nvim +VimwikiIndex + + # Optional fields + options = lazy + options = special +} + +sptrmc { + # Mandatory fields + title = sptrmc + command = kitty -T sptrmc tremc + + # Optional fields + options = lazy + options = special +} + +helvum { + # Mandatory fields + title = Helvum - Pipewire Patchbay + command = helvum + + # Optional fields + options = lazy + options = special +} + +easyeffects { + # Mandatory fields + title = Easy Effects + command = easyeffects + + # Optional fields + options = lazy + options = special +} + +sonobus { + # Mandatory fields + title = SonoBus + command = sonobus + + # Optional fields + options = special +} + diff --git a/hypr/pyprland.toml b/hypr/pyprland.toml index af439ab..cacd7f1 100644 --- a/hypr/pyprland.toml +++ b/hypr/pyprland.toml @@ -1,103 +1,5 @@ [pyprland] plugins = [ - "scratchpads", "toggle_special", "expose" ] - -[scratchpads.sphtop] -animation = "" -command = "kitty --class sphtop htop" -class = "sphtop" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spterm] -animation = "" -command = "kitty --class spterm" -class = "spterm" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.sppmxr] -animation = "" -command = "kitty --class sppmxr pulsemixer" -class = "sppmxr" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spblue] -animation = "" -command = "kitty --class spblue bluetoothctl" -class = "spblue" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spncmp] -animation = "" -command = "kitty --class spncmp ncmpcpp" -class = "spncmp" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spmutt] -animation = "" -command = "kitty --class spmutt neomutt" -class = "spmutt" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spprof] -animation = "" -command = "kitty --class spprof profanity" -class = "spprof" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.spirss] -animation = "" -command = "kitty --class spirss irssi" -class = "spirss" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.sptodo] -animation = "" -command = "kitty --class sptodo todo" -class = "sptodo" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.sptrmc] -animation = "" -command = "kitty --class sptrmc tremc" -class = "sptremc" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.qpwgraph] -animation = "" -command = "qpwgraph" -class = "org.rncbc.qpwgraph" -lazy = true -size = "50% 50%" -position = "25% 25%" - -[scratchpads.easyeffects] -animation = "" -command = "flatpak run com.github.wwmm.easyeffects" -class = "com.github.wwmm.easyeffects" -lazy = true -size = "75% 75%" -position = "25% 25%" -unfocus = "hide" diff --git a/installers/vimplug_nvim.sh b/installers/vimplug_nvim.sh deleted file mode 100755 index feddd03..0000000 --- a/installers/vimplug_nvim.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ - https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 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 095607b..dddd806 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -6,7 +6,7 @@ #: individual font faces and even specify special fonts for particular #: characters. -font_family FiraCode Nerd Font Mono +font_family JetBrainsMono Nerd Font bold_font auto italic_font auto bold_italic_font auto @@ -24,7 +24,7 @@ bold_italic_font auto #: italic_font Operator Mono Book Italic #: bold_italic_font Operator Mono Medium Italic -font_size 11.0 +font_size 12.0 #: Font size (in pts) @@ -7,9 +7,10 @@ main() { > "$FIFO_UEBERZUG" ;; "draw") - declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" \ - [x]="$3" [y]="$4" [max_width]="$5" [max_height]="$6" \ - [path]="$2") > "$FIFO_UEBERZUG" + kitten icat --stdin no --transfer-mode memory --place"${5}x${6}@${3}x${4}" "$1" /dev/tty + #declare -p -A cmd=([action]=add [identifier]="$ID_PREVIEW" \ + #[x]="$3" [y]="$4" [max_width]="$5" [max_height]="$6" \ + #[path]="$2") > "$FIFO_UEBERZUG" ;; "*") echo "Unknown command: '$1', '$2'" ;; esac @@ -320,7 +320,7 @@ map C clear map U unselect # Movement -map g. cd "/home/zachir" +map g. cd "~" ## PATHS map gE. cd "/etc" map gO. cd "/opt" @@ -329,64 +329,65 @@ map gR cd "/" map gU. cd "/usr" map gUs cd "/usr/share" map gV. cd "/var" -map gaw cd "/home/zachir/.config/awesome" -map gb. cd "/home/zachir/.local/bin" -map gbb cd "/home/zachir/.local/bin/blocks" -map gbf cd "/home/zachir/.local/bin/slatpak-sc" -map gbg cd "/home/zachir/.local/bin/generics" -map gbi cd "/home/zachir/.local/bin/ignore" -map gbsc cd "/home/zachir/.local/bin/scripts" -map gbsh cd "/home/zachir/.local/bin/shortcmds" -map gbsp cd "/home/zachir/.local/bin/sp" -map gc cd "/home/zachir/.config" -map gdb cd "/home/zachir/.local/src/dwmbar" -map gdc cd "/home/zachir/Documents" -map gdl cd "/home/zachir/.local/src/dwl" -map gdm cd "/home/zachir/.local/src/dmenu" -map gdo cd "/home/zachir/Downloads" -map gdp cd "/home/zachir/Downloads/plugin/zachir_librem.one" -map gdw cd "/home/zachir/Downloads/wine" -map ge cd "/home/zachir/Desktop" -map gf cd "/home/zachir/.var/app" -map gh cd "/home/zachir/.config/hypr" -map glb cd "/home/zachir/.local/bin" -map glc cd "/home/zachir/Games/cache" -map glf cd "/home/zachir/.config/lf" -map gls cd "/home/zachir/.local/share" -map gn3 cd "/home/zachir/.vst3/native" -map gns cd "/home/zachir/.vst/native" -map gnv cd "/home/zachir/.config/nvim" -map gp cd "/home/zachir/Pictures" -map gqb cd "/home/zachir/.config/qutebrowser" -map gqp cd "/home/zachir/.local/share/qutebrowser-profiles" -map gre cd "/home/zachir/.local/src" +map gaw cd "~/.config/awesome" +map gb. cd "~/.local/bin" +map gbb cd "~/.local/bin/blocks" +map gbf cd "~/.local/bin/slatpak-sc" +map gbg cd "~/.local/bin/generics" +map gbi cd "~/.local/bin/ignore" +map gbsc cd "~/.local/bin/scripts" +map gbsh cd "~/.local/bin/shortcmds" +map gbsp cd "~/.local/bin/sp" +map gc cd "~/.config" +map gdb cd "~/.local/src/dwmbar" +map gdc cd "~/Documents" +map gdl cd "~/.local/src/dwl" +map gdm cd "~/.local/src/dmenu" +map gdo cd "~/Downloads" +map gdp cd "~/Downloads/plugin/zachir_librem.one" +map gdw cd "~/Downloads/wine" +map ge cd "~/Desktop" +map gf cd "~/.var/app" +map gh cd "~/.config/hypr" +map glb cd "~/.local/bin" +map glc cd "~/Games/cache" +map glf cd "~/.config/lf" +map gls cd "~/.local/share" +map gn3 cd "~/.vst3/native" +map gns cd "~/.vst/native" +map gnv cd "~/.config/nvim" +map gp cd "~/Pictures" +map gqb cd "~/.config/qutebrowser" +map gqp cd "~/.local/share/qutebrowser-profiles" +map gre cd "~/.local/src" map grs cd "/etc/runit/sv" -map gsc cd "/home/zachir/.local/bin/scripts" -map gsh cd "/home/zachir/.config/sh" -map gsl cd "/home/zachir/.local/src/slock" +map gsc cd "~/.local/bin/scripts" +map gsh cd "~/.config/sh" +map gsl cd "~/.local/src/slock" map gss cd "/etc/s6/sv" -map gst cd "/home/zachir/.local/src/st" -map gsx cd "/home/zachir/.config/sxhkd" -map gtr cd "/home/zachir/.local/share/Trash/files" -map gurs cd "/home/zachir/.runit/sv" -map gv3. cd "/home/zachir/.vst3" -map gv3n cd "/home/zachir/.vst3/native" -map gv3y cd "/home/zachir/.vst3/yabridge" -map gv. cd "/home/zachir/var" -map gvi cd "/home/zachir/Videos" -map gvsn cd "/home/zachir/.vst/native" -map gvs. cd "/home/zachir/.vst" -map gvsy cd "/home/zachir/.vst/yabridge" -map gwdo cd "/home/zachir/.local/share/wineprefixes/default/drive_c/users/zachir/Downloads" -map gwa cd "/home/zachir/.local/src/wallpapers" -map gwd cd "/home/zachir/.local/share/wineprefixes/default" -map gwr cd "/home/zachir/.local/share/wineprefixes" -map gwv3 cd "/home/zachir/.winvst3" -map gwvs cd "/home/zachir/.winvst" -map gww cd "/home/zachir/.local/share/wineprefixes/work" -map gx cd "/home/zachir/.config/X11" -map gy3 cd "/home/zachir/.vst3/yabridge" -map gyb cd "/home/zachir/.cache/yay" -map gyc cd "/home/zachir/.config/yay" -map gzs cd "/home/zachir/.config/zsh" -map gzx cd "/home/zachir/Documents/zachir.xyz" +map gst cd "~/.local/src/st" +map gsx cd "~/.config/sxhkd" +map gtr cd "~/.local/share/Trash/files" +map gurs cd "~/.runit/sv" +map gv3. cd "~/.vst3" +map gv3n cd "~/.vst3/native" +map gv3y cd "~/.vst3/yabridge" +map gv. cd "~/var" +map gvi cd "~/Videos" +map gvsn cd "~/.vst/native" +map gvs. cd "~/.vst" +map gvsy cd "~/.vst/yabridge" +map gvw cd "~/.local/share/vimwiki" +map gwdo cd "~/.local/share/wineprefixes/default/drive_c/users/zachir/Downloads" +map gwa cd "~/.local/src/wallpapers" +map gwd cd "~/.local/share/wineprefixes/default" +map gwr cd "~/.local/share/wineprefixes" +map gwv3 cd "~/.winvst3" +map gwvs cd "~/.winvst" +map gww cd "~/.local/share/wineprefixes/work" +map gx cd "~/.config/X11" +map gy3 cd "~/.vst3/yabridge" +map gyb cd "~/.cache/yay" +map gyc cd "~/.config/yay" +map gzs cd "~/.config/zsh" +map gzx cd "~/Documents/zachir.xyz" diff --git a/mpd/mpd.conf b/mpd/mpd.conf index e26dbd1..6fdf1b0 100644 --- a/mpd/mpd.conf +++ b/mpd/mpd.conf @@ -79,7 +79,7 @@ sticker_file "~/.config/mpd/sticker.sql" # systemd socket activiation is in use. # # For network -# bind_to_address "127.0.0.1" +bind_to_address "127.0.0.1" # # And for Unix Socket bind_to_address "~/.config/mpd/socket" @@ -275,11 +275,18 @@ input { # # An example of a pulseaudio output (streaming to a remote pulseaudio server) # +#audio_output { +# type "pulse" +# name "My Pulse Output" +## server "remote_server" # optional +## sink "remote_server_sink" # optional +#} +# +# Pipewire output +# audio_output { - type "pulse" - name "My Pulse Output" -# server "remote_server" # optional -# sink "remote_server_sink" # optional + type "pipewire" + name "Pipewire Sound Server" } audio_output { diff --git a/niri/config.kdl b/niri/config.kdl new file mode 100644 index 0000000..8248563 --- /dev/null +++ b/niri/config.kdl @@ -0,0 +1,612 @@ +// 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:-Introduction + +// 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" + layout "us" + options "caps:escape" + } + + // Enable numlock on startup, omitting this setting disables it. + numlock + } + + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + scroll-method "two-finger" + // disabled-on-external-mouse + } + + mouse { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "no-scroll" + } + + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // middle-emulation + } + + // Uncomment this to make the mouse warp to the center of newly focused windows. + warp-mouse-to-focus + + // Focus windows and outputs automatically when moving the mouse into them. + // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. + focus-follows-mouse max-scroll-amount="0%" +} + +// You can configure outputs by their name, which you can find +// by running `niri msg outputs` while inside a niri instance. +// The built-in laptop monitor is usually called "eDP-1". +// Find more information on the wiki: +// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs +// Remember to uncomment the node by removing "/-"! +/-output "eDP-1" { + // Uncomment this line to disable this output. + //off + + // Resolution and, optionally, refresh rate of the output. + // The format is "<width>x<height>" or "<width>x<height>@<refresh rate>". + // If the refresh rate is omitted, niri will pick the highest refresh rate + // for the resolution. + // If the mode is omitted altogether or is invalid, niri will pick one automatically. + // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes. + mode "1920x1080@60.000" + + // You can use integer or fractional scale, for example use 1.5 for 150% scale. + scale 1 + + // 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=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 +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 "#198844" + + // Color of the ring on inactive monitors. + inactive-color "#1b1d1c" + + // 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 "#198844" + inactive-color "#1b1d1c" + + // Color of the border around windows that request your attention. + urgent-color "#9b0000" + + // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view" + // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" + } + + // You can enable drop shadows for windows. + shadow { + // Uncomment the next line to enable shadows. + // on + + // By default, the shadow draws only around its window, and not behind it. + // Uncomment this setting to make the shadow draw behind its window. + // + // Note that niri has no way of knowing about the CSD window corner + // radius. It has to assume that windows have square corners, leading to + // shadow artifacts inside the CSD rounded corners. This setting fixes + // those artifacts. + // + // However, instead you may want to set prefer-no-csd and/or + // geometry-corner-radius. Then, niri will know the corner radius and + // draw the shadow correctly, without having to draw it behind the + // window. These will also remove client-side shadows if the window + // draws any. + // + // draw-behind-window true + + // You can change how shadows look. The values below are in logical + // pixels and match the CSS box-shadow properties. + + // Softness controls the shadow blur radius. + softness 30 + + // Spread expands the shadow. + spread 5 + + // Offset moves the shadow relative to the window. + offset x=0 y=5 + + // You can also change the shadow color and opacity. + color "#0007" + } + + // 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. + +// This line starts waybar, a commonly used bar for Wayland compositors. +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. +// 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 10 + 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+Return hotkey-overlay-title="Open a Terminal: kitty" { spawn "kitty"; } + Mod+D hotkey-overlay-title="Run an Application: tofi-run" { spawn "sh" "-c" "$(tofi-run -c ~/.config/tofi/themes/dmenu_vertical)"; } + Mod+E hotkey-overlay-title="Run an Application: tofi-drun" { spawn "sh" "-c" "$(tofi-drun -c ~/.config/tofi/themes/dmenu_vertical)"; } + Mod+Q hotkey-overlay-title="Lock the Screen" { spawn "loginctl" "lock-session"; } + + // 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 "volsv" "-i"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "volsv" "-d"; } + XF86AudioMute allow-when-locked=true { spawn "volsv" "-t"; } + XF86AudioMicMute allow-when-locked=true { spawn "volsv" "-m"; } + + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+O repeat=false { toggle-overview; } + + Mod+Shift+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; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + // Center all fully visible columns on screen. + Mod+Ctrl+C { center-visible-columns; } + + // 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; } + + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { toggle-column-tabbed-display; } + + // 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; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + + // 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; } + + // Browsers + Super+Alt+W { spawn "lwc"; } +} diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..06b973a --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,7 @@ +require('options') +require('keymaps') +require('lsp') +require('plugins') +require('colorscheme') +require('term') +require('vimwiki') diff --git a/nvim/init.vim b/nvim/init.vim deleted file mode 100644 index 812bf3e..0000000 --- a/nvim/init.vim +++ /dev/null @@ -1,306 +0,0 @@ -set runtimepath^=$XDG_CONFIG_HOME/vim -set runtimepath+=$XDG_DATA_HOME/vim -set runtimepath+=$XDG_CONFIG_HOME/vim/after - -set packpath^=$XDG_DATA_HOME/vim,$XDG_CONFIG_HOME/vim -set packpath+=$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/after - -let g:netrw_home = $XDG_DATA_HOME."/vim" -call mkdir($XDG_DATA_HOME."/vim/spell", 'p') - -set backupdir=$XDG_STATE_HOME/vim/backup | call mkdir(&backupdir, 'p') -set directory=$XDG_STATE_HOME/vim/swap | call mkdir(&directory, 'p') -set undodir=$XDG_STATE_HOME/vim/undo | call mkdir(&undodir, 'p') -set viewdir=$XDG_STATE_HOME/vim/view | call mkdir(&viewdir, 'p') - -if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif - -" vimplugs {{{ -call plug#begin('~/.config/nvim/plugged') -" colorschemes {{{ -Plug 'tomasiser/vim-code-dark' " codedark color scheme -Plug 'flazz/vim-colorschemes' " meta-color scheme package -Plug 'tomasiser/vim-code-dark' " codedark color scheme -Plug 'flazz/vim-colorschemes' " meta-color scheme package -Plug 'ZachIndigo/vim-preglow' " my old color scheme -" }}} -" language support {{{ -Plug 'axvr/org.vim' " basic org markup language implementation -Plug 'ziglang/zig.vim' " zig programming language -Plug 'jdonaldson/vaxe' " haxe programming language -Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' } " latex live preview support -Plug 'waycrate/swhkd-vim' " swhkd syntax highlighting -Plug 'HiPhish/guile.vim' " guile syntax highlighting -" }}} -" utility {{{ -Plug 'preservim/nerdtree' " directory tree interface -Plug 'Xuyuanp/nerdtree-git-plugin' " git status indicator for nerdtree -Plug 'PhilRunninger/nerdtree-visual-selection' " allows visual selection mode in nerdtree -Plug 'tpope/vim-fugitive' " git command interface -Plug 'junegunn/goyo.vim' " simplify the user interface (distraction-free) [BROKEN] -Plug 'junegunn/limelight.vim' " focus on single paragraph of text at a time -Plug 'vim-airline/vim-airline' " powerline the vim bottom bar -Plug 'nathanaelkane/vim-indent-guides' " indent guides for vim -Plug 'mhinz/vim-signify' " use signs to show diffs -Plug 'tpope/vim-endwise' " auto end functions/if statements -Plug 'tpope/vim-surround' " auto close stuff -Plug 'mattn/emmet-vim' " html css easy formating -Plug 'godlygeek/tabular' " Needed for vim-markdown -Plug 'plasticboy/vim-markdown' " Better markdown support -Plug 'ryanoasis/vim-devicons' " dev icons for nerdtree -" }}} -call plug#end() - -" }}} -" nvim options {{{ - -"" nvimrc: -"" General - -set showmatch " Highlight matching brace - -set number -set relativenumber - -colorscheme Dark2 - -set hlsearch " Highlight all search results -set smartcase " Enable smart-case search -set incsearch " Searches for strings incrementally - -set expandtab " Use spaces instead of tabs -set shiftwidth=2 " Number of auto-indent spaces -set smartindent " Enable smart-indent -set smarttab " Enable smart-tabs -set softtabstop=2 " Number of spaces per Tab - -"" Advanced -set ruler " Show row and column ruler information -set undolevels=1000 " Number of undo levels -set backspace=indent,eol,start " Backspace behaviour -filetype plugin indent on - -"" GUI Config -set guifont=mononoki\ Nerd\ Font\ Mono:h12 - -"hi Normal guibg=NONE ctermbg=NONE -"hi NonText guibg=NONE ctermbg=NONE -"set background=dark - -set foldmethod=marker - -set conceallevel=2 - -" set leader key - -let mapleader="'" - -" emmet {{{ -let g:user_emmet_leader_key='<C-a>' -" }}} - -" zig config {{{ -let g:zig_fmt_autosave = 1 -" }}} - -" latex live preview {{{ -let g:livepreview_previewer = 'zathura' -let g:livepreview_use_biber = 1 -let g:livepreview_cursorhold_recompile = 0 -" }}} - -" vim-markdown {{{ -let g:vim_markdown_folding_disabled = 1 -let g:vim_markdown_folding_level = 3 -let g:vim_markdown_toc_autofit = 1 -let g:vim_markdown_emphasis_multiline = 0 -let g:tex_conceal = "" -let g:vim_markdown_math = 1 -let g:vim_markdown_conceal_code_blocks = 1 -let g:vim_markdown_fenced_languages = ['c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini'] -let g:vim_markdown_follow_anchor = 1 -let g:vim_markdown_math = 1 -let g:vim_markdown_frontmatter = 1 -let g:vim_markdown_toml_frontmatter = 1 -let g:vim_markdown_strikethrough = 1 -let g:vim_markdown_no_extensions_in_markdown = 1 -let g:vim_markdown_autowrite = 1 -let g:vim_markdown_auto_insert_bullets = 0 -let g:vim_markdown_new_list_item_indent = 0 -let g:vim_markdown_edit_url_in = 'tab' -" }}} - -" NERDTree config {{{ -let g:NERDTreeGitStatusUseNerdFonts = 1 " use nerd fonts -let g:NERDTreeGitStatusShowClean = 1 " default: 0 -let g:NERDTreeDirArrowExpandable = '>' -let g:NERDTreeDirArrowCollapsible = '<' -let g:NERDTreeMapToggleHidden = 'z' -" }}} - -" Goyo config {{{ -let g:goyo_width = '90%' -let g:goyo_height = '100%' -" }}} - -" limelight config {{{ -let g:limelight_conceal_ctermfg = 'gray' -let g:limelight_conceal_guifg = 'gray' -" }}} - -" devicon config {{{ -let g:airline_powerline_fonts = 1 -let g:webdevicons_enable_nerdtree = 1 -" }}} - -" vim-indent-guides config {{{ -let g:indent_guides_enable_on_vim_startup = 0 -" }}} - -" vim-signify config {{{ -set updatetime=100 -" }}} - -" }}} -" Functions {{{ -" Goyo functions {{{ -function! s:goyo_enter() - if executable('tmux') && strlen($TMUX) - silent !tmux set status off - silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z - endif - set noshowmode - set noshowcmd - set scrolloff=999 - Limelight - NERDTreeClose -endfunction -function! s:goyo_leave() - if executable('tmux') && strlen('$TMUX') - silent !tmux set status on - silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z - endif - set showmode - set showcmd - set scrolloff=5 - Limelight! - NERDTree -endfunction -" }}} -" }}} -" Autocommands {{{ -" Goyo autocommands {{{ -autocmd! User GoyoEnter nested call <SID>goyo_enter() -autocmd! User GoyoLeave nested call <SID>goyo_leave() -" }}} -" NERDTree autocmds {{{ -autocmd StdinReadPre * let s:std_in=1 -autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | wincmd p | endif -autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') | - \ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif -autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif -autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif -"autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 | - "\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer;.buf | endif -autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif -" }}} -" custom augroup {{{ -augroup custom - autocmd! - "au BufEnter *.tex :LLPStartPreview - au BufEnter *.md :set textwidth=80 - au BufEnter *.ms :set textwidth=80 - "au BufEnter *.c :colo DevC++ - "au BufEnter *.h :colo DevC++ - "au BufEnter *.cc :colo DevC++ - "au BufEnter *.hh :colo DevC++ - "au BufEnter *.cpp :colo DevC++ - "au BufEnter *.hpp :colo DevC++ - au BufWritePost init.vim :source % - "au BufWritePost *.tex :make - au BufWritePost *sxhkdrc* :!pkill -USR1 -x sxhkd - au BufWritePost .Xresources :!xrdb ~/.Xresources - au BufWritePost .gitignore :!git add .gitignore -augroup end -" }}} -" }}} -" keybindings {{{ - -" direction keys - -inoremap <Down> <C-o>gj -inoremap <Up> <C-o>gk -inoremap <Home> <C-o>g<Home> -inoremap <End> <C-o>g<End> -vnoremap <Down> <C-o>gj -vnoremap <Up> <C-o>gk -vnoremap <Home> <C-o>g<Home> -vnoremap <End> <C-o>g<End> -nnoremap <Down> gj -nnoremap <Up> gk - -" clear search highlights -nnoremap <leader>/ :noh<CR> - -" toggles -nnoremap <leader>tn :set number!<CR> -nnoremap <leader>tr :set relativenumber!<CR> -nnoremap <leader>tt :NERDTreeToggle<CR> - -" tabs -nnoremap <leader>th :tabprevious<CR> -nnoremap <leader>tl :tabnext<CR> -nnoremap <leader>tk :tabnew<CR> -nnoremap <leader>tj :tabclose<CR> - -" splits -nnoremap <leader>wh :vertical resize -1<CR> -nnoremap <leader>wj :resize -1<CR> -nnoremap <leader>wk :resize +1<CR> -nnoremap <leader>wl :vertical resize +1<CR> - -" config -nnoremap <leader>en :e ~/.config/nvim/init.vim<CR> -nnoremap <leader>ec :source %<CR> - -" write as root -nnoremap ZW :w !pkexec tee % >/dev/null - -" Goyo -nnoremap <leader>G :Goyo<CR> - -" windows -nnoremap <C-h> <C-w>h -nnoremap <C-j> <C-w>j -nnoremap <C-k> <C-w>k -nnoremap <C-l> <C-w>l -vnoremap <C-h> <C-w>h -vnoremap <C-j> <C-w>j -vnoremap <C-k> <C-w>k -vnoremap <C-l> <C-w>l - -" files -" these may go away soon -nnoremap <leader>xx :q<CR> -nnoremap <leader>x! :q!<CR> -" these are the new standard -nnoremap <leader>qq :q<CR> -nnoremap <leader>q! :q!<CR> -nnoremap <leader>wq :wq<CR> -nnoremap <leader>ww :w<CR> -nnoremap <leader>ee :e - -" escape for term windows -tnoremap <Esc> <C-\><C-n> - -" vim-plug -nnoremap <leader>pi :PlugInstall<CR> -nnoremap <leader>pu :PlugUpdate<CR> -nnoremap <leader>pU :PlugUpgrade<CR> -nnoremap <leader>pc :PlugClean<CR> - -" fugitive -nnoremap <leader>gp :G pull<CR> -nnoremap <leader>gd :G diff %<CR> - -" }}} diff --git a/nvim/lua/colorscheme.lua b/nvim/lua/colorscheme.lua new file mode 100644 index 0000000..66516fa --- /dev/null +++ b/nvim/lua/colorscheme.lua @@ -0,0 +1,8 @@ +-- define your colorscheme here +local colorscheme = 'badwolf' + +local is_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) +if not is_ok then + vim.notify('colorscheme ' .. colorscheme .. ' not found!') + return +end diff --git a/nvim/lua/keymaps.lua b/nvim/lua/keymaps.lua new file mode 100644 index 0000000..ff04b7d --- /dev/null +++ b/nvim/lua/keymaps.lua @@ -0,0 +1,97 @@ +-- define common options +local opts = { + noremap = true, -- non-recursive + silent = true, -- do not show message +} + +-- set leader key +vim.g.mapleader = "'" + +----------------- +-- Normal mode -- +----------------- + +-- Hint: see `:h vim.map.set()` +-- Better window navigation +vim.keymap.set('n', '<C-h>', '<C-w>h', opts) +vim.keymap.set('n', '<C-j>', '<C-w>j', opts) +vim.keymap.set('n', '<C-k>', '<C-w>k', opts) +vim.keymap.set('n', '<C-l>', '<C-w>l', opts) + +-- Resize with arrows +vim.keymap.set('n', '<C-Up>', ':resize -2<CR>', opts) +vim.keymap.set('n', '<C-Down>', ':resize +2<CR>', opts) +vim.keymap.set('n', '<C-Left>', ':vertical resize -2<CR>', opts) +vim.keymap.set('n', '<C-Right>', ':vertical resize +2<CR>', opts) +vim.keymap.set('n', '<leader>wh', ':vertical resize -1<CR>') +vim.keymap.set('n', '<leader>wj', ':resize -1<CR>') +vim.keymap.set('n', '<leader>wk', ':resize +1<CR>') +vim.keymap.set('n', '<leader>wl', ':vertical resize +1<CR>') + +-- NerdTREE +vim.keymap.set('n', '<leader>tt', ':NERDTreeToggle<CR>') + +-- files +-- these may go away soon +vim.keymap.set('n', '<leader>xx', ':q<CR>') +vim.keymap.set('n', '<leader>x!', ':q!<CR>') + +-- Close with leader +vim.keymap.set('n', '<leader>ww', ':w<CR>', opts) +vim.keymap.set('n', '<leader>qq', ':q<CR>', opts) +vim.keymap.set('n', '<leader>wq', ':wq<CR>', opts) +vim.keymap.set('n', '<leader>q!', ':q!<CR>', opts) +vim.keymap.set('n', '<leader>wq', ':wq<CR>') +vim.keymap.set('n', '<leader>ee :e', '') + +-- Tabs with leader +vim.keymap.set('n', '<leader>th', ':tabprevious<CR>', opts) +vim.keymap.set('n', '<leader>tl', ':tabnext<CR>', opts) +vim.keymap.set('n', '<leader>tk', ':tabnew<CR>', opts) +vim.keymap.set('n', '<leader>tj', ':tabclose<CR>', opts) + +-- Write with sudo +vim.keymap.set('n', 'ZW', ':w !pkexec tee % >/dev/null', opts) + +-- clear search highlights +vim.keymap.set('n', '<leader>/', ':noh<CR>') + +-- toggles +vim.keymap.set('n', '<leader>tn :set', 'number!<CR>') +vim.keymap.set('n', '<leader>tr :set', 'relativenumber!<CR>') + +-- write as root +vim.keymap.set('n', 'ZW', ':w !pkexec tee % >/dev/null') + +-- config +vim.keymap.set('n', '<leader>en', ':e ~/.config/nvim/init.lua<CR>') +vim.keymap.set('n', '<leader>ec', ':source %<CR>') +vim.keymap.set('n', '<leader>er', ':source ~/.config/nvim/init.lua<CR>') + +-- Goyo +vim.keymap.set('n', '<leader>G', ':Goyo<CR>') + +-- fugitive +vim.keymap.set('n', '<leader>gp :G', 'pull<CR>') +vim.keymap.set('n', '<leader>gd :G diff', '%<CR>') + +----------------- +-- Visual mode -- +----------------- + +-- Hint: start visual mode with the same area as the previous area and the same mode +--vim.keymap.set('v', '<', '<gv', opts) +--vim.keymap.set('v', '>', '>gv', opts) + +-- windows +vim.keymap.set('v', '<C-h>', '<C-w>h') +vim.keymap.set('v', '<C-j>', '<C-w>j') +vim.keymap.set('v', '<C-k>', '<C-w>k') +vim.keymap.set('v', '<C-l>', '<C-w>l') + +-------------- +-- TERMINAL -- +-------------- + +-- escape for term windows +vim.keymap.set('t', '<Esc>', '<C-\\><C-n>') diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua new file mode 100644 index 0000000..343c76b --- /dev/null +++ b/nvim/lua/lsp.lua @@ -0,0 +1,22 @@ +-- Remove Global Default Key mapping +vim.keymap.del("n", "grn") +vim.keymap.del("n", "gra") +vim.keymap.del("n", "grr") +vim.keymap.del("n", "gri") +vim.keymap.del("n", "gO") + +-- Create keymapping +-- LspAttach: After an LSP Client performs "initialize" and attaches to a buffer. +vim.api.nvim_create_autocmd("LspAttach", { + callback = function(args) + local keymap = vim.keymap + local lsp = vim.lsp + local bufopts = { noremap = true, silent = true } + + keymap.set("n", "gr", lsp.buf.references, bufopts) + keymap.set("n", "gd", lsp.buf.definition, bufopts) + keymap.set("n", "<space>rn", lsp.buf.rename, bufopts) + keymap.set("n", "K", lsp.buf.hover, bufopts) + keymap.set("n", "<space>f", lsp.buf.format, bufopts) + end +}) diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua new file mode 100644 index 0000000..ae802be --- /dev/null +++ b/nvim/lua/options.lua @@ -0,0 +1,86 @@ +-- Hint: use `:h <option>` to figure out the meaning if needed +vim.opt.clipboard = 'unnamedplus' -- use system clipboard +vim.opt.completeopt = {'menu', 'menuone', 'noselect'} +vim.opt.mouse = 'a' -- allow the mouse to be used in nvim + +-- Tab +vim.opt.tabstop = 2 -- number of visual spaces per TAB +vim.opt.softtabstop = 2 -- number of spaces in tab when editing +vim.opt.shiftwidth = 2 -- insert 2 spaces on a tab +vim.opt.expandtab = true -- tabs are spaces +vim.opt.smartindent = true +vim.opt.smarttab = true + +-- UI config +vim.opt.number = true -- show absolute number +vim.opt.relativenumber = true -- show relative numbers +vim.opt.cursorline = true -- highlight cursor line underneath cursor horizontally +vim.opt.splitbelow = true -- open new vertical splits bottom +vim.opt.splitright = true -- open new horizontal splits right +-- vim.opt.termguicolors = true -- enable 24-bit RGB color in the TUI +vim.opt.showmode = false -- show the "-- INSERT --" and other hints + +-- Searching +vim.opt.incsearch = true -- search as characters are entered +vim.opt.hlsearch = false -- do not highlight matches +vim.opt.ignorecase = true -- ignore case in searches by default +vim.opt.smartcase = true -- but make it case sensitive if an uppercase is entered + +-- Etc +vim.opt.ruler = true -- Show row and column ruler info +vim.opt.undolevels = 1000 -- Number of undo levels +vim.opt.backspace = { "indent", "eol", "start" } -- Backspace behavior +vim.opt.foldmethod = "marker" +vim.opt.conceallevel = 2 + +-- Plugins +-- emmet +vim.g.user_emmet_leader_key = '<C-a>' + +-- zig +vim.g.zig_fmt_autosave = 1 + +-- markdown +vim.g.vim_markdown_folding_disabled = 1 +vim.g.vim_markdown_folding_level = 3 +vim.g.vim_markdown_toc_autofit = 1 +vim.g.vim_markdown_emphasis_multiline = 0 +vim.g.tex_conceal = "" +vim.g.vim_markdown_math = 1 +vim.g.vim_markdown_conceal_code_blocks = 1 +vim.g.vim_markdown_fenced_languages = { 'c++=cpp', 'viml=vim', 'bash=sh', 'ini=dosini' } +vim.g.vim_markdown_follow_anchor = 1 +vim.g.vim_markdown_math = 1 +vim.g.vim_markdown_frontmatter = 1 +vim.g.vim_markdown_toml_frontmatter = 1 +vim.g.vim_markdown_strikethrough = 1 +vim.g.vim_markdown_no_extensions_in_markdown = 1 +vim.g.vim_markdown_autowrite = 1 +vim.g.vim_markdown_auto_insert_bullets = 0 +vim.g.vim_markdown_new_list_item_indent = 0 +vim.g.vim_markdown_edit_url_in = 'tab' + +-- NERDTree +vim.g.NERDTreeGitStatusUseNerdFonts = 1 +vim.g.NERDTreeGitStatusShowClean = 1 +vim.g.NERDTreeDirArrowExpandable = '>' +vim.g.NERDTreeDirArrowCollapsible = '<' +vim.g.NERDTreeMapToggleHidden = 'z' + +-- goyo +vim.g.goyo_width = '90%' +vim.g.goyo_height = '100%' + +-- limelight +vim.g.limelight_conceal_ctermfg = 'gray' +vim.g.limelight_conceal_guifg = 'gray' + +-- devicon +vim.g.airline_powerline_fonts = 1 +vim.g.webdevicons_enable_nerdtree = 1 + +-- vim-indent-guides +vim.g.indent_guides_enable_on_vim_startup = 0 + +-- vim-signify +vim.opt.updatetime = 100 diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua new file mode 100644 index 0000000..3684b89 --- /dev/null +++ b/nvim/lua/plugins.lua @@ -0,0 +1,71 @@ +local lazypath = vim.fn.stdpath("data") .. "lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + -- LSP manager + { "mason-org/mason.nvim", opts = {} }, + {"vimwiki/vimwiki", + init = function() + vim.g.vimwiki_list = { + { + path = '~/.local/share/vimwiki' + }, + } + end, + }, + { + "mason-org/mason-lspconfig.nvim", + dependencies = { + "mason-org/mason.nvim", + "neovim/nvim-lspconfig", + }, + opts = { + ensure_installed = { "pylsp", "clangd", "rust_analyzer", "zls" }, + }, + }, + { + "neovim/nvim-lspconfig", + config = function() + local lspconfig = require("lspconfig") + + lspconfig.pylsp.setup({}) + end, + }, + "tanvirtin/monokai.nvim", + "lervag/vimtex", + 'tomasiser/vim-code-dark', + 'flazz/vim-colorschemes', + 'ZachIndigo/vim-preglow', + 'axvr/org.vim', + 'ziglang/zig.vim', + 'jdonaldson/vaxe', + 'xuhdev/vim-latex-live-preview', + 'waycrate/swhkd-vim', + 'HiPhish/guile.vim', + 'preservim/nerdtree', + 'Xuyuanp/nerdtree-git-plugin', + 'PhilRunninger/nerdtree-visual-selection', + 'tpope/vim-fugitive', + 'junegunn/goyo.vim', + 'junegunn/limelight.vim', + 'vim-airline/vim-airline', + 'nathanaelkane/vim-indent-guides', + 'mhinz/vim-signify', + 'tpope/vim-endwise', + 'tpope/vim-surround', + 'mattn/emmet-vim', + 'godlygeek/tabular', + 'plasticboy/vim-markdown', + 'ryanoasis/vim-devicons', + {'akinsho/toggleterm.nvim', version = "*", config = true}, +}) diff --git a/nvim/lua/term.lua b/nvim/lua/term.lua new file mode 100644 index 0000000..e7aac4e --- /dev/null +++ b/nvim/lua/term.lua @@ -0,0 +1,51 @@ +require("toggleterm").setup{ + -- size can be a number or function which is passed the current terminal + size = function(term) + if term.direction == "horizontal" then + return 15 + elseif term.direction == "vertical" then + return vim.o.columns * 0.4 + end + end, + open_mapping = [[<leader>`]], -- or { [[<c-\>]], [[<c-¥>]] } if you also use a Japanese keyboard. + hide_numbers = true, -- hide the number column in toggleterm buffers + shade_filetypes = {}, + autochdir = false, -- when neovim changes it current directory the terminal will change it's own when next it's opened + shade_terminals = true, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false + shading_factor = '-30', -- the percentage by which to lighten dark terminal background, default: -30 + shading_ratio = '-3', -- the ratio of shading factor for light/dark terminal background, default: -3 + start_in_insert = true, + insert_mappings = true, -- whether or not the open mapping applies in insert mode + terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals + persist_size = true, + persist_mode = true, -- if set to true (default) the previous terminal mode will be remembered + direction = 'horizontal', + close_on_exit = true, -- close the terminal window when the process exits + clear_env = false, -- use only environmental variables from `env`, passed to jobstart() + -- Change the default shell. Can be a string or a function returning a string + shell = vim.o.shell, + auto_scroll = true, -- automatically scroll to the bottom on terminal output + -- This field is only relevant if direction is set to 'float' + float_opts = { + -- The border key is *almost* the same as 'nvim_open_win' + -- see :h nvim_open_win for details on borders however + -- the 'curved' border is a custom border type + -- not natively supported but implemented in this plugin. + border = 'single', + -- like `size`, width, height, row, and col can be a number or function which is passed the current terminal + winblend = 3, + title_pos = 'left' + }, + winbar = { + enabled = false, + name_formatter = function(term) -- term: Terminal + return term.name + end + }, + responsiveness = { + -- breakpoint in terms of `vim.o.columns` at which terminals will start to stack on top of each other + -- instead of next to each other + -- default = 0 which means the feature is turned off + horizontal_breakpoint = 135, + } +} diff --git a/nvim/lua/vimwiki.lua b/nvim/lua/vimwiki.lua new file mode 100644 index 0000000..43b8aa6 --- /dev/null +++ b/nvim/lua/vimwiki.lua @@ -0,0 +1,10 @@ +-- Required for Vimwiki to work +vim.opt.compatible = false + +-- Vimwiki Keybindings +local opts = { + noremap = false, + silent = true, +} + +vim.keymap.set('n', '<leader>wx', '<Plug>VimwikiIndex', opts) diff --git a/nwg-bar/bar.json b/nwg-bar/bar.json new file mode 100644 index 0000000..01a92c3 --- /dev/null +++ b/nwg-bar/bar.json @@ -0,0 +1,22 @@ +[ + { + "label": "Lock", + "exec": "loginctl lock-session", + "icon": "/usr/share/nwg-bar/images/system-lock-screen.svg" + }, + { + "label": "Logout", + "exec": "hyprctl dispatch exit", + "icon": "/usr/share/nwg-bar/images/system-log-out.svg" + }, + { + "label": "Reboot", + "exec": "systemctl reboot", + "icon": "/usr/share/nwg-bar/images/system-reboot.svg" + }, + { + "label": "Shutdown", + "exec": "systemctl -i poweroff", + "icon": "/usr/share/nwg-bar/images/system-shutdown.svg" + } +] diff --git a/nwg-bar/style.css b/nwg-bar/style.css new file mode 100644 index 0000000..023d282 --- /dev/null +++ b/nwg-bar/style.css @@ -0,0 +1,35 @@ +window { + background-color: rgba (0, 0, 0, 1.0) +} + +/* Outer bar container, takes all the window width/height */ +#outer-box { + margin: 0px +} + +/* Inner bar container, surrounds buttons */ +#inner-box { + background-color: rgba (27, 29, 28, 0.85); + border-radius: 10px; + border-style: none; + border-width: 1px; + border-color: rgba (156, 142, 122, 0.7); + padding: 5px; + margin: 5px +} + +button, image { + background: none; + border: none; + box-shadow: none +} + +button { + padding-left: 10px; + padding-right: 10px; + margin: 5px +} + +button:hover { + background-color: rgba (25, 138, 68, 1.0) +} diff --git a/python/pythonrc b/python/pythonrc index cd954b6..c7cf7d5 100644 --- a/python/pythonrc +++ b/python/pythonrc @@ -1,24 +1,40 @@ -def is_vanilla() -> bool: +try: + import atexit + import os import sys - return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0] + from pathlib import Path + import readline +except ImportError as e: + print(f"Couldn't load module. {e}") + sys.exit(1) -def setup_history(): - import os - import atexit - import readline - from pathlib import Path +################ +# TAB COMPLETION # +################## + +try: + readline.parse_and_bind("tab: complete") +except ImportError: + pass + - if state_home := os.environ.get('XDG_STATE_HOME'): - state_home = Path(state_home) - else: - state_home = Path.home() / '.local' / 'state' +### XDG Compliant History File +# See https://gist.github.com/viliampucik/8713b09ff7e4d984b29bfcd7804dc1f4?permalink_comment_id=4582040#gistcomment-4582040 - history: Path = state_home / 'python_history' +# Destroy default history file writing hook (and also tab completion, which is why we manually added it above) +if hasattr(sys, '__interactivehook__'): + del sys.__interactivehook__ - readline.read_history_file(str(history)) - atexit.register(readline.write_history_file, str(history)) +histfile = Path(os.getenv("XDG_CACHE_HOME", Path.home() / ".cache")) / "python_history" +try: + histfile.touch(exist_ok=True) +except FileNotFoundError: # Probably the parent directory doesn't exist + histfile.parent.mkdir(parents=True, exist_ok=True) -if is_vanilla(): - setup_history() +readline.read_history_file(histfile) +# Don't store an obscene amount of history +readline.set_history_length(5000) +# Write to history file on exit +atexit.register(readline.write_history_file, histfile) diff --git a/qt6ct/qt6ct.conf b/qt6ct/qt6ct.conf index 5d9a12c..3dce998 100644 --- a/qt6ct/qt6ct.conf +++ b/qt6ct/qt6ct.conf @@ -1,6 +1,6 @@ [Appearance] -color_scheme_path=/usr/share/qt6ct/colors/airy.conf -custom_palette=false +color_scheme_path=/home/zachir/.config/qt6ct/style-colors.conf +custom_palette=true icon_theme=Cosmic standard_dialogs=gtk2 style=qt6gtk2 diff --git a/rofi/config.rasi b/rofi/config.rasi new file mode 100644 index 0000000..1de6cb4 --- /dev/null +++ b/rofi/config.rasi @@ -0,0 +1 @@ +@theme "dmenu.rasi" diff --git a/rofi/dmenu.rasi b/rofi/dmenu.rasi new file mode 100644 index 0000000..2ac7745 --- /dev/null +++ b/rofi/dmenu.rasi @@ -0,0 +1,43 @@ +/** + * ROFI Color theme + * User: Qball + * Copyright: Dave Davenport + */ + +* { + background-color: Black; + border-color: White; + text-color: White; + font: "JetBrainsMono Nerd Font 12"; +} +window { + anchor: north; + location: north; + width: 100%; + padding: 4px; + children: [ horibox ]; +} +horibox { + orientation: vertical; + children: [ prompt, entry, listview ]; +} +listview { + layout: vertical; + spacing: 5px; + lines: 15; +} +entry { + expand: false; + width: 10em; +} +element { + padding: 0px 2px; +} +element selected { + background-color: #198844; +} + +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} diff --git a/scroll/config b/scroll/config new file mode 100644 index 0000000..e3502d1 --- /dev/null +++ b/scroll/config @@ -0,0 +1,595 @@ +# 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 /etc/scroll/config.d/* + +# This includes config.d/user.conf, which should set the $home variable +include ~/.config/scroll/config.d/user.conf + +### 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 + +focus_follows_mouse yes + +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 + + # Start restart menu + bindsym $mod+r exec rs + + # 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 + + # Move window to other monitors + 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 +## +## Workspaces: +## NOW USING SWAYSOME +## +# # 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. + +# 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 yes + +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 + +# Enable maximize when only +lua $scripts/maximize_when_only.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 ~/.config/scroll/config.d/* diff --git a/scroll/config.d/swaysome.conf b/scroll/config.d/swaysome.conf new file mode 100644 index 0000000..eebf6a3 --- /dev/null +++ b/scroll/config.d/swaysome.conf @@ -0,0 +1,69 @@ +# vim: ft=swayconfig +# +# Use (un)bindcode or (un)bindsym, depending on what you used in your main sway config file. +# The `--no-warn` setting is only added to shortcuts that exist in the default config. You may want to add or remove +# that flag on some bindings depending on your config. + + +# Change focus between workspaces +bindsym --no-warn $mod+1 exec "swaysome focus 1" +bindsym --no-warn $mod+2 exec "swaysome focus 2" +bindsym --no-warn $mod+3 exec "swaysome focus 3" +bindsym --no-warn $mod+4 exec "swaysome focus 4" +bindsym --no-warn $mod+5 exec "swaysome focus 5" +bindsym --no-warn $mod+6 exec "swaysome focus 6" +bindsym --no-warn $mod+7 exec "swaysome focus 7" +bindsym --no-warn $mod+8 exec "swaysome focus 8" +bindsym --no-warn $mod+9 exec "swaysome focus 9" +#bindsym --no-warn $mod+0 exec "swaysome focus 0" + +# Move containers between workspaces +bindsym --no-warn $mod+Shift+1 exec "swaysome move 1" +bindsym --no-warn $mod+Shift+2 exec "swaysome move 2" +bindsym --no-warn $mod+Shift+3 exec "swaysome move 3" +bindsym --no-warn $mod+Shift+4 exec "swaysome move 4" +bindsym --no-warn $mod+Shift+5 exec "swaysome move 5" +bindsym --no-warn $mod+Shift+6 exec "swaysome move 6" +bindsym --no-warn $mod+Shift+7 exec "swaysome move 7" +bindsym --no-warn $mod+Shift+8 exec "swaysome move 8" +bindsym --no-warn $mod+Shift+9 exec "swaysome move 9" +#bindsym --no-warn $mod+Shift+0 exec "swaysome move 0" + +# Focus workspace groups +bindsym $mod+Alt+1 exec "swaysome focus-group 1" +bindsym $mod+Alt+2 exec "swaysome focus-group 2" +bindsym $mod+Alt+3 exec "swaysome focus-group 3" +bindsym $mod+Alt+4 exec "swaysome focus-group 4" +bindsym $mod+Alt+5 exec "swaysome focus-group 5" +bindsym $mod+Alt+6 exec "swaysome focus-group 6" +bindsym $mod+Alt+7 exec "swaysome focus-group 7" +bindsym $mod+Alt+8 exec "swaysome focus-group 8" +bindsym $mod+Alt+9 exec "swaysome focus-group 9" +#bindsym $mod+Alt+0 exec "swaysome focus-group 0" + +# Move containers to other workspace groups +bindsym $mod+Alt+Shift+1 exec "swaysome move-to-group 1" +bindsym $mod+Alt+Shift+2 exec "swaysome move-to-group 2" +bindsym $mod+Alt+Shift+3 exec "swaysome move-to-group 3" +bindsym $mod+Alt+Shift+4 exec "swaysome move-to-group 4" +bindsym $mod+Alt+Shift+5 exec "swaysome move-to-group 5" +bindsym $mod+Alt+Shift+6 exec "swaysome move-to-group 6" +bindsym $mod+Alt+Shift+7 exec "swaysome move-to-group 7" +bindsym $mod+Alt+Shift+8 exec "swaysome move-to-group 8" +bindsym $mod+Alt+Shift+9 exec "swaysome move-to-group 9" +#bindsym $mod+Alt+Shift+0 exec "swaysome move-to-group 0" + +# Move focused container to next output +bindsym $mod+o exec "swaysome next-output" +# Move focused container to previous output +bindsym $mod+Shift+o exec "swaysome prev-output" + +# Move focused workspace group to next output +bindsym $mod+Alt+o exec "swaysome workspace-group-next-output" +# Move focused workspace group to previous output +bindsym $mod+Alt+Shift+o exec "swaysome workspace-group-prev-output" + +# Init workspaces for every screen +exec "swaysome init 1" + + 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/maximize_when_only.lua b/scroll/scripts/maximize_when_only.lua new file mode 100644 index 0000000..a047180 --- /dev/null +++ b/scroll/scripts/maximize_when_only.lua @@ -0,0 +1,38 @@ +local args, state = ... + +local maximized_containers = scroll.state_get_value(state, "maximized_containers") or {} + +local debug_notify = function(msg) + scroll.command(nil, "exec notify-send " .. msg) +end + +local maximize_container = function(container, workspace) + local wf = scroll.container_get_width_fraction(container) + local hf = scroll.container_get_height_fraction(container) + maximized_containers[workspace] = { container = container, wf = wf, hf = hf, workspace = workspace } + scroll.state_set_value(state, "maximized_containers", maximized_containers) + scroll.command(container, "set_size h 1.0") + scroll.command(container, "set_size v 1.0") +end + +local maximize_when_only = function() + local focused_workspace = scroll.focused_workspace() + local containers = scroll.workspace_get_tiling(focused_workspace) + local focused_container = scroll.focused_container() + local maximized_container = maximized_containers[focused_workspace] + if #containers == 1 then + if not maximized_container or (maximized_container and maximized_container.container ~= focused_container) then + -- debug_notify("Maximizing") + maximize_container(focused_container, focused_workspace) + end + elseif #containers > 1 and maximized_container then + -- debug_notify("Shrinking") + scroll.command(maximized_container.container, "set_size h " .. maximized_container.wf) + scroll.command(maximized_container.container, "set_size v " .. maximized_container.hf) + maximized_containers[focused_workspace] = nil + scroll.state_set_value(state, "maximized_containers", maximized_containers) + end + scroll.command(focused_container, "nop") +end + +scroll.add_callback("view_focus", maximize_when_only, nil) diff --git a/scroll/scripts/scratchpad.lua b/scroll/scripts/scratchpad.lua new file mode 100644 index 0000000..0afaa97 --- /dev/null +++ b/scroll/scripts/scratchpad.lua @@ -0,0 +1,66 @@ +local args, _ = ... +local id = "" +local terminal = false +local command = nil + +for i, arg in ipairs(args) do + if i <= 1 then + id = arg + if #args == 1 then + command = arg + end + elseif i == 2 then + if (arg == "kitty") then + terminal = true + else + command = arg + end + elseif (terminal == true) then + command = arg + break + end +end + +command = command or "kitty" + +local function exists(id) + local is_in_scratchpad = 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_scratchpad = true + end + end + end + return is_in_scratchpad +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) + + @@ -18,12 +18,18 @@ case `uname -s` in alias ls="ls -h" ;; "Linux") - alias ls="ls -h $COLOR_FLAGS_GNU" + #alias ls="ls -h $COLOR_FLAGS_GNU" + type eza >/dev/null && alias ls="eza" + ;; + "Darwin") + type eza >/dev/null && alias ls="eza --color" ;; esac alias ll='ls -l' -alias la='ls -A' -alias lla='ls -lA' +alias lt='ls -l --total-size' +alias lts='ls -l --total-size --sort size --reverse' +alias la='ls -a' +alias lla='ls -la' alias lb='lsblk' alias md='mkdir -p' alias ch='cd $HOME' @@ -33,7 +39,14 @@ alias nv='nvim' alias v='nvim' ## Change utils -alias rm='rm -i' +case `uname -s` in + "OpenBSD" | "Darwin") + alias rm='rm -i' + ;; + "Linux") + type trash-put >/dev/null && alias rm='trash-put' + ;; +esac alias cp='cp -i' alias srsync='rsync -KPUcrtvyz' @@ -79,7 +92,7 @@ alias s='sudo systemctl' #alias ursm='env SVDIR="$HOME/.local/sv/" rsm' # XDG dirs fix -alias svn="svn --config-dir \"$XDG_CONFIG_HOME\"/subversion" +alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion" alias adb="HOME="$XDG_DATA_HOME"/android adb" alias wget="wget --hsts-file=\"$XDG_DATA_HOME/wget-hsts\"" alias yarn="yarn --use-yarnrc $XDG_CONFIG_HOME/yarn/config" diff --git a/sh/functions b/sh/functions index e8515d8..e84ea51 100644 --- a/sh/functions +++ b/sh/functions @@ -72,7 +72,6 @@ dc - /home/zachir/Documents dl - /home/zachir/.local/src/dwl dm - /home/zachir/.local/src/dmenu do - /home/zachir/Downloads -dp - /home/zachir/Downloads/plugin/zachir_librem.one dw - /home/zachir/Downloads/wine e - /home/zachir/Desktop f - /home/zachir/.var/app @@ -176,6 +175,7 @@ zx - /home/zachir/Documents/zachir.xyz "vsn") cd "$HOME/.vst/native" ;; "vs.") cd "$HOME/.vst" ;; "vsy") cd "$HOME/.vst/yabridge" ;; +"vw") cd "$XDG_DATA_HOME/vimwiki" ;; "wdo") cd "$WINEPREFIX/drive_c/users/$USER/Downloads" ;; "wa") cd "$SRCDIR/wallpapers" ;; "wd") cd "$WINEPREFIX" ;; @@ -22,6 +22,10 @@ export ADB_VENDOR_KEY="$XDG_CONFIG_HOME"/android export LESSHISTFILE=- # Fixing Paths +export RENPY_PATH_TO_SAVES="$XDG_DATA_HOME" +export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel +export ZPLUG_HOME="$XDG_DATA_HOME/zplug" +export DOTNET_CLI_HOME="$XDG_DATA_HOME"/dotnet export MBSYNCRC="$XDG_CONFIG_HOME"/isync/mbsyncrc export ATOM_HOME="$XDG_DATA_HOME"/atom export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc @@ -36,7 +40,7 @@ export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages export RXVT_SOCKET="$XDG_RUNTIME_DIR"/urxvtd export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc -#export ZDOTDIR=$HOME/.config/zsh +export ZDOTDIR=$HOME/.config/zsh export CARGO_HOME="$XDG_DATA_HOME"/cargo export RUSTUP_HOME="$XDG_DATA_HOME"/rustup export WEECHAT_HOME="$XDG_CONFIG_HOME"/weechat @@ -45,20 +49,20 @@ export NOTMUCH_CONFIG="$XDG_CONFIG_HOME"/notmuch/notmuchrc export NMBGIT="$XDG_DATA_HOME"/notmuch/nmbug export WINEROOT="$XDG_DATA_HOME"/wineprefixes export WINEPREFIX="$WINEROOT"/default -export MPD_HOST="$XDG_CONFIG_HOME/mpd/socket" +export MPD_HOST="127.0.0.1" export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc export RENPY_PATH_TO_SAVES="$XDG_DATA_HOME" export XINITRC="$XDG_CONFIG_HOME"/X11/xinitrc export XAUTHORITY="$XDG_RUNTIME_DIR"/X11/Xauthority -export VIMINIT="set nocp | source ${XDG_CONFIG_HOME:-$HOME.config}/vim/vimrc" +#export VIMINIT="set nocp | source ${XDG_CONFIG_HOME:-$HOME.config}/vim/vimrc" export ANDROID_USER_HOME="$XDG_DATA_HOME"/android export XCURSOR_PATH="/usr/share/icons:$XDG_DATA_HOME/icons" export PYTHONSTARTUP="$XDG_CONFIG_HOME"/python/pythonrc # Scaling -export QT_AUTO_SCREEN_SCALE_FACTOR=0 -export QT_SCALE_FACTOR=1 -export QT_SCREEN_SCALE_FACTORS="1;1;1" +#export QT_AUTO_SCREEN_SCALE_FACTOR=0 +#export QT_SCALE_FACTOR=1 +#export QT_SCREEN_SCALE_FACTORS="1;1;1" export GDK_SCALE=1 export GDK_DPI_SCALE=1 @@ -73,7 +77,7 @@ export XKB_DEFAULT_OPTIONS=caps:escape export EDITOR="nvim" export READER="zathura" export VISUAL="nvim" -export TERMINAL="alacritty" +export TERMINAL="st" export BROWSER="browser" export VIDEO="mpv" export IMAGE="sxiv" diff --git a/sxhkd/sxhkdrc b/sxhkd/sxhkdrc index 26e633b..125f8fe 100755 --- a/sxhkd/sxhkdrc +++ b/sxhkd/sxhkdrc @@ -12,11 +12,15 @@ super + Escape # program launcher super + d - dmenu_run -i -l 15 -h 36 -fn 'mononoki Nerd Font Mono' -nb '#000' -nf '#c5c8c6' -sb '#198844' -sf '#000' + dmenu_run -l 15 # desktop application launcher +super + e + j4-dmenu-desktop --dmenu="dmenu -l 15" + +# dmenu prompt to restart programs super + r - j4-dmenu-desktop --dmenu="dmenu -i -l 15 -h 36 -fn 'mononoki Nerd Font Mono' -nb '#000' -nf '#c5c8c6' -sb '#198844' -sf '#000'" + rs # dmenu prompt for recording super + control + r diff --git a/tofi/colors b/tofi/colors index a5f480c..047c875 100644 --- a/tofi/colors +++ b/tofi/colors @@ -1,10 +1,10 @@ background-color = #000000 -outline-color = #39c1ed -border-color = #39c1ed +outline-color = #198844 +border-color = #198844 text-color = #ffffff -prompt-color = #39c1ed +prompt-color = #198844 prompt-background = #000000 -placeholder-color = #39c1ed +placeholder-color = #198844 placeholder-background = #000000 input-color = #ffffff input-background = #000000 @@ -12,6 +12,6 @@ default-result-background = #000000 alternate-result-color = #ffffff alternate-result-background = #000000 selection-color = #000000 -selection-match-color = #198844 -selection-background = #39c1ed +selection-match-color = #39c1ed +selection-background = #198844 diff --git a/tofi/cosmic b/tofi/cosmic index 9a5b4be..b339f73 100644 --- a/tofi/cosmic +++ b/tofi/cosmic @@ -7,7 +7,7 @@ height = 32 horizontal = true font-size = 18 prompt-text = "" -font = Fira Code Nerd Font Mono +font = JetBrainsMono Nerd Font outline-width = 0 border-width = 0 min-input-width = 424 diff --git a/tofi/themes/dmenu b/tofi/themes/dmenu index 75fd7f2..8af8c80 100644 --- a/tofi/themes/dmenu +++ b/tofi/themes/dmenu @@ -1,13 +1,13 @@ -include = "themes/colors" +include = "colors" hidden-character = "*" anchor = top width = 100% -height = 24 +height = 36 horizontal = true font-size = 18 prompt-text = "" -font = mononoki Nerd Font Mono +font = JetBrainsMono Nerd Font outline-width = 0 border-width = 0 min-input-width = 424 @@ -20,3 +20,4 @@ history = false selection-background-padding = 12 result-spacing = 24 require-match=false +physical-keybindings=false diff --git a/tofi/themes/dmenu_vertical b/tofi/themes/dmenu_vertical index 24df784..2e95559 100644 --- a/tofi/themes/dmenu_vertical +++ b/tofi/themes/dmenu_vertical @@ -8,7 +8,7 @@ horizontal = false font-size = 18 prompt-text = "" prompt-padding = 18 -font = mononoki Nerd Font Mono +font = JetBrainsMono Nerd Font outline-width = 0 border-width = 0 min-input-width = 424 @@ -26,3 +26,4 @@ clip-to-padding=true history = false require-match = false num-results = 15 +physical-keybindings=false @@ -13,10 +13,8 @@ set directory=$XDG_STATE_HOME/vim/swap | call mkdir(&directory, 'p') set undodir=$XDG_STATE_HOME/vim/undo | call mkdir(&undodir, 'p') set viewdir=$XDG_STATE_HOME/vim/view | call mkdir(&viewdir, 'p') -if !has('nvim') | set viminfofile=$XDG_STATE_HOME/vim/viminfo | endif - " vimplugs {{{ -call plug#begin('~/.config/nvim/plugged') +call plug#begin('~/.config/vim/plugged') " colorschemes {{{ Plug 'tomasiser/vim-code-dark' " codedark color scheme Plug 'flazz/vim-colorschemes' " meta-color scheme package @@ -52,9 +50,9 @@ Plug 'ryanoasis/vim-devicons' " dev icons for nerdtree call plug#end() " }}} -" nvim options {{{ +" vim options {{{ -"" nvimrc: +"" vimrc: "" General set showmatch " Highlight matching brace @@ -80,9 +78,6 @@ set undolevels=1000 " Number of undo levels set backspace=indent,eol,start " Backspace behaviour filetype plugin indent on -"" GUI Config -set guifont=mononoki\ Nerd\ Font\ Mono:h12 - "hi Normal guibg=NONE ctermbg=NONE "hi NonText guibg=NONE ctermbg=NONE "set background=dark @@ -260,7 +255,7 @@ nnoremap <leader>wk :resize +1<CR> nnoremap <leader>wl :vertical resize +1<CR> " config -nnoremap <leader>en :e ~/.config/nvim/init.vim<CR> +nnoremap <leader>en :e ~/.config/vim/vimrc<CR> nnoremap <leader>ec :source %<CR> " write as root @@ -303,4 +298,4 @@ nnoremap <leader>pc :PlugClean<CR> nnoremap <leader>gp :G pull<CR> nnoremap <leader>gd :G diff %<CR> -" }}} +" }} diff --git a/waybar/config b/waybar/config index 146b66c..0f47270 100644 --- a/waybar/config +++ b/waybar/config @@ -1,22 +1,44 @@ -[{ - "layer": "top", +// vim: set filetype=json5 : +{ + "layer": "bottom", "position": "top", "height": 36, - "output": "DP-1", + //"output": "%%DISPLAY%%", "spacing": 4, + //"margin-top": 5, + //"margin-bottom": 5, // Choose the order of the modules "modules-left":[ "hyprland/workspaces", "custom/launcher", "hyprland/window"], "modules-center":[], - "modules-right":[ "idle_inhibitor", "pulseaudio", "cpu", "memory", "network", "clock", "tray"], + "modules-right":[ "tray", "mpd", "idle_inhibitor", "temperature#cpu0", "temperature#cpu1", "temperature#gpu0", "temperature#gpu1", "temperature#gpu2", "wireplumber", "cpu", "memory", "network", "clock", "custom/power"], // Modules configuration - "hyprland/workspaces": { - "format": "{icon}", - "active-only": false, + "sway/workspaces": { "all-outputs": false, + "persistent-workspaces": { + "11": ["DP-2"], + "12": ["DP-2"], + "13": ["DP-2"], + "14": ["DP-2"], + "15": ["DP-2"], + "16": ["DP-2"], + "17": ["DP-2"], + "18": ["DP-2"], + "19": ["DP-2"], + "21": ["HDMI-A-1"], + "22": ["HDMI-A-1"], + "23": ["HDMI-A-1"], + "24": ["HDMI-A-1"], + "25": ["HDMI-A-1"], + "26": ["HDMI-A-1"], + "27": ["HDMI-A-1"], + "28": ["HDMI-A-1"], + "29": ["HDMI-A-1"], + }, + "format": "{icon}", "format-icons": { "1": "1", "2": "2", @@ -27,190 +49,38 @@ "7": "7", "8": "8", "9": "9", - "10": "1", - "11": "2", - "12": "3", - "13": "4", - "14": "5", - "15": "6", - "16": "7", - "17": "8", - "18": "9", + "10": "0", + "11": "1", + "12": "2", + "13": "3", + "14": "4", + "15": "5", + "16": "6", + "17": "7", + "18": "8", + "19": "9", + "20": "0", + "21": "1", + "22": "2", + "23": "3", + "24": "4", + "25": "5", + "26": "6", + "27": "7", + "28": "8", + "29": "9", }, - "persistent-workspaces": { - "DP-1": [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], - //"DP-1": [ 10, 11, 12, 13, 14, 15, 16, 17, 18 ], - }, - "on-scroll-up": "hyprctl dispatch split-workspace e+1", - "on-scroll-down": "hyprctl dispatch split-workspace e-1", - "on-click": "activate" - }, - "hyprland/window": { - "separate-outputs": true, - "format": "{}" - }, - "keyboard-state": { - "numlock": true, - "capslock": true, - "format": " {name} {icon}", - "format-icons": { - "locked": "", - "unlocked": "" - } - }, - "mpd": { - "format": "{artist} - {title}", - "format-stopped": "", - "format-paused": "{artist} - {title}", - "format-disconnected": "", - "artist-len": 15, - "title-len": 15, - //"album-len": 15, - //"max-length": 200, - "on-click": "mpc toggle" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - } - }, - "tray": { - "icon-size": 20, - "spacing": 10 - }, - "clock": { - // "timezone": "America/New_York", - "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", - "format-alt": "{:%Y-%m-%d}" - }, - "cpu": { - "format": "{usage}% ", - "tooltip": false - }, - "memory": { - "format": "{}% " - }, - "battery": { - "bat": "BAT0", - "interval": 60, - "state": { - "warning": 30, - "critical": 15 - }, - "format": "{capacity}%", - "max-length": 25 - }, - "temperature#cpu0": { - // "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon3/temp1_input", - "critical-threshold": 80, - "format-critical": "CPU TCT {temperatureC}°C {icon}", - "format": "", - "format-icons": ["", "", ""] }, - "temperature#cpu1": { - // "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon3/temp3_input", - "critical-threshold": 80, - "format-critical": "CPU TCC {temperatureC}°C {icon}", - "format": "", - "format-icons": ["", "", ""] - }, - "temperature#gpu0": { - // "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 100, - "format-critical": "GPU EDG {temperatureC}°C {icon}", - "format": "", //°C - "format-icons": ["", "", ""] - }, - "temperature#gpu1": { - // "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon2/temp2_input", - "critical-threshold": 110, - "format-critical": "GPU JUN {temperatureC}°C {icon}", - "format": "", - "format-icons": ["", "", ""] - }, - "temperature#gpu2": { - // "thermal-zone": 2, - "hwmon-path": "/sys/class/hwmon/hwmon2/temp3_input", - "critical-threshold": 105, - "format-critical": "GPU MEM {temperatureC}°C {icon}", - "format": "", - "format-icons": ["", "", ""] - }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}%" - //"format-icons": ["", ""] - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "Connected ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}", - "max-length": 22, - "on-click-right": "bash ~/.config/rofi/wifi_menu/rofi_wifi_menu" - }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon}", - "format-bluetooth": "{volume}% {icon}", - "format-bluetooth-muted": "{icon} {format_source}", - "format-muted": "{format_source}", - "format-source": "", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" - }, - "custom/launcher":{ - "format": "", - "on-click": "exec $(tofi-drun)", - "on-click-right": "killall tofi" - }, - "custom/power":{ - "format": " ", - "on-click": "nwg-bar", - "on-click-right": "killall nwg-bar" + "niri/workspaces": { + "format": "{value}", + "all-outputs": false, + "on-click": "activate" }, - "custom/snip":{ - "format": " ", - "on-click": "grimshot --notify save area $HOME/Pictures/$(zenity --entry --text 'Set filename:' --entry-text '.png')" - } -}, -{ - "layer": "top", - "position": "top", - "height": 36, - "output": "HDMI-A-1", - "spacing": 4, - - // Choose the order of the modules - - "modules-left":[ "hyprland/workspaces", "custom/launcher", "hyprland/window"], - "modules-center":[], - "modules-right":[ "tray", "mpd", "idle_inhibitor", "temperature#cpu0", "temperature#cpu1", "temperature#gpu0", "temperature#gpu1", "temperature#gpu2", "pulseaudio", "cpu", "memory", "network", "clock"], - - // Modules configuration - "hyprland/workspaces": { "format": "{icon}", "active-only": false, "all-outputs": false, + "persistent-only": true, "format-icons": { "1": "1", "2": "2", @@ -232,16 +102,29 @@ "18": "9", }, "persistent-workspaces": { - "HDMI-A-1": [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ], - //"HDMI-A-1": [ 10, 11, 12, 13, 14, 15, 16, 17, 18 ], + "*": 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, @@ -284,7 +167,7 @@ "tooltip": false }, "memory": { - "format": "{}% " + "format": "{used}G " }, "battery": { "bat": "BAT0", @@ -317,7 +200,7 @@ "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", "critical-threshold": 100, "format-critical": "GPU EDG {temperatureC}°C {icon}", - "format": "", + "format": "", //°C "format-icons": ["", "", ""] }, "temperature#gpu1": { @@ -343,7 +226,7 @@ }, "network": { // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", + "format-wifi": "{essid} ", "format-ethernet": "Connected ", "tooltip-format": "{ifname} via {gwaddr} ", "format-linked": "{ifname} (No IP) ", @@ -352,37 +235,33 @@ "max-length": 22, "on-click-right": "bash ~/.config/rofi/wifi_menu/rofi_wifi_menu" }, - "pulseaudio": { + "wireplumber": { // "scroll-step": 1, // %, can be a float "format": "{volume}% {icon}", - "format-bluetooth": "{volume}% {icon}", - "format-bluetooth-muted": "{icon} {format_source}", - "format-muted": "{format_source}", - "format-source": "", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" + "format-muted": "{volume}% ", + "format-icons": ["", "", ""], + "on-click": "volsv -t", + "scroll-step": 0.1 }, "custom/launcher":{ - "format": "", - "on-click": "exec $(tofi-drun)", - "on-click-right": "killall tofi" + "format": ">_", + "on-click": "rofi -show drun", + //"on-click-right": "killall rofi" + }, + "custom/battery":{ + "interval": 15, + "format": "{percentage}%", + "return-type": "json", + "exec": "custom-battery", + "tooltip": true, }, "custom/power":{ - "format": " ", - "on-click": "nwg-bar", - "on-click-right": "killall nwg-bar" + "format": "", + "on-click": "power-menu", + //"on-click-right": "killall rofi" }, "custom/snip":{ "format": " ", "on-click": "grimshot --notify save area $HOME/Pictures/$(zenity --entry --text 'Set filename:' --entry-text '.png')" } -}] +} diff --git a/waybar/style.css b/waybar/style.css index cf76ed2..75688fc 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -3,7 +3,7 @@ margin: 0px; border-radius: 0px; /* `otf-font-awesome` is required to be installed for icons */ - font-family: mononoki Nerd Font Mono; + font-family: JetBrainsMono Nerd Font; font-size: 18px; min-height: 0px; min-width: 0px; @@ -14,6 +14,7 @@ window#waybar { color: #ffffff; transition-property: background-color; transition-duration: .5s; + background: rgba(0, 0, 0, 0.4); } window#waybar.hidden { @@ -45,7 +46,7 @@ window#waybar.hidden { /* #workspaces button:hover { - background: #39c1ed; + background: #6e3c85; color: black; border-bottom: 3px solid #ffffff; @@ -56,9 +57,13 @@ window#waybar.hidden { background: #198844; } +#workspaces button.focused { + background: #198844; +} + /* #workspaces button.active:hover { - background: #39c1ed; + background: #6e3c85; color: black; border-bottom: 3px solid #ffffff; } @@ -81,16 +86,18 @@ window#waybar.hidden { #temperature, #backlight, #network, -#pulseaudio, +#wireplumber, #custom-media, #custom-launcher, #custom-power, +#custom-battery, #custom-layout, #custom-updater, #custom-snip, #custom-wallpaper, #tags, #taskbar, +#tray, #mode, #idle_inhibitor, #mpd { @@ -125,7 +132,7 @@ window#waybar.hidden { } #battery.charging, #battery.plugged { - color: #26A65B; + color: #198844; background-color: #1b1d1c; } @@ -153,11 +160,13 @@ label:focus { #cpu { background-color: #198844; color: #ffffff; + padding-right: 18px; } #memory { background-color: #1b1d1c; color: #ffffff; + padding-right: 18px; } #disk { @@ -173,6 +182,7 @@ label:focus { #network { background-color: #198844; color: #ffffff; + padding-right: 18px; } #network.disconnected { @@ -180,12 +190,13 @@ label:focus { color: #ffffff; } -#pulseaudio { +#wireplumber { background-color: #1b1d1c; color: #ffffff; + padding-right: 18px; } -#pulseaudio.muted { +#wireplumber.muted { background-color: #1b1d1c; color: #198844; } @@ -210,7 +221,26 @@ label:focus { background-color: #1b1d1c; font-size: 18px; margin-right: 5px; +} + +#custom-battery{ + background-color: #1b1d1c; + font-size: 18px; +} + +#custom-battery.battery_low{ + background-color: yellow; + color: #1b1d1c; +} +#custom-battery.battery_crit{ + background-color: red; + color: #1b1d1c; +} + +#custom-battery.battery_charging{ + background-color: #1d1b1c; + color: #198844; } #custom-launcher{ @@ -276,10 +306,28 @@ label:focus { background-color: #eb4d4b; } +#tray { + border-radius: 20px; + background-color: black; + color: #ffffff; +} + +#tray > .passive { + -gtk-icon-effect: dim; + background-color: #198844; + color: #ffffff; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #198844; + color: #ffffff; +} + #idle_inhibitor { background-color: #1b1d1c; border-radius: 20px 0px 0px 20px; - + padding-right: 18px; } #idle_inhibitor.activated { diff --git a/wireplumber/main.lua.d/51-custom.lua b/wireplumber/main.lua.d/51-custom.lua deleted file mode 100644 index 2340e94..0000000 --- a/wireplumber/main.lua.d/51-custom.lua +++ /dev/null @@ -1,22 +0,0 @@ -table.insert(alsa_monitor.rules, - { - -- Rules for matching a device or node. It is an array of - -- properties that all need to match the regexp. If any of the - -- matches work, the actions are executed for the object. - matches = { - { - { "device.name", "matches", "alsa_card.usb-Audient_Audient_iD4-00" }, - }, - }, - -- Apply properties on the matched object. - apply_properties = { - -- Use UCM instead of profile when available. Can be - -- disabled to skip trying to use the UCM profile. - ["api.alsa.use-ucm"] = false, - - -- The default active profile. Is by default set to "Off". - ["device.profile"] = "Pro Audio", - }, - } -) - diff --git a/wireplumber/wireplumber.conf.d/51-id4.conf b/wireplumber/wireplumber.conf.d/51-id4.conf new file mode 100644 index 0000000..c01df40 --- /dev/null +++ b/wireplumber/wireplumber.conf.d/51-id4.conf @@ -0,0 +1,17 @@ +monitor.alsa.rules = [ + { + matches = [ + { + device.name = "alsa_card.usb-Audient_Audient_iD4-00" + } + ] + actions = { + update-props = { + api.alsa.use-acp = false, + device.profile = "pro-audio", + api.acp.auto-profile = false, + api.acp.auto-port = false + } + } + } +] diff --git a/wireplumber/wireplumber.conf.d/51-volt4.conf b/wireplumber/wireplumber.conf.d/51-volt4.conf new file mode 100644 index 0000000..0c03252 --- /dev/null +++ b/wireplumber/wireplumber.conf.d/51-volt4.conf @@ -0,0 +1,17 @@ +monitor.alsa.rules = [ + { + matches = [ + { + device.name = "alsa_card.usb-Universal_Audio_Volt_4_22282055004772-00" + } + ] + actions = { + update-props = { + api.alsa.use-acp = false, + device.profile = "pro-audio", + api.acp.auto-profile = false, + api.acp.auto-port = false + } + } + } +] diff --git a/xsettingsd/xsettingsd.conf b/xsettingsd/xsettingsd.conf index e762fa9..7e001eb 100644 --- a/xsettingsd/xsettingsd.conf +++ b/xsettingsd/xsettingsd.conf @@ -1,5 +1,5 @@ Net/ThemeName "Flat-Remix-GTK-Green-Darkest" -Net/IconThemeName "Cosmic" +Net/IconThemeName "Papirus-Dark" Gtk/CursorThemeName "BreezeX-Black" Net/EnableEventSounds 1 EnableInputFeedbackSounds 0 diff --git a/yay/config.json b/yay/config.json index 2b64b70..61f2d02 100644 --- a/yay/config.json +++ b/yay/config.json @@ -10,7 +10,7 @@ "pacmanconf": "/etc/pacman.conf", "redownload": "no", "answerclean": "All", - "answerdiff": "", + "answerdiff": "All", "answeredit": "", "answerupgrade": "", "gitbin": "git", @@ -21,14 +21,14 @@ "searchby": "name-desc", "gitflags": "", "removemake": "yes", - "sudobin": "sudo", + "sudobin": "doas", "sudoflags": "", "version": "12.4.2", "requestsplitn": 150, "completionrefreshtime": 7, "maxconcurrentdownloads": 1, "bottomup": true, - "sudoloop": true, + "sudoloop": false, "timeupdate": false, "devel": false, "cleanAfter": true, @@ -36,8 +36,8 @@ "provides": true, "pgpfetch": true, "cleanmenu": true, - "diffmenu": false, - "editmenu": true, + "diffmenu": true, + "editmenu": false, "combinedupgrade": false, "useask": false, "batchinstall": false, @@ -2,5 +2,6 @@ unset HISTFILE export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" export skip_global_compinit=1 +fpath=($XDG_CONFIG_HOME/functions $fpath) [ -f /etc/profile ] && . /etc/profile [ -f "$XDG_CONFIG_HOME/sh/profile" ] && . "$XDG_CONFIG_HOME/sh/profile" diff --git a/zsh/.zshrc b/zsh/.zshrc new file mode 100644 index 0000000..c600a2a --- /dev/null +++ b/zsh/.zshrc @@ -0,0 +1,130 @@ +#zmodload zsh/zprof +[ -z "$XDG_CONFIG_HOME" ] && XDG_CONFIG_HOME="$HOME/.config" +HISTFILE="$XDG_CONFIG_HOME/zsh/hist" +SAVEHIST=1000 +HISTSIZE=1000 +setopt APPEND_HISTORY +setopt HIST_FIND_NO_DUPS +setopt HIST_EXPIRE_DUPS_FIRST +setopt HIST_VERIFY +setopt HIST_IGNORE_DUPS +setopt INC_APPEND_HISTORY +setopt HIST_REDUCE_BLANKS +setopt COMPLETE_ALIASES +setopt AUTO_CD + +_SH="zsh" + +if [ -f "$XDG_CONFIG_HOME"/sh/aliases ]; then + source "$XDG_CONFIG_HOME"/sh/aliases +fi +if [ -f "$XDG_CONFIG_HOME"/sh/functions ]; then + source "$XDG_CONFIG_HOME"/sh/functions +fi + +if [ -f "$XDG_CONFIG_HOME/zsh/zshrc" ]; then + alias e='source "$XDG_CONFIG_HOME/zsh/zshrc"' +elif [ -f "$XDG_CONFIG_HOME/zshrc" ]; then + alias e='source "$XDG_CONFIG_HOME/zshrc"' +elif [ -f "$HOME"/.zshrc ]; then + alias e='source ~/.zshrc' +fi + +source ~/.config/zsh/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} + +#autoload zkbd; zkbd +bindkey -v +bindkey "${key[Backspace]}" backward-delete-char +bindkey "${key[Delete]}" delete-char +bindkey "${key[Home]}" beginning-of-line +bindkey "${key[End]}" end-of-line +bindkey "${key[PageUp]}" history-substring-search-up +bindkey "${key[PageDown]}" history-substring-search-down + +[ -f "$ZDOTDIR/.zsh_theme" ] && . "$ZDOTDIR/.zsh_theme" +COLOR1="${COLOR1:-002}" +COLOR2="${COLOR2:-006}" +COLORV="${COLORV:-012}" + +if (env | grep -Fq 'DISTROBOX'); then + MYPROMPT=$'%F{000}%K{004}[%n@%m]%F{013}\UE0B2%K{013}%F{000}%~%F{013}%K{004}\UE0B0%F{000}%#%F{004}%k\UE0B0%f ' +else + MYPROMPT=$'%F{000}%K{'"$COLOR1"$'}[%n@%m]%F{'"$COLOR2"$'}\UE0B2%K{'"$COLOR2"$'}%F{000}%~%F{'"$COLOR2"$'}%K{'"$COLOR1"$'}\UE0B0%F{000}%#%F{'"$COLOR1"$'}%k\UE0B0%f ' +fi +function zle-line-init zle-keymap-select { + VIM_PROMPT=$'%F{000}%K{'"$COLORV"$'}[%n@%m]%F{'"$COLOR2"$'}\UE0B2%K{'"$COLOR2"$'}%F{000}%~%F{'"$COLOR2"$'}%K{'"$COLORV"$'}\UE0B0%F{000}%#%F{'"$COLORV"$'}%k\UE0B0%f ' + PS1="${${KEYMAP/vicmd/$VIM_PROMPT}/main/$MYPROMPT}" + zle reset-prompt +} + +zle -N zle-line-init +zle -N zle-keymap-select +export KEYTIMEOUT=1 + +fpath+="$XDG_CONFIG_HOME/zsh/functions" + +autoload -Uz anonsh + +autoload -Uz compinit +if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then + compinit +else + compinit -C +fi + +zshcache_time="$(date +%s%N)" + +autoload -Uz add-zsh-hook + +rehash_precmd() { + if [[ -a /var/cache/zsh/pacman ]]; then + local paccache_time="$(date -r /var/cache/zsh/pacman +%s%N)" + if (( zshcache_time < paccache_time )); then + rehash + zshcache_time="$paccache_time" + fi + fi +} + +add-zsh-hook -Uz precmd rehash_precmd + +zstyle ':completion:*' hosts off + +### Added by Zinit's installer +if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then + print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f" + command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit" + command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \ + print -P "%F{33} %F{34}Installation successful.%f%b" || \ + print -P "%F{160} The clone has failed.%f%b" +fi + +source "$HOME/.local/share/zinit/zinit.git/zinit.zsh" +autoload -Uz _zinit +(( ${+_comps} )) && _comps[zinit]=_zinit + +# Load a few important annexes, without Turbo +# (this is currently required for annexes) +zinit light-mode for \ + zdharma-continuum/zinit-annex-as-monitor \ + zdharma-continuum/zinit-annex-bin-gem-node \ + zdharma-continuum/zinit-annex-patch-dl \ + zdharma-continuum/zinit-annex-rust + +### End of Zinit's installer chunk +zinit snippet OMZ::plugins/git/git.plugin.zsh + +zinit load 'zsh-users/zsh-history-substring-search' +zinit ice wait atload'_history_substring_search_config' + +bindkey "${key[Up]}" history-substring-search-up +bindkey "${key[Down]}" history-substring-search-down +bindkey -M vicmd "${key[Up]}" history-substring-search-up +bindkey -M vicmd "${key[Down]}" history-substring-search-down +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 ice wait atload'_history_substring_search_config' +#zprof diff --git a/zsh/zshrc b/zsh/zshrc deleted file mode 100644 index 9acd42f..0000000 --- a/zsh/zshrc +++ /dev/null @@ -1,81 +0,0 @@ -#zmodload zsh/zprof -if [ -d "$HOME/.zplug" ]; then - export ZPLUG_INSTALLED="y" - source "$HOME/.zplug/init.zsh" -fi -HISTFILE="$XDG_CONFIG_HOME/zsh/hist" -SAVEHIST=1000 -HISTSIZE=1000 -setopt APPEND_HISTORY -setopt HIST_FIND_NO_DUPS -setopt HIST_EXPIRE_DUPS_FIRST -setopt HIST_VERIFY -setopt HIST_IGNORE_DUPS -setopt INC_APPEND_HISTORY -setopt HIST_REDUCE_BLANKS -setopt COMPLETE_ALIASES -setopt AUTO_CD - -_SH="zsh" - -if [ -f "$XDG_CONFIG_HOME"/sh/aliases ]; then - source "$XDG_CONFIG_HOME"/sh/aliases -fi -if [ -f "$XDG_CONFIG_HOME"/sh/functions ]; then - source "$XDG_CONFIG_HOME"/sh/functions -fi - -if [ -f "$XDG_CONFIG_HOME/zsh/zshrc" ]; then - alias e='source "$XDG_CONFIG_HOME/zsh/zshrc"' -elif [ -f "$XDG_CONFIG_HOME/zshrc" ]; then - alias e='source "$XDG_CONFIG_HOME/zshrc"' -elif [ -f "$HOME"/.zshrc ]; then - alias e='source ~/.zshrc' -fi - -source ~/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} - -#autoload zkbd; zkbd -bindkey -v -bindkey "${key[Backspace]}" backward-delete-char -bindkey "${key[Delete]}" delete-char -bindkey "${key[Home]}" beginning-of-line -bindkey "${key[End]}" end-of-line -bindkey "${key[PageUp]}" history-substring-search-up -bindkey "${key[PageDown]}" history-substring-search-down - -MYPROMPT=$'%S%F{002}[%n@%m]\UE0B2%F{015}%s%~%S%F{002}\UE0B0%#%s\UE0B0%f ' -function zle-line-init zle-keymap-select { - VIM_PROMPT=$'%S%F{012}[%n@%m]\UE0B2%F{015}%s%~%S%F{012}\UE0B0%#%s\UE0B0%f ' - PS1="${${KEYMAP/vicmd/$VIM_PROMPT}/main/$MYPROMPT}" - zle reset-prompt -} - -zle -N zle-line-init -zle -N zle-keymap-select -export KEYTIMEOUT=1 - -fpath+="$XDG_CONFIG_HOME/zsh/zfunc" - -if [ -n "$ZPLUG_INSTALLED" ]; then - # zsh history substring search - zplug "zsh-users/zsh-history-substring-search", as:plugin - - bindkey "${key[Up]}" history-substring-search-up - bindkey "${key[Down]}" history-substring-search-down - bindkey -M vicmd "${key[Up]}" history-substring-search-up - bindkey -M vicmd "${key[Down]}" history-substring-search-down - bindkey -M vicmd "k" history-substring-search-up - bindkey -M vicmd "j" history-substring-search-down - - # zsh syntax highlighting - zplug "zsh-users/zsh-syntax-highlighting", defer:2 - - # load zsh plugins - zplug load -fi - -autoload -Uz compinit -compinit - -#zprof |