diff options
66 files changed, 2796 insertions, 239 deletions
@@ -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 Binary files differindex 2df662da..e8b5182d 100644 --- a/dot-config/dconf/user +++ b/dot-config/dconf/user 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 Binary files differnew file mode 100644 index 00000000..eaabbb80 --- /dev/null +++ b/pkgbuilds/helix-git/helix-git-22.12.r3371.g9c42335d-1-x86_64.pkg.tar.zst 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 Binary files differnew file mode 100644 index 00000000..fea66c9e --- /dev/null +++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.idx diff --git a/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack Binary files differnew file mode 100644 index 00000000..b0baf25f --- /dev/null +++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.pack diff --git a/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev Binary files differnew file mode 100644 index 00000000..32eee249 --- /dev/null +++ b/pkgbuilds/helix-git/helix/objects/pack/pack-0f0851ab664018c971c3c63aeac6a87dd19a1839.rev 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 |
