summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xdot-config/Thunar/accels.scm1
-rw-r--r--dot-config/btop/btop.conf2
-rw-r--r--dot-config/dconf/userbin97147 -> 97795 bytes
-rw-r--r--dot-config/fish/conf.d/abbr.fish351
-rw-r--r--dot-config/fish/conf.d/env.fish107
-rw-r--r--dot-config/fish/conf.d/funcs.fish107
-rw-r--r--dot-config/fish/conf.d/git.abbr.fish261
-rw-r--r--dot-config/fish/conf.d/options.fish9
-rw-r--r--dot-config/fish/conf.d/pacman.abbr.fish65
-rw-r--r--dot-config/fish/conf.d/prompt.options.fish9
-rw-r--r--dot-config/fish/conf.d/z.fish63
-rw-r--r--dot-config/fish/config.fish5
-rw-r--r--dot-config/fish/fish_plugins1
-rw-r--r--dot-config/fish/fish_variables48
-rw-r--r--dot-config/fish/functions/__z.fish177
-rw-r--r--dot-config/fish/functions/__z_add.fish49
-rw-r--r--dot-config/fish/functions/__z_clean.fish11
-rw-r--r--dot-config/fish/functions/__z_complete.fish13
-rw-r--r--dot-config/fish/functions/fish_command_not_found.fish59
-rw-r--r--dot-config/fish/functions/fish_mode_prompt.fish4
-rw-r--r--dot-config/fish/functions/fish_prompt.fish131
-rw-r--r--dot-config/fish/functions/fish_user_key_bindings.fish25
-rw-r--r--dot-config/gtk-3.0/bookmarks1
-rw-r--r--dot-config/helix/languages.toml12
-rw-r--r--dot-config/hypr/binds.conf3
-rw-r--r--dot-config/hypr/rules.conf3
-rw-r--r--dot-config/kitty/open-actions.conf7
-rw-r--r--dot-config/spicetify/config-xpui.ini2
-rw-r--r--dot-config/wallust/templates/colors-kitty.conf2
-rw-r--r--dot-config/wallust/templates/fish-colors.fish55
-rw-r--r--dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml3
-rw-r--r--dot-gitconfig2
-rw-r--r--dot-hyperhdr/db/backup_20250929_205900949.json1
-rw-r--r--dot-hyperhdr/db/hyperhdr.db2
m---------dot-zen/main/chrome/Zen-Nebula0
-rw-r--r--dot-zen/main/chrome/zen-themes.css57
-rw-r--r--dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/chrome.css55
-rw-r--r--dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/preferences.json358
-rw-r--r--pkgbuilds/helix-git/.SRCINFO16
-rw-r--r--pkgbuilds/helix-git/PKGBUILD2
-rw-r--r--pkgbuilds/helix-git/helix-git-22.12.r3371.g9c42335d-1-x86_64.pkg.tar.zstbin0 -> 27418226 bytes
-rw-r--r--pkgbuilds/helix-git/helix/HEAD1
-rw-r--r--pkgbuilds/helix-git/helix/config9
-rw-r--r--pkgbuilds/helix-git/helix/description1
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/applypatch-msg.sample15
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/commit-msg.sample24
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/fsmonitor-watchman.sample174
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/post-update.sample8
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-applypatch.sample14
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-commit.sample49
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-merge-commit.sample13
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-push.sample53
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-rebase.sample169
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/pre-receive.sample24
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/prepare-commit-msg.sample42
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/push-to-checkout.sample78
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/sendemail-validate.sample77
-rwxr-xr-xpkgbuilds/helix-git/helix/hooks/update.sample128
-rw-r--r--pkgbuilds/helix-git/helix/info/attributes1
-rw-r--r--pkgbuilds/helix-git/helix/info/exclude6
-rw-r--r--pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.idxbin0 -> 1592396 bytes
-rw-r--r--pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.packbin0 -> 35782278 bytes
-rw-r--r--pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.revbin0 -> 227384 bytes
-rw-r--r--pkgbuilds/helix-git/helix/packed-refs65
-rw-r--r--pkgbuilds/hyprland-git/PKGBUILD4
66 files changed, 2796 insertions, 239 deletions
diff --git a/.gitignore b/.gitignore
index 4644154a..88206737 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ dot-local/share/fcitx5/pinyin
dot-config/fcitx5/conf/cached_layouts
dot-hyperhdr/lut_lin_tables.3d
dot-config/kitty/colors.conf
+dot-config/helix/themes/wallust.toml
diff --git a/dot-config/Thunar/accels.scm b/dot-config/Thunar/accels.scm
index 97624bc6..6da979fa 100755
--- a/dot-config/Thunar/accels.scm
+++ b/dot-config/Thunar/accels.scm
@@ -71,7 +71,6 @@
; (gtk_accel_path "<Actions>/ThunarWindow/remove-from-recent" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-with-other" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "<Primary><Shift>i")
-; (gtk_accel_path "<Actions>/ThunarBookmarks/3b616cd47a6533718043eca0de76abf3" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt-2" "Reload")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
diff --git a/dot-config/btop/btop.conf b/dot-config/btop/btop.conf
index 66042cd5..44aae1fe 100644
--- a/dot-config/btop/btop.conf
+++ b/dot-config/btop/btop.conf
@@ -57,7 +57,7 @@ update_ms = 1500
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
-proc_sorting = "cpu direct"
+proc_sorting = "memory"
#* Reverse sorting order, True or False.
proc_reversed = False
diff --git a/dot-config/dconf/user b/dot-config/dconf/user
index 2df662da..e8b5182d 100644
--- a/dot-config/dconf/user
+++ b/dot-config/dconf/user
Binary files differ
diff --git a/dot-config/fish/conf.d/abbr.fish b/dot-config/fish/conf.d/abbr.fish
new file mode 100644
index 00000000..3d1cf214
--- /dev/null
+++ b/dot-config/fish/conf.d/abbr.fish
@@ -0,0 +1,351 @@
+abbr -a cleanram "sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'"
+abbr -a trim_all "sudo fstrim -va"
+abbr -a mkgrub "sudo grub-mkconfig -o /boot/grub/grub.cfg"
+abbr -a nmap "sudo nmap"
+# alias update-grub='sudo grub-mkconfig -o /boot/grub/grub.cfg'
+abbr -a update-grub "sudo update-grub"
+abbr -a mtar "tar -zcvf"
+abbr -a utar "tar -zxvf"
+abbr -a z "zip -r"
+abbr -a uz unzip
+# alias unzip='ouch d'
+# alias compress='ouch c'
+# alias zip='ouch c'
+abbr -a zip "ouch c"
+abbr -a compress zip
+abbr -a sr "source ~/.config/zsh/env.zsh"
+abbr -a .. "cd .."
+abbr -a psg "ps aux | grep -v grep | grep -i -e VSZ -e"
+abbr -a mkdir "mkdir -p"
+abbr -a fm ranger
+
+abbr -a cat "bat --plain --pager=never"
+# alias grep='grep --color=auto'
+abbr -a grep "rg --no-heading --with-filename --smart-case -F"
+abbr -a mv "mv -v"
+abbr -a cp "cp --reflink=auto -vr"
+abbr -a rm "trash -v"
+
+abbr -a gpt sgpt
+abbr -a chat gpt
+abbr -a chatgpt chat
+# chatgpt
+#alias chatgpt='chatgpt-cli'
+
+# alias ls="exa --color=auto --icons" # lsd same
+#alias l="ls -l"
+#alias la="ls -a"
+#alias lla="ls -la"
+#alias lt="ls --tree"
+# alias cat="bat --color always --plain"
+
+# better ls
+if set -q DISPLAY
+ alias ls "eza --color=auto --icons=always --hyperlink"
+else
+ alias ls "eza --color=auto"
+end
+abbr -a l "ls -l"
+abbr -a ll "ls -l"
+abbr -a la "ls -a"
+abbr -a lla "ls -laa"
+abbr -a lah "ls -laah"
+abbr -a lm "ls -m"
+abbr -a lr "ls -R"
+abbr -a lg "ls -l --group-directories-first"
+
+# common alias
+# restart terminal
+abbr -a rel "exec /bin/zsh"
+abbr -a reload "exec /bin/zsh"
+abbr -a news "exec /bin/zsh"
+abbr -a refresh "exec /bin/zsh"
+abbr -a cls clear
+# better vims
+abbr -a record "asciinema rec"
+abbr -a rec "asciinema rec"
+# libreoffice
+abbr -a librewriter "libreoffice --writer"
+abbr -a librecalc "libreoffice --calc"
+abbr -a librebase "libreoffice --base"
+abbr -a libredraw "libreoffice --draw"
+abbr -a libreimpress "libreoffice --impress"
+abbr -a libremath "libreoffice --math"
+# noouput programe
+#alias nooutput='$1 > /dev/null 2>&1 &'
+# wps test
+abbr -a wps ttyper
+abbr -a wps-cli ttyper
+abbr -a wps-test ttyper
+# web2app
+abbr -a web2app "nativefier --name "
+# alias vim='kak'
+#alias vim='/home/system/scripts/vim'
+#alias vim='lvim'
+# copy/paste from terminal
+abbr -a copy wl-copy
+abbr -a paste wl-paste
+# port forwarding & webserver
+abbr -a cloudflarepf "cloudflared tunnel --url localhost:"
+abbr -a portforward "cloudflared tunnel --url localhost:"
+abbr -a ngrokpf "ngrok http "
+function webserver
+ echo clearing background jobs
+ fg &>/dev/null
+ echo starting python webserver and making it go to background
+ sudo python3 -m http.server 80 &
+ echo forwarding the python server with cloudflare and it might not sussess
+ cloudflared tunnel --url http://127.0.0.1:80
+ echo pulling out python server from background for quit
+ fg
+ fg &>/dev/null
+ fg &>/dev/null
+end
+abbr -a localwebserver "sudo python3 -m http.server 80"
+# vpn(hide.me)
+abbr -a open-vpn "systemctl start hide.me@free-us.hideservers.net"
+abbr -a start-vpn "systemctl start hide.me@free-us.hideservers.net"
+abbr -a close-vpn "systemctl stop hide.me@free-us.hideservers.net"
+abbr -a stop-vpn "systemctl stop hide.me@free-us.hideservers.net"
+# open
+abbr -a open xdg-open
+# image clear water mark
+abbr -a cwater-mark "lama-cleaner > /dev/null 2>&1 &"
+# stablediffusion
+function aimage
+ cd /mnt/DATA/Code/AI/stable-diffusion-webui
+ ./webui.sh --use-cpu all --no-half
+ cd -
+end
+abbr -a stablediffusion aimage
+# better python
+abbr -a python bpython
+abbr -a python3 bpython
+abbr -a pip "python -m pip"
+abbr -a pipreqr "pip3 install -r requirements.txt"
+abbr -a pipreqsi installpipreqs
+# better discord
+#alias discord='discord-screenaudio'
+# better wget
+abbr -a wget "aria2c -x 16"
+# audios
+abbr -a audio pulsemixer
+abbr -a audiod pipewire-pulse
+# alias audiod='pipewire*'
+abbr -a config-bspwm "vim ~/.config/bspwm/bspwmrc"
+abbr -a config-keybind "vim ~/.config/bspwm/sxhkdrc"
+abbr -a config-polybar "vim ~/.config/bspwm/themes/default/polybar/config.ini"
+# better less/cat
+# alias less='bat --pager=always --color always --plain' # moved into utility for auto sudo # nah, the one wont work with pipe
+# alias cat='bat --pager=never' # moved into utility for auto sudo # nah, wont work with pipe
+# better diff
+#alias diff='bat -d'
+# tars
+abbr -a tarxz "tar -xvJf"
+abbr -a targz "tar -xvzf"
+# faster(vim)
+abbr -a v vim
+## auto fuck
+# better finds
+#alias find='sudo find / | grep '
+#alias findhere='sudo find | grep '
+# ip
+abbr -a pubip "curl ifconfig.co"
+# port
+abbr -a getport "lsof -i"
+# map
+abbr -a map mapscii
+# disk analyser
+abbr -a diskana ncdu
+# must run as root commands
+abbr -a sudo "sudo "
+abbr -a root "/usr/bin/sudo -i"
+abbr -a "*" sudo
+abbr -a visudo "sudo visudo"
+abbr -a snap "sudo snap"
+abbr -a fucking sudo
+abbr -a howdy "sudo howdy"
+abbr -a gparted "sudo -E gparted"
+abbr -a gpart "sudo gpart"
+abbr -a gdisk "sudo gdisk"
+abbr -a cgdisk "sudo cgdisk"
+abbr -a cfdisk "sudo cfdisk"
+abbr -a fdisk "sudo fdisk"
+abbr -a blkid "sudo blkid"
+abbr -a service systemctl
+abbr -a mkinitcpio "sudo mkinitcpio"
+abbr -a bpytop "sudo bpytop"
+abbr -a debtap "sudo debtap"
+abbr -a rpm "sudo rpm"
+abbr -a journalctl "sudo journalctl"
+abbr -a powertop "sudo powertop"
+abbr -a upgrade-grub "grub-mkconfig -o /boot/grub/grub.cfg"
+#alias update-grub='sudo update-grub'
+abbr -a grub-mkconfig "sudo grub-mkconfig"
+abbr -a update-initramfs "mkinitcpio -P"
+abbr -a kgupdate "update-initramfs && grub-mkconfig -o /boot/grub/grub.cfg"
+abbr -a locale-gen "sudo locale-gen"
+abbr -a ufw "sudo ufw"
+abbr -a swapon "sudo swapon"
+abbr -a swapoff "sudo swapoff"
+abbr -a grpck "sudo grpck"
+abbr -a pwck "sudo pwck"
+#alias npm='sudo npm'
+abbr -a npm bun
+abbr -a npx bunx
+abbr -a powerpill "sudo powerpill"
+abbr -a timeshift "sudo timeshift"
+abbr -a mount "sudo mount"
+abbr -a umount "sudo umount"
+# user/group related command
+abbr -a usermod "sudo usermod"
+abbr -a useradd "sudo useradd"
+abbr -a userdel "sudo userdel"
+abbr -a pacdiff "sudo -E pacdiff"
+# change perms
+abbr -a chown "chown -v"
+abbr -a getown "sudo chown -R $USER:$USER"
+abbr -a getread "sudo chmod +r"
+abbr -a geturead "sudo chmod u+r"
+abbr -a getgread "sudo chmod g+r"
+abbr -a getexec "sudo chmod +x"
+abbr -a getuexec "sudo chmod u+x"
+abbr -a getgexec "sudo chmod g+x"
+abbr -a getwrite "sudo chmod +w"
+abbr -a getuwrite "sudo chmod u+w"
+abbr -a getgwrite "sudo chmod g+w"
+abbr -a pipes "pipes.sh"
+# better cd
+abbr -a bcd fzf
+# view keybinds
+abbr -a keybind xev
+# bettercap
+abbr -a bettercap "sudo bettercap"
+abbr -a update "topgrade -y --no-retry"
+abbr -a upgrade update
+# alias for nix(package manager)
+#alias nix-install='nix-env -iA nixpkgs.'
+abbr -a nix-remove "nix-env -e"
+# pipes.sh config
+abbr -a pipes.sh "pipes.sh -r 0"
+# installrequirements(with pip)(from requirements.txt)
+abbr -a installrequirements "pip install -r requirements.txt"
+# alias for python
+abbr -a py python3
+# more humenize
+abbr -a df "df -h"
+abbr -a du "du -h"
+#alias free='free -h'
+# alias grep='grep --color=always'
+abbr -a frep "grep -ir"
+
+# vim:ft=zsh
+# doesn't work in zshenv
+
+# idk Y but it will say no correct
+abbr -a j "nocorrect j"
+abbr -a killall "nocorrect killall"
+abbr -a mysql mysql
+
+# alias sys='nu -c sys'
+abbr -a usys "systemctl --user"
+abbr -a sysu "systemctl --user"
+abbr -a sys systemctl
+abbr -a process "nu -c ps"
+
+# compiles
+abbr -a compile-run compile-run
+abbr -a cmp compile
+abbr -a cmpr compilerun
+# disasm
+abbr -a disasm "objdump -d"
+abbr -a discompile "objdump -d"
+#alias mpv='mpv --no-audio-display --hwdec=vaapi'
+abbr -a backup "rsync --archive --quiet --backup --partial --copy-links --cvs-exclude"
+# sent text via ix
+abbr -a sendraw ix
+abbr -a sentext ix
+# custom chat server
+abbr -a joinchat "nc 127.0.0.1 8000"
+# license
+abbr -a license "/usr/bin/cat /mnt/DATA/Code/license.txt"
+# alias license.short="sed -n '2p' /mnt/DATA/Code/license.txt"
+function license.short
+ sed -n '634,648p' /mnt/DATA/Code/license.txt
+end
+# browsh
+function browsh
+ echo "export "(env | grep --color=never LANG=)"" >$HOME/.cache/browsh.LANGcache
+ set LANG EN
+ command browsh
+ eval (cat $HOME/.cache/browsh.LANGcache)
+ rm $HOME/.cache/browsh.LANGcache
+end
+# metasploit framework
+function msfconsole
+ msfd; and /usr/bin/msfconsole; or echo "[*] msfd faild to start"
+end
+# process related stuff
+abbr -a processfind "ps -aux | grep -v grep | grep"
+abbr -a processf processfind
+abbr -a pf processfind
+
+# alias code='cursor'
+
+# help
+abbr -a help tldr
+
+abbr -a mt memento-timeline
+
+# xdg-ninja suggested
+abbr -a svn 'svn --config-dir $XDG_CONFIG_HOME/subversion'
+
+# server stuff
+function getfs
+ scp -P 2002 -R ssh.littleblack111.com:$argv .
+end
+function putfile
+ scp -P 2002 -R $argv ssh.littleblack111.com:~
+end
+function putfs
+ scp -P 2002 -R $argv ssh.littleblack111.com:~/server/public-fs
+end
+
+# colors
+# alias ping='prettyping'
+# alias make='colormake'
+
+# video screen cast using v4l2
+abbr -a camscreen "wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video9 -x yuv420p"
+abbr -a screencam "wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video9 -x yuv420p"
+abbr -a camerascreen "wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video9 -x yuv420p"
+abbr -a screencamera "wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video9 -x yuv420p"
+abbr -a image-clean "iopaint start --host 0.0.0.0 --enable-anime-seg --enable-realesrgan --realesrgan-device cuda --enable-restoreformer --restoreformer-device cuda --enable-gfpgan --gfpgan-device cuda --disable-nsfw-checker --inbrowser --model-dir \$XDG_DATA_HOME/AI/IOPaint/modules"
+
+# hyprland overlay
+abbr -a hyproverlay "hyprctl keyword debug:overlay true"
+abbr -a dhyproverlay "hyprctl keyword debug:overlay false"
+abbr -a hyproverlayd "hyprctl keyword debug:overlay false"
+
+abbr -a cavabg "alacritty --class winwrap -e cava"
+abbr -a bgcava "alacritty --class winwrap -e cava"
+
+# cpu freq
+abbr -a cpuperf "sudo cpupower frequency-set -g performance"
+abbr -a cpups "sudo cpupower frequency-set -g powersave"
+
+# better time benchmark
+abbr -a time "hyperfine --warmup 3 -N"
+
+function '??'
+ set file (mktemp)
+ gh copilot suggest -t shell $argv --shell-out $file
+ eval (cat $file)
+ rm $file
+end
+
+abbr -a icat "kitten icat"
+
+abbr -a mkcd "nocorrect mkcd"
+
+abbr -a cd z
diff --git a/dot-config/fish/conf.d/env.fish b/dot-config/fish/conf.d/env.fish
new file mode 100644
index 00000000..e6d4b973
--- /dev/null
+++ b/dot-config/fish/conf.d/env.fish
@@ -0,0 +1,107 @@
+##
+## PATH & ENV Var
+##
+
+# PNPM, Qt/QML, Wine
+set -x PNPM_HOME "$HOME/.local/share/pnpm"
+set -x QML_IMPORT_PATH /usr/lib/qt6/qml
+set -x WINEPREFIX /opt/windows.wine
+
+# PATHs (Fish keeps PATH as a list; prepend/append with -xg to export globally)
+# Preserve order as in your zsh config
+set -xg PATH $PNPM_HOME $PATH
+set -xg PATH $HOME/scripts $PATH
+set -xg PATH $HOME/scripts/bin $PATH
+set -xg PATH $PATH $HOME/.local/bin
+set -xg PATH $HOME/.cargo/bin $PATH
+set -xg PATH $PATH /snap/bin
+set -xg PATH $PATH $HOME/.cache/.bun/bin
+set -xg PATH $PATH $HOME/go/bin
+set -xg PATH $PATH /home/system/.spicetify
+
+# GPG_TTY and SUDO_PROMPT
+# Fish: tty is a builtin; emulate ${TTY:-$(tty)}
+if set -q TTY
+ set -x GPG_TTY "$TTY"
+else
+ set -x GPG_TTY (tty)
+end
+set -x SUDO_PROMPT "pass: "
+
+# Term/browser/editor
+set -x TERMINAL kitty
+set -x BROWSER zen-browser
+set -x VISUAL hx
+set -x EDITOR "$VISUAL"
+
+# XDG base dirs
+set -x XDG_CONFIG_HOME "$HOME/.config"
+set -x XDG_CACHE_HOME "$HOME/.cache"
+set -x XDG_DATA_HOME "$HOME/.local/share"
+set -x XDG_STATE_HOME "$HOME/.local/state"
+set -x XDG_CONFIG_DIRS /etc/xdg
+set -x XDG_DATA_DIRS "/usr/local/share:/usr/share:/var/lib/flatpak/exports/share:$XDG_DATA_HOME/flatpak/exports/share"
+set -x XDG_RUNTIME_DIR "/run/user/(id -u)"
+set -x XDG_DESKTOP_DIR "$HOME/Desktop"
+set -x XDG_DOWNLOAD_DIR "$HOME/Downloads"
+set -x XDG_TEMPLATES_DIR "$HOME/Templates"
+set -x XDG_PUBLICSHARE_DIR "$HOME/Public"
+set -x XDG_DOCUMENTS_DIR "$HOME/Documents"
+set -x XDG_MUSIC_DIR "$HOME/Music"
+set -x XDG_PICTURES_DIR "$HOME/Pictures"
+set -x XDG_VIDEOS_DIR "$HOME/Videos"
+
+# Pager/editor helpers
+set -x MANPAGER 'nvim +Man! +"set nocul" +"set noshowcmd" +"set noruler" +"set noshowmode" +"set laststatus=0" +"set showtabline=0" +"set nonumber"'
+set -x DIFFPROG 'nvim -d'
+# set -x MANPAGER "lvim +Man"
+
+# If using nvim as MANPAGER, optional LESS termcaps (kept commented as in your file)
+# if test (echo $MANPAGER | awk '{print $1}') = nvim
+# set -x LESS "--RAW-CONTROL-CHARS"
+# # set -x MANPAGER "less -s -M +Gg"
+# set -x LESS_TERMCAP_mb \e'[1;32m'
+# set -x LESS_TERMCAP_md \e'[1;32m'
+# set -x LESS_TERMCAP_me \e'[0m'
+# set -x LESS_TERMCAP_se \e'[0m'
+# set -x LESS_TERMCAP_so \e'[01;33m'
+# set -x LESS_TERMCAP_ue \e'[0m'
+# set -x LESS_TERMCAP_us \e'[1;4;31m'
+# end
+
+# less source highlight
+set -x LESSOPEN "| /usr/bin/source-highlight-esc.sh %s"
+set -x LESS "-R "
+
+# FZF bases (kept commented)
+# set -x FZF_DEFAULT_OPTS "
+# --color fg:#cdd6f4
+# --color fg+:#cdd6f4
+# --color bg:#1e1e2e
+# --color bg+:#313244
+# --color hl:#f38ba8
+# --color hl+:#f38ba8
+# --color info:#cba6f7
+# --color prompt:#cba6f7
+# --color spinner:#f5e0dc
+# --color pointer:#f5e0dc
+# --color marker:#f5e0dc
+# --color border:#1e1e2e
+# --color header:#f38ba8
+# --prompt ' '
+# --pointer ' λ'
+# --layout=reverse
+# --border horizontal
+# --height 40
+# "
+
+# LS_COLORS (huge; intentionally kept commented as in your file)
+# set -x LS_COLORS '...'
+
+# set -x LANG "zh_CN.UTF-8"
+
+# vim:ft=zsh:nowrap (left as comment for fidelity)
+
+# source $HOME/.config/zsh/env.local.zsh
+# In Fish, source a Fish file instead if you have one:
+# test -f $HOME/.config/fish/env.local.fish; and source $HOME/.config/fish/env.local.fish
diff --git a/dot-config/fish/conf.d/funcs.fish b/dot-config/fish/conf.d/funcs.fish
new file mode 100644
index 00000000..82c8411b
--- /dev/null
+++ b/dot-config/fish/conf.d/funcs.fish
@@ -0,0 +1,107 @@
+# vim with auto sudo
+function vim
+ if test (count $argv) -eq 0
+ if not test -w (pwd)
+ printf "Opening vim with sudo...\n"
+ sudo -E $EDITOR
+ return
+ else
+ printf "Opening vim...\n"
+ $EDITOR
+ return
+ end
+ end
+
+ if not test -e $argv[1]
+ printf "%s doesn't exist\ntouch File '%s'?(y/N)" $argv[1] $argv[1]
+ read -l choice
+ if test "$choice" = y -o "$choice" = Y
+ echo
+ if not test -w (dirname $argv[1])
+ printf "Opening vim with sudo...\n"
+ sudo -E $EDITOR $argv[1]
+ if not test -e $argv[1]
+ printf "File \"%s\" is isn't saved, auto deleted...\n" $argv[1]
+ return
+ end
+ return
+ else
+ printf "Opening vim...\n"
+ $EDITOR $argv[1]
+ if not test -e $argv[1]
+ printf "File \"%s\" is isn't saved, auto deleted...\n" $argv[1]
+ return
+ end
+ return
+ end
+ else
+ printf '\nExiting...\n'
+ return
+ end
+ end
+
+ if not test -w $argv[1]
+ printf "Opening vim with sudo...\n"
+ sudo -E $EDITOR $argv[1]
+ return
+ else if test -e $argv[1]
+ printf "Opening vim...\n"
+ $EDITOR $argv[1]
+ return
+ end
+end
+
+function unzip
+ ouch d --dir (string replace -r '\.[^./]+$' '' -- $argv[1]) $argv
+end
+
+function path
+ echo (pwd)/$argv[1]
+end
+
+function vimake
+ if test -e Makefile
+ $EDITOR Makefile
+ else
+ printf "No Makefile"
+ end
+end
+
+function vimpkg
+ if test -e PKGBUILD
+ nvim PKGBUILD
+ else
+ printf "No PKGBUILD"
+ end
+end
+
+function installpipreqs
+ if test -e requirements.txt
+ pip install -r requirements.txt
+ else
+ echo "There isn't a requirements.txt"
+ end
+end
+
+function killzombie
+ set -l pid (ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')
+ if test -z "$pid"
+ echo "No zombie processes found."
+ else
+ set -l cmd (ps -p $pid -o cmd | sed '1d')
+ echo "Found zombie process PID: $pid"
+ echo "$cmd"
+ echo "Kill it? Return to continue… (ctrl+c to cancel)"
+ read -l
+ sudo kill -9 $pid
+ end
+end
+
+function createrepo
+ gh repo create $argv[1] --add-readme --license gpl-3.0 $argv[2..-1] --public
+ # tea repo create --name $1 --init --readme Default --license gpl3 --branch main ${@:2}
+end
+
+function tempsend
+ bw send $argv ^/dev/null | jq -r '.accessUrl'
+end
diff --git a/dot-config/fish/conf.d/git.abbr.fish b/dot-config/fish/conf.d/git.abbr.fish
new file mode 100644
index 00000000..5a37d812
--- /dev/null
+++ b/dot-config/fish/conf.d/git.abbr.fish
@@ -0,0 +1,261 @@
+
+#!/bin/bash
+
+set -x LOG_HASH "%C(always,yellow)%h%C(always,reset)"
+set -x LOG_RELATIVE_TIME "%C(always,green)(%ar)%C(always,reset)"
+set -x LOG_AUTHOR "%C(always,blue)<%an>%C(always,reset)"
+set -x LOG_REFS "%C(always,red)%d%C(always,reset)"
+set -x LOG_SUBJECT "%s"
+
+set -x LOG_FORMAT "$LOG_HASH}$LOG_AUTHOR}$LOG_RELATIVE_TIME}$LOG_SUBJECT $LOG_REFS"
+
+set -x BRANCH_PREFIX "%(HEAD)"
+set -x BRANCH_REF "%(color:red)%(color:bold)%(refname:short)%(color:reset)"
+set -x BRANCH_HASH "%(color:yellow)%(objectname:short)%(color:reset)"
+set -x BRANCH_DATE "%(color:green)(%(committerdate:relative))%(color:reset)"
+set -x BRANCH_AUTHOR "%(color:blue)%(color:bold)<%(authorname)>%(color:reset)"
+set -x BRANCH_CONTENTS "%(contents:subject)"
+
+set -x BRANCH_FORMAT "}$BRANCH_PREFIX}$BRANCH_REF}$BRANCH_HASH}$BRANCH_DATE}$BRANCH_AUTHOR}$BRANCH_CONTENTS"
+
+function show_git_head
+ pretty_git_log -1
+ git show -p --pretty="tformat:"
+end
+
+function pretty_git_log
+ git log --since="12 months ago" --graph --pretty="tformat:$LOG_FORMAT" $argv | pretty_git_format | git_page_maybe
+end
+
+function pretty_git_log_all
+ git log --all --since="12 months ago" --graph --pretty="tformat:$LOG_FORMAT" $argv | pretty_git_format | git_page_maybe
+end
+
+function gb
+ git branch -v --color=always --format=$BRANCH_FORMAT --sort=-committerdate $argv | pretty_git_format
+end
+
+function pretty_git_format
+ sed -Ee 's/(^[^)]*) ago\)/\1)/' \
+ | sed -Ee 's/(^[^)]*), [[:digit:]]+ .*months?\)/\1)/' \
+ | sed -Ee 's/ seconds?\)/s\)/' \
+ | sed -Ee 's/ minutes?\)/m\)/' \
+ | sed -Ee 's/ hours?\)/h\)/' \
+ | sed -Ee 's/ days?\)/d\)/' \
+ | sed -Ee 's/ weeks?\)/w\)/' \
+ | sed -Ee 's/ months?\)/M\)/' \
+ | sed -Ee 's/<Andrew Burgess>/<me>/' \
+ | sed -Ee 's/<([^ >]+) [^>]*>/<\1>/' \
+ | column -s '}' -t
+end
+
+#alias tree='tree -a -I .git'
+# alias commit="git add . && git commit -m"
+# alias push="git push"
+abbr -a git-rm "git ls-files --deleted -z | xargs -0 git rm"
+# alias g=git
+#alias ga='git add'
+# alias gaa='git add --all'
+# alias gam='git am'
+# alias gama='git am --abort'
+# alias gamc='git am --continue'
+# alias gams='git am --skip'
+# alias gamscp='git am --show-current-patch'
+# alias gap='git apply'
+# alias gapa='git add --patch'
+# alias gapt='git apply --3way'
+# alias gau='git add --update'
+# alias gav='git add --verbose'
+# alias gb='git branch'
+# alias gbD='git branch -D'
+# alias gba='git branch -a'
+# alias gbd='git branch -d'
+# alias gbda='git branch --no-color --merged | command grep -vE "^([+*]|\s*($(git_main_branch)|$(git_develop_branch))\s*$)" | command xargs git branch -d 2>/dev/null'
+# alias gbl='git blame -b -w'
+# alias gbnm='git branch --no-merged'
+# alias gbr='git branch --remote'
+# alias gbs='git bisect'
+# alias gbsb='git bisect bad'
+# alias gbsg='git bisect good'
+# alias gbsr='git bisect reset'
+# alias gbss='git bisect start'
+#alias gc='git commit -v'
+# alias 'gc!'='git commit -v --amend'
+# alias gca='git commit -v -a'
+# alias 'gca!'='git commit -v -a --amend'
+# alias gcam='git commit -a -m'
+# alias 'gcan!'='git commit -v -a --no-edit --amend'
+# alias 'gcans!'='git commit -v -a -s --no-edit --amend'
+# alias gcas='git commit -a -s'
+# alias gcasm='git commit -a -s -m'
+# alias gcb='git checkout -b'
+# alias gcd='git checkout $(git_develop_branch)'
+# alias gcf='git config --list'
+# alias gclr='git clone --recurse-submodules'
+# alias gcld='git clone --depth'
+# alias gclean='git clean -id'
+# alias gcm='git checkout $(git_main_branch)'
+# alias gcmsg='git commit -m'
+# alias 'gcn!'='git commit -v --no-edit --amend'
+# alias gco='git checkout'
+# alias gcor='git checkout --recurse-submodules'
+# alias gcount='git shortlog -sn'
+# alias gcp='git cherry-pick'
+# alias gcpa='git cherry-pick --abort'
+# alias gcpc='git cherry-pick --continue'
+# alias gcs='git commit -S'
+# alias gcsm='git commit -s -m'
+# alias gcss='git commit -S -s'
+# alias gcssm='git commit -S -s -m'
+abbr -a gd "git diff"
+# alias gdca='git diff --cached'
+# alias gdct='git describe --tags $(git rev-list --tags --max-count=1)'
+# alias gdcw='git diff --cached --word-diff'
+# alias gds='git diff --staged'
+# alias gdt='git diff-tree --no-commit-id --name-only -r'
+# alias gdup='git diff @{upstream}'
+# alias gdw='git diff --word-diff'
+# alias gf='git fetch'
+# alias gfa='git fetch --all --prune --jobs=10'
+# alias gfg='git ls-files | grep'
+# alias gfo='git fetch origin'
+# alias gg='git gui citool'
+# alias gga='git gui citool --amend'
+# alias ggpull='git pull origin "$(git_current_branch)"'
+# alias ggpur=ggu
+# alias ggpush='git push origin "$(git_current_branch)"'
+# alias ggsup='git branch --set-upstream-to=origin/$(git_current_branch)'
+# alias ghh='git help'
+# alias gignore='git update-index --assume-unchanged'
+# alias gignored='git ls-files -v | grep "^[[:lower:]]"'
+# alias git-svn-dcommit-push='git svn dcommit && git push github $(git_main_branch):svntrunk'
+# alias gk='\gitk --all --branches &!'
+# alias gke='\gitk --all $(git log -g --pretty=%h) &!'
+# alias gl='git pull'
+# alias glg='git log --stat'
+# alias glgg='git log --graph'
+# alias glgga='git log --graph --decorate --all'
+# alias glgm='git log --graph --max-count=10'
+# alias glgp='git log --stat -p'
+# alias glo='git log --oneline --decorate'
+# alias globurl='noglob urlglobber '
+# alias glod='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'\'
+# alias glods='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset'\'' --date=short'
+# alias glog='git log --oneline --decorate --graph'
+# alias gloga='git log --oneline --decorate --graph --all'
+# alias glol='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\'
+# alias glola='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\'' --all'
+# alias glols='git log --graph --pretty='\''%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ar) %C(bold blue)<%an>%Creset'\'' --stat'
+# alias glp=_git_log_prettily
+# alias glum='git pull upstream $(git_main_branch)'
+# alias gm='git merge'
+# alias gma='git merge --abort'
+# alias gmom='git merge origin/$(git_main_branch)'
+# alias gmtl='git mergetool --no-prompt'
+# alias gmtlvim='git mergetool --no-prompt --tool=vimdiff'
+# alias gmum='git merge upstream/$(git_main_branch)'
+# alias gpd='git push --dry-run'
+# alias gpf='git push --force-with-lease'
+# alias 'gpf!'='git push --force'
+# alias gpoat='git push origin --all && git push origin --tags'
+# alias gpr='git pull --rebase'
+# alias gpristine='git reset --hard && git clean -dffx'
+# alias gpsup='git push --set-upstream origin $(git_current_branch)'
+# alias gpu='git push upstream'
+# alias gpv='git push -v'
+# alias gpd='git push origin --delete'
+abbr -a gr "git remote"
+# alias gra='git remote add'
+# alias grb='git rebase'
+# alias grwh='git rm --cached `git ls-files -i -c --exclude-from=.gitignore`'
+# alias grwhx='git ls-files -i -c --exclude-from=.gitignore | xargs git rm --cached'
+# alias grad='git rm -r --cached . && git add .'
+# alias grba='git rebase --abort'
+# alias grbc='git rebase --continue'
+# alias grbd='git rebase $(git_develop_branch)'
+# alias grbi='git rebase -i'
+# alias grbm='git rebase $(git_main_branch)'
+# alias grbo='git rebase --onto'
+# alias grbom='git rebase origin/$(git_main_branch)'
+# alias grbs='git rebase --skip'
+# alias grep='grep --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
+# alias grev='git revert'
+# alias grh='git reset'
+# alias grhh='git reset --hard'
+# alias grm='git rm'
+# alias grmc='git rm --cached'
+# alias grmv='git remote rename'
+# alias groh='git reset origin/$(git_current_branch) --hard'
+# alias grrm='git remote remove'
+# alias grs='git restore'
+# alias grset='git remote set-url'
+# alias grss='git restore --source'
+# alias grst='git restore --staged'
+# alias grt='cd "$(git rev-parse --show-toplevel || echo .)"'
+# alias gru='git reset --'
+# alias grup='git remote update'
+# alias grv='git remote -v'
+# alias gsb='git status -sb'
+# alias gsd='git svn dcommit'
+# alias gsh='git show'
+# alias gsi='git submodule init'
+# alias gsps='git show --pretty=short --show-signature'
+# alias gsr='git svn rebase'
+# alias gss='git status -s'
+# alias gst='git status'
+# alias gsta='git stash push'
+# alias gstaa='git stash apply'
+# alias gstall='git stash --all'
+# alias gstc='git stash clear'
+# alias gstd='git stash drop'
+# alias gstl='git stash list'
+# alias gstp='git stash pop'
+# alias gsts='git stash show --text'
+# alias gstu='gsta --include-untracked'
+# alias gsu='git submodule update'
+# alias gsw='git switch'
+# alias gswc='git switch -c'
+# alias gswd='git switch $(git_develop_branch)'
+# alias gswm='git switch $(git_main_branch)'
+# alias gtl='gtl(){ git tag --sort=-v:refname -n -l "${1}*" }; noglob gtl'
+# alias gts='git tag -s'
+# alias gtv='git tag | sort -V'
+# alias gunignore='git update-index --no-assume-unchanged'
+# alias gunwip='git log -n 1 | grep -q -c "\-\-wip\-\-" && git reset HEAD~1'
+# alias gup='git pull --rebase'
+# alias gupa='git pull --rebase --autostash'
+# alias gupav='git pull --rebase --autostash -v'
+# alias gupv='git pull --rebase -v'
+# alias gwch='git whatchanged -p --abbrev-commit --pretty=medium'
+# alias gwip='git add -A; git rm $(git ls-files --deleted) 2> /dev/null; git commit --no-verify --no-gpg-sign -m "--wip-- [skip ci]"'
+# alias gcl='git clone --recurse-submodules'
+abbr -a gl "git log --decorate --graph"
+function gcl
+ git clone --recurse-submodules $argv; or gh repo clone $argv -- --recurse-submodules
+end
+# alias gi='git init'
+# alias gl='git log'
+#alias ga='git add'
+# alias gc='git commit -am'
+abbr -a gc "git commit --verbose -S -m"
+abbr -a gcnm 'git commit --verbose --allow-empty-message -S -m ""'
+abbr -a gca "git commit --verbose -S -am"
+# alias gp='git push origin main'
+# alias gp='git remote | xargs -L1 git push --all' # moved to funcs
+abbr -a gp 'git remote | xargs -L1 git push'
+abbr -a gpd 'git remote | xargs -L1 git push --delete'
+# alias gpf='git push --force-with-lease'
+abbr -a gitp 'git remote | xargs -L1 git pull'
+abbr -a gs "git status"
+abbr -a gitrm "git rm --cached -rf"
+# alias gsb='git switch'
+# alias gcb='git checkout -b'
+# alias gu='ga && gc update && git push'
+function ghcl
+ gh repo clone $argv -- --recurse-submodules
+end
+# alias ghdb='git push origin --delete'
+# alias ghcr='gh repo create'
+# alias ghpr='gh pr'
+# alias ghis='gh issue'
+abbr -a bisectundo 'git bisect log | head -n -2 > /tmp/fixed_bisect.log ; git bisect replay /tmp/fixed_bisect.log'
diff --git a/dot-config/fish/conf.d/options.fish b/dot-config/fish/conf.d/options.fish
new file mode 100644
index 00000000..21783bad
--- /dev/null
+++ b/dot-config/fish/conf.d/options.fish
@@ -0,0 +1,9 @@
+if ! status is-interactive
+ return
+end
+
+# set fish_cursor_default line blink
+set fish_cursor_default block
+set fish_cursor_insert line blink
+set fish_cursor_external block
+set fish_cursor_visual block
diff --git a/dot-config/fish/conf.d/pacman.abbr.fish b/dot-config/fish/conf.d/pacman.abbr.fish
new file mode 100644
index 00000000..8e146978
--- /dev/null
+++ b/dot-config/fish/conf.d/pacman.abbr.fish
@@ -0,0 +1,65 @@
+# pacman/yay helpers
+
+abbr -a pacman-key "sudo pacman-key"
+abbr -a add-pacman-repository "sudo add-pacman-repository"
+abbr -a downgrade "sudo downgrade"
+# better pacman
+#abbr -a pacman "paru"
+abbr -a pacman "yay "
+#abbr -a pacman "pamac"
+#abbr -a pacman "sudo pacman"
+#abbr -a apt "pamac" # idk there is a package called apt lmao
+
+# full system upgrade/update
+abbr -a mirror "sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist"
+abbr -a mirrord "sudo reflector --latest 50 --number 20 --sort delay --save /etc/pacman.d/mirrorlist"
+abbr -a mirrors "sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist"
+abbr -a mirrora "sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist"
+# abbr -a update 'sudo npm update -g & nix-env -u & brew upgrade & flatpak update -y & tldr -u & yay -Syu --noconfirm --disable-download-timeout' # pipx upgrade-all
+
+# more pacman alis
+alias packagelistignoreall 'paru --color always -Sl | sed -e "s: :/:; s/ unknown-version//; /已安装/d" | fzf --multi --ansi --preview "yay -Si {1}" | cut -d" " -f1 | xargs -ro yay -S'
+alias package "paru --color always -Sl \
+ | fzf --multi --ansi --preview 'yay -Si {2}' \
+ | awk '{print $2}' \
+ | xargs -r yay -S --noconfirm"
+# abbr -a packagelist 'paru --color always -Sl | sed -e "s: :/:; /unknown-version/d" | fzf --multi --ansi --preview "yay -Si {1}" | cut -d" " -f1 | xargs -ro yay -S'
+alias packagef "/usr/bin/cat /tmp/yaySl | cut -d' ' -f2 | fzf --multi --ansi --preview 'yay -Si {1}' | xargs -ro paru -S --skipreview --needed"
+abbr -a pi "pacman --noconfirm -S --needed"
+abbr -a pic "pacman --noconfirm -S --needed --ask 4"
+abbr -a pico "pacman --noconfirm -S --overwrite \"*\" --needed --ask 4"
+abbr -a picdep "pacman --noconfirm -Sd --needed --ask 4 --nodeps"
+abbr -a pidep "pacman --noconfirm -S --asdeps --needed"
+abbr -a pindep "pacman --noconfirm -Sd --nodeps"
+abbr -a pif "pacman --noconfirm --force -S --needed"
+abbr -a pifd "pacman -Sd --needed --nodeps"
+abbr -a pio "pacman --noconfirm -S --overwrite \"*\" --needed"
+abbr -a prio "pacman --noconfirm -S --overwrite \"*\""
+abbr -a priob "pacman --noconfirm -S --overwrite \"*\" --rebuild"
+#abbr -a ps "pacman --noconfirm -S --needed"
+abbr -a pr "pacman --noconfirm -Rns"
+abbr -a prndep "pacman --noconfirm -Rnsd --nodeps"
+abbr -a pri "pacman --noconfirm -S"
+abbr -a prib "pacman --noconfirm -S --rebuild"
+abbr -a pc "pacman -Scc"
+abbr -a clean "pacman -Scc"
+abbr -a pf "pacman --noconfirm "
+abbr -a p pacman
+abbr -a autoremove 'pacman -Rcns (pacman -Qdtq)'
+abbr -a pd downgrade
+#abbr -a pi 'nocorrect pi'
+#abbr -a pr 'nocorrect pr'
+#abbr -a p 'nocorrect p'
+#abbr -a pacman 'nocorrect pacman'
+
+abbr -a pacin 'pacman -Slq | fzf -m --preview \'cat <(pacman -Si {1}) <(pacman -Fl {1} | awk "{print \$2}")\' | xargs -ro sudo pacman -S'
+abbr -a paruin 'paru -Slq | fzf -m --preview \'cat <(paru -Si {1}) <(paru -Fl {1} | awk "{print \$2}")\' | xargs -ro paru -S'
+abbr -a pacrem 'pacman -Qq | fzf --multi --preview \'pacman -Qi {1}\' | xargs -ro sudo pacman -Rns'
+# abbr -a pac 'pacman -Q | fzf'
+abbr -a parucom "paru -Gc"
+abbr -a parupd "paru -Qua"
+abbr -a pacupd "pacman -Qu"
+abbr -a parucheck "paru -Gp"
+abbr -a cleanpac 'sudo pacman -Rns (pacman -Qtdq); and paru -c'
+abbr -a installed "grep -i installed /var/log/pacman.log"
+# abbr -a pacman "sudo pacman"
diff --git a/dot-config/fish/conf.d/prompt.options.fish b/dot-config/fish/conf.d/prompt.options.fish
new file mode 100644
index 00000000..cc226746
--- /dev/null
+++ b/dot-config/fish/conf.d/prompt.options.fish
@@ -0,0 +1,9 @@
+# git
+set -g __fish_git_prompt_show_informative_status 1
+set -g __fish_git_prompt_showdirtystate 1
+set -g __fish_git_prompt_showuntrackedfiles 1
+set -g __fish_git_prompt_showupstream auto
+set -g __fish_git_prompt_showstashstate 1
+set -g __fish_git_prompt_showcolorhints 1
+
+set -g fish_prompt_pwd_dir_length 0
diff --git a/dot-config/fish/conf.d/z.fish b/dot-config/fish/conf.d/z.fish
new file mode 100644
index 00000000..59c960fc
--- /dev/null
+++ b/dot-config/fish/conf.d/z.fish
@@ -0,0 +1,63 @@
+if test -z "$Z_DATA"
+ if test -z "$XDG_DATA_HOME"
+ set -U Z_DATA_DIR "$HOME/.local/share/z"
+ else
+ set -U Z_DATA_DIR "$XDG_DATA_HOME/z"
+ end
+ set -U Z_DATA "$Z_DATA_DIR/data"
+end
+
+if test ! -e "$Z_DATA"
+ if test ! -e "$Z_DATA_DIR"
+ mkdir -p -m 700 "$Z_DATA_DIR"
+ end
+ touch "$Z_DATA"
+end
+
+if test -z "$Z_CMD"
+ set -U Z_CMD z
+end
+
+set -U ZO_CMD "$Z_CMD"o
+
+if test ! -z $Z_CMD
+ function $Z_CMD -d "jump around"
+ __z $argv
+ end
+end
+
+if test ! -z $ZO_CMD
+ function $ZO_CMD -d "open target dir"
+ __z -d $argv
+ end
+end
+
+if not set -q Z_EXCLUDE
+ set -U Z_EXCLUDE "^$HOME\$"
+else if contains $HOME $Z_EXCLUDE
+ # Workaround: migrate old default values to a regex (see #90).
+ set Z_EXCLUDE (string replace -r -- "^$HOME\$" '^'$HOME'$$' $Z_EXCLUDE)
+end
+
+# Setup completions once first
+__z_complete
+
+function __z_on_variable_pwd --on-variable PWD
+ __z_add
+end
+
+function __z_uninstall --on-event z_uninstall
+ functions -e __z_on_variable_pwd
+ functions -e $Z_CMD
+ functions -e $ZO_CMD
+
+ if test ! -z "$Z_DATA"
+ printf "To completely erase z's data, remove:\n" >/dev/stderr
+ printf "%s\n" "$Z_DATA" >/dev/stderr
+ end
+
+ set -e Z_CMD
+ set -e ZO_CMD
+ set -e Z_DATA
+ set -e Z_EXCLUDE
+end
diff --git a/dot-config/fish/config.fish b/dot-config/fish/config.fish
new file mode 100644
index 00000000..a34c7b2e
--- /dev/null
+++ b/dot-config/fish/config.fish
@@ -0,0 +1,5 @@
+if ! status is-interactive
+ return
+end
+
+fastfetch
diff --git a/dot-config/fish/fish_plugins b/dot-config/fish/fish_plugins
new file mode 100644
index 00000000..6ff412d7
--- /dev/null
+++ b/dot-config/fish/fish_plugins
@@ -0,0 +1 @@
+/mnt/DATA/personal/Code/projects/z
diff --git a/dot-config/fish/fish_variables b/dot-config/fish/fish_variables
new file mode 100644
index 00000000..b108f2e1
--- /dev/null
+++ b/dot-config/fish/fish_variables
@@ -0,0 +1,48 @@
+# This file contains fish universal variable definitions.
+# VERSION: 3.0
+SETUVAR ZO_CMD:zo
+SETUVAR Z_CMD:z
+SETUVAR Z_DATA:/home/system/\x2elocal/share/z/data
+SETUVAR Z_DATA_DIR:/home/system/\x2elocal/share/z
+SETUVAR Z_EXCLUDE:\x5e/home/system\x24
+SETUVAR __fish_initialized:3800
+SETUVAR _fisher__2F_mnt_2F_44_41_TA_2F_personal_2F_43_ode_2F_projects_2F_z_files:\x7e/\x2econfig/fish/functions/__z\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_add\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_clean\x2efish\x1e\x7e/\x2econfig/fish/functions/__z_complete\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/z\x2efish
+SETUVAR _fisher_plugins:/mnt/DATA/personal/Code/projects/z
+SETUVAR _fisher_upgraded_to_4_4:\x1d
+SETUVAR fish_color_autosuggestion:brblack
+SETUVAR fish_color_cancel:\x2dr
+SETUVAR fish_color_command:normal
+SETUVAR fish_color_comment:red
+SETUVAR fish_color_cwd:green
+SETUVAR fish_color_cwd_root:red
+SETUVAR fish_color_end:green
+SETUVAR fish_color_error:brred
+SETUVAR fish_color_escape:brcyan
+SETUVAR fish_color_history_current:\x2d\x2dbold
+SETUVAR fish_color_host:normal
+SETUVAR fish_color_host_remote:yellow
+SETUVAR fish_color_normal:normal
+SETUVAR fish_color_operator:brcyan
+SETUVAR fish_color_param:cyan
+SETUVAR fish_color_quote:yellow
+SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold
+SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
+SETUVAR fish_color_selection:white\x1e\x2d\x2dbackground\x3dbrblack\x1e\x2d\x2dbold
+SETUVAR fish_color_status:red
+SETUVAR fish_color_user:brgreen
+SETUVAR fish_color_valid_path:\x2d\x2dunderline
+SETUVAR fish_greeting:\x1d
+SETUVAR fish_key_bindings:fish_vi_key_bindings
+SETUVAR fish_pager_color_background:\x1d
+SETUVAR fish_pager_color_completion:normal
+SETUVAR fish_pager_color_description:yellow\x1e\x2di
+SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline
+SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan\x1e\x2d\x2dbold
+SETUVAR fish_pager_color_secondary_background:\x1d
+SETUVAR fish_pager_color_secondary_completion:\x1d
+SETUVAR fish_pager_color_secondary_description:\x1d
+SETUVAR fish_pager_color_secondary_prefix:\x1d
+SETUVAR fish_pager_color_selected_background:\x2dr
+SETUVAR fish_pager_color_selected_completion:\x1d
+SETUVAR fish_pager_color_selected_description:\x1d
+SETUVAR fish_pager_color_selected_prefix:\x1d
diff --git a/dot-config/fish/functions/__z.fish b/dot-config/fish/functions/__z.fish
new file mode 100644
index 00000000..8043f8f3
--- /dev/null
+++ b/dot-config/fish/functions/__z.fish
@@ -0,0 +1,177 @@
+function __z -d "Jump to a recent directory."
+ function __print_help -d "Print z help."
+ printf "Usage: $Z_CMD [-celrth] string1 string2...\n\n"
+ printf " -c --clean Removes directories that no longer exist from $Z_DATA\n"
+ printf " -d --dir Opens matching directory using system file manager.\n"
+ printf " -e --echo Prints best match, no cd\n"
+ printf " -l --list List matches and scores, no cd\n"
+ printf " -p --purge Delete all entries from $Z_DATA\n"
+ printf " -r --rank Search by rank\n"
+ printf " -t --recent Search by recency\n"
+ printf " -x --delete Removes the current directory from $Z_DATA\n"
+ printf " -h --help Print this help\n\n"
+ end
+ function __z_legacy_escape_regex
+ # taken from escape_string_pcre2 in fish
+ # used to provide compatibility with fish 2
+ for c in (string split -- '' $argv)
+ if contains $c (string split '' '.^$*+()?[{}\\|-]')
+ printf \\
+ end
+ printf '%s' $c
+ end
+ end
+
+ set -l options h/help c/clean e/echo l/list p/purge r/rank t/recent d/directory x/delete
+
+ argparse $options -- $argv
+
+ if set -q _flag_help
+ __print_help
+ return 0
+ else if set -q _flag_clean
+ __z_clean
+ printf "%s cleaned!\n" $Z_DATA
+ return 0
+ else if set -q _flag_purge
+ echo >$Z_DATA
+ printf "%s purged!\n" $Z_DATA
+ return 0
+ else if set -q _flag_delete
+ sed -i -e "\:^$PWD|.*:d" $Z_DATA
+ return 0
+ end
+
+ set -l typ
+
+ if set -q _flag_rank
+ set typ rank
+ else if set -q _flag_recent
+ set typ recent
+ end
+
+ set -l z_script '
+ function frecent(rank, time) {
+ dx = t-time
+ if( dx < 3600 ) return rank*4
+ if( dx < 86400 ) return rank*2
+ if( dx < 604800 ) return rank/2
+ return rank/4
+ }
+
+ function output(matches, best_match, common) {
+ # list or return the desired directory
+ if( list ) {
+ cmd = "sort -nr"
+ for( x in matches ) {
+ if( matches[x] ) {
+ printf "%-10s %s\n", matches[x], x | cmd
+ }
+ }
+ } else {
+ if( common ) best_match = common
+ print best_match
+ }
+ }
+
+ function common(matches) {
+ # find the common root of a list of matches, if it exists
+ for( x in matches ) {
+ if( matches[x] && (!short || length(x) < length(short)) ) {
+ short = x
+ }
+ }
+ if( short == "/" ) return
+ for( x in matches ) if( matches[x] && index(x, short) != 1 ) {
+ return
+ }
+ return short
+ }
+
+ BEGIN {
+ hi_rank = ihi_rank = -9999999999
+ }
+ {
+ if( typ == "rank" ) {
+ rank = $2
+ } else if( typ == "recent" ) {
+ rank = $3 - t
+ } else rank = frecent($2, $3)
+ if( $1 ~ q ) {
+ matches[$1] = rank
+ } else if( tolower($1) ~ tolower(q) ) imatches[$1] = rank
+ if( matches[$1] && matches[$1] > hi_rank ) {
+ best_match = $1
+ hi_rank = matches[$1]
+ } else if( imatches[$1] && imatches[$1] > ihi_rank ) {
+ ibest_match = $1
+ ihi_rank = imatches[$1]
+ }
+ }
+
+ END {
+ # prefer case sensitive
+ if( best_match ) {
+ output(matches, best_match, common(matches))
+ } else if( ibest_match ) {
+ output(imatches, ibest_match, common(imatches))
+ }
+ }
+ '
+
+ set -l qs
+ for arg in $argv
+ set -l escaped $arg
+ if string escape --style=regex '' >/dev/null 2>&1 # use builtin escape if available
+ set escaped (string escape --style=regex -- $escaped)
+ else
+ set escaped (__z_legacy_escape_regex $escaped)
+ end
+ # Need to escape twice, see https://www.math.utah.edu/docs/info/gawk_5.html#SEC32
+ set escaped (string replace --all -- \\ \\\\ $escaped)
+ set qs $qs $escaped
+ end
+ set -l q (string join -- '.*' $qs)
+
+ if set -q _flag_list
+ # Handle list separately as it can print common path information to stderr
+ # which cannot be captured from a subcommand.
+ command awk -v t=(date +%s) -v list="list" -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA"
+ return
+ end
+
+ if set -q q[1]
+ set target (command awk -v t=(date +%s) -v typ="$typ" -v q="$q" -F "|" $z_script "$Z_DATA")
+ else
+ set target $HOME
+ end
+ if test "$status" -gt 0
+ return
+ end
+
+ if test -z "$target"
+ printf "'%s' did not match any results\n" "$argv"
+ return 1
+ end
+
+ if set -q _flag_echo
+ printf "%s\n" "$target"
+ else if set -q _flag_directory
+ if test -n "$ZO_METHOD"
+ type -q "$ZO_METHOD"; and "$ZO_METHOD" "$target"; and return $status
+ echo "Cannot open with ZO_METHOD set to $ZO_METHOD"; and return 1
+ else if test "$OS" = Windows_NT
+ # Be careful, in msys2, explorer always return 1
+ type -q explorer; and explorer "$target"
+ return 0
+ echo "Cannot open file explorer"
+ return 1
+ else
+ type -q xdg-open; and xdg-open "$target"; and return $status
+ type -q open; and open "$target"; and return $status
+ echo "Not sure how to open file manager"; and return 1
+ end
+ else
+ pushd "$target"
+ end
+end
diff --git a/dot-config/fish/functions/__z_add.fish b/dot-config/fish/functions/__z_add.fish
new file mode 100644
index 00000000..20d5d7e5
--- /dev/null
+++ b/dot-config/fish/functions/__z_add.fish
@@ -0,0 +1,49 @@
+function __z_add -d "Add PATH to .z file"
+ test -n "$fish_private_mode"; and return 0
+
+ for i in $Z_EXCLUDE
+ if string match -r $i $PWD >/dev/null
+ return 0 #Path excluded
+ end
+ end
+
+ set -l tmpfile (mktemp $Z_DATA.XXXXXX)
+
+ if test -f $tmpfile
+ set -l path (string replace --all \\ \\\\ $PWD)
+ command awk -v path=$path -v now=(date +%s) -F "|" '
+ BEGIN {
+ rank[path] = 1
+ time[path] = now
+ }
+ $2 >= 1 {
+ if( $1 == path ) {
+ rank[$1] = $2 + 1
+ time[$1] = now
+ }
+ else {
+ rank[$1] = $2
+ time[$1] = $3
+ }
+ count += $2
+ }
+ END {
+ if( count > 1000 ) {
+ for( i in rank ) print i "|" 0.9*rank[i] "|" time[i] # aging
+ }
+ else for( i in rank ) print i "|" rank[i] "|" time[i]
+ }
+ ' $Z_DATA 2>/dev/null >$tmpfile
+
+ if test ! -z "$Z_OWNER"
+ chown $Z_OWNER:(id -ng $Z_OWNER) $tmpfile
+ end
+ #
+ # Don't use redirection here as it can lead to a race condition where $Z_DATA is clobbered.
+ # Note: There is a still a possible race condition where an old version of $Z_DATA is
+ # read by one instance of Fish before another instance of Fish writes its copy.
+ #
+ command mv $tmpfile $Z_DATA
+ or command rm $tmpfile
+ end
+end
diff --git a/dot-config/fish/functions/__z_clean.fish b/dot-config/fish/functions/__z_clean.fish
new file mode 100644
index 00000000..ae1721a0
--- /dev/null
+++ b/dot-config/fish/functions/__z_clean.fish
@@ -0,0 +1,11 @@
+function __z_clean -d "Clean up .z file to remove paths no longer valid"
+ set -l tmpfile (mktemp $Z_DATA.XXXXXX)
+
+ if test -f $tmpfile
+ while read line
+ set -l path (string split '|' $line)[1]
+ test -d $path; and echo $line
+ end <$Z_DATA >$tmpfile
+ command mv -f $tmpfile $Z_DATA
+ end
+end
diff --git a/dot-config/fish/functions/__z_complete.fish b/dot-config/fish/functions/__z_complete.fish
new file mode 100644
index 00000000..a6264561
--- /dev/null
+++ b/dot-config/fish/functions/__z_complete.fish
@@ -0,0 +1,13 @@
+function __z_complete -d "add completions"
+ complete -c $Z_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
+ complete -c $ZO_CMD -a "(__z -l | string replace -r '^\\S*\\s*' '')" -f -k
+
+ complete -c $Z_CMD -s c -l clean -d "Cleans out $Z_DATA"
+ complete -c $Z_CMD -s e -l echo -d "Prints best match, no cd"
+ complete -c $Z_CMD -s l -l list -d "List matches, no cd"
+ complete -c $Z_CMD -s p -l purge -d "Purges $Z_DATA"
+ complete -c $Z_CMD -s r -l rank -d "Searches by rank, cd"
+ complete -c $Z_CMD -s t -l recent -d "Searches by recency, cd"
+ complete -c $Z_CMD -s h -l help -d "Print help"
+ complete -c $Z_CMD -s x -l delete -d "Removes the current directory from $Z_DATA"
+end
diff --git a/dot-config/fish/functions/fish_command_not_found.fish b/dot-config/fish/functions/fish_command_not_found.fish
new file mode 100644
index 00000000..63706737
--- /dev/null
+++ b/dot-config/fish/functions/fish_command_not_found.fish
@@ -0,0 +1,59 @@
+function fish_command_not_found --description "Fish: suggest/install AUR pkg when command not found"
+ set -l cmd $argv
+ set -l pkgs
+
+ printf '\033[0;31m\033[1m==> ERROR: Command not found:\033[0m %s\n' "$cmd"
+ printf '\033[0m'
+ printf 'Checking for package.'
+
+ # spinner: print dots until pkgfile finishes
+ set -l spinner_pid
+ fish -c '
+ while true
+ sleep 0.1
+ printf "."
+ end
+ ' &
+ set spinner_pid $last_pid
+
+ # query pkgfile; -b (binaries), -v (verbose) to include repo/pkg paths
+ set -l out (pkgfile -b -v -- "$cmd" ^/dev/null)
+
+ # stop spinner
+ kill $spinner_pid 2>/dev/null
+ echo
+
+ if test -n "$out"
+ # Split lines into array
+ set pkgs $out
+
+ printf 'The application %s is not installed. It may be found in the following AUR packages:\n' "$cmd"
+ for p in $pkgs
+ printf ' %s\n' "$p"
+ end
+
+ # Emulate original logic: take second field after splitting first match by "/"
+ # Example line format often like: "aur/pkgname usr/bin/cmd"
+ set -l first $pkgs[1]
+ set -l parts (string split -m1 ' ' -- $first)[1]
+ set -l repo_pkg (string split '/' -- $parts)
+ set -l pkgname $repo_pkg[2]
+
+ if test -n "$pkgname"
+ printf 'Do you want to Install AUR package %s? (y/N) ' "$pkgname"
+ read -l -n 1 choice
+ echo
+ if test (string lower -- "$choice") = y
+ echo "Executing command: yay -S $pkgname"
+ yay -S "$pkgname" --noconfirm
+ echo
+ return
+ else
+ echo
+ return
+ end
+ end
+ end 1>&2
+
+ return 127
+end
diff --git a/dot-config/fish/functions/fish_mode_prompt.fish b/dot-config/fish/functions/fish_mode_prompt.fish
new file mode 100644
index 00000000..ace718c5
--- /dev/null
+++ b/dot-config/fish/functions/fish_mode_prompt.fish
@@ -0,0 +1,4 @@
+# Vi-mode
+# The default mode prompt would be prefixed, which ruins our alignment.
+function fish_mode_prompt
+end
diff --git a/dot-config/fish/functions/fish_prompt.fish b/dot-config/fish/functions/fish_prompt.fish
new file mode 100644
index 00000000..be2b7e2e
--- /dev/null
+++ b/dot-config/fish/functions/fish_prompt.fish
@@ -0,0 +1,131 @@
+function fish_prompt
+ # This prompt shows:
+ # - green lines if the last return command is OK, red otherwise
+ # - your user name, in red if root or yellow otherwise
+ # - your hostname, in cyan if ssh or blue otherwise
+ # - the current path (with prompt_pwd)
+ # - date +%X
+ # - the current virtual environment, if any
+ # - the current git status, if any, with fish_git_prompt
+ # - the current battery state, if any, and if your power cable is unplugged, and if you have "acpi"
+ # - current background jobs, if any
+
+ # It goes from:
+ # ┬─[nim@Hattori:~]─[11:39:00]
+ # ╰─>$ echo here
+
+ # To:
+ # ┬─[nim@Hattori:~/w/dashboard]─[11:37:14]─[V:django20]─[G:master↑1|●1✚1…1]─[B:85%, 05:41:42 remaining]
+ # │ 2 15054 0% arrêtée sleep 100000
+ # │ 1 15048 0% arrêtée sleep 100000
+ # ╰─>$ echo there
+
+ set -l retc red
+ set -l prompt_status $status
+ test $prompt_status = 0; and set retc green
+
+ set -q __fish_git_prompt_showupstream
+ or set -g __fish_git_prompt_showupstream auto
+
+ function _nim_prompt_wrapper
+ set retc $argv[1]
+ set -l field_name $argv[2]
+ set -l field_value $argv[3]
+
+ set_color normal
+ set_color $retc
+ echo -n '─'
+ set_color -o green
+ echo -n '['
+ set_color normal
+ test -n $field_name
+ and echo -n $field_name:
+ set_color $retc
+ echo -n $field_value
+ set_color -o green
+ echo -n ']'
+ end
+
+ set_color $retc
+ echo -n '┬─'
+ set_color -o green
+ echo -n [
+
+ if functions -q fish_is_root_user; and fish_is_root_user
+ set_color -o red
+ else
+ set_color -o yellow
+ end
+
+ echo -n $USER
+ set_color -o white
+ echo -n @
+
+ if test -z "$SSH_CLIENT"
+ set_color -o blue
+ else
+ set_color -o cyan
+ end
+
+ echo -n (prompt_hostname)
+ set_color -o white
+ echo -n :(prompt_pwd)
+ set_color -o green
+ echo -n ']'
+
+ # Date
+ _nim_prompt_wrapper $retc '' (date +%X)
+
+ if test "$fish_key_bindings" = fish_vi_key_bindings
+ or test "$fish_key_bindings" = fish_hybrid_key_bindings
+ set -l mode
+ switch $fish_bind_mode
+ case default
+ set mode (set_color --bold red)N
+ case insert
+ set mode (set_color --bold green)I
+ case replace_one
+ set mode (set_color --bold green)R
+ echo '[R]'
+ case replace
+ set mode (set_color --bold cyan)R
+ case visual
+ set mode (set_color --bold magenta)V
+ end
+ set mode $mode(set_color normal)
+ _nim_prompt_wrapper $retc '' $mode
+ end
+
+ # Virtual Environment
+ set -q VIRTUAL_ENV_DISABLE_PROMPT
+ or set -g VIRTUAL_ENV_DISABLE_PROMPT true
+ set -q VIRTUAL_ENV
+ and _nim_prompt_wrapper $retc '' (path basename "$VIRTUAL_ENV")
+
+ # git
+ set -l prompt_git (fish_git_prompt '%s')
+ test -n "$prompt_git"
+ and _nim_prompt_wrapper $retc '' $prompt_git
+
+ test ! $prompt_status = 0; and _nim_prompt_wrapper $retc '' (fish_status_to_signal $prompt_status)
+
+ # New line
+ echo
+
+ # Background jobs
+ set_color normal
+
+ for job in (jobs)
+ set_color $retc
+ echo -n '│ '
+ set_color brown
+ echo $job
+ end
+
+ set_color normal
+ set_color $retc
+ echo -n '╰─>'
+ set_color -o red
+ echo -n '$ '
+ set_color normal
+end
diff --git a/dot-config/fish/functions/fish_user_key_bindings.fish b/dot-config/fish/functions/fish_user_key_bindings.fish
new file mode 100644
index 00000000..df44927f
--- /dev/null
+++ b/dot-config/fish/functions/fish_user_key_bindings.fish
@@ -0,0 +1,25 @@
+function fish_user_key_bindings
+ for m in default insert
+ bind -M $m ctrl-f accept-autosuggestion
+ bind -M $m ctrl-backspace backward-kill-word
+ end
+
+ for m in default insert normal
+ bind -M $m alt-up 'commandline -f cancel; cd ..; commandline -f repaint'
+ bind -M $m ctrl-r history-pager
+ end
+
+ bind -M normal U redo
+
+ for m in default insert normal replace replace_one
+ bind --preset --erase -M $m ctrl-h
+ bind -M $m ctrl-h backward-char
+ bind --preset --erase -M $m ctrl-j
+ bind -M $m ctrl-j down-or-search
+ bind --preset --erase -M $m ctrl-k
+ bind -M $m ctrl-k up-or-search
+ # clear overrode
+ bind --preset --erase -M $m ctrl-l
+ bind -M $m ctrl-l forward-char
+ end
+end
diff --git a/dot-config/gtk-3.0/bookmarks b/dot-config/gtk-3.0/bookmarks
index 7d108147..304a906f 100644
--- a/dot-config/gtk-3.0/bookmarks
+++ b/dot-config/gtk-3.0/bookmarks
@@ -5,7 +5,6 @@ file:///home/system/Pictures
file:///home/system/Pictures/Screenshots
file:///home/system/Nextcloud
file:///home/system/Nextcloud/iCloud
-file:///home/system/Code
file:///home/system/Downloads
file:///home/system/iCloud
file:///home/system/.config/minecraft
diff --git a/dot-config/helix/languages.toml b/dot-config/helix/languages.toml
index 1bf54540..3435ec4d 100644
--- a/dot-config/helix/languages.toml
+++ b/dot-config/helix/languages.toml
@@ -29,26 +29,26 @@ args = ["--stdio"]
[[language]]
name = "git-commit"
-language-servers = [ "scls", "gpt", "harper" ]
+language-servers = [ "scls", "harper", "gpt"]
[[language]]
name = "cpp"
auto-format = true
indent = { tab-width = 4, unit = "t" }
-language-servers = [ "scls", "clangd", "gpt", "harper" ]
+language-servers = [ "scls", "clangd", "harper", "gpt" ]
[[language]]
name = "rust"
auto-format = true
indent = { tab-width = 4, unit = "t" }
-language-servers = [ "scls", "rust-analyzer", "gpt", "harper" ]
+language-servers = [ "scls", "rust-analyzer", "harper", "gpt" ]
[language-server.rust-analyzer.config]
check.command = "clippy"
[[language]]
name = "python"
-language-servers = ["ty", "ruff", "jedi-language-server", "pyright", "pylsp", "gpt", "harper" ]
+language-servers = ["ty", "ruff", "jedi-language-server", "pyright", "pylsp", "harper", "gpt" ]
[[language]]
name = "toml"
@@ -57,12 +57,12 @@ auto-format = true
[[language]]
name = "markdown"
-language-servers = [ "marksman", "mdpls", "markdown-oxide", "scls", "gpt", "harper" ]
+language-servers = [ "marksman", "mdpls", "markdown-oxide", "scls", "harper", "gpt" ]
auto-format = true
[[language]]
name = "java"
-language-servers = [ "scls", "jdtls", "harper" ]
+language-servers = [ "scls", "jdtls", "harper", "gpt" ]
auto-format = true
[[language]]
diff --git a/dot-config/hypr/binds.conf b/dot-config/hypr/binds.conf
index 905ddc35..a0a9f252 100644
--- a/dot-config/hypr/binds.conf
+++ b/dot-config/hypr/binds.conf
@@ -71,7 +71,8 @@ bind = ,XF86AudioNext, execr, playerctl position 5+
bindo = ,XF86AudioNext, execr, playerctl -p spotify next
bind = ,XF86AudioPrev, execr, playerctl position 5-
bindo = ,XF86AudioPrev, execr, playerctl -p spotify previous
-bindl = ,XF86AudioPlay, exec, [workspace 7 silent; noinitialfocus] $HOME/scripts/play-pause.sh || LD_PRELOAD=/usr/lib64/spotify-adblock.so spotify
+bindl = ,XF86AudioPlay, exec, [workspace 7 silent; noinitialfocus] playerctl -p spotify play-pause || LD_PRELOAD=/usr/lib64/spotify-adblock.so spotify
+bindol = ,XF86AudioPlay, exec, [workspace 7 silent; noinitialfocus] playerctl --all-players pause || LD_PRELOAD=/usr/lib64/spotify-adblock.so spotify
bind = ,XF86AudioStop, execr, playerctl -p spotify stop
bind = ,XF86PowerOff, execr, $rofiexec/rofi_shutdown
diff --git a/dot-config/hypr/rules.conf b/dot-config/hypr/rules.conf
index 25e01a26..5f614c58 100644
--- a/dot-config/hypr/rules.conf
+++ b/dot-config/hypr/rules.conf
@@ -242,6 +242,9 @@ layerrule = ignorezero, waybar
layerrule = blur, quickshell::bar
layerrule = ignorezero, quickshell::bar
+layerrule = blur, quickshell::CC
+layerrule = ignorezero, quickshell::CC
+layerrule = dimaround, quickshell::CC
layerrule = blur, syshud
layerrule = ignorezero, syshud
diff --git a/dot-config/kitty/open-actions.conf b/dot-config/kitty/open-actions.conf
new file mode 100644
index 00000000..a7c11ae1
--- /dev/null
+++ b/dot-config/kitty/open-actions.conf
@@ -0,0 +1,7 @@
+protocol file
+fragment_matches [0-9]+
+action launch --type=overlay $EDITOR $FILE_PATH:$FRAGMENT
+
+protocol file
+mime image/*
+action launch kitten icat --hold $FILE_PATH
diff --git a/dot-config/spicetify/config-xpui.ini b/dot-config/spicetify/config-xpui.ini
index 61f765aa..5478f97a 100644
--- a/dot-config/spicetify/config-xpui.ini
+++ b/dot-config/spicetify/config-xpui.ini
@@ -29,4 +29,4 @@ expose_apis = 1
; DO NOT CHANGE!
[Backup]
version = 1.2.63.394.g126b0d89
-with = 2.41.0
+with = 2.42.0
diff --git a/dot-config/wallust/templates/colors-kitty.conf b/dot-config/wallust/templates/colors-kitty.conf
index 272d472b..ae97baa6 100644
--- a/dot-config/wallust/templates/colors-kitty.conf
+++ b/dot-config/wallust/templates/colors-kitty.conf
@@ -8,7 +8,7 @@ inactive_border_color {{background}}
bell_border_color {{color1}}
selection_foreground {{foreground}}
-selection_background {{background}}
+selection_background {{color4}}
color0 {{color0}}
color1 {{color1}}
diff --git a/dot-config/wallust/templates/fish-colors.fish b/dot-config/wallust/templates/fish-colors.fish
new file mode 100644
index 00000000..5ecaaf70
--- /dev/null
+++ b/dot-config/wallust/templates/fish-colors.fish
@@ -0,0 +1,55 @@
+# set -U wallpaper "{{wallpaper}}"
+
+set -U background '{{background}}'
+set -U foreground '{{foreground}}'
+set -U cursor '{{cursor}}'
+
+set -U color0 '{{color0}}'
+set -U color1 '{{color1}}'
+set -U color2 '{{color2}}'
+set -U color3 '{{color3}}'
+set -U color4 '{{color4}}'
+set -U color5 '{{color5}}'
+set -U color6 '{{color6}}'
+set -U color7 '{{color7}}'
+set -U color8 '{{color8}}'
+set -U color9 '{{color9}}'
+set -U color10 '{{color10}}'
+set -U color11 '{{color11}}'
+set -U color12 '{{color12}}'
+set -U color13 '{{color13}}'
+set -U color14 '{{color14}}'
+set -U color15 '{{color15}}'
+
+set fish_color_normal normal
+set fish_color_command {{color3.strip}}
+set fish_color_param {{color11.strip}}
+set fish_color_redirection $fish_color_param
+set fish_color_comment {{color2.strip}}
+set fish_color_error ff0000
+set fish_color_escape {{color1.strip}}
+set fish_color_operator $fish_color_escape
+set fish_color_end {{color1.strip}}
+set fish_color_quote {{color2.strip}}
+set fish_color_autosuggestion {{color8.strip}}
+set fish_color_user {{color12.strip}}
+set fish_color_host {{color4.strip}}
+set fish_color_valid_path --underline
+set fish_color_cwd {{color4.strip}}
+set fish_color_cwd_root red
+set fish_color_match --background=brblue
+set fish_color_search_match bryellow --background=brblack
+set fish_color_selection white --bold --background=brblack
+set fish_color_cancel -r
+set fish_pager_color_prefix white --bold --underline
+set fish_pager_color_completion {{color15.strip}} --background={{color0.strip}}
+set fish_pager_color_description $fish_color_quote yellow
+set fish_pager_color_progress {{color6.strip}} --background={{color0.strip}}
+set fish_color_history_current --bold
+
+# FZF colors
+set -gx FZF_DEFAULT_OPTS "
+ $FZF_DEFAULT_OPTS
+ --color fg:7,bg:0,hl:1,fg+:232,bg+:1,hl+:255
+ --color info:7,prompt:2,spinner:1,pointer:232,marker:1
+"
diff --git a/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
index 11507799..d4dbc777 100644
--- a/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
+++ b/dot-config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml
@@ -13,7 +13,7 @@
<property name="last-sort-order" type="string" value="GTK_SORT_DESCENDING"/>
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
<property name="last-details-view-visible-columns" type="string" value="THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE"/>
- <property name="last-details-view-column-widths" type="string" value="50,50,133,127,50,194,50,50,1863,50,50,82,50,92"/>
+ <property name="last-details-view-column-widths" type="string" value="50,50,138,127,50,94,50,50,514,50,50,90,50,552"/>
<property name="misc-status-bar-active-info" type="uint" value="31"/>
<property name="misc-text-beside-icons" type="bool" value="false"/>
<property name="misc-folders-first" type="bool" value="false"/>
@@ -22,4 +22,5 @@
<property name="misc-show-delete-action" type="bool" value="true"/>
<property name="last-restore-tabs" type="bool" value="false"/>
<property name="misc-full-path-in-tab-title" type="bool" value="true"/>
+ <property name="last-menubar-visible" type="bool" value="true"/>
</channel>
diff --git a/dot-gitconfig b/dot-gitconfig
index 88e1be6b..86c0d5aa 100644
--- a/dot-gitconfig
+++ b/dot-gitconfig
@@ -31,3 +31,5 @@
autosquash = true
[core]
sshCommand = ssh -p 222
+[merge]
+ ff = false
diff --git a/dot-hyperhdr/db/backup_20250929_205900949.json b/dot-hyperhdr/db/backup_20250929_205900949.json
new file mode 100644
index 00000000..345b88d6
--- /dev/null
+++ b/dot-hyperhdr/db/backup_20250929_205900949.json
@@ -0,0 +1 @@
+{"instances":[{"enabled":1,"friendly_name":"First LED instance","instance":0}],"settings":[{"config":"{\"enable\":false}","type":"automaticToneMapping"},{"config":"{\"color\":[255,138,0],\"effect\":\"Cinema brighten lights\",\"enable\":false,\"type\":\"effect\"}","hyperhdr_instance":0,"type":"backgroundEffect"},{"config":"{\"blurRemoveCnt\":1,\"borderFrameCnt\":50,\"enable\":false,\"maxInconsistentCnt\":10,\"mode\":\"default\",\"threshold\":5,\"unknownFrameCnt\":600}","hyperhdr_instance":0,"type":"blackborderdetector"},{"config":"{\"channelAdjustment\":[{\"backlightColored\":true,\"backlightThreshold\":1,\"blue\":[0,0,255],\"brightness\":100,\"brightnessCompensation\":0,\"classic_config\":false,\"cyan\":[0,255,255],\"gammaBlue\":2.25,\"gammaGreen\":1.5,\"gammaRed\":1.5,\"green\":[0,255,0],\"id\":\"default\",\"leds\":\"*\",\"magenta\":[255,0,255],\"red\":[255,0,0],\"white\":[255,255,255],\"yellow\":[255,255,0]}],\"imageToLedMappingType\":\"weighted\",\"sparse_processing\":false}","hyperhdr_instance":0,"type":"color"},{"config":"{\"colorOrder\":\"rgb\",\"delayAfterConnect\":250,\"output\":\"auto\",\"rate\":115200,\"refreshTime\":20,\"type\":\"skydimo\"}","hyperhdr_instance":0,"type":"device"},{"config":"{\"disable\":[\"\"],\"paths\":[\"$ROOT/custom-effects\"]}","hyperhdr_instance":0,"type":"effects"},{"config":"{\"enable\":true,\"hdrToneMapping\":false,\"port\":19400,\"quarterOfFrameMode\":false,\"timeout\":5}","type":"flatbufServer"},{"config":"{\"color\":[255,0,0],\"duration_ms\":3000,\"effect\":\"Rainbow swirl fast\",\"enable\":false,\"type\":\"effect\"}","hyperhdr_instance":0,"type":"foregroundEffect"},{"config":"{\"enable\":false,\"flat\":[\"remote_ip:19400\"],\"json\":[]}","type":"forwarder"},{"config":"{\"disableLedsStartup\":false,\"disableOnLocked\":false,\"name\":\"My HyperHDR Config\",\"showOptHelp\":true,\"version\":4}","type":"general"},{"config":"{\"port\":19444}","type":"jsonServer"},{"config":"{\"classic\":{\"bottom\":31,\"edgegap\":0,\"glength\":0,\"gpos\":0,\"groupX\":0,\"groupY\":0,\"hdepth\":8,\"left\":17,\"overlap\":0,\"pblh\":0,\"pblv\":100,\"pbrh\":100,\"pbrv\":100,\"position\":46,\"ptlh\":0,\"ptlv\":0,\"ptrh\":100,\"ptrv\":0,\"reverse\":true,\"right\":17,\"top\":31,\"vdepth\":5},\"matrix\":{\"cabling\":\"snake\",\"ledshoriz\":1,\"ledsvert\":1,\"start\":\"top-left\"}}","hyperhdr_instance":0,"type":"ledConfig"},{"config":"[{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.8824,\"vmin\":0.8235},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.8235,\"vmin\":0.7647},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.7647,\"vmin\":0.7059},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.7059,\"vmin\":0.6471},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.6471,\"vmin\":0.5882},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.5882,\"vmin\":0.5294},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.5294,\"vmin\":0.4706},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.4706,\"vmin\":0.4118},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.4118,\"vmin\":0.3529},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.3529,\"vmin\":0.2941},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.2941,\"vmin\":0.2353},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.2353,\"vmin\":0.1765},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.1765,\"vmin\":0.1176},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.1176,\"vmin\":0.0588},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.0588,\"vmin\":0},{\"group\":0,\"hmax\":1,\"hmin\":0.9677,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.9677,\"hmin\":0.9355,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.9355,\"hmin\":0.9032,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.9032,\"hmin\":0.871,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.871,\"hmin\":0.8387,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.8387,\"hmin\":0.8065,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.8065,\"hmin\":0.7742,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.7742,\"hmin\":0.7419,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.7419,\"hmin\":0.7097,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.7097,\"hmin\":0.6774,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.6774,\"hmin\":0.6452,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.6452,\"hmin\":0.6129,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.6129,\"hmin\":0.5806,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.5806,\"hmin\":0.5484,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.5484,\"hmin\":0.5161,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.5161,\"hmin\":0.4839,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.4839,\"hmin\":0.4516,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.4516,\"hmin\":0.4194,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.4194,\"hmin\":0.3871,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.3871,\"hmin\":0.3548,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.3548,\"hmin\":0.3226,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.3226,\"hmin\":0.2903,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.2903,\"hmin\":0.2581,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.2581,\"hmin\":0.2258,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.2258,\"hmin\":0.1935,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.1935,\"hmin\":0.1613,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.1613,\"hmin\":0.129,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.129,\"hmin\":0.0968,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.0968,\"hmin\":0.0645,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.0645,\"hmin\":0.0323,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.0323,\"hmin\":0,\"vmax\":0.08,\"vmin\":0},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.0588,\"vmin\":0},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.1176,\"vmin\":0.0588},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.1765,\"vmin\":0.1176},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.2353,\"vmin\":0.1765},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.2941,\"vmin\":0.2353},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.3529,\"vmin\":0.2941},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.4118,\"vmin\":0.3529},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.4706,\"vmin\":0.4118},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.5294,\"vmin\":0.4706},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.5882,\"vmin\":0.5294},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.6471,\"vmin\":0.5882},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.7059,\"vmin\":0.6471},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.7647,\"vmin\":0.7059},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.8235,\"vmin\":0.7647},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.8824,\"vmin\":0.8235},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":0.9412,\"vmin\":0.8824},{\"group\":0,\"hmax\":0.05,\"hmin\":0,\"vmax\":1,\"vmin\":0.9412},{\"group\":0,\"hmax\":0.0323,\"hmin\":0,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.0645,\"hmin\":0.0323,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.0968,\"hmin\":0.0645,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.129,\"hmin\":0.0968,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.1613,\"hmin\":0.129,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.1935,\"hmin\":0.1613,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.2258,\"hmin\":0.1935,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.2581,\"hmin\":0.2258,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.2903,\"hmin\":0.2581,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.3226,\"hmin\":0.2903,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.3548,\"hmin\":0.3226,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.3871,\"hmin\":0.3548,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.4194,\"hmin\":0.3871,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.4516,\"hmin\":0.4194,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.4839,\"hmin\":0.4516,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.5161,\"hmin\":0.4839,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.5484,\"hmin\":0.5161,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.5806,\"hmin\":0.5484,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.6129,\"hmin\":0.5806,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.6452,\"hmin\":0.6129,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.6774,\"hmin\":0.6452,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.7097,\"hmin\":0.6774,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.7419,\"hmin\":0.7097,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.7742,\"hmin\":0.7419,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.8065,\"hmin\":0.7742,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.8387,\"hmin\":0.8065,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.871,\"hmin\":0.8387,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.9032,\"hmin\":0.871,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.9355,\"hmin\":0.9032,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":0.9677,\"hmin\":0.9355,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":1,\"hmin\":0.9677,\"vmax\":1,\"vmin\":0.92},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":1,\"vmin\":0.9412},{\"group\":0,\"hmax\":1,\"hmin\":0.95,\"vmax\":0.9412,\"vmin\":0.8824}]","hyperhdr_instance":0,"type":"leds"},{"config":"{\"level\":\"debug\"}","type":"logger"},{"config":"{\"custom_topic\":\"\",\"disableApiAccess\":false,\"enable\":false,\"host\":\"\",\"ignore_ssl_errors\":true,\"is_ssl\":false,\"maxRetry\":0,\"password\":\"\",\"port\":1883,\"username\":\"\"}","type":"mqtt"},{"config":"{\"apiAuth\":true,\"internetAccessAPI\":false,\"ipWhitelist\":[],\"localAdminAuth\":true,\"localApiAuth\":false,\"restirctedInternetAccessAPI\":false}","type":"network"},{"config":"{\"enable\":false,\"port\":19445,\"timeout\":5}","type":"protoServer"},{"config":"{\"enable\":false,\"port\":5568,\"priority\":109}","hyperhdr_instance":0,"type":"rawUdpServer"},{"config":"{\"continuousOutput\":false,\"enable\":true,\"lowLightAntiFlickeringTimeout\":250,\"lowLightAntiFlickeringTreshold\":32,\"lowLightAntiFlickeringValue\":2,\"time_ms\":150,\"type\":\"alternative\",\"updateFrequency\":50}","hyperhdr_instance":0,"type":"smoothing"},{"config":"{\"device\":\"default\",\"enable\":false,\"enable_smoothing\":true}","type":"soundEffect"},{"config":"{\"cecControl\":false,\"systemInstanceEnable\":true,\"systemInstancePriority\":245}","hyperhdr_instance":0,"type":"systemControl"},{"config":"{\"cropBottom\":0,\"cropLeft\":0,\"cropRight\":0,\"cropTop\":0,\"device\":\"auto\",\"fps\":60,\"hardware\":true,\"hdrToneMapping\":false,\"monitor_nits\":200,\"reorder_displays\":0,\"signalDetection\":false,\"videoMode\":512}","type":"systemGrabber"},{"config":"{\"cecControl\":false,\"videoInstanceEnable\":true,\"videoInstancePriority\":240}","hyperhdr_instance":0,"type":"videoControl"},{"config":"{\"calibration_hdr\":[{\"color\":[255,255,174],\"x\":160,\"y\":108},{\"color\":[255,255,214],\"x\":320,\"y\":108},{\"color\":[0,0,0],\"x\":640,\"y\":108},{\"color\":[0,0,0],\"x\":800,\"y\":108},{\"color\":[0,0,0],\"x\":1120,\"y\":108},{\"color\":[0,0,0],\"x\":1280,\"y\":108},{\"color\":[0,0,0],\"x\":1600,\"y\":108},{\"color\":[1,2,2],\"x\":1760,\"y\":108},{\"color\":[1,2,2],\"x\":2080,\"y\":108},{\"color\":[1,2,2],\"x\":2240,\"y\":108},{\"color\":[0,0,0],\"x\":2560,\"y\":108},{\"color\":[0,0,0],\"x\":2720,\"y\":108},{\"color\":[0,0,0],\"x\":3040,\"y\":108},{\"color\":[0,0,0],\"x\":3200,\"y\":108},{\"color\":[0,0,0],\"x\":3520,\"y\":108},{\"color\":[0,0,0],\"x\":3680,\"y\":108},{\"color\":[255,255,201],\"x\":160,\"y\":324},{\"color\":[255,255,255],\"x\":320,\"y\":324},{\"color\":[0,0,0],\"x\":640,\"y\":324},{\"color\":[0,0,0],\"x\":800,\"y\":324},{\"color\":[0,0,0],\"x\":1120,\"y\":324},{\"color\":[9,6,4],\"x\":1280,\"y\":324},{\"color\":[0,0,0],\"x\":1600,\"y\":324},{\"color\":[1,2,2],\"x\":1760,\"y\":324},{\"color\":[1,2,2],\"x\":2080,\"y\":324},{\"color\":[255,255,255],\"x\":2240,\"y\":324},{\"color\":[0,0,0],\"x\":2560,\"y\":324},{\"color\":[0,0,0],\"x\":2720,\"y\":324},{\"color\":[0,0,0],\"x\":3040,\"y\":324},{\"color\":[0,0,0],\"x\":3200,\"y\":324},{\"color\":[0,0,0],\"x\":3520,\"y\":324},{\"color\":[0,0,0],\"x\":3680,\"y\":324},{\"color\":[255,255,255],\"x\":160,\"y\":540},{\"color\":[192,133,72],\"x\":320,\"y\":540},{\"color\":[0,0,0],\"x\":640,\"y\":540},{\"color\":[0,0,0],\"x\":800,\"y\":540},{\"color\":[0,0,0],\"x\":1120,\"y\":540},{\"color\":[0,0,0],\"x\":1280,\"y\":540},{\"color\":[0,0,0],\"x\":1600,\"y\":540},{\"color\":[0,1,1],\"x\":1760,\"y\":540},{\"color\":[0,1,1],\"x\":2080,\"y\":540},{\"color\":[0,1,1],\"x\":2240,\"y\":540},{\"color\":[0,0,0],\"x\":2560,\"y\":540},{\"color\":[0,0,0],\"x\":2720,\"y\":540},{\"color\":[0,0,0],\"x\":3040,\"y\":540},{\"color\":[0,0,0],\"x\":3200,\"y\":540},{\"color\":[0,0,0],\"x\":3520,\"y\":540},{\"color\":[0,0,0],\"x\":3680,\"y\":540},{\"color\":[3,3,0],\"x\":160,\"y\":756},{\"color\":[2,3,0],\"x\":320,\"y\":756},{\"color\":[0,0,0],\"x\":640,\"y\":756},{\"color\":[0,0,0],\"x\":800,\"y\":756},{\"color\":[0,0,0],\"x\":1120,\"y\":756},{\"color\":[9,6,4],\"x\":1280,\"y\":756},{\"color\":[0,0,0],\"x\":1600,\"y\":756},{\"color\":[0,0,0],\"x\":1760,\"y\":756},{\"color\":[0,0,0],\"x\":2080,\"y\":756},{\"color\":[6,5,4],\"x\":2240,\"y\":756},{\"color\":[0,0,0],\"x\":2560,\"y\":756},{\"color\":[0,0,0],\"x\":2720,\"y\":756},{\"color\":[0,0,0],\"x\":3040,\"y\":756},{\"color\":[0,0,0],\"x\":3200,\"y\":756},{\"color\":[0,0,0],\"x\":3520,\"y\":756},{\"color\":[0,0,0],\"x\":3680,\"y\":756},{\"color\":[3,3,0],\"x\":160,\"y\":972},{\"color\":[2,2,0],\"x\":320,\"y\":972},{\"color\":[0,0,0],\"x\":640,\"y\":972},{\"color\":[0,0,0],\"x\":800,\"y\":972},{\"color\":[0,0,0],\"x\":1120,\"y\":972},{\"color\":[9,6,4],\"x\":1280,\"y\":972},{\"color\":[0,0,0],\"x\":1600,\"y\":972},{\"color\":[0,0,0],\"x\":1760,\"y\":972},{\"color\":[0,0,0],\"x\":2080,\"y\":972},{\"color\":[6,5,4],\"x\":2240,\"y\":972},{\"color\":[0,0,0],\"x\":2560,\"y\":972},{\"color\":[0,0,0],\"x\":2720,\"y\":972},{\"color\":[0,0,0],\"x\":3040,\"y\":972},{\"color\":[0,0,0],\"x\":3200,\"y\":972},{\"color\":[0,0,0],\"x\":3520,\"y\":972},{\"color\":[0,0,0],\"x\":3680,\"y\":972},{\"color\":[3,5,0],\"x\":160,\"y\":1188},{\"color\":[3,3,0],\"x\":320,\"y\":1188},{\"color\":[0,0,0],\"x\":640,\"y\":1188},{\"color\":[0,0,0],\"x\":800,\"y\":1188},{\"color\":[0,0,0],\"x\":1120,\"y\":1188},{\"color\":[0,0,0],\"x\":1280,\"y\":1188},{\"color\":[0,0,0],\"x\":1600,\"y\":1188},{\"color\":[0,0,0],\"x\":1760,\"y\":1188},{\"color\":[0,0,0],\"x\":2080,\"y\":1188},{\"color\":[0,0,0],\"x\":2240,\"y\":1188},{\"color\":[0,0,0],\"x\":2560,\"y\":1188},{\"color\":[0,0,0],\"x\":2720,\"y\":1188},{\"color\":[0,0,0],\"x\":3040,\"y\":1188},{\"color\":[0,0,0],\"x\":3200,\"y\":1188},{\"color\":[0,0,0],\"x\":3520,\"y\":1188},{\"color\":[0,0,0],\"x\":3680,\"y\":1188},{\"color\":[2,9,0],\"x\":160,\"y\":1404},{\"color\":[2,9,0],\"x\":320,\"y\":1404},{\"color\":[0,0,0],\"x\":640,\"y\":1404},{\"color\":[0,0,0],\"x\":800,\"y\":1404},{\"color\":[0,0,0],\"x\":1120,\"y\":1404},{\"color\":[9,6,4],\"x\":1280,\"y\":1404},{\"color\":[0,0,0],\"x\":1600,\"y\":1404},{\"color\":[0,0,0],\"x\":1760,\"y\":1404},{\"color\":[0,0,0],\"x\":2080,\"y\":1404},{\"color\":[6,5,4],\"x\":2240,\"y\":1404},{\"color\":[0,0,0],\"x\":2560,\"y\":1404},{\"color\":[0,0,0],\"x\":2720,\"y\":1404},{\"color\":[0,0,0],\"x\":3040,\"y\":1404},{\"color\":[0,0,0],\"x\":3200,\"y\":1404},{\"color\":[0,0,0],\"x\":3520,\"y\":1404},{\"color\":[0,0,0],\"x\":3680,\"y\":1404},{\"color\":[2,11,0],\"x\":160,\"y\":1620},{\"color\":[0,10,0],\"x\":320,\"y\":1620},{\"color\":[0,0,0],\"x\":640,\"y\":1620},{\"color\":[0,0,0],\"x\":800,\"y\":1620},{\"color\":[0,0,0],\"x\":1120,\"y\":1620},{\"color\":[0,0,0],\"x\":1280,\"y\":1620},{\"color\":[0,0,0],\"x\":1600,\"y\":1620},{\"color\":[0,0,0],\"x\":1760,\"y\":1620},{\"color\":[0,0,0],\"x\":2080,\"y\":1620},{\"color\":[0,0,0],\"x\":2240,\"y\":1620},{\"color\":[0,0,0],\"x\":2560,\"y\":1620},{\"color\":[0,0,0],\"x\":2720,\"y\":1620},{\"color\":[0,0,0],\"x\":3040,\"y\":1620},{\"color\":[0,0,0],\"x\":3200,\"y\":1620},{\"color\":[0,0,0],\"x\":3520,\"y\":1620},{\"color\":[0,0,0],\"x\":3680,\"y\":1620},{\"color\":[0,7,0],\"x\":160,\"y\":1836},{\"color\":[0,13,0],\"x\":320,\"y\":1836},{\"color\":[0,0,0],\"x\":640,\"y\":1836},{\"color\":[0,0,0],\"x\":800,\"y\":1836},{\"color\":[0,0,0],\"x\":1120,\"y\":1836},{\"color\":[0,0,0],\"x\":1280,\"y\":1836},{\"color\":[0,0,0],\"x\":1600,\"y\":1836},{\"color\":[0,0,0],\"x\":1760,\"y\":1836},{\"color\":[0,0,0],\"x\":2080,\"y\":1836},{\"color\":[0,0,0],\"x\":2240,\"y\":1836},{\"color\":[0,0,0],\"x\":2560,\"y\":1836},{\"color\":[0,0,0],\"x\":2720,\"y\":1836},{\"color\":[0,0,0],\"x\":3040,\"y\":1836},{\"color\":[0,0,0],\"x\":3200,\"y\":1836},{\"color\":[0,0,0],\"x\":3520,\"y\":1836},{\"color\":[0,0,0],\"x\":3680,\"y\":1836},{\"color\":[0,11,0],\"x\":160,\"y\":2052},{\"color\":[0,13,0],\"x\":320,\"y\":2052},{\"color\":[0,0,0],\"x\":640,\"y\":2052},{\"color\":[0,0,0],\"x\":800,\"y\":2052},{\"color\":[0,0,0],\"x\":1120,\"y\":2052},{\"color\":[5,3,2],\"x\":1280,\"y\":2052},{\"color\":[0,0,0],\"x\":1600,\"y\":2052},{\"color\":[0,0,0],\"x\":1760,\"y\":2052},{\"color\":[0,0,0],\"x\":2080,\"y\":2052},{\"color\":[2,2,2],\"x\":2240,\"y\":2052},{\"color\":[0,0,0],\"x\":2560,\"y\":2052},{\"color\":[0,0,0],\"x\":2720,\"y\":2052},{\"color\":[0,0,0],\"x\":3040,\"y\":2052},{\"color\":[0,0,0],\"x\":3200,\"y\":2052},{\"color\":[0,0,0],\"x\":3520,\"y\":2052},{\"color\":[0,0,0],\"x\":3680,\"y\":2052},{\"color\":[0,0,0],\"x\":1040,\"y\":1050},{\"color\":[0,0,0],\"x\":1120,\"y\":1050},{\"color\":[0,0,0],\"x\":1200,\"y\":1050},{\"color\":[9,6,4],\"x\":1280,\"y\":1050},{\"color\":[0,0,0],\"x\":1360,\"y\":1050},{\"color\":[0,0,0],\"x\":1520,\"y\":1050},{\"color\":[0,0,0],\"x\":1600,\"y\":1050},{\"color\":[0,0,0],\"x\":1680,\"y\":1050},{\"color\":[0,0,0],\"x\":1760,\"y\":1050},{\"color\":[0,0,0],\"x\":1840,\"y\":1050},{\"color\":[0,0,0],\"x\":2000,\"y\":1050},{\"color\":[0,0,0],\"x\":2080,\"y\":1050},{\"color\":[6,12,16],\"x\":2160,\"y\":1050},{\"color\":[6,5,4],\"x\":2240,\"y\":1050},{\"color\":[0,0,0],\"x\":2320,\"y\":1050},{\"color\":[0,0,0],\"x\":2480,\"y\":1050},{\"color\":[0,0,0],\"x\":2560,\"y\":1050},{\"color\":[0,0,0],\"x\":2640,\"y\":1050},{\"color\":[60,60,60],\"x\":1000,\"y\":1063},{\"color\":[0,0,0],\"x\":1080,\"y\":1063},{\"color\":[0,0,0],\"x\":1160,\"y\":1063},{\"color\":[0,0,0],\"x\":1240,\"y\":1063},{\"color\":[0,0,0],\"x\":1320,\"y\":1063},{\"color\":[0,0,0],\"x\":1480,\"y\":1063},{\"color\":[0,0,0],\"x\":1560,\"y\":1063},{\"color\":[0,0,0],\"x\":1640,\"y\":1063},{\"color\":[0,0,0],\"x\":1720,\"y\":1063},{\"color\":[0,0,0],\"x\":1800,\"y\":1063},{\"color\":[0,0,0],\"x\":1960,\"y\":1063},{\"color\":[0,0,0],\"x\":2040,\"y\":1063},{\"color\":[0,0,0],\"x\":2120,\"y\":1063},{\"color\":[6,12,16],\"x\":2200,\"y\":1063},{\"color\":[0,0,0],\"x\":2280,\"y\":1063},{\"color\":[0,0,0],\"x\":2440,\"y\":1063},{\"color\":[0,0,0],\"x\":2520,\"y\":1063},{\"color\":[0,0,0],\"x\":2600,\"y\":1063},{\"color\":[0,0,0],\"x\":1040,\"y\":1076},{\"color\":[0,0,0],\"x\":1120,\"y\":1076},{\"color\":[0,0,0],\"x\":1200,\"y\":1076},{\"color\":[9,6,4],\"x\":1280,\"y\":1076},{\"color\":[0,0,0],\"x\":1360,\"y\":1076},{\"color\":[0,0,0],\"x\":1520,\"y\":1076},{\"color\":[0,0,0],\"x\":1600,\"y\":1076},{\"color\":[0,0,0],\"x\":1680,\"y\":1076},{\"color\":[0,0,0],\"x\":1760,\"y\":1076},{\"color\":[0,0,0],\"x\":1840,\"y\":1076},{\"color\":[0,0,0],\"x\":2000,\"y\":1076},{\"color\":[0,0,0],\"x\":2080,\"y\":1076},{\"color\":[6,12,16],\"x\":2160,\"y\":1076},{\"color\":[6,5,4],\"x\":2240,\"y\":1076},{\"color\":[0,0,0],\"x\":2320,\"y\":1076},{\"color\":[0,0,0],\"x\":2480,\"y\":1076},{\"color\":[0,0,0],\"x\":2560,\"y\":1076},{\"color\":[0,0,0],\"x\":2640,\"y\":1076},{\"color\":[0,0,0],\"x\":1000,\"y\":1089},{\"color\":[0,0,0],\"x\":1080,\"y\":1089},{\"color\":[0,0,0],\"x\":1160,\"y\":1089},{\"color\":[0,0,0],\"x\":1240,\"y\":1089},{\"color\":[0,0,0],\"x\":1320,\"y\":1089},{\"color\":[0,0,0],\"x\":1480,\"y\":1089},{\"color\":[0,0,0],\"x\":1560,\"y\":1089},{\"color\":[0,0,0],\"x\":1640,\"y\":1089},{\"color\":[0,0,0],\"x\":1720,\"y\":1089},{\"color\":[0,0,0],\"x\":1800,\"y\":1089},{\"color\":[0,0,0],\"x\":1960,\"y\":1089},{\"color\":[0,0,0],\"x\":2040,\"y\":1089},{\"color\":[0,0,0],\"x\":2120,\"y\":1089},{\"color\":[6,12,16],\"x\":2200,\"y\":1089},{\"color\":[0,0,0],\"x\":2280,\"y\":1089},{\"color\":[0,0,0],\"x\":2440,\"y\":1089},{\"color\":[0,0,0],\"x\":2520,\"y\":1089},{\"color\":[0,0,0],\"x\":2600,\"y\":1089},{\"color\":[0,0,0],\"x\":1040,\"y\":1102},{\"color\":[0,0,0],\"x\":1120,\"y\":1102},{\"color\":[0,0,0],\"x\":1200,\"y\":1102},{\"color\":[0,0,0],\"x\":1280,\"y\":1102},{\"color\":[0,0,0],\"x\":1360,\"y\":1102},{\"color\":[0,0,0],\"x\":1520,\"y\":1102},{\"color\":[0,0,0],\"x\":1600,\"y\":1102},{\"color\":[0,0,0],\"x\":1680,\"y\":1102},{\"color\":[0,0,0],\"x\":1760,\"y\":1102},{\"color\":[0,0,0],\"x\":1840,\"y\":1102},{\"color\":[0,0,0],\"x\":2000,\"y\":1102},{\"color\":[0,0,0],\"x\":2080,\"y\":1102},{\"color\":[0,0,0],\"x\":2160,\"y\":1102},{\"color\":[0,0,0],\"x\":2240,\"y\":1102},{\"color\":[0,0,0],\"x\":2320,\"y\":1102},{\"color\":[0,0,0],\"x\":2480,\"y\":1102},{\"color\":[0,0,0],\"x\":2560,\"y\":1102},{\"color\":[0,0,0],\"x\":2640,\"y\":1102},{\"color\":[0,0,0],\"x\":1000,\"y\":1115},{\"color\":[0,0,0],\"x\":1080,\"y\":1115},{\"color\":[0,0,0],\"x\":1160,\"y\":1115},{\"color\":[0,0,0],\"x\":1240,\"y\":1115},{\"color\":[0,0,0],\"x\":1320,\"y\":1115},{\"color\":[0,0,0],\"x\":1480,\"y\":1115},{\"color\":[0,0,0],\"x\":1560,\"y\":1115},{\"color\":[0,0,0],\"x\":1640,\"y\":1115},{\"color\":[0,0,0],\"x\":1720,\"y\":1115},{\"color\":[0,0,0],\"x\":1800,\"y\":1115},{\"color\":[0,0,0],\"x\":1960,\"y\":1115},{\"color\":[0,0,0],\"x\":2040,\"y\":1115},{\"color\":[0,0,0],\"x\":2120,\"y\":1115},{\"color\":[0,0,0],\"x\":2200,\"y\":1115},{\"color\":[0,0,0],\"x\":2280,\"y\":1115},{\"color\":[0,0,0],\"x\":2440,\"y\":1115},{\"color\":[0,0,0],\"x\":2520,\"y\":1115},{\"color\":[0,0,0],\"x\":2600,\"y\":1115},{\"color\":[0,0,0],\"x\":1040,\"y\":1128},{\"color\":[0,0,0],\"x\":1120,\"y\":1128},{\"color\":[0,0,0],\"x\":1200,\"y\":1128},{\"color\":[9,6,4],\"x\":1280,\"y\":1128},{\"color\":[0,0,0],\"x\":1360,\"y\":1128},{\"color\":[0,0,0],\"x\":1520,\"y\":1128},{\"color\":[0,0,0],\"x\":1600,\"y\":1128},{\"color\":[0,0,0],\"x\":1680,\"y\":1128},{\"color\":[0,0,0],\"x\":1760,\"y\":1128},{\"color\":[0,0,0],\"x\":1840,\"y\":1128},{\"color\":[0,0,0],\"x\":2000,\"y\":1128},{\"color\":[0,0,0],\"x\":2080,\"y\":1128},{\"color\":[6,12,16],\"x\":2160,\"y\":1128},{\"color\":[6,5,4],\"x\":2240,\"y\":1128},{\"color\":[0,0,0],\"x\":2320,\"y\":1128},{\"color\":[0,0,0],\"x\":2480,\"y\":1128},{\"color\":[0,0,0],\"x\":2560,\"y\":1128},{\"color\":[0,0,0],\"x\":2640,\"y\":1128},{\"color\":[51,51,51],\"x\":1000,\"y\":1141},{\"color\":[0,0,0],\"x\":1080,\"y\":1141},{\"color\":[0,0,0],\"x\":1160,\"y\":1141},{\"color\":[0,0,0],\"x\":1240,\"y\":1141},{\"color\":[0,0,0],\"x\":1320,\"y\":1141},{\"color\":[0,0,0],\"x\":1480,\"y\":1141},{\"color\":[0,0,0],\"x\":1560,\"y\":1141},{\"color\":[0,0,0],\"x\":1640,\"y\":1141},{\"color\":[0,0,0],\"x\":1720,\"y\":1141},{\"color\":[0,0,0],\"x\":1800,\"y\":1141},{\"color\":[0,0,0],\"x\":1960,\"y\":1141},{\"color\":[0,0,0],\"x\":2040,\"y\":1141},{\"color\":[0,0,0],\"x\":2120,\"y\":1141},{\"color\":[6,12,16],\"x\":2200,\"y\":1141},{\"color\":[0,0,0],\"x\":2280,\"y\":1141},{\"color\":[0,0,0],\"x\":2440,\"y\":1141},{\"color\":[0,0,0],\"x\":2520,\"y\":1141},{\"color\":[0,0,0],\"x\":2600,\"y\":1141}],\"calibration_sdr\":[{\"color\":[180,164,135],\"x\":160,\"y\":108},{\"color\":[193,180,148],\"x\":320,\"y\":108},{\"color\":[5,8,7],\"x\":640,\"y\":108},{\"color\":[3,5,7],\"x\":800,\"y\":108},{\"color\":[3,5,7],\"x\":1120,\"y\":108},{\"color\":[3,5,7],\"x\":1280,\"y\":108},{\"color\":[3,5,7],\"x\":1600,\"y\":108},{\"color\":[15,17,18],\"x\":1760,\"y\":108},{\"color\":[15,17,18],\"x\":2080,\"y\":108},{\"color\":[15,17,18],\"x\":2240,\"y\":108},{\"color\":[0,0,0],\"x\":2560,\"y\":108},{\"color\":[0,0,0],\"x\":2720,\"y\":108},{\"color\":[0,0,0],\"x\":3040,\"y\":108},{\"color\":[0,0,0],\"x\":3200,\"y\":108},{\"color\":[0,0,0],\"x\":3520,\"y\":108},{\"color\":[0,0,0],\"x\":3680,\"y\":108},{\"color\":[193,181,146],\"x\":160,\"y\":324},{\"color\":[206,193,161],\"x\":320,\"y\":324},{\"color\":[5,8,7],\"x\":640,\"y\":324},{\"color\":[0,0,0],\"x\":800,\"y\":324},{\"color\":[0,0,0],\"x\":1120,\"y\":324},{\"color\":[31,29,25],\"x\":1280,\"y\":324},{\"color\":[0,0,0],\"x\":1600,\"y\":324},{\"color\":[15,17,18],\"x\":1760,\"y\":324},{\"color\":[15,17,18],\"x\":2080,\"y\":324},{\"color\":[251,249,245],\"x\":2240,\"y\":324},{\"color\":[5,8,7],\"x\":2560,\"y\":324},{\"color\":[5,8,7],\"x\":2720,\"y\":324},{\"color\":[5,8,7],\"x\":3040,\"y\":324},{\"color\":[5,8,7],\"x\":3200,\"y\":324},{\"color\":[5,8,7],\"x\":3520,\"y\":324},{\"color\":[5,8,7],\"x\":3680,\"y\":324},{\"color\":[186,183,173],\"x\":160,\"y\":540},{\"color\":[126,117,90],\"x\":320,\"y\":540},{\"color\":[5,8,7],\"x\":640,\"y\":540},{\"color\":[0,0,0],\"x\":800,\"y\":540},{\"color\":[0,0,0],\"x\":1120,\"y\":540},{\"color\":[0,0,0],\"x\":1280,\"y\":540},{\"color\":[0,0,0],\"x\":1600,\"y\":540},{\"color\":[10,12,14],\"x\":1760,\"y\":540},{\"color\":[10,12,14],\"x\":2080,\"y\":540},{\"color\":[10,12,14],\"x\":2240,\"y\":540},{\"color\":[5,8,7],\"x\":2560,\"y\":540},{\"color\":[5,8,7],\"x\":2720,\"y\":540},{\"color\":[5,8,7],\"x\":3040,\"y\":540},{\"color\":[5,8,7],\"x\":3200,\"y\":540},{\"color\":[5,8,7],\"x\":3520,\"y\":540},{\"color\":[5,8,7],\"x\":3680,\"y\":540},{\"color\":[20,21,0],\"x\":160,\"y\":756},{\"color\":[19,20,0],\"x\":320,\"y\":756},{\"color\":[5,8,7],\"x\":640,\"y\":756},{\"color\":[0,0,0],\"x\":800,\"y\":756},{\"color\":[0,0,0],\"x\":1120,\"y\":756},{\"color\":[31,29,25],\"x\":1280,\"y\":756},{\"color\":[0,0,0],\"x\":1600,\"y\":756},{\"color\":[0,0,0],\"x\":1760,\"y\":756},{\"color\":[0,0,0],\"x\":2080,\"y\":756},{\"color\":[27,27,25],\"x\":2240,\"y\":756},{\"color\":[5,8,7],\"x\":2560,\"y\":756},{\"color\":[5,8,7],\"x\":2720,\"y\":756},{\"color\":[5,8,7],\"x\":3040,\"y\":756},{\"color\":[5,8,7],\"x\":3200,\"y\":756},{\"color\":[5,8,7],\"x\":3520,\"y\":756},{\"color\":[5,8,7],\"x\":3680,\"y\":756},{\"color\":[21,22,0],\"x\":160,\"y\":972},{\"color\":[18,19,0],\"x\":320,\"y\":972},{\"color\":[5,8,7],\"x\":640,\"y\":972},{\"color\":[0,0,0],\"x\":800,\"y\":972},{\"color\":[0,0,0],\"x\":1120,\"y\":972},{\"color\":[31,29,25],\"x\":1280,\"y\":972},{\"color\":[0,0,0],\"x\":1600,\"y\":972},{\"color\":[0,0,0],\"x\":1760,\"y\":972},{\"color\":[0,0,0],\"x\":2080,\"y\":972},{\"color\":[27,27,25],\"x\":2240,\"y\":972},{\"color\":[5,8,7],\"x\":2560,\"y\":972},{\"color\":[5,8,7],\"x\":2720,\"y\":972},{\"color\":[5,8,7],\"x\":3040,\"y\":972},{\"color\":[5,8,7],\"x\":3200,\"y\":972},{\"color\":[5,8,7],\"x\":3520,\"y\":972},{\"color\":[5,8,7],\"x\":3680,\"y\":972},{\"color\":[21,25,0],\"x\":160,\"y\":1188},{\"color\":[21,22,0],\"x\":320,\"y\":1188},{\"color\":[5,8,7],\"x\":640,\"y\":1188},{\"color\":[0,0,0],\"x\":800,\"y\":1188},{\"color\":[0,0,0],\"x\":1120,\"y\":1188},{\"color\":[0,0,0],\"x\":1280,\"y\":1188},{\"color\":[0,0,0],\"x\":1600,\"y\":1188},{\"color\":[0,0,0],\"x\":1760,\"y\":1188},{\"color\":[0,0,0],\"x\":2080,\"y\":1188},{\"color\":[0,0,0],\"x\":2240,\"y\":1188},{\"color\":[5,8,7],\"x\":2560,\"y\":1188},{\"color\":[5,8,7],\"x\":2720,\"y\":1188},{\"color\":[5,8,7],\"x\":3040,\"y\":1188},{\"color\":[5,8,7],\"x\":3200,\"y\":1188},{\"color\":[5,8,7],\"x\":3520,\"y\":1188},{\"color\":[5,8,7],\"x\":3680,\"y\":1188},{\"color\":[24,32,0],\"x\":160,\"y\":1404},{\"color\":[24,32,0],\"x\":320,\"y\":1404},{\"color\":[5,8,7],\"x\":640,\"y\":1404},{\"color\":[0,0,0],\"x\":800,\"y\":1404},{\"color\":[0,0,0],\"x\":1120,\"y\":1404},{\"color\":[31,29,25],\"x\":1280,\"y\":1404},{\"color\":[0,0,0],\"x\":1600,\"y\":1404},{\"color\":[0,0,0],\"x\":1760,\"y\":1404},{\"color\":[0,0,0],\"x\":2080,\"y\":1404},{\"color\":[27,27,25],\"x\":2240,\"y\":1404},{\"color\":[5,8,7],\"x\":2560,\"y\":1404},{\"color\":[5,8,7],\"x\":2720,\"y\":1404},{\"color\":[5,8,7],\"x\":3040,\"y\":1404},{\"color\":[5,8,7],\"x\":3200,\"y\":1404},{\"color\":[5,8,7],\"x\":3520,\"y\":1404},{\"color\":[5,8,7],\"x\":3680,\"y\":1404},{\"color\":[25,34,0],\"x\":160,\"y\":1620},{\"color\":[20,32,0],\"x\":320,\"y\":1620},{\"color\":[5,8,7],\"x\":640,\"y\":1620},{\"color\":[0,0,0],\"x\":800,\"y\":1620},{\"color\":[0,0,0],\"x\":1120,\"y\":1620},{\"color\":[8,8,8],\"x\":1280,\"y\":1620},{\"color\":[0,0,0],\"x\":1600,\"y\":1620},{\"color\":[0,0,0],\"x\":1760,\"y\":1620},{\"color\":[0,0,0],\"x\":2080,\"y\":1620},{\"color\":[0,0,0],\"x\":2240,\"y\":1620},{\"color\":[5,8,7],\"x\":2560,\"y\":1620},{\"color\":[5,8,7],\"x\":2720,\"y\":1620},{\"color\":[5,8,7],\"x\":3040,\"y\":1620},{\"color\":[5,8,7],\"x\":3200,\"y\":1620},{\"color\":[5,8,7],\"x\":3520,\"y\":1620},{\"color\":[5,8,7],\"x\":3680,\"y\":1620},{\"color\":[17,28,0],\"x\":160,\"y\":1836},{\"color\":[22,36,0],\"x\":320,\"y\":1836},{\"color\":[5,8,7],\"x\":640,\"y\":1836},{\"color\":[0,0,0],\"x\":800,\"y\":1836},{\"color\":[0,0,0],\"x\":1120,\"y\":1836},{\"color\":[0,0,0],\"x\":1280,\"y\":1836},{\"color\":[0,0,0],\"x\":1600,\"y\":1836},{\"color\":[0,0,0],\"x\":1760,\"y\":1836},{\"color\":[0,0,0],\"x\":2080,\"y\":1836},{\"color\":[0,0,0],\"x\":2240,\"y\":1836},{\"color\":[5,8,7],\"x\":2560,\"y\":1836},{\"color\":[5,8,7],\"x\":2720,\"y\":1836},{\"color\":[5,8,7],\"x\":3040,\"y\":1836},{\"color\":[5,8,7],\"x\":3200,\"y\":1836},{\"color\":[5,8,7],\"x\":3520,\"y\":1836},{\"color\":[5,8,7],\"x\":3680,\"y\":1836},{\"color\":[20,33,0],\"x\":160,\"y\":2052},{\"color\":[20,36,0],\"x\":320,\"y\":2052},{\"color\":[5,8,7],\"x\":640,\"y\":2052},{\"color\":[0,0,0],\"x\":800,\"y\":2052},{\"color\":[0,0,0],\"x\":1120,\"y\":2052},{\"color\":[25,23,19],\"x\":1280,\"y\":2052},{\"color\":[0,0,0],\"x\":1600,\"y\":2052},{\"color\":[0,0,0],\"x\":1760,\"y\":2052},{\"color\":[0,0,0],\"x\":2080,\"y\":2052},{\"color\":[19,19,17],\"x\":2240,\"y\":2052},{\"color\":[5,8,7],\"x\":2560,\"y\":2052},{\"color\":[5,8,7],\"x\":2720,\"y\":2052},{\"color\":[5,8,7],\"x\":3040,\"y\":2052},{\"color\":[5,8,7],\"x\":3200,\"y\":2052},{\"color\":[5,8,7],\"x\":3520,\"y\":2052},{\"color\":[5,8,7],\"x\":3680,\"y\":2052},{\"color\":[0,0,0],\"x\":1040,\"y\":1050},{\"color\":[0,0,0],\"x\":1120,\"y\":1050},{\"color\":[0,0,0],\"x\":1200,\"y\":1050},{\"color\":[31,29,25],\"x\":1280,\"y\":1050},{\"color\":[0,0,0],\"x\":1360,\"y\":1050},{\"color\":[0,0,0],\"x\":1520,\"y\":1050},{\"color\":[0,0,0],\"x\":1600,\"y\":1050},{\"color\":[0,0,0],\"x\":1680,\"y\":1050},{\"color\":[0,0,0],\"x\":1760,\"y\":1050},{\"color\":[0,0,0],\"x\":1840,\"y\":1050},{\"color\":[0,0,0],\"x\":2000,\"y\":1050},{\"color\":[0,0,0],\"x\":2080,\"y\":1050},{\"color\":[32,36,39],\"x\":2160,\"y\":1050},{\"color\":[27,27,25],\"x\":2240,\"y\":1050},{\"color\":[5,8,7],\"x\":2320,\"y\":1050},{\"color\":[5,8,7],\"x\":2480,\"y\":1050},{\"color\":[5,8,7],\"x\":2560,\"y\":1050},{\"color\":[5,8,7],\"x\":2640,\"y\":1050},{\"color\":[76,76,76],\"x\":1000,\"y\":1063},{\"color\":[0,0,0],\"x\":1080,\"y\":1063},{\"color\":[0,0,0],\"x\":1160,\"y\":1063},{\"color\":[0,0,0],\"x\":1240,\"y\":1063},{\"color\":[0,0,0],\"x\":1320,\"y\":1063},{\"color\":[0,0,0],\"x\":1480,\"y\":1063},{\"color\":[0,0,0],\"x\":1560,\"y\":1063},{\"color\":[0,0,0],\"x\":1640,\"y\":1063},{\"color\":[0,0,0],\"x\":1720,\"y\":1063},{\"color\":[0,0,0],\"x\":1800,\"y\":1063},{\"color\":[0,0,0],\"x\":1960,\"y\":1063},{\"color\":[0,0,0],\"x\":2040,\"y\":1063},{\"color\":[0,0,0],\"x\":2120,\"y\":1063},{\"color\":[32,36,39],\"x\":2200,\"y\":1063},{\"color\":[5,8,7],\"x\":2280,\"y\":1063},{\"color\":[5,8,7],\"x\":2440,\"y\":1063},{\"color\":[5,8,7],\"x\":2520,\"y\":1063},{\"color\":[5,8,7],\"x\":2600,\"y\":1063},{\"color\":[0,0,0],\"x\":1040,\"y\":1076},{\"color\":[0,0,0],\"x\":1120,\"y\":1076},{\"color\":[0,0,0],\"x\":1200,\"y\":1076},{\"color\":[31,29,25],\"x\":1280,\"y\":1076},{\"color\":[0,0,0],\"x\":1360,\"y\":1076},{\"color\":[0,0,0],\"x\":1520,\"y\":1076},{\"color\":[0,0,0],\"x\":1600,\"y\":1076},{\"color\":[0,0,0],\"x\":1680,\"y\":1076},{\"color\":[0,0,0],\"x\":1760,\"y\":1076},{\"color\":[0,0,0],\"x\":1840,\"y\":1076},{\"color\":[0,0,0],\"x\":2000,\"y\":1076},{\"color\":[0,0,0],\"x\":2080,\"y\":1076},{\"color\":[32,36,39],\"x\":2160,\"y\":1076},{\"color\":[27,27,25],\"x\":2240,\"y\":1076},{\"color\":[5,8,7],\"x\":2320,\"y\":1076},{\"color\":[5,8,7],\"x\":2480,\"y\":1076},{\"color\":[5,8,7],\"x\":2560,\"y\":1076},{\"color\":[5,8,7],\"x\":2640,\"y\":1076},{\"color\":[0,0,0],\"x\":1000,\"y\":1089},{\"color\":[0,0,0],\"x\":1080,\"y\":1089},{\"color\":[0,0,0],\"x\":1160,\"y\":1089},{\"color\":[0,0,0],\"x\":1240,\"y\":1089},{\"color\":[0,0,0],\"x\":1320,\"y\":1089},{\"color\":[0,0,0],\"x\":1480,\"y\":1089},{\"color\":[0,0,0],\"x\":1560,\"y\":1089},{\"color\":[0,0,0],\"x\":1640,\"y\":1089},{\"color\":[0,0,0],\"x\":1720,\"y\":1089},{\"color\":[0,0,0],\"x\":1800,\"y\":1089},{\"color\":[0,0,0],\"x\":1960,\"y\":1089},{\"color\":[0,0,0],\"x\":2040,\"y\":1089},{\"color\":[0,0,0],\"x\":2120,\"y\":1089},{\"color\":[32,36,39],\"x\":2200,\"y\":1089},{\"color\":[5,8,7],\"x\":2280,\"y\":1089},{\"color\":[5,8,7],\"x\":2440,\"y\":1089},{\"color\":[5,8,7],\"x\":2520,\"y\":1089},{\"color\":[5,8,7],\"x\":2600,\"y\":1089},{\"color\":[0,0,0],\"x\":1040,\"y\":1102},{\"color\":[0,0,0],\"x\":1120,\"y\":1102},{\"color\":[0,0,0],\"x\":1200,\"y\":1102},{\"color\":[0,0,0],\"x\":1280,\"y\":1102},{\"color\":[0,0,0],\"x\":1360,\"y\":1102},{\"color\":[0,0,0],\"x\":1520,\"y\":1102},{\"color\":[0,0,0],\"x\":1600,\"y\":1102},{\"color\":[0,0,0],\"x\":1680,\"y\":1102},{\"color\":[0,0,0],\"x\":1760,\"y\":1102},{\"color\":[0,0,0],\"x\":1840,\"y\":1102},{\"color\":[0,0,0],\"x\":2000,\"y\":1102},{\"color\":[0,0,0],\"x\":2080,\"y\":1102},{\"color\":[0,0,0],\"x\":2160,\"y\":1102},{\"color\":[0,0,0],\"x\":2240,\"y\":1102},{\"color\":[5,8,7],\"x\":2320,\"y\":1102},{\"color\":[5,8,7],\"x\":2480,\"y\":1102},{\"color\":[5,8,7],\"x\":2560,\"y\":1102},{\"color\":[5,8,7],\"x\":2640,\"y\":1102},{\"color\":[0,0,0],\"x\":1000,\"y\":1115},{\"color\":[0,0,0],\"x\":1080,\"y\":1115},{\"color\":[0,0,0],\"x\":1160,\"y\":1115},{\"color\":[0,0,0],\"x\":1240,\"y\":1115},{\"color\":[0,0,0],\"x\":1320,\"y\":1115},{\"color\":[0,0,0],\"x\":1480,\"y\":1115},{\"color\":[0,0,0],\"x\":1560,\"y\":1115},{\"color\":[0,0,0],\"x\":1640,\"y\":1115},{\"color\":[0,0,0],\"x\":1720,\"y\":1115},{\"color\":[0,0,0],\"x\":1800,\"y\":1115},{\"color\":[0,0,0],\"x\":1960,\"y\":1115},{\"color\":[0,0,0],\"x\":2040,\"y\":1115},{\"color\":[0,0,0],\"x\":2120,\"y\":1115},{\"color\":[0,0,0],\"x\":2200,\"y\":1115},{\"color\":[5,8,7],\"x\":2280,\"y\":1115},{\"color\":[5,8,7],\"x\":2440,\"y\":1115},{\"color\":[5,8,7],\"x\":2520,\"y\":1115},{\"color\":[5,8,7],\"x\":2600,\"y\":1115},{\"color\":[0,0,0],\"x\":1040,\"y\":1128},{\"color\":[0,0,0],\"x\":1120,\"y\":1128},{\"color\":[0,0,0],\"x\":1200,\"y\":1128},{\"color\":[31,29,25],\"x\":1280,\"y\":1128},{\"color\":[0,0,0],\"x\":1360,\"y\":1128},{\"color\":[0,0,0],\"x\":1520,\"y\":1128},{\"color\":[0,0,0],\"x\":1600,\"y\":1128},{\"color\":[0,0,0],\"x\":1680,\"y\":1128},{\"color\":[0,0,0],\"x\":1760,\"y\":1128},{\"color\":[0,0,0],\"x\":1840,\"y\":1128},{\"color\":[0,0,0],\"x\":2000,\"y\":1128},{\"color\":[0,0,0],\"x\":2080,\"y\":1128},{\"color\":[32,36,39],\"x\":2160,\"y\":1128},{\"color\":[27,27,25],\"x\":2240,\"y\":1128},{\"color\":[5,8,7],\"x\":2320,\"y\":1128},{\"color\":[5,8,7],\"x\":2480,\"y\":1128},{\"color\":[5,8,7],\"x\":2560,\"y\":1128},{\"color\":[5,8,7],\"x\":2640,\"y\":1128},{\"color\":[70,70,70],\"x\":1000,\"y\":1141},{\"color\":[0,0,0],\"x\":1080,\"y\":1141},{\"color\":[0,0,0],\"x\":1160,\"y\":1141},{\"color\":[0,0,0],\"x\":1240,\"y\":1141},{\"color\":[0,0,0],\"x\":1320,\"y\":1141},{\"color\":[0,0,0],\"x\":1480,\"y\":1141},{\"color\":[0,0,0],\"x\":1560,\"y\":1141},{\"color\":[0,0,0],\"x\":1640,\"y\":1141},{\"color\":[0,0,0],\"x\":1720,\"y\":1141},{\"color\":[0,0,0],\"x\":1800,\"y\":1141},{\"color\":[0,0,0],\"x\":1960,\"y\":1141},{\"color\":[0,0,0],\"x\":2040,\"y\":1141},{\"color\":[0,0,0],\"x\":2120,\"y\":1141},{\"color\":[32,36,39],\"x\":2200,\"y\":1141},{\"color\":[5,8,7],\"x\":2280,\"y\":1141},{\"color\":[5,8,7],\"x\":2440,\"y\":1141},{\"color\":[5,8,7],\"x\":2520,\"y\":1141},{\"color\":[5,8,7],\"x\":2600,\"y\":1141}],\"height\":2160,\"quality\":100,\"signature\":\"3840x2160x30 I420 Video-Loopback (video9)\",\"width\":3840}","type":"videoDetection"},{"config":"{\"autoResume\":true,\"autoSignalDetection\":true,\"blueSignalThreshold\":5,\"cecHdrStart\":0,\"cecHdrStop\":0,\"cropBottom\":0,\"cropLeft\":0,\"cropRight\":0,\"cropTop\":0,\"device\":\"Video-Loopback (video9)\",\"errorTolerance\":9,\"fps\":0,\"fpsSoftwareDecimation\":1,\"greenSignalThreshold\":5,\"hardware_brightness\":0,\"hardware_contrast\":0,\"hardware_hue\":0,\"hardware_saturation\":0,\"hdrToneMapping\":false,\"input\":-1,\"led_off_pause\":true,\"modelTolerance\":90,\"noSignalCounterThreshold\":200,\"qFrame\":false,\"redSignalThreshold\":5,\"sDHOffsetMax\":0.75,\"sDHOffsetMin\":0.25,\"sDVOffsetMax\":0.75,\"sDVOffsetMin\":0.25,\"saveResources\":true,\"sleepTime\":5000,\"videoEncoding\":\"auto\",\"videoMode\":\"auto\",\"wakeTime\":1000}","type":"videoGrabber"},{"config":"{\"crtPath\":\"\",\"document_root\":\"\",\"keyPassPhrase\":\"\",\"keyPath\":\"\",\"port\":8090,\"sslPort\":8092}","type":"webConfig"}],"version":"HyperHDR_export_format_v20"} \ No newline at end of file
diff --git a/dot-hyperhdr/db/hyperhdr.db b/dot-hyperhdr/db/hyperhdr.db
index 6dcf33e0..d61ba0fc 100644
--- a/dot-hyperhdr/db/hyperhdr.db
+++ b/dot-hyperhdr/db/hyperhdr.db
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4bd6c5a8ae5e9715f884f6dfc2b79f21509aab66c01a35733a82ecb40b6c93e6
+oid sha256:54793f1f3fb427df10136d1dad44d0a1a8f4479e82d09f40fce90563c23a18b2
size 57344
diff --git a/dot-zen/main/chrome/Zen-Nebula b/dot-zen/main/chrome/Zen-Nebula
-Subproject dd13394e5dd629da3963c036b563b9675353317
+Subproject 5c7897357f8d252bb99418043665def8b0ab228
diff --git a/dot-zen/main/chrome/zen-themes.css b/dot-zen/main/chrome/zen-themes.css
index 6cb679d5..53dc65d6 100644
--- a/dot-zen/main/chrome/zen-themes.css
+++ b/dot-zen/main/chrome/zen-themes.css
@@ -1,5 +1,5 @@
/* Zen Mods - Generated by ZenMods.
-* FILE GENERATED AT: Tuesday, September 9, 2025 at 5:08:47 PM Hong Kong Standard Time
+* FILE GENERATED AT: Saturday, October 11, 2025 at 3:43:52 PM Hong Kong Standard Time
* DO NOT EDIT THIS FILE DIRECTLY!
* Your changes will be overwritten.
* Instead, go to the preferences and edit the mods there.
@@ -1093,8 +1093,9 @@ hbox.browserSidebarContainer,
}
}
-#urlbar[open][zen-floating-urlbar="true"] #urlbar-background {
+#urlbar[open][zen-floating-urlbar="true"] .urlbar-background {
@media -moz-pref( "mod.sameerasw.zen_urlbar_zoom_anim") {
+ background-color: color-mix(in srgb, var(--zen-urlbar-background-base) 60%, transparent) !important;
border-radius: 1em !important;
}
}
@@ -1174,6 +1175,10 @@ tabpanels .browserStack browser {
--actual-zen-sidebar-width: var(--zen-sidebar-custom-width) !important;
width: var(--zen-sidebar-custom-width) !important;
}
+
+ #zen-toolbar-background, #zen-toolbar-background::after, .zen-toolbar-background, .zen-toolbar-background::after{
+ background-color: color-mix(in srgb, var(--arrowpanel-background) 30%, transparent) !important;
+}
}
/* Shared: Soft mask background and shadow */
@@ -1186,15 +1191,6 @@ tabpanels .browserStack browser {
background-color: light-dark(#fff8, #0005) !important;
}
-/* Shared: Content reveal trigger condition */
-#zen-main-app-wrapper[zen-compact-mode="true"]:has(
- [zen-user-show=""],
- #navigator-toolbox[zen-has-hover="true"],
- [has-popup-menu=""]
- ) {
- /* Content styles when sidebar is revealed */
-}
-
/* Mask type - left sidebar */
#main-window:not([zen-right-side="true"]):has(
[mod-sameerasw_zen_compact_sidebar_type="2"]
@@ -1208,8 +1204,8 @@ tabpanels .browserStack browser {
mask-image: linear-gradient(
to right,
transparent 0,
- transparent calc(var(--zen-sidebar-custom-width) + 4px),
- black calc(var(--zen-sidebar-custom-width) + 8px),
+ transparent calc(var(--zen-sidebar-custom-width) + 10px),
+ black calc(var(--zen-sidebar-custom-width) + 10px),
black 100%
) !important;
}
@@ -1227,8 +1223,8 @@ tabpanels .browserStack browser {
mask-image: linear-gradient(
to left,
transparent 0,
- transparent calc(var(--zen-sidebar-custom-width) + 4px),
- black calc(var(--zen-sidebar-custom-width) + 8px),
+ transparent calc(var(--zen-sidebar-custom-width) + 10px),
+ black calc(var(--zen-sidebar-custom-width) + 10px),
black 100%
) !important;
}
@@ -1243,7 +1239,7 @@ tabpanels .browserStack browser {
[has-popup-menu=""]
)
#zen-appcontent-wrapper {
- transform: translateX(var(--zen-sidebar-custom-width)) !important;
+ transform: translateX(calc(var(--zen-sidebar-custom-width) + 10px)) !important;
}
/* Push type - right sidebar */
@@ -1256,7 +1252,7 @@ tabpanels .browserStack browser {
[has-popup-menu=""]
)
#zen-appcontent-wrapper {
- transform: translateX(calc(0px - var(--zen-sidebar-custom-width))) !important;
+ transform: translateX(calc(0px - var(--zen-sidebar-custom-width) - 10px)) !important;
}
/* Shared Push Transition (used in both left and right) */
@@ -1384,4 +1380,31 @@ tabpanels .browserStack browser {
}
}
+/* Transparent glance */
+.zen-glance-background > vbox {
+ @media -moz-pref( "mod.sameerasw.zen_transparent_glance_enabled") {
+ mask-image: linear-gradient(
+ to right,
+ black 0%,
+ black 4%,
+ transparent 7%,
+ transparent 93.5%,
+ black 96%,
+ black 100%
+ );
+ mask-repeat: no-repeat;
+ mask-size: 100% 100%;
+ }
+}
+
+.zen-glance-overlay > vbox {
+ @media -moz-pref( "mod.sameerasw.zen_transparent_glance_enabled") {
+ background-color: light-dark(#fff7, #0007) !important;
+ margin-top: 0.5% !important;
+ margin-bottom: 0.5% !important;
+ height: 99% !important;
+ border-radius: 1.5em !important;
+ }
+}
+
/* End of Zen Mods */
diff --git a/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/chrome.css b/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/chrome.css
index 4c1f30fd..1c2c08fd 100644
--- a/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/chrome.css
+++ b/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/chrome.css
@@ -100,8 +100,9 @@ hbox.browserSidebarContainer,
}
}
-#urlbar[open][zen-floating-urlbar="true"] #urlbar-background {
+#urlbar[open][zen-floating-urlbar="true"] .urlbar-background {
@media -moz-pref( "mod.sameerasw.zen_urlbar_zoom_anim") {
+ background-color: color-mix(in srgb, var(--zen-urlbar-background-base) 60%, transparent) !important;
border-radius: 1em !important;
}
}
@@ -181,6 +182,10 @@ tabpanels .browserStack browser {
--actual-zen-sidebar-width: var(--zen-sidebar-custom-width) !important;
width: var(--zen-sidebar-custom-width) !important;
}
+
+ #zen-toolbar-background, #zen-toolbar-background::after, .zen-toolbar-background, .zen-toolbar-background::after{
+ background-color: color-mix(in srgb, var(--arrowpanel-background) 30%, transparent) !important;
+}
}
/* Shared: Soft mask background and shadow */
@@ -193,15 +198,6 @@ tabpanels .browserStack browser {
background-color: light-dark(#fff8, #0005) !important;
}
-/* Shared: Content reveal trigger condition */
-#zen-main-app-wrapper[zen-compact-mode="true"]:has(
- [zen-user-show=""],
- #navigator-toolbox[zen-has-hover="true"],
- [has-popup-menu=""]
- ) {
- /* Content styles when sidebar is revealed */
-}
-
/* Mask type - left sidebar */
#main-window:not([zen-right-side="true"]):has(
[mod-sameerasw_zen_compact_sidebar_type="2"]
@@ -215,8 +211,8 @@ tabpanels .browserStack browser {
mask-image: linear-gradient(
to right,
transparent 0,
- transparent calc(var(--zen-sidebar-custom-width) + 4px),
- black calc(var(--zen-sidebar-custom-width) + 8px),
+ transparent calc(var(--zen-sidebar-custom-width) + 10px),
+ black calc(var(--zen-sidebar-custom-width) + 10px),
black 100%
) !important;
}
@@ -234,8 +230,8 @@ tabpanels .browserStack browser {
mask-image: linear-gradient(
to left,
transparent 0,
- transparent calc(var(--zen-sidebar-custom-width) + 4px),
- black calc(var(--zen-sidebar-custom-width) + 8px),
+ transparent calc(var(--zen-sidebar-custom-width) + 10px),
+ black calc(var(--zen-sidebar-custom-width) + 10px),
black 100%
) !important;
}
@@ -250,7 +246,7 @@ tabpanels .browserStack browser {
[has-popup-menu=""]
)
#zen-appcontent-wrapper {
- transform: translateX(var(--zen-sidebar-custom-width)) !important;
+ transform: translateX(calc(var(--zen-sidebar-custom-width) + 10px)) !important;
}
/* Push type - right sidebar */
@@ -263,7 +259,7 @@ tabpanels .browserStack browser {
[has-popup-menu=""]
)
#zen-appcontent-wrapper {
- transform: translateX(calc(0px - var(--zen-sidebar-custom-width))) !important;
+ transform: translateX(calc(0px - var(--zen-sidebar-custom-width) - 10px)) !important;
}
/* Shared Push Transition (used in both left and right) */
@@ -390,3 +386,30 @@ tabpanels .browserStack browser {
box-shadow: none !important;
}
}
+
+/* Transparent glance */
+.zen-glance-background > vbox {
+ @media -moz-pref( "mod.sameerasw.zen_transparent_glance_enabled") {
+ mask-image: linear-gradient(
+ to right,
+ black 0%,
+ black 4%,
+ transparent 7%,
+ transparent 93.5%,
+ black 96%,
+ black 100%
+ );
+ mask-repeat: no-repeat;
+ mask-size: 100% 100%;
+ }
+}
+
+.zen-glance-overlay > vbox {
+ @media -moz-pref( "mod.sameerasw.zen_transparent_glance_enabled") {
+ background-color: light-dark(#fff7, #0007) !important;
+ margin-top: 0.5% !important;
+ margin-bottom: 0.5% !important;
+ height: 99% !important;
+ border-radius: 1.5em !important;
+ }
+}
diff --git a/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/preferences.json b/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/preferences.json
index 92a04c0e..93f4b25c 100644
--- a/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/preferences.json
+++ b/dot-zen/main/chrome/zen-themes/642854b5-88b4-4c40-b256-e035532109df/preferences.json
@@ -1,174 +1,186 @@
[
- {
- "property": "browser.tabs.allow_transparent_browser",
- "label": "👀 Allow transparency (TURN OFF BEFORE UNINSTALL)",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "zen.widget.linux.transparency",
- "label": "👀 Allow transparency on linux (TURN OFF BEFORE UNINSTALL)",
- "type": "checkbox",
- "defaultValue": false,
- "disabledOn": ["windows", "macos"]
- },
- {
- "property": "zen.view.grey-out-inactive-windows",
- "label": "👀 Keep transparency when not in focus on linux",
- "type": "checkbox",
- "defaultValue": false,
- "disabledOn": ["windows", "macos"]
- },
- {
- "property": "mod.sameerasw.zen_transparent_sidebar_enabled",
- "label": "👀 Transparent sidebar (bookmarks, history and sync)",
- "type": "checkbox",
- "defaultValue": true
- },
- {
- "property": "mod.sameerasw.zen_bg_color_enabled",
- "label": "🎨 Enable custom background color for Zen",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw.zen_transparency_color",
- "label": "🎨 Set custom background color (Overrides theme)",
- "type": "string",
- "defaultValue": "#00000000",
- "placeholder": "light-dark(#fff, #222) or RGBA or hex"
- },
- {
- "property": "mod.sameerasw_zen_light_tint",
- "label": "🌙 Light website tint",
- "type": "dropdown",
- "placeholder": "Select an option",
- "defaultValue": "2",
- "options": [
- {
- "label": "Flip",
- "value": "1"
- },
- {
- "label": "Remove",
- "value": "2"
- }
- ]
- },
- {
- "property": "mod.sameerasw.zen_no_shadow",
- "label": "🌑 Remove the shadow around the web page",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw.zen_notab_img_enabled",
- "label": "🖼️ Add no tab screen background image",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw.zen_notab_img",
- "label": "🖼️ Image URL, format: url('example.com/1.png')",
- "type": "string",
- "defaultValue": "url('https://github.com/sameerasw/my-internet/blob/main/wave-light.png?raw=true')",
- "placeholder": "url('example.com/1.png')"
- },
- {
- "property": "mod.sameerasw.zen_notab_img_size",
- "label": "🖼️ No tab screen image size with unit",
- "type": "string",
- "defaultValue": "150px",
- "placeholder": "50px (px, em, % ...)"
- },
- {
- "property": "mod.sameerasw.zen_notab_img_opacity",
- "label": "🖼️ No tab screen image opacity (0-1)",
- "type": "string",
- "defaultValue": "1",
- "placeholder": "0.75"
- },
- {
- "property": "mod.sameerasw.zen_notab_img_saturate",
- "label": "🖼️ Grayscale the no tab screen image",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw.zen_notab_img_invert",
- "label": "🖼️ Invert above image in light theme (white → black)",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw_zen_compact_sidebar_type",
- "label": "↔️ Compact transparent sidebar type",
- "type": "dropdown",
- "placeholder": "Select an option",
- "defaultValue": "0",
- "options": [
- {
- "label": "Default",
- "value": "0"
- },
- {
- "label": "Push",
- "value": "1"
- },
- {
- "label": "Mask",
- "value": "2"
- }
- ]
- },
- {
- "property": "mod.sameerasw.zen_compact_sidebar_width",
- "label": "↔️ Custom compact sidebar width",
- "type": "string",
- "defaultValue": "165px",
- "placeholder": "165px (use px)"
- },
- {
- "property": "mod.sameerasw.zen_tab_switch_anim",
- "label": "✨ Tab switch animation",
- "type": "checkbox",
- "defaultValue": true
- },
- {
- "property": "mod.sameerasw.zen_urlbar_zoom_anim",
- "label": "✨ URL bar zoom animation",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw.zen_trackpad_anim",
- "label": "✨ Trackpad swipe animations",
- "type": "checkbox",
- "defaultValue": false
- },
- {
- "property": "mod.sameerasw_zen_animations",
- "label": "✨ Animation smoothness",
- "type": "dropdown",
- "placeholder": "Select an option",
- "defaultValue": "1",
- "options": [
- {
- "label": "Quick Snap",
- "value": "0"
- },
- {
- "label": "Smooth Flow",
- "value": "1"
- },
- {
- "label": "Diabolical",
- "value": "2"
- },
- {
- "label": "Springy",
- "value": "3"
- }
- ]
- }
-]
+ {
+ "property": "browser.tabs.allow_transparent_browser",
+ "label": "\ud83d\udc40 Allow transparency (TURN OFF BEFORE UNINSTALL)",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "zen.widget.linux.transparency",
+ "label": "\ud83d\udc40 Allow transparency on linux (TURN OFF BEFORE UNINSTALL)",
+ "type": "checkbox",
+ "defaultValue": false,
+ "disabledOn": [
+ "windows",
+ "macos"
+ ]
+ },
+ {
+ "property": "zen.view.grey-out-inactive-windows",
+ "label": "\ud83d\udc40 Disable transparency when not in focus on linux",
+ "type": "checkbox",
+ "defaultValue": false,
+ "disabledOn": [
+ "windows",
+ "macos"
+ ]
+ },
+ {
+ "property": "mod.sameerasw.zen_transparent_sidebar_enabled",
+ "label": "\ud83d\udc40 Transparent sidebar (bookmarks, history and sync)",
+ "type": "checkbox",
+ "defaultValue": true
+ },
+ {
+ "property": "mod.sameerasw.zen_transparent_glance_enabled",
+ "label": "\ud83d\udc40 Transparent glance",
+ "type": "checkbox",
+ "defaultValue": true
+ },
+ {
+ "property": "mod.sameerasw.zen_bg_color_enabled",
+ "label": "\ud83c\udfa8 Enable custom background color for Zen",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw.zen_transparency_color",
+ "label": "\ud83c\udfa8 Set custom background color (Overrides theme)",
+ "type": "string",
+ "defaultValue": "#00000000",
+ "placeholder": "light-dark(#fff, #222) or RGBA or hex"
+ },
+ {
+ "property": "mod.sameerasw_zen_light_tint",
+ "label": "\ud83c\udf19 Light website tint",
+ "type": "dropdown",
+ "placeholder": "Select an option",
+ "defaultValue": "2",
+ "options": [
+ {
+ "label": "Flip",
+ "value": "1"
+ },
+ {
+ "label": "Remove",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "property": "mod.sameerasw.zen_no_shadow",
+ "label": "\ud83c\udf11 Remove the shadow around the web page",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img_enabled",
+ "label": "\ud83d\uddbc\ufe0f Add no tab screen background image",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img",
+ "label": "\ud83d\uddbc\ufe0f Image URL, format: url('example.com/1.png')",
+ "type": "string",
+ "defaultValue": "url('https://github.com/sameerasw/my-internet/blob/main/wave-light.png?raw=true')",
+ "placeholder": "url('example.com/1.png')"
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img_size",
+ "label": "\ud83d\uddbc\ufe0f No tab screen image size with unit",
+ "type": "string",
+ "defaultValue": "150px",
+ "placeholder": "50px (px, em, % ...)"
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img_opacity",
+ "label": "\ud83d\uddbc\ufe0f No tab screen image opacity (0-1)",
+ "type": "string",
+ "defaultValue": "1",
+ "placeholder": "0.75"
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img_saturate",
+ "label": "\ud83d\uddbc\ufe0f Grayscale the no tab screen image",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw.zen_notab_img_invert",
+ "label": "\ud83d\uddbc\ufe0f Invert above image in light theme (white \u2192 black)",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw_zen_compact_sidebar_type",
+ "label": "\u2194\ufe0f Compact transparent sidebar type",
+ "type": "dropdown",
+ "placeholder": "Select an option",
+ "defaultValue": "0",
+ "options": [
+ {
+ "label": "Default",
+ "value": "0"
+ },
+ {
+ "label": "Push",
+ "value": "1"
+ },
+ {
+ "label": "Mask",
+ "value": "2"
+ }
+ ]
+ },
+ {
+ "property": "mod.sameerasw.zen_compact_sidebar_width",
+ "label": "\u2194\ufe0f Custom compact sidebar width",
+ "type": "string",
+ "defaultValue": "165px",
+ "placeholder": "165px (use px)"
+ },
+ {
+ "property": "mod.sameerasw.zen_tab_switch_anim",
+ "label": "\u2728 Tab switch animation",
+ "type": "checkbox",
+ "defaultValue": true
+ },
+ {
+ "property": "mod.sameerasw.zen_urlbar_zoom_anim",
+ "label": "\u2728 URL bar zoom animation",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw.zen_trackpad_anim",
+ "label": "\u2728 Trackpad swipe animations",
+ "type": "checkbox",
+ "defaultValue": false
+ },
+ {
+ "property": "mod.sameerasw_zen_animations",
+ "label": "\u2728 Animation smoothness",
+ "type": "dropdown",
+ "placeholder": "Select an option",
+ "defaultValue": "1",
+ "options": [
+ {
+ "label": "Quick Snap",
+ "value": "0"
+ },
+ {
+ "label": "Smooth Flow",
+ "value": "1"
+ },
+ {
+ "label": "Diabolical",
+ "value": "2"
+ },
+ {
+ "label": "Springy",
+ "value": "3"
+ }
+ ]
+ }
+] \ No newline at end of file
diff --git a/pkgbuilds/helix-git/.SRCINFO b/pkgbuilds/helix-git/.SRCINFO
deleted file mode 100644
index 9bd127f3..00000000
--- a/pkgbuilds/helix-git/.SRCINFO
+++ /dev/null
@@ -1,16 +0,0 @@
-pkgbase = helix-git
- pkgdesc = A text editor written in rust
- pkgver = 25.01.1.r391.g17fb12bcf
- pkgrel = 1
- url = https://helix-editor.com
- arch = x86_64
- license = MPL-2.0
- makedepends = git
- makedepends = cargo
- provides = hx
- conflicts = helix
- options = !lto
- source = helix::git+https://github.com/helix-editor/helix.git
- sha256sums = SKIP
-
-pkgname = helix-git
diff --git a/pkgbuilds/helix-git/PKGBUILD b/pkgbuilds/helix-git/PKGBUILD
index 98b371df..6a5596c2 100644
--- a/pkgbuilds/helix-git/PKGBUILD
+++ b/pkgbuilds/helix-git/PKGBUILD
@@ -2,7 +2,7 @@
# Contributor: Wojciech Kępka (wojciech@wkepka.dev)
pkgname=helix-git
_pkgname=helix
-pkgver=22.12.r3061.g9dd9a72a
+pkgver=22.12.r3371.g9c42335d
pkgrel=1
pkgdesc="A text editor written in rust"
url="https://helix-editor.com"
diff --git a/pkgbuilds/helix-git/helix-git-22.12.r3371.g9c42335d-1-x86_64.pkg.tar.zst b/pkgbuilds/helix-git/helix-git-22.12.r3371.g9c42335d-1-x86_64.pkg.tar.zst
new file mode 100644
index 00000000..eaabbb80
--- /dev/null
+++ b/pkgbuilds/helix-git/helix-git-22.12.r3371.g9c42335d-1-x86_64.pkg.tar.zst
Binary files differ
diff --git a/pkgbuilds/helix-git/helix/HEAD b/pkgbuilds/helix-git/helix/HEAD
new file mode 100644
index 00000000..cb089cd8
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/HEAD
@@ -0,0 +1 @@
+ref: refs/heads/master
diff --git a/pkgbuilds/helix-git/helix/config b/pkgbuilds/helix-git/helix/config
new file mode 100644
index 00000000..2d4705bc
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/config
@@ -0,0 +1,9 @@
+[core]
+ repositoryformatversion = 0
+ filemode = true
+ bare = true
+[remote "origin"]
+ url = https://github.com/littleblack111/helix.git
+ tagOpt = --no-tags
+ fetch = +refs/*:refs/*
+ mirror = true
diff --git a/pkgbuilds/helix-git/helix/description b/pkgbuilds/helix-git/helix/description
new file mode 100644
index 00000000..498b267a
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/description
@@ -0,0 +1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/pkgbuilds/helix-git/helix/hooks/applypatch-msg.sample b/pkgbuilds/helix-git/helix/hooks/applypatch-msg.sample
new file mode 100755
index 00000000..a5d7b84a
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/applypatch-msg.sample
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message taken by
+# applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit. The hook is
+# allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "applypatch-msg".
+
+. git-sh-setup
+commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
+test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
+:
diff --git a/pkgbuilds/helix-git/helix/hooks/commit-msg.sample b/pkgbuilds/helix-git/helix/hooks/commit-msg.sample
new file mode 100755
index 00000000..b58d1184
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/commit-msg.sample
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message.
+# Called by "git commit" with one argument, the name of the file
+# that has the commit message. The hook should exit with non-zero
+# status after issuing an appropriate message if it wants to stop the
+# commit. The hook is allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "commit-msg".
+
+# Uncomment the below to add a Signed-off-by line to the message.
+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
+# hook is more suited to it.
+#
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+
+# This example catches duplicate Signed-off-by lines.
+
+test "" = "$(grep '^Signed-off-by: ' "$1" |
+ sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
+ echo >&2 Duplicate Signed-off-by lines.
+ exit 1
+}
diff --git a/pkgbuilds/helix-git/helix/hooks/fsmonitor-watchman.sample b/pkgbuilds/helix-git/helix/hooks/fsmonitor-watchman.sample
new file mode 100755
index 00000000..23e856f5
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/fsmonitor-watchman.sample
@@ -0,0 +1,174 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use IPC::Open2;
+
+# An example hook script to integrate Watchman
+# (https://facebook.github.io/watchman/) with git to speed up detecting
+# new and modified files.
+#
+# The hook is passed a version (currently 2) and last update token
+# formatted as a string and outputs to stdout a new update token and
+# all files that have been modified since the update token. Paths must
+# be relative to the root of the working tree and separated by a single NUL.
+#
+# To enable this hook, rename this file to "query-watchman" and set
+# 'git config core.fsmonitor .git/hooks/query-watchman'
+#
+my ($version, $last_update_token) = @ARGV;
+
+# Uncomment for debugging
+# print STDERR "$0 $version $last_update_token\n";
+
+# Check the hook interface version
+if ($version ne 2) {
+ die "Unsupported query-fsmonitor hook version '$version'.\n" .
+ "Falling back to scanning...\n";
+}
+
+my $git_work_tree = get_working_dir();
+
+my $retry = 1;
+
+my $json_pkg;
+eval {
+ require JSON::XS;
+ $json_pkg = "JSON::XS";
+ 1;
+} or do {
+ require JSON::PP;
+ $json_pkg = "JSON::PP";
+};
+
+launch_watchman();
+
+sub launch_watchman {
+ my $o = watchman_query();
+ if (is_work_tree_watched($o)) {
+ output_result($o->{clock}, @{$o->{files}});
+ }
+}
+
+sub output_result {
+ my ($clockid, @files) = @_;
+
+ # Uncomment for debugging watchman output
+ # open (my $fh, ">", ".git/watchman-output.out");
+ # binmode $fh, ":utf8";
+ # print $fh "$clockid\n@files\n";
+ # close $fh;
+
+ binmode STDOUT, ":utf8";
+ print $clockid;
+ print "\0";
+ local $, = "\0";
+ print @files;
+}
+
+sub watchman_clock {
+ my $response = qx/watchman clock "$git_work_tree"/;
+ die "Failed to get clock id on '$git_work_tree'.\n" .
+ "Falling back to scanning...\n" if $? != 0;
+
+ return $json_pkg->new->utf8->decode($response);
+}
+
+sub watchman_query {
+ my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
+ or die "open2() failed: $!\n" .
+ "Falling back to scanning...\n";
+
+ # In the query expression below we're asking for names of files that
+ # changed since $last_update_token but not from the .git folder.
+ #
+ # To accomplish this, we're using the "since" generator to use the
+ # recency index to select candidate nodes and "fields" to limit the
+ # output to file names only. Then we're using the "expression" term to
+ # further constrain the results.
+ my $last_update_line = "";
+ if (substr($last_update_token, 0, 1) eq "c") {
+ $last_update_token = "\"$last_update_token\"";
+ $last_update_line = qq[\n"since": $last_update_token,];
+ }
+ my $query = <<" END";
+ ["query", "$git_work_tree", {$last_update_line
+ "fields": ["name"],
+ "expression": ["not", ["dirname", ".git"]]
+ }]
+ END
+
+ # Uncomment for debugging the watchman query
+ # open (my $fh, ">", ".git/watchman-query.json");
+ # print $fh $query;
+ # close $fh;
+
+ print CHLD_IN $query;
+ close CHLD_IN;
+ my $response = do {local $/; <CHLD_OUT>};
+
+ # Uncomment for debugging the watch response
+ # open ($fh, ">", ".git/watchman-response.json");
+ # print $fh $response;
+ # close $fh;
+
+ die "Watchman: command returned no output.\n" .
+ "Falling back to scanning...\n" if $response eq "";
+ die "Watchman: command returned invalid output: $response\n" .
+ "Falling back to scanning...\n" unless $response =~ /^\{/;
+
+ return $json_pkg->new->utf8->decode($response);
+}
+
+sub is_work_tree_watched {
+ my ($output) = @_;
+ my $error = $output->{error};
+ if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
+ $retry--;
+ my $response = qx/watchman watch "$git_work_tree"/;
+ die "Failed to make watchman watch '$git_work_tree'.\n" .
+ "Falling back to scanning...\n" if $? != 0;
+ $output = $json_pkg->new->utf8->decode($response);
+ $error = $output->{error};
+ die "Watchman: $error.\n" .
+ "Falling back to scanning...\n" if $error;
+
+ # Uncomment for debugging watchman output
+ # open (my $fh, ">", ".git/watchman-output.out");
+ # close $fh;
+
+ # Watchman will always return all files on the first query so
+ # return the fast "everything is dirty" flag to git and do the
+ # Watchman query just to get it over with now so we won't pay
+ # the cost in git to look up each individual file.
+ my $o = watchman_clock();
+ $error = $output->{error};
+
+ die "Watchman: $error.\n" .
+ "Falling back to scanning...\n" if $error;
+
+ output_result($o->{clock}, ("/"));
+ $last_update_token = $o->{clock};
+
+ eval { launch_watchman() };
+ return 0;
+ }
+
+ die "Watchman: $error.\n" .
+ "Falling back to scanning...\n" if $error;
+
+ return 1;
+}
+
+sub get_working_dir {
+ my $working_dir;
+ if ($^O =~ 'msys' || $^O =~ 'cygwin') {
+ $working_dir = Win32::GetCwd();
+ $working_dir =~ tr/\\/\//;
+ } else {
+ require Cwd;
+ $working_dir = Cwd::cwd();
+ }
+
+ return $working_dir;
+}
diff --git a/pkgbuilds/helix-git/helix/hooks/post-update.sample b/pkgbuilds/helix-git/helix/hooks/post-update.sample
new file mode 100755
index 00000000..ec17ec19
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/post-update.sample
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# An example hook script to prepare a packed repository for use over
+# dumb transports.
+#
+# To enable this hook, rename this file to "post-update".
+
+exec git update-server-info
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-applypatch.sample b/pkgbuilds/helix-git/helix/hooks/pre-applypatch.sample
new file mode 100755
index 00000000..4142082b
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-applypatch.sample
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed
+# by applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-applypatch".
+
+. git-sh-setup
+precommit="$(git rev-parse --git-path hooks/pre-commit)"
+test -x "$precommit" && exec "$precommit" ${1+"$@"}
+:
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-commit.sample b/pkgbuilds/helix-git/helix/hooks/pre-commit.sample
new file mode 100755
index 00000000..29ed5ee4
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-commit.sample
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments. The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-commit".
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+ against=HEAD
+else
+ # Initial commit: diff against an empty tree object
+ against=$(git hash-object -t tree /dev/null)
+fi
+
+# If you want to allow non-ASCII filenames set this variable to true.
+allownonascii=$(git config --type=bool hooks.allownonascii)
+
+# Redirect output to stderr.
+exec 1>&2
+
+# Cross platform projects tend to avoid non-ASCII filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+ # Note that the use of brackets around a tr range is ok here, (it's
+ # even required, for portability to Solaris 10's /usr/bin/tr), since
+ # the square bracket bytes happen to fall in the designated range.
+ test $(git diff-index --cached --name-only --diff-filter=A -z $against |
+ LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+ cat <<\EOF
+Error: Attempt to add a non-ASCII file name.
+
+This can cause problems if you want to work with people on other platforms.
+
+To be portable it is advisable to rename the file.
+
+If you know what you are doing you can disable this check using:
+
+ git config hooks.allownonascii true
+EOF
+ exit 1
+fi
+
+# If there are whitespace errors, print the offending file names and fail.
+exec git diff-index --check --cached $against --
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-merge-commit.sample b/pkgbuilds/helix-git/helix/hooks/pre-merge-commit.sample
new file mode 100755
index 00000000..399eab19
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-merge-commit.sample
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git merge" with no arguments. The hook should
+# exit with non-zero status after issuing an appropriate message to
+# stderr if it wants to stop the merge commit.
+#
+# To enable this hook, rename this file to "pre-merge-commit".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+ exec "$GIT_DIR/hooks/pre-commit"
+:
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-push.sample b/pkgbuilds/helix-git/helix/hooks/pre-push.sample
new file mode 100755
index 00000000..4ce688d3
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-push.sample
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+# An example hook script to verify what is about to be pushed. Called by "git
+# push" after it has checked the remote status, but before anything has been
+# pushed. If this script exits with a non-zero status nothing will be pushed.
+#
+# This hook is called with the following parameters:
+#
+# $1 -- Name of the remote to which the push is being done
+# $2 -- URL to which the push is being done
+#
+# If pushing without using a named remote those arguments will be equal.
+#
+# Information about the commits which are being pushed is supplied as lines to
+# the standard input in the form:
+#
+# <local ref> <local oid> <remote ref> <remote oid>
+#
+# This sample shows how to prevent push of commits where the log message starts
+# with "WIP" (work in progress).
+
+remote="$1"
+url="$2"
+
+zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
+
+while read local_ref local_oid remote_ref remote_oid
+do
+ if test "$local_oid" = "$zero"
+ then
+ # Handle delete
+ :
+ else
+ if test "$remote_oid" = "$zero"
+ then
+ # New branch, examine all commits
+ range="$local_oid"
+ else
+ # Update to existing branch, examine new commits
+ range="$remote_oid..$local_oid"
+ fi
+
+ # Check for WIP commit
+ commit=$(git rev-list -n 1 --grep '^WIP' "$range")
+ if test -n "$commit"
+ then
+ echo >&2 "Found WIP commit in $local_ref, not pushing"
+ exit 1
+ fi
+ fi
+done
+
+exit 0
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-rebase.sample b/pkgbuilds/helix-git/helix/hooks/pre-rebase.sample
new file mode 100755
index 00000000..6cbef5c3
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-rebase.sample
@@ -0,0 +1,169 @@
+#!/bin/sh
+#
+# Copyright (c) 2006, 2008 Junio C Hamano
+#
+# The "pre-rebase" hook is run just before "git rebase" starts doing
+# its job, and can prevent the command from running by exiting with
+# non-zero status.
+#
+# The hook is called with the following parameters:
+#
+# $1 -- the upstream the series was forked from.
+# $2 -- the branch being rebased (or empty when rebasing the current branch).
+#
+# This sample shows how to prevent topic branches that are already
+# merged to 'next' branch from getting rebased, because allowing it
+# would result in rebasing already published history.
+
+publish=next
+basebranch="$1"
+if test "$#" = 2
+then
+ topic="refs/heads/$2"
+else
+ topic=`git symbolic-ref HEAD` ||
+ exit 0 ;# we do not interrupt rebasing detached HEAD
+fi
+
+case "$topic" in
+refs/heads/??/*)
+ ;;
+*)
+ exit 0 ;# we do not interrupt others.
+ ;;
+esac
+
+# Now we are dealing with a topic branch being rebased
+# on top of master. Is it OK to rebase it?
+
+# Does the topic really exist?
+git show-ref -q "$topic" || {
+ echo >&2 "No such branch $topic"
+ exit 1
+}
+
+# Is topic fully merged to master?
+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
+if test -z "$not_in_master"
+then
+ echo >&2 "$topic is fully merged to master; better remove it."
+ exit 1 ;# we could allow it, but there is no point.
+fi
+
+# Is topic ever merged to next? If so you should not be rebasing it.
+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
+only_next_2=`git rev-list ^master ${publish} | sort`
+if test "$only_next_1" = "$only_next_2"
+then
+ not_in_topic=`git rev-list "^$topic" master`
+ if test -z "$not_in_topic"
+ then
+ echo >&2 "$topic is already up to date with master"
+ exit 1 ;# we could allow it, but there is no point.
+ else
+ exit 0
+ fi
+else
+ not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
+ /usr/bin/perl -e '
+ my $topic = $ARGV[0];
+ my $msg = "* $topic has commits already merged to public branch:\n";
+ my (%not_in_next) = map {
+ /^([0-9a-f]+) /;
+ ($1 => 1);
+ } split(/\n/, $ARGV[1]);
+ for my $elem (map {
+ /^([0-9a-f]+) (.*)$/;
+ [$1 => $2];
+ } split(/\n/, $ARGV[2])) {
+ if (!exists $not_in_next{$elem->[0]}) {
+ if ($msg) {
+ print STDERR $msg;
+ undef $msg;
+ }
+ print STDERR " $elem->[1]\n";
+ }
+ }
+ ' "$topic" "$not_in_next" "$not_in_master"
+ exit 1
+fi
+
+<<\DOC_END
+
+This sample hook safeguards topic branches that have been
+published from being rewound.
+
+The workflow assumed here is:
+
+ * Once a topic branch forks from "master", "master" is never
+ merged into it again (either directly or indirectly).
+
+ * Once a topic branch is fully cooked and merged into "master",
+ it is deleted. If you need to build on top of it to correct
+ earlier mistakes, a new topic branch is created by forking at
+ the tip of the "master". This is not strictly necessary, but
+ it makes it easier to keep your history simple.
+
+ * Whenever you need to test or publish your changes to topic
+ branches, merge them into "next" branch.
+
+The script, being an example, hardcodes the publish branch name
+to be "next", but it is trivial to make it configurable via
+$GIT_DIR/config mechanism.
+
+With this workflow, you would want to know:
+
+(1) ... if a topic branch has ever been merged to "next". Young
+ topic branches can have stupid mistakes you would rather
+ clean up before publishing, and things that have not been
+ merged into other branches can be easily rebased without
+ affecting other people. But once it is published, you would
+ not want to rewind it.
+
+(2) ... if a topic branch has been fully merged to "master".
+ Then you can delete it. More importantly, you should not
+ build on top of it -- other people may already want to
+ change things related to the topic as patches against your
+ "master", so if you need further changes, it is better to
+ fork the topic (perhaps with the same name) afresh from the
+ tip of "master".
+
+Let's look at this example:
+
+ o---o---o---o---o---o---o---o---o---o "next"
+ / / / /
+ / a---a---b A / /
+ / / / /
+ / / c---c---c---c B /
+ / / / \ /
+ / / / b---b C \ /
+ / / / / \ /
+ ---o---o---o---o---o---o---o---o---o---o---o "master"
+
+
+A, B and C are topic branches.
+
+ * A has one fix since it was merged up to "next".
+
+ * B has finished. It has been fully merged up to "master" and "next",
+ and is ready to be deleted.
+
+ * C has not merged to "next" at all.
+
+We would want to allow C to be rebased, refuse A, and encourage
+B to be deleted.
+
+To compute (1):
+
+ git rev-list ^master ^topic next
+ git rev-list ^master next
+
+ if these match, topic has not merged in next at all.
+
+To compute (2):
+
+ git rev-list master..topic
+
+ if this is empty, it is fully merged to "master".
+
+DOC_END
diff --git a/pkgbuilds/helix-git/helix/hooks/pre-receive.sample b/pkgbuilds/helix-git/helix/hooks/pre-receive.sample
new file mode 100755
index 00000000..a1fd29ec
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/pre-receive.sample
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# An example hook script to make use of push options.
+# The example simply echoes all push options that start with 'echoback='
+# and rejects all pushes when the "reject" push option is used.
+#
+# To enable this hook, rename this file to "pre-receive".
+
+if test -n "$GIT_PUSH_OPTION_COUNT"
+then
+ i=0
+ while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
+ do
+ eval "value=\$GIT_PUSH_OPTION_$i"
+ case "$value" in
+ echoback=*)
+ echo "echo from the pre-receive-hook: ${value#*=}" >&2
+ ;;
+ reject)
+ exit 1
+ esac
+ i=$((i + 1))
+ done
+fi
diff --git a/pkgbuilds/helix-git/helix/hooks/prepare-commit-msg.sample b/pkgbuilds/helix-git/helix/hooks/prepare-commit-msg.sample
new file mode 100755
index 00000000..10fa14c5
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/prepare-commit-msg.sample
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# An example hook script to prepare the commit log message.
+# Called by "git commit" with the name of the file that has the
+# commit message, followed by the description of the commit
+# message's source. The hook's purpose is to edit the commit
+# message file. If the hook fails with a non-zero status,
+# the commit is aborted.
+#
+# To enable this hook, rename this file to "prepare-commit-msg".
+
+# This hook includes three examples. The first one removes the
+# "# Please enter the commit message..." help message.
+#
+# The second includes the output of "git diff --name-status -r"
+# into the message, just before the "git status" output. It is
+# commented because it doesn't cope with --amend or with squashed
+# commits.
+#
+# The third example adds a Signed-off-by line to the message, that can
+# still be edited. This is rarely a good idea.
+
+COMMIT_MSG_FILE=$1
+COMMIT_SOURCE=$2
+SHA1=$3
+
+/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"
+
+# case "$COMMIT_SOURCE,$SHA1" in
+# ,|template,)
+# /usr/bin/perl -i.bak -pe '
+# print "\n" . `git diff --cached --name-status -r`
+# if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
+# *) ;;
+# esac
+
+# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
+# if test -z "$COMMIT_SOURCE"
+# then
+# /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
+# fi
diff --git a/pkgbuilds/helix-git/helix/hooks/push-to-checkout.sample b/pkgbuilds/helix-git/helix/hooks/push-to-checkout.sample
new file mode 100755
index 00000000..af5a0c00
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/push-to-checkout.sample
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# An example hook script to update a checked-out tree on a git push.
+#
+# This hook is invoked by git-receive-pack(1) when it reacts to git
+# push and updates reference(s) in its repository, and when the push
+# tries to update the branch that is currently checked out and the
+# receive.denyCurrentBranch configuration variable is set to
+# updateInstead.
+#
+# By default, such a push is refused if the working tree and the index
+# of the remote repository has any difference from the currently
+# checked out commit; when both the working tree and the index match
+# the current commit, they are updated to match the newly pushed tip
+# of the branch. This hook is to be used to override the default
+# behaviour; however the code below reimplements the default behaviour
+# as a starting point for convenient modification.
+#
+# The hook receives the commit with which the tip of the current
+# branch is going to be updated:
+commit=$1
+
+# It can exit with a non-zero status to refuse the push (when it does
+# so, it must not modify the index or the working tree).
+die () {
+ echo >&2 "$*"
+ exit 1
+}
+
+# Or it can make any necessary changes to the working tree and to the
+# index to bring them to the desired state when the tip of the current
+# branch is updated to the new commit, and exit with a zero status.
+#
+# For example, the hook can simply run git read-tree -u -m HEAD "$1"
+# in order to emulate git fetch that is run in the reverse direction
+# with git push, as the two-tree form of git read-tree -u -m is
+# essentially the same as git switch or git checkout that switches
+# branches while keeping the local changes in the working tree that do
+# not interfere with the difference between the branches.
+
+# The below is a more-or-less exact translation to shell of the C code
+# for the default behaviour for git's push-to-checkout hook defined in
+# the push_to_deploy() function in builtin/receive-pack.c.
+#
+# Note that the hook will be executed from the repository directory,
+# not from the working tree, so if you want to perform operations on
+# the working tree, you will have to adapt your code accordingly, e.g.
+# by adding "cd .." or using relative paths.
+
+if ! git update-index -q --ignore-submodules --refresh
+then
+ die "Up-to-date check failed"
+fi
+
+if ! git diff-files --quiet --ignore-submodules --
+then
+ die "Working directory has unstaged changes"
+fi
+
+# This is a rough translation of:
+#
+# head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
+if git cat-file -e HEAD 2>/dev/null
+then
+ head=HEAD
+else
+ head=$(git hash-object -t tree --stdin </dev/null)
+fi
+
+if ! git diff-index --quiet --cached --ignore-submodules $head --
+then
+ die "Working directory has staged changes"
+fi
+
+if ! git read-tree -u -m "$commit"
+then
+ die "Could not update working tree to new HEAD"
+fi
diff --git a/pkgbuilds/helix-git/helix/hooks/sendemail-validate.sample b/pkgbuilds/helix-git/helix/hooks/sendemail-validate.sample
new file mode 100755
index 00000000..640bcf87
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/sendemail-validate.sample
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# An example hook script to validate a patch (and/or patch series) before
+# sending it via email.
+#
+# The hook should exit with non-zero status after issuing an appropriate
+# message if it wants to prevent the email(s) from being sent.
+#
+# To enable this hook, rename this file to "sendemail-validate".
+#
+# By default, it will only check that the patch(es) can be applied on top of
+# the default upstream branch without conflicts in a secondary worktree. After
+# validation (successful or not) of the last patch of a series, the worktree
+# will be deleted.
+#
+# The following config variables can be set to change the default remote and
+# remote ref that are used to apply the patches against:
+#
+# sendemail.validateRemote (default: origin)
+# sendemail.validateRemoteRef (default: HEAD)
+#
+# Replace the TODO placeholders with appropriate checks according to your
+# needs.
+
+validate_cover_letter () {
+ file="$1"
+ # TODO: Replace with appropriate checks (e.g. spell checking).
+ true
+}
+
+validate_patch () {
+ file="$1"
+ # Ensure that the patch applies without conflicts.
+ git am -3 "$file" || return
+ # TODO: Replace with appropriate checks for this patch
+ # (e.g. checkpatch.pl).
+ true
+}
+
+validate_series () {
+ # TODO: Replace with appropriate checks for the whole series
+ # (e.g. quick build, coding style checks, etc.).
+ true
+}
+
+# main -------------------------------------------------------------------------
+
+if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
+then
+ remote=$(git config --default origin --get sendemail.validateRemote) &&
+ ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
+ worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
+ git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
+ git config --replace-all sendemail.validateWorktree "$worktree"
+else
+ worktree=$(git config --get sendemail.validateWorktree)
+fi || {
+ echo "sendemail-validate: error: failed to prepare worktree" >&2
+ exit 1
+}
+
+unset GIT_DIR GIT_WORK_TREE
+cd "$worktree" &&
+
+if grep -q "^diff --git " "$1"
+then
+ validate_patch "$1"
+else
+ validate_cover_letter "$1"
+fi &&
+
+if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"
+then
+ git config --unset-all sendemail.validateWorktree &&
+ trap 'git worktree remove -ff "$worktree"' EXIT &&
+ validate_series
+fi
diff --git a/pkgbuilds/helix-git/helix/hooks/update.sample b/pkgbuilds/helix-git/helix/hooks/update.sample
new file mode 100755
index 00000000..c4d426bc
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/hooks/update.sample
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# An example hook script to block unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+# This boolean sets whether unannotated tags will be allowed into the
+# repository. By default they won't be.
+# hooks.allowdeletetag
+# This boolean sets whether deleting tags will be allowed in the
+# repository. By default they won't be.
+# hooks.allowmodifytag
+# This boolean sets whether a tag may be modified after creation. By default
+# it won't be.
+# hooks.allowdeletebranch
+# This boolean sets whether deleting branches will be allowed in the
+# repository. By default they won't be.
+# hooks.denycreatebranch
+# This boolean sets whether remotely creating branches will be denied
+# in the repository. By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+ echo "Don't run this script from the command line." >&2
+ echo " (if you want, you could supply GIT_DIR then run" >&2
+ echo " $0 <ref> <oldrev> <newrev>)" >&2
+ exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+ echo "usage: $0 <ref> <oldrev> <newrev>" >&2
+ exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --type=bool hooks.allowunannotated)
+allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
+allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
+allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+ echo "*** Project description file hasn't been set" >&2
+ exit 1
+ ;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
+if [ "$newrev" = "$zero" ]; then
+ newrev_type=delete
+else
+ newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+ refs/tags/*,commit)
+ # un-annotated tag
+ short_refname=${refname##refs/tags/}
+ if [ "$allowunannotated" != "true" ]; then
+ echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
+ echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,delete)
+ # delete tag
+ if [ "$allowdeletetag" != "true" ]; then
+ echo "*** Deleting a tag is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,tag)
+ # annotated tag
+ if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+ then
+ echo "*** Tag '$refname' already exists." >&2
+ echo "*** Modifying a tag is not allowed in this repository." >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,commit)
+ # branch
+ if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+ echo "*** Creating a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,delete)
+ # delete branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/remotes/*,commit)
+ # tracking branch
+ ;;
+ refs/remotes/*,delete)
+ # delete tracking branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ *)
+ # Anything else (is there anything else?)
+ echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+ exit 1
+ ;;
+esac
+
+# --- Finished
+exit 0
diff --git a/pkgbuilds/helix-git/helix/info/attributes b/pkgbuilds/helix-git/helix/info/attributes
new file mode 100644
index 00000000..1c897b76
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/info/attributes
@@ -0,0 +1 @@
+* -export-subst -export-ignore
diff --git a/pkgbuilds/helix-git/helix/info/exclude b/pkgbuilds/helix-git/helix/info/exclude
new file mode 100644
index 00000000..a5196d1b
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/info/exclude
@@ -0,0 +1,6 @@
+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~
diff --git a/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.idx b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.idx
new file mode 100644
index 00000000..fea66c9e
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.idx
Binary files differ
diff --git a/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack
new file mode 100644
index 00000000..b0baf25f
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack
Binary files differ
diff --git a/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev
new file mode 100644
index 00000000..32eee249
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev
Binary files differ
diff --git a/pkgbuilds/helix-git/helix/packed-refs b/pkgbuilds/helix-git/helix/packed-refs
new file mode 100644
index 00000000..69d66191
--- /dev/null
+++ b/pkgbuilds/helix-git/helix/packed-refs
@@ -0,0 +1,65 @@
+# pack-refs with: peeled fully-peeled sorted
+d83477317ba9761b26c2f0ad6e2b24e317fe8758 refs/heads/autoclose-shell-command
+c37adbf7e6cfb7f26bfabeccfb55389530d81676 refs/heads/ctrljk
+766079eb40a288f7a1abfd3ea5ae04e1b8fb80c8 refs/heads/ctrljknoarrow
+b3a13d54c952361bef177dd83c0aed70733b6978 refs/heads/ctrljknoarrow-enhanced
+956d72e3d10133efd2b18245007bd83011f55533 refs/heads/ctrlyforconfirm
+5a9b68e12c5e567a91ffe94eef31743ef77c0240 refs/heads/ctrlyforconfirm-enhanced
+4a4b1deca1ce964b6c320001f53efa00846084ce refs/heads/enable-keycode-disambiguation
+5abf51dd13eef4a5ce7227299de6a8fb732c8a01 refs/heads/fix-block-cursor-terminal
+909727264988db2b8ae436c91460ce0b0ab08efd refs/heads/gh-pages
+aa1414193192d433d44eaddb2c54f3f80c85343a refs/heads/gotobuffer
+86b1d970c20645dfc6c2f0369ba320b73a2892da refs/heads/gui
+f4c8647a7deca64d9060f99689ec79fc6090d2e7 refs/heads/interactive-global-search
+de58e632ff972168791fed8c0747e02cbeac62ce refs/heads/macro-keybinds
+209558645a0a00660e74b0e14e6ec0a0b1fac590 refs/heads/master
+9c42335d69a770636e1a7695a895e1c0de3f3b75 refs/heads/merges
+6eade8e33f0391fb33c1900f546b0615f4e1178a refs/heads/patch-1
+bd6f126ef654cbbaedf23fda6d66d9e88f9d5ebe refs/heads/patchy
+ec8755d72645226a6959233f9adc7cb1fc715d9b refs/heads/plugins-system
+bddf749fba7b078f0fa212948c2eef68df5d2076 refs/heads/search
+a1228e0aa1757e5c15da18be4ff2920c93454eec refs/heads/set-title
+7b47ce32aa4cbe842c3a70c5c0cfd0ab87e928ab refs/heads/snippets
+7a51085e8a1224141c30d0bd29e6cc1e57318f87 refs/heads/termwiz
+b1f081fa74bd76c29205a3952b4b4c18c889960e refs/heads/workspace-dyn-picker
+8f5db4b96bed3e5beee3d2bec23bdb66fd0d2172 refs/tags/22.03
+^d4e45fd47932466b83baa04111350a04923fbff8
+116681af7c67927058b227d9d97c1ae78f20d2ed refs/tags/22.05
+^27609f50652e28b9bb7a190322fbb8f7c4479c28
+620a8aa1ec4acef6dd98fef57107a2cb87cf7347 refs/tags/22.08
+^ee94031fc48ca0a4437c543221266a38e8e1ff87
+afb6ad3ef40322f3fc181ca8b785e89be8f826ad refs/tags/22.08.1
+^66276ce630cead06c84394768927fe20490d0638
+288a7e55283c07eb1442adab5d776ba75a48301b refs/tags/22.12
+^96ff64a84a4948b0aa85a453276cb0091fb9c792
+a3d5a27a28f216634a0bc966dc701924e3cad6fd refs/tags/v0.0.10
+^59f94d13b8d61ce338ecf4957c6b4ad945021009
+726072085d019b1ce9e3cdf4e1557a1148723482 refs/tags/v0.0.2
+fe4a1f0a5eeafaef83d3abaff89f2c0b19c23a5d refs/tags/v0.0.3
+^f1dc25a7741ebec630a09eaf7c7c3c91947f5078
+024db26b09c6dfeea219aad5499f0a5a07b39efd refs/tags/v0.0.4
+^c67e31830dda2858d9e4728387920b13eb5a01e4
+f70390a69ae2d8f00e46e0a74bcf7657044e4eec refs/tags/v0.0.5
+^8fd800604334679fa42b6b1fb7b06f92c8c34d1c
+02d4cad84901e8d654a914db601d7280ebb7b1ab refs/tags/v0.0.6
+^c2e6b9f506fddec15e48bd06cf712aef2bf53e3c
+c5a4392393c3ca9c95a4c25fdf2ceba8352eb59b refs/tags/v0.0.7
+^cbb3ebafdc6f2473264ad7cde99ddfff5a80a832
+ee8d988a52787e9f8765d812b6ccb952a3b3a1ec refs/tags/v0.0.8
+^2719a35123e2b4000a0b2b863c929dd2824fff9a
+22b7d40ddd3cedd471b465cdda1a02f2451fa586 refs/tags/v0.0.9
+^7e8603247d5b7ba90bb095afd36fd2058cc53ec6
+950f35fbd47b21f6e4801f12d2d0e030a47687f8 refs/tags/v0.2.0
+^ae5ecfdf66102200693472a60929adb27a88b2e4
+4414b39effffa8f8a9c5c6ce7a789974db016e30 refs/tags/v0.2.1
+^1bda4541491bf0fc8129214bb52515a32b8d4978
+4893867c9806f2ebb73a655c04ec7fa0104f1b8a refs/tags/v0.3.0
+^44566ea812eed023c89ab49b59f62e76ef2bd6c7
+015ac72457b4b0b7b9ac095a2ca87dd710640ed2 refs/tags/v0.4.0
+^3de40de0a9b946175de99576a013e1cfcabbc630
+3441745aa6081b210e2e1c93a61b44a52cd1718d refs/tags/v0.4.1
+^1caedc18ca47d07b30a5997c092f2683cce3042e
+610a098bd4aae4fe8b1b13ca69e31204bef04320 refs/tags/v0.5.0
+^a1b7f003a6ea61b2a77056ce8865a779b3452975
+c732055b34b8a71deca27e4d814e4d87fd99820d refs/tags/v0.6.0
+^ac1b7d8d0a608f47edfee2872d414e94fd26cc31
diff --git a/pkgbuilds/hyprland-git/PKGBUILD b/pkgbuilds/hyprland-git/PKGBUILD
index a8c009a8..4f4b1bf7 100644
--- a/pkgbuilds/hyprland-git/PKGBUILD
+++ b/pkgbuilds/hyprland-git/PKGBUILD
@@ -5,7 +5,7 @@
_pkgname="hyprland"
pkgname="$_pkgname-git"
-pkgver=0.51.0.r31.g82057ab
+pkgver=0.51.0.r78.g2a88726
pkgrel=1
pkgdesc="Hyprland is an independent, highly customizable, dynamic tiling Wayland compositor that doesn't sacrifice on its looks"
arch=('x86_64' 'aarch64')
@@ -97,7 +97,7 @@ prepare() {
git remote add fork https://github.com/3l0w/Hyprland.git
git pull fork feat/input-capture-impl
git submodule init
- echo anb
+ git revert 5a2086 --no-edit --no-gpg-sign
git config submodule.subprojects/udis86.url "${srcdir}/udis86"
git config submodule.subprojects/tracy.update none
git -c protocol.file.allow=always submodule update