diff options
81 files changed, 3073 insertions, 993 deletions
| @@ -1,3 +1,6 @@ +@companion-app/ +5DB5/ +5db5/  abook/  Applied Computer Music Technologies/  AHM 5050 v3/ @@ -7,6 +10,7 @@ Amp Locker/  Amp Locker.settings  amsynth/  ardour*/ +audacity/  Audio Assault/  autostart/  Binance/ @@ -24,6 +28,7 @@ calibre/  calibre/conversion  carla/  cava/ +CCL Cross-platform Framework/  cef_user_data  .charles.config  chromium/ @@ -36,6 +41,7 @@ computerrc  computerrc.sh  configstore/  cordless/config.json +cosmic/  dconf/  dde-printer.ini  DELTARUNE/ @@ -48,6 +54,7 @@ Element/  emacs/  EmeraldWallet/  enchant/ +enigma/  Epic/  Etherdyne/  evolution/ @@ -64,9 +71,11 @@ ghb/  GIMP/  git/  glib-2.0/ +glow/  gnome-control-center/  gnome-initial-setup-done  gnome-session/ +go/  goa-1.0/  godot/  gomuks/ @@ -74,6 +83,7 @@ gtk-2.0/*  !gtk-2.0/gtkrc  gtk-3.0/*  !gtk-3.0/settings.ini +gtk-4.0/  guitarix/  Hellbeast v2/  Hellbeast v2.settings @@ -104,15 +114,18 @@ kde.org/  keepassxc/  khal/  kicad/ +kid3rc  Kitware/  kritadisplayrc  kritarc  ksh/history +kwalletrc  lab/  lbry/  LBRY/  LBRY-GTK/  lbry-viewer/ +libaccounts-glib/  libfm/  libreoffice/  LibrePCB/ @@ -122,6 +135,7 @@ lkjb/  lsp-plugins/  lutris/  lxqt/ +MangoHud/  menus/  mgba/  micro/buffers/ @@ -156,7 +170,7 @@ notmuch/  npm/  nssdb/  NuGet/ -nvim/plugged/ +nvim/lazy-lock.json  nwg-look/  nwg-outputs/  obs-studio/ @@ -165,6 +179,7 @@ okularpartrc  okularrc  openrazer/  package-lock.json +parallel/  pavucontrol.ini  pcmanfm/  pcmanfm-qt/ @@ -184,12 +199,14 @@ Portmaster/  PreSonus/  print-manager/  profanity/profrc +Proton/  Proton AG/  protonfixes/  protonmail/  protonvpn/  pulse/  pupgui/ +qobuz-dl/  qrcp/  qt5ct/*  !qt5ct/qt5ct.conf @@ -202,6 +219,7 @@ qutebrowser/jmatrix-rules  r2modman/  r2modmanPlus-local/  raveloxmidi/ +razergenie/  rclone/  ReAmp Studio R1/  ReAmp Studio R1.settings @@ -210,6 +228,7 @@ remmina/  Resonant DSP/  retroarch/  rncbc.org/ +.rt64/  rtorrent/  runit/sv/*/supervise  runit/sv/*/*/supervise @@ -218,15 +237,20 @@ RVXX EXEX.settings  RVXX v2/  RVXX v2.settings  SchildiChat/ +scroll/config.d/user.conf  Serenity/  Session/  Shibalba EXEX.settings  sh/weather +SNAPSHOT PLAYER/  snownews/urls.opml  solaar/ +sonobus/ +spicy/  spotifyd/  spotify-tui/  straw-viewer/ +strawberry/  subversion/  SUPERHOT/  suyu/ @@ -248,12 +272,14 @@ transmission-daemon/  tremc/  Trolltech.conf  .tsrc +tuxclocker.conf  ubports-installer/  ultravnc-viewer/  UNDERTALE*/  unity3d/  Valve Corporation/  vdirsyncer/ +vkBasalt/  VeraCrypt/  vim/*  !vim/vimrc @@ -264,6 +290,7 @@ waybar/config-Hyprland-*  waybar/config-river-*  weechat/  whoozle.github.io/ +wireshark/  xmonad/.stack-work  xmonad/stack.yaml.lock  xmonad/xmonad.hi @@ -283,4 +310,5 @@ zsh/hist  zsh/.zcompdump  zsh/zcompdump  zsh/zfunc +zsh/.zkbd/  zsh/.zsh_theme @@ -1,20 +1,61 @@  VIM := $(shell command -v vim 2>/dev/null) -NVIM := $(shell command -v nvim 2>/dev/null) -ZCONFS := zsh/.zshenv +BCONFS := bash/.bash_logout bash/.bashrc +ZCONFS := zsh/zshenv zsh/zshrc +SCONFS := sh/profile  DCONFS := doas.conf  all: -install: install-zshconfigs vimplug-vim vimplug-nvim +install: install-zshconfigs install-shconfigs vimplug-vim wc -install-zshconfigs: $(ZCONFS) -	@echo "Installing zsh conf files..." -	@echo "Setting ZSHDOTDIR globally..." -	@$(shell sudo installers/set_zshdirs.sh) -	@echo ".zshenv..." -	@ln -sf `pwd`/zsh/.zshenv ~/.zshenv +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) +	@echo "Installing sh conf files..." +	@echo ".profile..." +	@ln -sf `pwd`/sh/profile ~/.profile +  vimplug-vim: installers/vimplug_vim.sh  ifdef VIM  	@echo "Installing vim-plug for vim..." @@ -24,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 ' @@ -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/environment.d/cursor.conf b/environment.d/cursor.conf new file mode 100644 index 0000000..9b9ef2b --- /dev/null +++ b/environment.d/cursor.conf @@ -0,0 +1,2 @@ +XCURSOR_THEME=BreezeX-Black +XCURSOR_SIZE=32 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 367c8c8..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. -gtk-theme-name="Flat-Remix-GTK-Green-Darkest-Solid" -gtk-icon-theme-name="Mint-X" -gtk-font-name="Cantarell 11" +include "/home/zachir/.gtkrc-2.0.mine" +gtk-theme-name="Flat-Remix-GTK-Green-Darkest" +gtk-icon-theme-name="Papirus-Dark" +gtk-font-name="Noto Sans,  10"  gtk-cursor-theme-name="BreezeX-Black" -gtk-cursor-theme-size=42 -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 f9774b5..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-Solid -gtk-icon-theme-name=Mint-X -gtk-font-name=Cantarell 11 +gtk-theme-name=Flat-Remix-GTK-Green-Darkest +gtk-icon-theme-name=Papirus-Dark +gtk-font-name=Noto Sans,  10  gtk-cursor-theme-name=BreezeX-Black -gtk-cursor-theme-size=42 -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 @@ -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/handlr/handlr.toml b/handlr/handlr.toml new file mode 100644 index 0000000..58e04ba --- /dev/null +++ b/handlr/handlr.toml @@ -0,0 +1,4 @@ +enable_selector = false +selector = "tofi -c ~/.conifg/tofi/cosmic --prompt-text 'Open With: '" +term_exec_args = '-e' +expand_wildcards = false diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf index 9b6ea02..5494a33 100644 --- a/hypr/hypridle.conf +++ b/hypr/hypridle.conf @@ -1,13 +1,34 @@  general { -    lock_cmd = hyprlock	                    # dbus/sysd lock command (loginctl lock-session) -    unlock_cmd =                            # same as above, but unlock -    before_sleep_cmd = swaylock             # command ran before sleep -    after_sleep_cmd =                       # command ran after sleep -    ignore_dbus_inhibit = false             # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam) +    lock_cmd = pidof hyprlock || hyprlock       # avoid starting multiple hyprlock instances. +    before_sleep_cmd = loginctl lock-session    # lock before suspend. +    after_sleep_cmd = hyprctl dispatch dpms on  # to avoid having to press a key twice to turn on the display.  }  listener { -    timeout = 600                            # in seconds -    on-timeout = loginctl lock-session       # command to run when timeout has passed -    on-resume =                              # command to run when activity is detected after timeout has fired. +    timeout = 150                                # 2.5min. +    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 -d tpacpi::kbd_backlight set 0 # turn off keyboard backlight. +    on-resume = brightnessctl -rd tpacpi::kbd_backlight        # turn on keyboard backlight. +} + +listener { +    timeout = 300                                 # 5min +    on-timeout = loginctl lock-session            # lock screen when timeout has passed +} + +listener { +    timeout = 330                                 # 5.5min +    on-timeout = hyprctl dispatch dpms off        # screen off when timeout has passed +    on-resume = hyprctl dispatch dpms on          # screen on when activity is detected after timeout has fired. +} + +listener { +    timeout = 1800                                # 30min +    on-timeout = systemctl suspend                # suspend pc  } diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index 4fdaeb8..9a40ef8 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,36 +1,49 @@ -# See https://wiki.hyprland.org/Configuring/Monitors/ +# See https://wiki.hypr.land/Configuring/Monitors/  #{{{ Monitor config +#monitor = DP-2, 1920x1080@75, 0x0, 1 +#monitor = HDMI-A-1, 1920x1080@75, 1920x0, 1  monitor = eDP-1, 1920x1080@60, 0x0, 1  monitor = , preferred, auto, 1  #}}} -# See https://wiki.hyprland.org/Configuring/Keywords/ for more +# See https://wiki.hypr.land/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 = dinit -exec-once = xdph  exec-once = hyprpm reload -n -exec-once = hyprpaper -exec-once = hypridle +#exec-once = dinit +#exec-once = xdph +exec-once = dinitctl start hyprpaper.user  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 cursor-theme 'Breeze' +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 = mpd +#exec-once = com.github.wwmm.easyeffects +exec-once = dunst +exec-once = hypridle +exec-once = xwayland-satellite :1 +exec-once = bl-save +#exec-once = mpd  #}}}  #{{{ env  # Environment variables set at launch -env = HYPRCURSOR_THEME, BreezeX-Black -env = HYPRCURSOR_SIZE, 42 -env = XCURSOR_THEME, BreezeX-Black -env = XCURSOR_SIZE, 42 +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) @@ -38,8 +51,9 @@ env = XCURSOR_SIZE, 42  # Debug {{{  debug { -  enable_stdout_logs = true -  disable_logs = false +  enable_stdout_logs = false +  disable_logs = true +  full_cm_proto = true  }  # }}} @@ -52,7 +66,7 @@ device {  # }}}  #{{{ Input options -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +# For all categories, see https://wiki.hypr.land/Configuring/Variables/  input {      kb_layout = us      kb_variant = @@ -64,7 +78,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. @@ -73,7 +93,7 @@ input {  #{{{ General options  general { -    # See https://wiki.hyprland.org/Configuring/Variables/ for more +    # See https://wiki.hypr.land/Configuring/Variables/ for more      gaps_in = 5      gaps_out = 20      border_size = 2 @@ -81,7 +101,7 @@ general {      #col.inactive_border = rgba(595959aa)      col.active_border = rgba(198844ee)      col.inactive_border = rgba(1b1d1cee) -    layout = master +    layout = scrolling  }  #}}} @@ -97,20 +117,16 @@ misc {      disable_splash_rendering = true      enable_swallow = true      swallow_regex = ^(kitty)$ -    swallow_exception_regex = ^(.*)(ueberzug)$ -    vfr = false -    vrr = 0 +    swallow_exception_regex = ^(wev|.*ueberzug|n?vi?m? .*|.*dragon.*)$ +    vfr = true +    vrr = 3  }  #}}}  #{{{ Decoration options  decoration { -    # See https://wiki.hyprland.org/Configuring/Variables/ for more +    # See https://wiki.hypr.land/Configuring/Variables/ for more      rounding = 10 -    drop_shadow = yes -    shadow_range = 4 -    shadow_render_power = 3 -    col.shadow = rgba(1a1a1aee)      #{{{ Blur options      blur {          enabled = true @@ -120,6 +136,14 @@ decoration {          xray = true      }      #}}} +    #{{{ Shadow options +    shadow { +      enabled = false +      range = 4 +      render_power = 3 +      color = 0xee1a1a1a +    } +    #}}}  }  #}}} @@ -127,7 +151,7 @@ decoration {  #{{{ Animations options  animations {      enabled = no -    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more +    # Some default animations, see https://wiki.hypr.land/Configuring/Animations/ for more      bezier = myBezier, 0.05, 0.9, 0.1, 1.05      animation = windows, 1, 7, myBezier      animation = windowsOut, 1, 7, default, popin 80% @@ -140,7 +164,7 @@ animations {  #{{{ Dwindle layout options  dwindle { -    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +    # See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more      pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below      preserve_split = yes # you probably want this      special_scale_factor = 0.55 @@ -151,19 +175,21 @@ dwindle {  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 -    no_gaps_when_only = false +    # See https://wiki.hypr.land/Configuring/Master-Layout/ for more +    new_status = slave +    new_on_top = false +    new_on_active = before +    #no_gaps_when_only = false      orientation = left      inherit_fullscreen = true +    drop_at_cursor = true  }  #}}}  #{{{ Gestures options  gestures { -    # See https://wiki.hyprland.org/Configuring/Variables/ for more -    workspace_swipe = off +    # See https://wiki.hypr.land/Configuring/Variables/ for more +    #workspace_swipe = off  }  #}}} @@ -171,6 +197,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    }  }  #}}} @@ -179,28 +214,23 @@ plugin {  # Example windowrule v1  # windowrule = float, ^(kitty)$  # Example windowrule v2 -# windowrulev2 = float, class:^(kitty)$, title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -windowrule = windowdance, ^(oneshot)$ -windowrule = windowdance, title:^(UNDERTALE)$ -windowrule = windowdance, title:^(Rhythm Doctor)$ -windowrule = fullscreen, ^(Xephyr)$ +# windowrule = float, class:^(kitty)$, title:^(kitty)$ +# See https://wiki.hypr.land/Configuring/Window-Rules/ for more +windowrule = fullscreen, class:^(Xephyr)$  windowrule = float, title:^(LibreWolf - Choose User Profile)$ -windowrule = float, ^(xdg-desktop-portal-gtk) +windowrule = float, class:^(xdg-desktop-portal-gtk)  windowrule = float, title:^(UNDERTALE)$ -windowrule = float, ^(Tk)$ -windowrule = float, ^(lxqt-policykit-agent)$ +windowrule = float, class:^(Tk)$ +windowrule = float, class:^(lxqt-policykit-agent)$  windowrulev2 = stayfocused, title:^()$, class:^(steam)$  windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$  windowrulev2 = stayfocused, title:^(menu)$,class:^(yabridge-host.exe.so)$  windowrulev2 = minsize 1 1, title:^(menu)$,class:^(yabridge-host.exe.so)$  windowrulev2 = float, class:^(yabridge-host.exe.so)$, title:^(menu)$  windowrulev2 = float, floating:0, title:^(menu*) -windowrulev2 = forceinput, title:^(menu*) -windowrulev2 = windowdance, title:^(menu*)  windowrule = workspace 2, title:^(REAPER .*initializing.*)$  windowrulev2 = tile, class:^(REAPER)$, title:^(.*REAPER v[0-9.]* - Licensed for personal/small business use)$ -windowrule = tile, ^(WebApp-Qobuz[0-9]*)$ +windowrule = tile, class:^(WebApp-Qobuz[0-9]*)$  windowrulev2 = float, title:^(menu)$  windowrulev2 = move cursor -50% -50%, class:^(yabridge-host.exe.so)$, title:^(menu)$  #windowrulev2 = nofocus, class:^(yabridge-host.exe.so)$, title:^(\s*)$ @@ -214,10 +244,19 @@ windowrulev2 = move cursor -50% -50%, class:^(yabridge-host.exe.so)$, title:^(me  #windowrulev2 = move cursor -50% -50%, class:^(REAPER)$, title:^(Routing for track [0-9]*)$  #windowrulev2 = float, floating:0, title:^(menu)$  #windowrulev2 = forceinput, title:^(menu)$ +windowrulev2 = workspace special:easyeffects silent, class: ^(com\.github\.wwmm\.easyeffects)$ +# Fix brave xray menus +windowrulev2 = xray 0, class: ^(\s*), title: ^(\s*)$ +# Center floating XWayland windows +windowrule = center, xwayland: 1 +#}}} + +#{{{ Layerrules +layerrule = blur, waybar  #}}}  #{{{ Mods -# See https://wiki.hyprland.org/Configuring/Keywords/ for more +# See https://wiki.hypr.land/Configuring/Keywords/ for more  $mainMod = SUPER  $secdMod = ALT  #}}} @@ -228,18 +267,40 @@ $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, 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, layoutmsg, swapcol l +bind = $mainMod+CONTROL, L, layoutmsg, swapcol r +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 @@ -268,7 +329,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 @@ -307,6 +368,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 @@ -325,11 +422,12 @@ submap = reset  #}}}  #{{{ Menu bindings -bind = $mainMod, R, exec, exec sh -c "$(tofi-drun -c ~/.config/tofi/themes/dmenu_vertical --prompt-text Run:)" -bind = $mainMod, D, exec, 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 @@ -341,90 +439,29 @@ 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 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  #}}}  #{{{ OBS bindings @@ -458,7 +495,9 @@ bind = , XF86AudioNext, exec, playerctl next  bind = , XF86AudioMute, exec, volsv -t  #bindl = , XF86AudioMicMute, exec, volsv -m  bind = , XF86AudioMicMute, exec, volsv -m -bindel = , XF86MonBrightnessUp, exec, hypr-brightness + -bindel = , XF86MonBrightnessDown, exec, hypr-brightness - +bindel = , XF86MonBrightnessUp, exec, bl -i +bindel = , XF86MonBrightnessDown, exec, bl -d +bindl = $mainMod, XF86MonBrightnessUp, exec, bl -I 1 +bindl = $mainMod, XF86MonBrightnessDown, exec, bl -D 1  bind = , Print, exec, scrshot  #}}} diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf index 84d08ae..8ee636d 100644 --- a/hypr/hyprlock.conf +++ b/hypr/hyprlock.conf @@ -1,10 +1,10 @@  general { -  disable_loading_bar = false -  hide_cursor = false -  grace = 0 -  no_fade_in = false -  no_fade_out = false -  ignore_empty_input = false +  hide_cursor = true +  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..5964419 --- /dev/null +++ b/hypr/hyprscratch.conf @@ -0,0 +1,126 @@ +# 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 +} + 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/set_zshdirs.sh b/installers/set_zshdirs.sh deleted file mode 100755 index 2d82f19..0000000 --- a/installers/set_zshdirs.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -if [ -f /etc/zshenv ]; then -  ZSHENV="/etc/zshenv" -elif [ -d /etc/zsh ]; then -    ZSHENV="/etc/zsh/zshenv" -else -  ZSHENV="/etc/zshenv" -fi - -if ! grep -q "ZDOTDIR" $ZSHENV 2>/dev/null; then -  echo "export ZDOTDIR=\"\$HOME\"/.config/zsh" >> $ZSHENV -fi 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 08651d5..7afcb30 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 12.0 +font_size 15.0  #: Font size (in pts) @@ -879,7 +879,7 @@ resize_draw_strategy static  #: insensitive, from the set [0-9A-Z]. Specify your preference as a  #: string of characters. -# confirm_os_window_close -1 +confirm_os_window_close 0  #: Ask for confirmation when closing an OS window or a tab with at  #: least this number of kitty windows in it by window manager (e.g. @@ -913,7 +913,7 @@ resize_draw_strategy static  #: The second number is the margin between the tab bar and the  #: contents of the current tab. -# tab_bar_style fade +tab_bar_style powerline  #: The tab bar style, can be one of: @@ -1833,7 +1833,7 @@ map kitty_mod+g show_last_command_output  #::      map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R -map f1 launch --stdin-source=@last_cmd_output --type=background wl-copy +#::      map f1 launch --stdin-source=@last_cmd_output --type=background wl-copy  #::  To get the output of the first command on the screen, use  #::  @first_cmd_output_on_screen. To get the output of the last jumped diff --git a/lf/cleaner b/lf/cleaner new file mode 100755 index 0000000..af197ee --- /dev/null +++ b/lf/cleaner @@ -0,0 +1,2 @@ +#!/bin/sh +exec kitten icat --clear --stdin no --transfer-mode memory </dev/null >/dev/tty @@ -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 @@ -1,9 +1,8 @@  set ratios 1:2:3 -set cleaner ctpvclear -set previewer ctpv -&ctpv -s $id . -&ctpvquit $id +set previewer ~/.config/lf/previewer +set cleaner ~/.config/lf/cleaner  # Basic Settings +set sixel true  set preview true  set drawbox false  set icons true @@ -51,9 +50,9 @@ cmd chmod ${{    printf "Mode Bits: "    read ans -  for file in "$fx" +  echo "$fx" | while read file    do -    chmod $ans $file +    chmod "$ans" "$file"    done  }} @@ -321,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" @@ -330,64 +329,66 @@ 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" +map gdr cd "~/Documents/work" diff --git a/lf/previewer b/lf/previewer new file mode 100755 index 0000000..24db043 --- /dev/null +++ b/lf/previewer @@ -0,0 +1,36 @@ +#!/bin/sh +draw() { +  kitten icat --stdin no --transfer-mode memory --place "${w}x${h}@${x}x${y}" "$1" </dev/null >/dev/tty +  exit 1 +} + +file="$1" +w="$2" +h="$3" +x="$4" +y="$5" + +case "$(file -Lb --mime-type "$file")" in  +  image/*) +    draw "$file" +    ;; +  video/*) +    # vidthumb is from here: +    # https://raw.githubusercontent.com/duganchen/kitty-pistol-previewer/main/vidthumb +    draw "$(vidthumb "$file")" +    ;; +  application/pdf) +    CACHE=$(mktemp /tmp/thumbcache.XXXXX) +    pdftoppm -png -f 1 -singlefile "$1" "$CACHE" +    draw "$CACHE.png" +    rm -f "$CACHE" "$CACHE.png" +    ;; +  application/epub+zip|application/epub) +    CACHE=$(mktemp /tmp/thumbcache.XXXXX) +    epub-thumbnailer "$1" "$CACHE" 1024 +    $HOME/.config/lf/image draw "$CACHE" +    rm -f "$CACHE" "$CACHE.png" +    ;; +esac + +pistol "$file" 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..07783fb --- /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 "dinitctl start hyprpaper" +spawn-at-startup "dinitctl start 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/nsxiv/exec/key-handler b/nsxiv/exec/key-handler index 53099e4..e653dd6 100755 --- a/nsxiv/exec/key-handler +++ b/nsxiv/exec/key-handler @@ -10,7 +10,7 @@ while read file; do            magick "$file" ~/Pictures/background.png            ;;  	    esac -      t -r hyprpaper +      dinitctl restart hyprpaper        ;;    esac  done diff --git a/nvim/after/ftplugin/rust.vim b/nvim/after/ftplugin/rust.vim new file mode 100644 index 0000000..7a152a7 --- /dev/null +++ b/nvim/after/ftplugin/rust.vim @@ -0,0 +1,2 @@ +:set formatoptions+=t +:set textwidth=80 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 42fe34d..0000000 --- a/nvim/init.vim +++ /dev/null @@ -1,289 +0,0 @@ -" 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 256-grayvim -  -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/qt5ct/qt5ct.conf b/qt5ct/qt5ct.conf index 516eaab..964da53 100644 --- a/qt5ct/qt5ct.conf +++ b/qt5ct/qt5ct.conf @@ -1,13 +1,13 @@  [Appearance] -color_scheme_path=/usr/share/qt5ct/colors/darker.conf -custom_palette=false -icon_theme=Mint-X-Grey -standard_dialogs=xdgdesktopportal +color_scheme_path=/home/zachir/.config/qt5ct/style-colors.conf +custom_palette=true +icon_theme=Cosmic +standard_dialogs=gtk2  style=gtk2  [Fonts] -fixed=@Variant(\0\0\0@\0\0\0\x1e\0\x44\0\x65\0j\0\x61\0V\0u\0 \0L\0G\0\x43\0 \0S\0\x61\0n\0s@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) -general=@Variant(\0\0\0@\0\0\0\x1e\0\x44\0\x65\0j\0\x61\0V\0u\0 \0L\0G\0\x43\0 \0S\0\x61\0n\0s@(\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) +fixed="DejaVu LGC Sans,12,-1,5,50,0,0,0,0,0" +general="DejaVu LGC Sans,12,-1,5,50,0,0,0,0,0"  [Interface]  activate_item_on_single_click=1 @@ -25,7 +25,7 @@ underline_shortcut=1  wheel_scroll_lines=3  [SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x1\x95\0\0\0\xfb\0\0\x5\x45\0\0\x3\x93\0\0\x1\x96\0\0\0\xfc\0\0\x5\x44\0\0\x3\x92\0\0\0\0\0\0\0\0\a\x80\0\0\x1\x96\0\0\0\xfc\0\0\x5\x44\0\0\x3\x92) +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0H\0\0\x2T\0\0\x3\xdb\0\0\x4/\0\0\0H\0\0\x2T\0\0\x3\xdb\0\0\x4/\0\0\0\0\0\0\0\0\a\x80\0\0\0H\0\0\x2T\0\0\x3\xdb\0\0\x4/)  [Troubleshooting]  force_raster_widgets=1 diff --git a/qt6ct/qt6ct.conf b/qt6ct/qt6ct.conf index 810fb94..3dce998 100644 --- a/qt6ct/qt6ct.conf +++ b/qt6ct/qt6ct.conf @@ -1,8 +1,8 @@  [Appearance] -color_scheme_path=/usr/share/qt6ct/colors/airy.conf -custom_palette=false -icon_theme=Mint-X -standard_dialogs=xdgdesktopportal +color_scheme_path=/home/zachir/.config/qt6ct/style-colors.conf +custom_palette=true +icon_theme=Cosmic +standard_dialogs=gtk2  style=qt6gtk2  [Fonts] @@ -12,7 +12,7 @@ general="DejaVu LGC Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"  [Interface]  activate_item_on_single_click=1  buttonbox_layout=0 -cursor_flash_time=1000 +cursor_flash_time=1200  dialog_buttons_have_icons=1  double_click_interval=400  gui_effects=@Invalid() @@ -25,7 +25,7 @@ underline_shortcut=1  wheel_scroll_lines=3  [SettingsWindow] -geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\0\0\0\0\0\0\0\0\x3\x42\0\0\x3\xe7\0\0\0\0\0\0\0\0\0\0\x2\xde\0\0\x2\x46\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\x3\x42\0\0\x3\xe7) +geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\xff\xff\xff\xfd\xff\xff\xff\xe2\0\0\a<\0\0\x3\xf9\0\0\0\0\0\0\0\0\0\0\a9\0\0\x3\xf6\0\0\0\0\x2\0\0\0\a\x80\0\0\0\0\0\0\0\0\0\0\a9\0\0\x3\xf6)  [Troubleshooting]  force_raster_widgets=1 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..c6bb704 --- /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..7d4cb32 100644 --- a/sh/functions +++ b/sh/functions @@ -57,67 +57,68 @@ R	- /  U.	- /usr  Us	- /usr/share  V.	- /var -aw	- /home/zachir/.config/awesome -b.	- /home/zachir/.local/bin -bb	- /home/zachir/.local/bin/blocks -bf	- /home/zachir/.local/bin/slatpak-sc -bg	- /home/zachir/.local/bin/generics -bi	- /home/zachir/.local/bin/ignore -bsc	- /home/zachir/.local/bin/scripts -bsh	- /home/zachir/.local/bin/shortcmds -bsp	- /home/zachir/.local/bin/sp -c	- /home/zachir/.config -db	- /home/zachir/.local/src/dwmbar -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 -h	- /home/zachir/.config/hypr -lb	- /home/zachir/.local/bin -lc	- /home/zachir/Games/cache -lf	- /home/zachir/.config/lf -ls	- /home/zachir/.local/share -n3	- /home/zachir/.vst3/native -ns	- /home/zachir/.vst/native -nv	- /home/zachir/.config/nvim -p	- /home/zachir/Pictures -qb	- /home/zachir/.config/qutebrowser -qp	- /home/zachir/.local/share/qutebrowser-profiles -re	- /home/zachir/.local/src +aw	- $XDG_CONFIG_HOME/awesome +b.	- $HOME/.local/bin +bb	- $HOME/.local/bin/blocks +bf	- $HOME/.local/bin/slatpak-sc +bg	- $HOME/.local/bin/generics +bi	- $HOME/.local/bin/ignore +bsc	- $HOME/.local/bin/scripts +bsh	- $HOME/.local/bin/shortcmds +bsp	- $HOME/.local/bin/sp +c	- $XDG_CONFIG_HOME +db	- $SRCDIR/dwmbar +dc	- $XDG_DOCUMENTS_DIR +dl	- $SRCDIR/dwl +dm	- $SRCDIR/dmenu +do	- $XDG_DOWNLOAD_DIR +dp	- $XDG_DOWNLOAD_DIR/plugin/zachir_librem.one +dw	- $XDG_DOWNLOAD_DIR/wine +e	- $XDG_DESKTOP_DIR +f	- $HOME/.var/app +h	- $XDG_CONFIG_HOME/hypr +lb	- $HOME/.local/bin +lc	- $HOME/Games/cache +lf	- $XDG_CONFIG_HOME/lf +ls	- $XDG_DATA_HOME +n3	- $HOME/.vst3/native +ns	- $HOME/.vst/native +nv	- $XDG_CONFIG_HOME/nvim +p	- $XDG_PICTURES_DIR +qb	- $XDG_CONFIG_HOME/qutebrowser +qp	- $XDG_DATA_HOME/qutebrowser-profiles +re	- $SRCDIR  rs	- /etc/runit/sv -sc	- /home/zachir/.local/bin/scripts -sh	- /home/zachir/.config/sh -sl	- /home/zachir/.local/src/slock +sc	- $HOME/.local/bin/scripts +sh	- $XDG_CONFIG_HOME/sh +sl	- $SRCDIR/slock  ss	- /etc/s6/sv -st	- /home/zachir/.local/src/st -sx	- /home/zachir/.config/sxhkd -tr	- /home/zachir/.local/share/Trash/files -urs	- /home/zachir/.runit/sv -v3.	- /home/zachir/.vst3 -v3n	- /home/zachir/.vst3/native -v3y	- /home/zachir/.vst3/yabridge -v.	- /home/zachir/var -vi	- /home/zachir/Videos -vsn	- /home/zachir/.vst/native -vs.	- /home/zachir/.vst -vsy	- /home/zachir/.vst/yabridge -wdo	- /home/zachir/.local/share/wineprefixes/default/drive_c/users/zachir/Downloads -wa	- /home/zachir/.local/src/wallpapers -wd	- /home/zachir/.local/share/wineprefixes/default -wr	- /home/zachir/.local/share/wineprefixes -wv3	- /home/zachir/.winvst3 -wvs	- /home/zachir/.winvst -ww	- /home/zachir/.local/share/wineprefixes/work -x	- /home/zachir/.config/X11 -y3	- /home/zachir/.vst3/yabridge -yb	- /home/zachir/.cache/yay -yc	- /home/zachir/.config/yay -zs	- /home/zachir/.config/zsh -zx	- /home/zachir/Documents/zachir.xyz +st	- $SRCDIR/st +sx	- $XDG_CONFIG_HOME/sxhkd +tr	- $XDG_DATA_HOME/Trash/files +urs	- $HOME/.runit/sv +v3.	- $HOME/.vst3 +v3n	- $HOME/.vst3/native +v3y	- $HOME/.vst3/yabridge +v.	- $HOME/var +vi	- $XDG_VIDEOS_DIR +vsn	- $HOME/.vst/native +vs.	- $HOME/.vst +vsy	- $HOME/.vst/yabridge +vw\t- $XDG_DATA_HOME/vimwiki +wdo	- $WINEPREFIX/drive_c/users/zachir/Downloads +wa	- $SRCDIR/wallpapers +wd	- $WINEPREFIX +wr	- $WINEROOT +wv3	- $HOME/.winvst3 +wvs	- $HOME/.winvst +ww	- $WINEROOT/work +x	- $XDG_CONFIG_HOME/X11 +y3	- $HOME/.vst3/yabridge +yb	- $XDG_CACHE_HOME/yay +yc	- $XDG_CONFIG_HOME/yay +zs	- $XDG_CONFIG_HOME/zsh +zx	- $XDG_DOCUMENTS_DIR/zachir.xyz  " ;;        # STOPPRINT        # STARTPATHS @@ -176,6 +177,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" ;; @@ -189,6 +191,7 @@ zx	- /home/zachir/Documents/zachir.xyz  "yc") cd "$XDG_CONFIG_HOME/yay" ;;  "zs") cd "$XDG_CONFIG_HOME/zsh" ;;  "zx") cd "$XDG_DOCUMENTS_DIR/zachir.xyz" ;; +"dr") cd "$XDG_DOCUMENTS_DIR/work" ;;        # STOPPATHS        *) echo "\"$1\" is not a known location" ;;      esac @@ -7,6 +7,7 @@ export XDG_CURRENT_DESKTOP="Hyprland"  export XDG_DOCUMENTS_DIR=${HOME}/Documents  export XDG_DOWNLOAD_DIR=${HOME}/Downloads  export XDG_DESKTOP_DIR=${HOME}/Desktop +export XDG_PICTURES_DIR=${HOME}/Pictures  export XDG_STATE_HOME="${HOME}/.local/state"  export XDG_VIDEOS_DIR=${HOME}/Videos @@ -22,6 +23,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 @@ -45,25 +50,25 @@ 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  # Theming -export QT_QPA_PLATFORMTHEME=qt5ct +export QT_QPA_PLATFORMTHEME=qt6ct  # Fix wayland stuff  export MOZ_ENABLE_WAYLAND=1 @@ -73,7 +78,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" @@ -130,3 +135,17 @@ addtopath "/var/lib/flatpak/exports/bin"  unset -f addtopath  unset USERPATH  unset PATHS + +command_not_found_handle() { +# don't run if not in a container +  if [ ! -e /run/.containerenv ] && [ ! -e /.dockerenv ]; then +    exit 127 +  fi +   +  distrobox-host-exec "${@}" +} +if [ -n "${ZSH_VERSION-}" ]; then +  command_not_found_handler() { +    command_not_found_handle "$@" + } +fi 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 new file mode 100644 index 0000000..047c875 --- /dev/null +++ b/tofi/colors @@ -0,0 +1,17 @@ +background-color = #000000 +outline-color = #198844 +border-color = #198844 +text-color = #ffffff +prompt-color = #198844 +prompt-background = #000000 +placeholder-color = #198844 +placeholder-background = #000000 +input-color = #ffffff +input-background = #000000 +default-result-background = #000000 +alternate-result-color = #ffffff +alternate-result-background = #000000 +selection-color = #000000 +selection-match-color = #39c1ed +selection-background = #198844 + diff --git a/tofi/cosmic b/tofi/cosmic new file mode 100644 index 0000000..b339f73 --- /dev/null +++ b/tofi/cosmic @@ -0,0 +1,22 @@ +include = "themes/colors" + +hidden-character = "*" +anchor = top +width = 100% +height = 32 +horizontal = true +font-size = 18 +prompt-text = "" +font = JetBrainsMono Nerd Font +outline-width = 0 +border-width = 0 +min-input-width = 424 +result-spacing = 15 +padding-top = 0 +padding-bottom = 0 +padding-left = 0 +padding-right = 0 +history = false +selection-background-padding = 12 +result-spacing = 24 +require-match=false diff --git a/tofi/themes/colors b/tofi/themes/colors index a5f480c..047c875 100644 --- a/tofi/themes/colors +++ b/tofi/themes/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/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 @@ -62,7 +60,7 @@ set showmatch " Highlight matching brace  set number  set relativenumber -colorscheme 256-grayvim +colorscheme Dark2  set hlsearch                    " Highlight all search results  set smartcase                   " Enable smart-case search @@ -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 @@ -207,7 +202,7 @@ autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif  " custom augroup {{{  augroup custom    autocmd! -  au BufEnter     *.tex :LLPStartPreview +  "au BufEnter     *.tex :LLPStartPreview    au BufEnter     *.md :set textwidth=80    au BufEnter     *.ms :set textwidth=80    "au BufEnter     *.c :colo DevC++ @@ -217,7 +212,7 @@ augroup custom    "au BufEnter     *.cpp :colo DevC++    "au BufEnter     *.hpp :colo DevC++    au BufWritePost init.vim :source % -  au BufWritePost *.tex :make +  "au BufWritePost *.tex :make    au BufWritePost *sxhkdrc* :!pkill -USR1 -x sxhkd    au BufWritePost .Xresources :!xrdb ~/.Xresources    au BufWritePost .gitignore :!git add .gitignore @@ -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 d8506d2..cc9d5e5 100644 --- a/waybar/config +++ b/waybar/config @@ -1,24 +1,77 @@ +// vim: set filetype=json5 :  { -    "layer": "top", +    "layer": "bottom",      "position": "top",      "height": 36,      //"output": "%%DISPLAY%%",      "spacing": 4,      //"margin-top": 5, -    //"margin-bottom":5, +    //"margin-bottom": 5,      // Choose the order of the modules      "modules-left":[ "hyprland/workspaces", "custom/launcher", "hyprland/window"],      "modules-center":[], -    "modules-right":[ "mpd", "idle_inhibitor", "pulseaudio", "cpu", "memory", "battery", "temperature#0", "temperature#1", "backlight",  "network", "clock", "tray", "custom/power"], +    "modules-right":[ "tray", "mpd", "idle_inhibitor", "wireplumber", "cpu", "memory", "battery", "temperature#cpu", "temperature#gpu", "backlight",  "network", "clock", "custom/power"],      // Modules configuration +    "sway/workspaces": { +      "all-outputs": false, +      "persistent-workspaces": { +        "11": ["eDP-1"], +        "12": ["eDP-1"], +        "13": ["eDP-1"], +        "14": ["eDP-1"], +        "15": ["eDP-1"], +        "16": ["eDP-1"], +        "17": ["eDP-1"], +        "18": ["eDP-1"], +        "19": ["eDP-1"], +      }, +      "format": "{icon}", +      "format-icons": { +        "1": "1", +        "2": "2", +        "3": "3", +        "4": "4", +        "5": "5", +        "6": "6", +        "7": "7", +        "8": "8", +        "9": "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", +      }, +    }, +    "niri/workspaces": { +      "format": "{value}", +      "all-outputs": false, +      "on-click": "activate" +    },      "hyprland/workspaces": {        "format": "{icon}",        "active-only": false,        "all-outputs": false, +      "persistent-only": true,        "format-icons": {          "1": "1",          "2": "2", @@ -40,16 +93,29 @@          "18": "9",        },        "persistent-workspaces": { -        "eDP-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, @@ -92,10 +158,11 @@          "tooltip": false      },      "memory": { -        "format": "{}% " +        "format": "{used}G "      },      "battery": { -        "bat": "BAT0", +        //"bat": "BAT0", +        "weighted-average": "true",          "interval": 60,          "state": {              "warning": 30, @@ -104,20 +171,20 @@          "format": "{capacity}%",          "max-length": 25      }, -    "temperature#0": { +    "temperature#cpu": {          "thermal-zone": 0,          // "hwmon-path": "cat /sys/class/hwmon/hwmon5/temp1_input",          "critical-threshold": 110, -        // "format-critical": "{temperatureC}°C {icon}", -        "format": "{temperatureC}°C", +        "format-critical": "{temperatureC}°C", +        "format": "",          "format-icons": ["", "", ""]      }, -    "temperature#1": { +    "temperature#gpu": {          "thermal-zone": 1,          // "hwmon-path": "/sys/class/hwmon/hwmon4/temp1_input",          "critical-threshold": 126, -        // "format-critical": "{temperatureC}°C {icon}", -        "format": "{temperatureC}°C", +        "format-critical": "{temperatureC}°C", +        "format": "",          "format-icons": ["", "", ""]      },      "backlight": { @@ -127,7 +194,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) ", @@ -136,34 +203,30 @@          "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": " ", diff --git a/waybar/style.css b/waybar/style.css index 88b8900..04a1c3e 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,10 +86,11 @@ window#waybar.hidden {  #temperature,  #backlight,  #network, -#pulseaudio, +#wireplumber,  #custom-media,  #custom-launcher,  #custom-power, +#custom-battery,  #custom-layout,  #custom-updater,  #custom-snip, @@ -126,7 +132,7 @@ window#waybar.hidden {  }  #battery.charging, #battery.plugged { -    color: #26A65B; +    color: #198844;      background-color: #1b1d1c;  } @@ -154,11 +160,13 @@ label:focus {  #cpu {      background-color: #1b1d1c;      color: #ffffff; +    padding-right: 18px;  }  #memory {      background-color: #198844;      color: #ffffff; +    padding-right: 18px;  }  #disk { @@ -174,6 +182,7 @@ label:focus {  #network {      background-color: #198844;      color: #ffffff; +    padding-right: 18px;  }  #network.disconnected { @@ -181,12 +190,13 @@ label:focus {      color: #ffffff;  } -#pulseaudio { +#wireplumber {      background-color: #198844;      color: #ffffff; +    padding-right: 18px;  } -#pulseaudio.muted { +#wireplumber.muted {      background-color: #1b1d1c;      color: #198844;  } @@ -211,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{ @@ -278,7 +307,8 @@ label:focus {  }  #tray { -    background-color: #198844; +    border-radius: 20px; +    background-color: black;      color: #ffffff;  } @@ -297,7 +327,7 @@ label:focus {  #idle_inhibitor {      background-color: #1b1d1c;      border-radius: 20px 0px 0px 20px; - +    padding-right: 18px;  }  #idle_inhibitor.activated { 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/xdg-desktop-portal/portals.conf b/xdg-desktop-portal/portals.conf new file mode 100644 index 0000000..b1a274e --- /dev/null +++ b/xdg-desktop-portal/portals.conf @@ -0,0 +1,4 @@ +[preferred] +default=hyprland +org.freedesktop.impl.portal.FileChooser=gtk +org.freedesktop.impl.portal.Settings=darkman diff --git a/xsettingsd/xsettingsd.conf b/xsettingsd/xsettingsd.conf index 27d09c3..7e001eb 100644 --- a/xsettingsd/xsettingsd.conf +++ b/xsettingsd/xsettingsd.conf @@ -1,5 +1,5 @@ -Net/ThemeName "Flat-Remix-GTK-Green-Darkest-Solid" -Net/IconThemeName "Mint-X" +Net/ThemeName "Flat-Remix-GTK-Green-Darkest" +Net/IconThemeName "Papirus-Dark"  Gtk/CursorThemeName "BreezeX-Black"  Net/EnableEventSounds 1  EnableInputFeedbackSounds 0 diff --git a/yay/config.json b/yay/config.json index 0e764be..61f2d02 100644 --- a/yay/config.json +++ b/yay/config.json @@ -1,7 +1,7 @@  {  	"aururl": "https://aur.archlinux.org", -	"buildDir": "$HOME/.cache/yay", -	"absdir": "$HOME/.cache/yay/abs", +	"aurrpcurl": "https://aur.archlinux.org/rpc?", +	"buildDir": "/home/zachir/.cache/yay",  	"editor": "nvim",  	"editorflags": "",  	"makepkgbin": "makepkg", @@ -9,9 +9,8 @@  	"pacmanbin": "pacman",  	"pacmanconf": "/etc/pacman.conf",  	"redownload": "no", -	"rebuild": "no", -	"answerclean": "", -	"answerdiff": "", +	"answerclean": "All", +	"answerdiff": "All",  	"answeredit": "",  	"answerupgrade": "",  	"gitbin": "git", @@ -21,23 +20,31 @@  	"sortby": "votes",  	"searchby": "name-desc",  	"gitflags": "", -	"removemake": "ask", -	"sudobin": "sudo", +	"removemake": "yes", +	"sudobin": "doas",  	"sudoflags": "", +	"version": "12.4.2",  	"requestsplitn": 150, -	"sortmode": 0,  	"completionrefreshtime": 7, +	"maxconcurrentdownloads": 1, +	"bottomup": true,  	"sudoloop": false,  	"timeupdate": false,  	"devel": false, -	"cleanAfter": false, +	"cleanAfter": true, +	"keepSrc": false,  	"provides": true,  	"pgpfetch": true, -	"upgrademenu": true,  	"cleanmenu": true,  	"diffmenu": true, -	"editmenu": true, +	"editmenu": false,  	"combinedupgrade": false,  	"useask": false, -	"batchinstall": false +	"batchinstall": false, +	"singlelineresults": false, +	"separatesources": true, +	"debug": false, +	"rpc": true, +	"doubleconfirm": true, +	"rebuild": "no"  } diff --git a/zsh/.zlogout b/zsh/.zlogout deleted file mode 100644 index 33666be..0000000 --- a/zsh/.zlogout +++ /dev/null @@ -1 +0,0 @@ -rm -rf /tmp/xorg-awake diff --git a/zsh/.zprofile b/zsh/.zprofile deleted file mode 100644 index 1eae5e7..0000000 --- a/zsh/.zprofile +++ /dev/null @@ -1,6 +0,0 @@ -#export GDK_DPI_SCALE=0.7 - -#gnome_schema=org.gnome.desktop.interface -# -#gsettings set $gnome_schema gtk-theme 'Plata-Noir-Compact' -#gsettings set $gnome_schema icon-theme 'Papirus-Dark' diff --git a/zsh/.zshenv b/zsh/.zshenv index f02f83a..3719ef4 100644 --- a/zsh/.zshenv +++ b/zsh/.zshenv @@ -1,5 +1,7 @@  # ZSH SPECIFIC CONFIGS  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" @@ -1,4 +1,6 @@ -HISTFILE="$ZDOTDIR"/hist +#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 @@ -8,92 +10,121 @@ 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 +  source "$XDG_CONFIG_HOME"/sh/aliases  fi  if [ -f "$XDG_CONFIG_HOME"/sh/functions ]; then -	source "$XDG_CONFIG_HOME"/sh/functions +  source "$XDG_CONFIG_HOME"/sh/functions  fi -if [ -n "$ZDOTDIR"/.zshrc -a -f "$ZDOTDIR"/.zshrc ]; then -  alias e='source "$ZDOTDIR"/.zshrc' +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 -bindkey "^?" backward-delete-char - -# bindkey -v - -if [ "$TERM" = "st-256color" ] || [ "$TERM" = "xterm-256color" ]; then -  function zle-line-init () { echoti smkx } -  function zle-line-finish () { echoti rmkx } - -  zle -N zle-line-init -  zle -N zle-line-finish -fi - -unset COLOR1 -ZSHTHEMERC="${ZDOTDIR:-$HOME}/.zsh_theme" -[ -f "$ZSHTHEMERC" ] && . "$ZSHTHEMERC" - -if [ -z "$COLOR1" ]; then -  case "$(whoami)" in -    zachir) COLOR1="014" ;; -    git) COLOR1="013" ;; -    subsonic) COLOR1="012" ;; -    *) COLOR1="015" ;; -  esac +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 - -MYPROMPT='%B%S%F{'"$COLOR1"'}[%n@%m]:%f%s%F{015}%~%f%S%F{'"$COLOR1"'}%#%f%s%b '  function zle-line-init zle-keymap-select { -	VIM_PROMPT="%B%F{012}[%n@%m]:%f%F{015}%~%f%F{012}%#%f%b " -	PS1="${${KEYMAP/vicmd/$VIM_PROMPT}/main/$MYPROMPT}" -	#PS1="$PROMPT $KEYMAP" -	zle reset-prompt +  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  } -unset COLOR1 -  zle -N zle-line-init  zle -N zle-keymap-select  export KEYTIMEOUT=1 -fpath+="$ZDOTDIR/zfunc" +fpath+="$XDG_CONFIG_HOME/zsh/functions" -autoload -Uz compinit promptinit -compinit -d $CONFIG/zcompdump -promptinit -autoload -Uz up-line-or-beginning-search down-line-or-beginning-search -zle -N up-line-or-beginning-search -zle -N down-line-or-beginning-search +autoload -Uz anonsh -zstyle ':completion:*' menu select -zstyle ':completion::complete:*' gain-privileges 1 -zstyle ':completion:*' rehash true +autoload -Uz compinit  +if [[ -n ${ZDOTDIR}/.zcompdump(#qN.mh+24) ]]; then +  compinit +else +	compinit -C +fi -setopt COMPLETE_ALIASES -setopt AUTO_CD +zshcache_time="$(date +%s%N)" -typeset -g -A key +autoload -Uz add-zsh-hook -key[Up]="${terminfo[kcuu1]}" -key[Down]="${terminfo[kcud1]}" -key[Left]="${terminfo[kcub1]}" -key[Right]="${terminfo[kcuf1]}" -key[Shift-Tab]="${terminfo[kcbt]}" -key[Delete]="${terminfo[kdch1]}" +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 -[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}"                up-line-or-beginning-search -bindkey -- '^[[A'                                               up-line-or-beginning-search -bindkey -- '^[[B'                                               down-line-or-beginning-search -[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}"            down-line-or-beginning-search -[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}"            backward-char -[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}"          forward-char -[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}"  reverse-menu-complete -[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}"        delete-char +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 | 
