Compare commits

..

10 Commits

Author SHA1 Message Date
a759ac8dd2
feat: massive cleanup, kctx cache 2025-04-05 06:31:22 +00:00
23d1e06c20
feat: cleanup aliases, arkenfox 2025-02-25 12:38:38 +00:00
308bdf15f7
fix: typo 2025-02-17 06:13:48 +00:00
98ec0130fd
feat: bookmarks 2025-02-17 06:08:25 +00:00
ddd00d7844
cleanup 2025-01-30 13:55:36 +00:00
ddbc24a33f
cleanup 2025-01-17 14:21:47 +00:00
72c73f9b18
big update 2024-12-27 11:43:30 +00:00
833e967aee
feat: small fixes 2024-11-19 02:22:32 +00:00
421674018f
feat: bash completion cache 2024-11-16 15:19:20 +08:00
d6aece2460
fix: date display, update newsraft, picom confs 2024-11-13 00:52:03 +08:00
80 changed files with 2109 additions and 805 deletions

View File

@ -5,10 +5,10 @@ export XDG_STATE_HOME="$HOME/.local/state"
export XDG_CONFIG_DIRS=/etc/xdg export XDG_CONFIG_DIRS=/etc/xdg
export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" export XDG_DATA_DIRS="$XDG_DATA_HOME/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
HISTFILE="$XDG_STATE_HOME/bash_history" export HISTFILE="$XDG_STATE_HOME/bash_history"
HISTCONTROL=ignoreboth export HISTCONTROL=ignoreboth
HISTSIZE=65536 export HISTSIZE=65536
SAVEHIST=8192 export SAVEHIST=8192
export LESSHISTFILE='-' export LESSHISTFILE='-'
@ -18,11 +18,14 @@ export KUBECACHEDIR="$XDG_CACHE_HOME/kube"
export PYTHON_HISTORY="$XDG_STATE_HOME/python_history" export PYTHON_HISTORY="$XDG_STATE_HOME/python_history"
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python" export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python"
export GOPATH="$XDG_DATA_HOME/go"
export GOTELEMETRY=off
export W3M_DIR="$XDG_STATE_HOME/w3m" export W3M_DIR="$XDG_STATE_HOME/w3m"
export PATH="$HOME/.local/bin:$XDG_DATA_HOME/flatpak/exports/bin:/var/lib/flatpak/exports/bin:$PATH" export PATH="$HOME/.local/bin:$XDG_DATA_HOME/flatpak/exports/bin:/var/lib/flatpak/exports/bin:$PATH"
export BROWSER=org.mozilla.firefox export BROWSER=firefox
export EDITOR=nvim export EDITOR=nvim
export VISUAL=nvim export VISUAL=nvim
export PAGER=less export PAGER=less
@ -31,11 +34,13 @@ export MAKEFLAGS='-j'
export PASSWORD_STORE_ENABLE_EXTENSIONS=true export PASSWORD_STORE_ENABLE_EXTENSIONS=true
export DOCKER_BUILDKIT=0 # i/o timeout
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock" export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
export SSH_AUTH_SOCK; SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" export SSH_AUTH_SOCK; SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
# shellcheck disable=SC2046
systemctl --user import-environment PATH $(compgen -v XDG)
[ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ] && { [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ] && {
GUILOG="$HOME/.local/state/gui.log" GUILOG="$HOME/.local/state/gui.log"

View File

@ -6,6 +6,7 @@ FZF_ALT_C_OPTS=--walker=dir
. /usr/share/fzf/key-bindings.bash . /usr/share/fzf/key-bindings.bash
shopt -s autocd shopt -s autocd
shopt -s globstar
for f in "$XDG_CONFIG_HOME/bash"/*.bash; do for f in "$XDG_CONFIG_HOME/bash"/*.bash; do
# shellcheck disable=SC1090 # shellcheck disable=SC1090

View File

@ -1,8 +1,8 @@
[duhayon] [duhayon]
source = imaps://ange@duhayon.com@ssl0.ovh.net source = imaps://ange@duhayon.com@ssl0.ovh.net
source-cred-cmd = pass show duhayoncom/ange@duhayon.com | head -n1 source-cred-cmd = pass show email/ange@duhayon.com | head -n1
outgoing = smtps://ange@duhayon.com@ssl0.ovh.net outgoing = smtps://ange@duhayon.com@ssl0.ovh.net
outgoing-cred-cmd = pass show duhayoncom/ange@duhayon.com | head -n1 outgoing-cred-cmd = pass show email/ange@duhayon.com | head -n1
default = INBOX default = INBOX
from = "Ange DUHAYON" <ange@duhayon.com> from = "Ange DUHAYON" <ange@duhayon.com>
cache-headers = true cache-headers = true
@ -11,9 +11,9 @@ signature-file = ~/.config/aerc/signature.txt
[yw5n] [yw5n]
source = imaps://ange@yw5n.com@ssl0.ovh.net source = imaps://ange@yw5n.com@ssl0.ovh.net
source-cred-cmd = pass show yw5ncom/ange@yw5n.com | head -n1 source-cred-cmd = pass show email/ange@yw5n.com | head -n1
outgoing = smtps://ange@yw5n.com@ssl0.ovh.net outgoing = smtps://ange@yw5n.com@ssl0.ovh.net
outgoing-cred-cmd = pass show yw5ncom/ange@yw5n.com | head -n1 outgoing-cred-cmd = pass show email/ange@yw5n.com | head -n1
default = INBOX default = INBOX
from = "Ange DUHAYON" <ange@yw5n.com> from = "Ange DUHAYON" <ange@yw5n.com>
cache-headers = true cache-headers = true

View File

@ -1,6 +0,0 @@
output HDMI-A-0
off
output eDP
mode 1920x1080
pos 0x0
rate 60.00

View File

@ -1 +0,0 @@
eDP 00ffffffffffff0009e5d50800000000231d0104a5221378030b95935c59932a20505400000001010101010101010101010101010101043a803671381e403020360058c21000001a000000000000000000000000000000000000000000fe00424f452043510a202020202020000000fe004e5431353646484d2d4e34330a000e

View File

@ -1,3 +0,0 @@
#!/bin/bash
feh --bg-fill "$XDG_CONFIG_HOME/wallpapers/mount_cook.jpg" --no-fehbg

View File

@ -1,2 +0,0 @@
[config]
skip-options=crtc,gamma,x-prop-colorspace,x-prop-max_bpc,x-prop-non_desktop,x-prop-scaling_mode,x-prop-tearfree,x-prop-underscan,x-prop-underscan_hborder,x-prop-underscan_vborder,

View File

@ -3,11 +3,13 @@ function _compalias() {
name="${COMP_WORDS[0]}" name="${COMP_WORDS[0]}"
val="${BASH_ALIASES[$name]}" val="${BASH_ALIASES[$name]}"
[ -z "$val" ] && return 1 if [ -z "$val" ]; then
return 1
fi
read -ra valarr <<< "$val" read -ra valarr <<< "$val"
COMP_WORDS=("${valarr[@]}" "${COMP_WORDS[@]:1}") COMP_WORDS=("${valarr[@]}" "${COMP_WORDS[@]:1}")
COMP_LINE="${COMP_LINE//$name/$val}" COMP_LINE="${COMP_LINE//$name/$val}"
COMP_CWORD="$((${#COMP_WORDS[@]} - 1))" COMP_CWORD=$((${#COMP_WORDS[@]} - 1))
COMP_POINT="${#COMP_LINE}" COMP_POINT="${#COMP_LINE}"
fn="$(complete -p "${COMP_WORDS[0]}" | grep -Po -- '-F\s+\K\w+')" fn="$(complete -p "${COMP_WORDS[0]}" | grep -Po -- '-F\s+\K\w+')"
"$fn" "${COMP_WORDS[0]}" "${COMP_WORDS[-1]}" "${COMP_WORDS[-2]}" "$fn" "${COMP_WORDS[0]}" "${COMP_WORDS[-1]}" "${COMP_WORDS[-2]}"

View File

@ -1,5 +1,31 @@
function am() {
local name dev lsblk
while true; do
mapfile -t lsblk < <(lsblk -n --paths --list | grep part)
COLUMNS=1
select dev in "${lsblk[@]}"; do
if [ -z "$dev" ]; then
break
fi
name="$(awk '{print $1}' <<< "$dev")"
if mount | grep -q "$name"; then
umount "$name"
else
cd "$(udisksctl mount -b "$name" | awk '{print $NF}')"
return
fi
break
done || return
done
}
function bat() { function bat() {
[ -z "$1" ] && return 1 if [ -z "$1" ]; then
return 1
fi
TERM='tty' $EDITOR --cmd "set lines=$(grep -c '' "$1")" +redraw +q "$1" TERM='tty' $EDITOR --cmd "set lines=$(grep -c '' "$1")" +redraw +q "$1"
} }
@ -7,43 +33,53 @@ function bd() {
echo "$@" | base64 -d; echo echo "$@" | base64 -d; echo
} }
function gi() {
curl -fL "https://www.toptal.com/developers/gitignore/api/$(printf '%s\n' "$@" | sort -u | paste -sd,)"
}
function update() { function update() {
$TERM --hold -e "$SHELL" -ic "pac -Syu && echo -e '\e[32mDONE'" & $TERM --hold -e "$SHELL" -xc "sudo pacman -Syu && echo $'\e[32mDONE'" &
$TERM --hold -e "$SHELL" -ic "flatpak update && echo -e '\e[32mDONE'" & $TERM --hold -e "$SHELL" -xc "flatpak update && echo -e $'\e[32mDONE'" &
$TERM --hold -e "$SHELL" -ic "cd && c submodule update --remote --recursive && echo -e '\e[32mDONE'" & $TERM --hold -e "$SHELL" -xc "git --git-dir='$HOME/.dotfiles/' --work-tree='$HOME' submodule update --remote --recursive && echo $'\e[32mDONE'" &
} }
function tmp() { function tmp() {
cd "$(mktemp -d --tmpdir "$1"XXX)" || return cd "$(mktemp -d "$1"XXX)" || return
} }
alias ...='../..' \ alias -- \
....='../../..' \ -='cd -' \
.....='../../../..' \ ......='../../../../..' \
......='../../../../..' \ .....='../../../..' \
c='git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"' \ ....='../../..' \
cp='cp -vi' \ ...='../..' \
diff='diff --color' \ c='git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME"' \
feh='feh --auto-zoom --scale-down' \ cp='cp -vi' \
g=git \ diff='diff --color' \
grep='grep --color --exclude-dir={.cache,.git,.idea,.venv,.vscode,node_modules}' \ feh='feh --auto-zoom --scale-down' \
l='ll -a' \ g=git \
la='ll -A' \ grep='grep --color --exclude-dir={.cache,.git,.idea,.venv,.vscode,node_modules}' \
ll='ls -lh' \ ip='ip -c=auto' \
ls='ls --color' \ l='ll -a' \
mail=aerc \ la='ll -A' \
mkdir='mkdir -v' \ ll='ls -lh' \
mv='mv -vi' \ ls='ls --color' \
neofetch=fastfetch \ mail=aerc \
pac='sudo pacman' \ mkdir='mkdir -v' \
qcp='qcp -o tabsize=4' \ mv='mv -vi' \
qmv='qmv -o tabsize=4' \ neofetch=fastfetch \
rm='rm -vI' \ qcp='qcp -o tabsize=4' \
rss=newsraft \ qmv='qmv -o tabsize=4' \
rsync='rsync -P' \ rm='rm -vI' \
ssh='TERM=xterm-256color ssh' \ rss=newsraft \
sudo='sudo ' \ rsync='rsync -P' \
vi='$EDITOR' \ ssh='TERM=xterm-256color ssh' \
watch='watch -c ' \ sudo='sudo ' \
xargs='xargs ' \ vi='$EDITOR' \
xmr='monero-wallet-cli --daemon-address monero.maby.dev:18081 --trusted-daemon --log-file=/tmp/monero-wallet-cli.log --wallet-file /home/ange/.config/monero/ange' watch='watch -c ' \
waydroid='cage -- waydroid' \
xargs='xargs ' \
xmr='monero-wallet-cli --daemon-address monero.maby.dev:18081 --trusted-daemon --log-file=/tmp/monero-wallet-cli.log --wallet-file $XDG_CONFIG_HOME/monero/ange'
. /usr/share/git/completion/git-completion.bash
$(complete -p git) g c

View File

@ -4,10 +4,9 @@ compalias dk='podman' \
dkcc='podman container create' \ dkcc='podman container create' \
dkci='podman container inspect' \ dkci='podman container inspect' \
dkcls='podman container ls' \ dkcls='podman container ls' \
dkclsa='podman container ls -a' \ dkclsa='podman container ls -a --external' \
dkclsaq='podman container ls -a -q' \ dkclsaq='podman container ls -a -q --external' \
dkclsq='podman container ls -q' \ dkclsq='podman container ls -q' \
dkcrm!='podman container rm -f' \
dkcrm='podman container rm' \ dkcrm='podman container rm' \
dkcsp='podman container stop' \ dkcsp='podman container stop' \
dkcst='podman container restart' \ dkcst='podman container restart' \
@ -21,7 +20,6 @@ compalias dk='podman' \
dkilsaq='podman image ls -a -q' \ dkilsaq='podman image ls -a -q' \
dkilsq='podman image ls -q' \ dkilsq='podman image ls -q' \
dkip='podman image push' \ dkip='podman image push' \
dkirm!='podman image rm -f' \
dkirm='podman image rm' \ dkirm='podman image rm' \
dkis='podman image save' \ dkis='podman image save' \
dkit='podman image tag' \ dkit='podman image tag' \
@ -31,51 +29,45 @@ compalias dk='podman' \
dkni='podman network inspect' \ dkni='podman network inspect' \
dknls='podman network ls' \ dknls='podman network ls' \
dknlsq='podman network ls -q' \ dknlsq='podman network ls -q' \
dknrm!='podman network rm -f' \
dknrm='podman network rm' \ dknrm='podman network rm' \
dksys='podman system' \ dksys='podman system' \
dksysdf='podman system df' \ dksysdf='podman system df' \
dksysp!='podman system prune -f' \
dksysp='podman system prune' \
dktop='podman top' \ dktop='podman top' \
dkv='podman volume' \ dkv='podman volume' \
dkvc='podman volume create' \ dkvc='podman volume create' \
dkvi='podman volume inspect' \ dkvi='podman volume inspect' \
dkvls='podman volume ls' \ dkvls='podman volume ls' \
dkvlsq='podman volume ls -q' \ dkvlsq='podman volume ls -q' \
dkvrm!='podman volume rm -f' \
dkvrm='podman volume rm' dkvrm='podman volume rm'
alias dc='docker-compose' \ compalias dc='docker-compose' \
dcb!='docker-compose build --no-cache' \ dcb='docker-compose build' \
dcb='docker-compose build' \ dccls='docker-compose ps' \
dccls='docker-compose ps' \ dcclsq='docker-compose ps -q' \
dcclsq='docker-compose ps -q' \ dcd='docker-compose down' \
dcd='docker-compose down' \ dcex='docker-compose exec' \
dcex='docker-compose exec' \ dcl='docker-compose pull' \
dcl='docker-compose pull' \ dcr='docker-compose run --rm' \
dcr='docker-compose run --rm' \ dcrd='docker-compose run -d --rm' \
dcrd='docker-compose run -d --rm' \ dcrm='docker-compose rm' \
dcrm!='docker-compose rm -f' \ dcrmv='docker-compose rm -v' \
dcrm='docker-compose rm' \ dcsp='docker-compose stop' \
dcrmv!='docker-compose rm -v -f' \ dcst='docker-compose restart' \
dcrmv='docker-compose rm -v' \ dcup='docker-compose up' \
dcsp='docker-compose stop' \ dcupb='docker-compose up --build' \
dcst='docker-compose restart' \ dcupd='docker-compose up -d' \
dcup='docker-compose up' \ dcupdb='docker-compose up -d --build' \
dcupb='docker-compose up --build' \ dcw='docker-compose up --build -w'
dcupd='docker-compose up -d' \
dcupdb='docker-compose up -d --build' \
dcw='docker-compose watch'
function dkb() { function dkb() {
local name="${1:-${PWD##*/}}"; shift local name="${1:-${PWD##*/}}"; shift
docker build . -t "$name" "$@" podman build . -t "$name" "$@"
} }
function dkr() { function dkr() {
[ -z "$1" ] && set -- "${PWD##*/}" if [ -z "$1" ]; then
set -- "${PWD##*/}"
docker run -i -t "$@" fi
podman run -i -t "$@"
} }

View File

@ -1,5 +0,0 @@
function gi() {
local IFS=,
curl -fL "https://www.toptal.com/developers/gitignore/api/$*"
}

View File

@ -1,162 +1,100 @@
function _kctxns() {
local conf="${KUBECONFIG:-"$HOME/.kube/config"}"
local tmp cache file="$1" func="$2"; shift 2
mapfile -t cache < "$file"
if [ "$conf" -nt "$file" ]; then
tmp="$(_"$func"_get)"
if [ "$tmp" != "${cache[0]}" ]; then
cache[1]="${cache[0]}"
fi
cache[0]="$tmp"
echo -e "${cache[0]}\n${cache[1]}" > "$file"
fi
if [ -z "$1" ]; then
echo "${cache[0]}"
return
fi
if [ "$1" == - ]; then
set -- "${cache[1]}" "${cache[0]}"
else
if [ "$1" == "${cache[0]}" ]; then
return
fi
set -- "$1" "${cache[0]}"
fi
_"$func"_set "$1" || return
echo -e "$1\n$2" > "$file"
}
function _kns_get() {
kubectl config view --minify -ojsonpath='{..namespace}'
}
function _kns_set() {
if ! kubectl get namespace -oname | grep -q "^namespace/$1\$"; then
echo "error: no namespace exists with the name: \"$1\"" >&2
return 1
fi
kubectl config set-context --current --namespace "$1" > /dev/null
echo "Switched to namespace \"$1\"."
}
function kns() { function kns() {
local cache="$XDG_CACHE_HOME/${FUNCNAME[0]}" local dir="$XDG_CACHE_HOME/kns"
if [ -n "$1" ]; then mkdir -p "$dir" > /dev/null
if ! kubectl get namespace -o name | grep -q "^namespace/$1\$"; then _kctxns "$dir/$(kctx)" kns "$@"
echo "error: no namespace exists with the name: \"$1\"" >&2
return 1
fi
kubectl config set-context --current --namespace "$1" > /dev/null
else
if [ "${KUBECONFIG:-"$HOME/.kube/config"}" -nt "$cache" ]; then
set -- "$(kubectl config view --minify -o jsonpath='{..namespace}')"
else
cat "$cache"
return
fi
fi
tee "$cache" <<< "$1"
} }
function kctx() { function _kctx_get() { kubectl config current-context ; }
local cache="$XDG_CACHE_HOME/${FUNCNAME[0]}" function _kctx_set() { kubectl config use-context "$1" ; }
# shellcheck disable=SC2120
function kctx() { _kctxns "$XDG_CACHE_HOME/kctx" kctx "$@" ; }
if [ -n "$1" ]; then alias kga='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)"' \
kubectl config use-context "$1" > /dev/null || return kgaoname='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)" -oname' \
else kgaowide='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)" -owide' \
if [ "${KUBECONFIG:-"$HOME/.kube/config"}" -nt "$cache" ]; then kgaoyaml='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)" -oyaml'
set -- "$(kubectl config current-context)"
else
cat "$cache"
return
fi
fi
tee "$cache" <<< "$1"
}
alias kga='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)"'
. /usr/share/bash-completion/completions/kubectl . /usr/share/bash-completion/completions/kubectl
compalias k=kubectl \ compalias k=kubectl \
ka='kubectl apply --recursive -f' \ ka='kubectl apply --recursive -f' \
kd='kubectl describe' \ kd='kubectl describe' \
kdcj='kubectl describe cronjob' \
kdcm='kubectl describe configmap' \
kddep='kubectl describe deployment' \
kding='kubectl describe ingress' \
kdj='kubectl describe job' \
kdno='kubectl describe node' \
kdns='kubectl describe namespace' \
kdpo='kubectl describe pod' \
kdpvc='kubectl describe persistentvolumeclaim' \
kdsec='kubectl describe secret' \
kdsts='kubectl describe statefulset' \
kdsvc='kubectl describe service' \
kex='kubectl exec -i -t' \ kex='kubectl exec -i -t' \
kg='kubectl get' \ kg='kubectl get' \
kgall='kubectl get --all-namespaces' \
kgalloname='kubectl get --all-namespaces -o name' \
kgallowide='kubectl get --all-namespaces -o wide' \
kgalloyaml='kubectl get --all-namespaces -o yaml' \
kgcj='kubectl get cronjob' \
kgcjall='kubectl get cronjob --all-namespaces' \
kgcjalloname='kubectl get cronjob --all-namespaces -o name' \
kgcjallowide='kubectl get cronjob --all-namespaces -o wide' \
kgcjalloyaml='kubectl get cronjob --all-namespaces -o yaml' \
kgcjoname='kubectl get cronjob -o name' \
kgcjowide='kubectl get cronjob -o wide' \
kgcjoyaml='kubectl get cronjob -o yaml' \
kgcm='kubectl get configmap' \
kgcmall='kubectl get configmap --all-namespaces' \
kgcmalloname='kubectl get configmap --all-namespaces -o name' \
kgcmallowide='kubectl get configmap --all-namespaces -o wide' \
kgcmalloyaml='kubectl get configmap --all-namespaces -o yaml' \
kgcmoname='kubectl get configmap -o name' \
kgcmowide='kubectl get configmap -o wide' \
kgcmoyaml='kubectl get configmap -o yaml' \
kgdep='kubectl get deployment' \
kgdepall='kubectl get deployment --all-namespaces' \
kgdepalloname='kubectl get deployment --all-namespaces -o name' \
kgdepallowide='kubectl get deployment --all-namespaces -o wide' \
kgdepalloyaml='kubectl get deployment --all-namespaces -o yaml' \
kgdeponame='kubectl get deployment -o name' \
kgdepowide='kubectl get deployment -o wide' \
kgdepoyaml='kubectl get deployment -o yaml' \
kging='kubectl get ingress' \
kgingall='kubectl get ingress --all-namespaces' \
kgingalloname='kubectl get ingress --all-namespaces -o name' \
kgingallowide='kubectl get ingress --all-namespaces -o wide' \
kgingalloyaml='kubectl get ingress --all-namespaces -o yaml' \
kgingoname='kubectl get ingress -o name' \
kgingowide='kubectl get ingress -o wide' \
kgingoyaml='kubectl get ingress -o yaml' \
kgj='kubectl get job' \
kgjall='kubectl get job --all-namespaces' \
kgjalloname='kubectl get job --all-namespaces -o name' \
kgjallowide='kubectl get job --all-namespaces -o wide' \
kgjalloyaml='kubectl get job --all-namespaces -o yaml' \
kgjoname='kubectl get job -o name' \
kgjowide='kubectl get job -o wide' \
kgjoyaml='kubectl get job -o yaml' \
kgno='kubectl get node' \ kgno='kubectl get node' \
kgns='kubectl get namespace' \
kgnsoname='kubectl get namespace -o name' \
kgnsowide='kubectl get namespace -o wide' \
kgnsoyaml='kubectl get namespace -o yaml' \
kgoname='kubectl get -o name' \
kgowide='kubectl get -o wide' \
kgoyaml='kubectl get -o yaml' \
kgpo='kubectl get pod' \
kgpoall='kubectl get pod --all-namespaces' \
kgpoalloname='kubectl get pod --all-namespaces -o name' \
kgpoallowide='kubectl get pod --all-namespaces -o wide' \
kgpoalloyaml='kubectl get pod --all-namespaces -o yaml' \
kgpooname='kubectl get pod -o name' \
kgpoowide='kubectl get pod -o wide' \
kgpooyaml='kubectl get pod -o yaml' \
kgpvc='kubectl get persistentvolumeclaim' \
kgpvcall='kubectl get persistentvolumeclaim --all-namespaces' \
kgpvcalloname='kubectl get persistentvolumeclaim --all-namespaces -o name' \
kgpvcallowide='kubectl get persistentvolumeclaim --all-namespaces -o wide' \
kgpvcalloyaml='kubectl get persistentvolumeclaim --all-namespaces -o yaml' \
kgpvconame='kubectl get persistentvolumeclaim -o name' \
kgpvcowide='kubectl get persistentvolumeclaim -o wide' \
kgpvcoyaml='kubectl get persistentvolumeclaim -o yaml' \
kgsec='kubectl get secret' \
kgsecall='kubectl get secret --all-namespaces' \
kgsecalloname='kubectl get secret --all-namespaces -o name' \
kgsecallowide='kubectl get secret --all-namespaces -o wide' \
kgsecalloyaml='kubectl get secret --all-namespaces -o yaml' \
kgseconame='kubectl get secret -o name' \
kgsecowide='kubectl get secret -o wide' \
kgsecoyaml='kubectl get secret -o yaml' \
kgsts='kubectl get statefulset' \
kgstsall='kubectl get statefulset --all-namespaces' \
kgstsalloname='kubectl get statefulset --all-namespaces -o name' \
kgstsallowide='kubectl get statefulset --all-namespaces -o wide' \
kgstsalloyaml='kubectl get statefulset --all-namespaces -o yaml' \
kgstsoname='kubectl get statefulset -o name' \
kgstsowide='kubectl get statefulset -o wide' \
kgstsoyaml='kubectl get statefulset -o yaml' \
kgsvc='kubectl get service' \
kgsvcall='kubectl get service --all-namespaces' \
kgsvcalloname='kubectl get service --all-namespaces -o name' \
kgsvcallowide='kubectl get service --all-namespaces -o wide' \
kgsvcalloyaml='kubectl get service --all-namespaces -o yaml' \
kgsvconame='kubectl get service -o name' \
kgsvcowide='kubectl get service -o wide' \
kgsvcoyaml='kubectl get service -o yaml' \
klo='kubectl logs -f' \ klo='kubectl logs -f' \
kpf='kubectl port-forward' \ kpf='kubectl port-forward' \
krm='kubectl delete' \ krm='kubectl delete' \
krmcj='kubectl delete cronjob' \
krmcm='kubectl delete configmap' \ function _k8salias() {
krmdep='kubectl delete deployment' \ local n s a
krming='kubectl delete ingress' \
krmj='kubectl delete job' \ for a in '' "${@/=/= }"; do
krmns='kubectl delete namespace' \ s="${a%%=*}" n="${a#*=}"
krmpo='kubectl delete pod' \ compalias "kd${s}=kubectl describe$n" \
krmpvc='kubectl delete persistentvolumeclaim' \ "kg${s}=kubectl get$n" \
krmsec='kubectl delete secret' \ "kg${s}alloname=kubectl get --all-namespaces -oname$n" \
krmsts='kubectl delete statefulset' \ "kg${s}allowide=kubectl get --all-namespaces -owide$n" \
krmsvc='kubectl delete service' "kg${s}alloyaml=kubectl get --all-namespaces -oyaml$n" \
"kg${s}oname=kubectl get -oname$n" \
"kg${s}oname=kubectl get -oname$n" \
"kg${s}owide=kubectl get -owide$n" \
"kg${s}owide=kubectl get -owide$n" \
"kg${s}oyaml=kubectl get -oyaml$n" \
"kg${s}oyaml=kubectl get -oyaml$n" \
"krm${s}=kubectl delete$n"
done
}
_k8salias cj=cronjob \
cm=configmap \
dep=deployment \
ing=ingress \
j=job \
ns=namespace \
po=pod \
pvc=persistentvolumeclaim \
pv=persistentvolume \
sec=secret \
sts=statefulset \
svc=service
unset -f _k8salias

View File

@ -25,8 +25,14 @@ function precmd() {
# shellcheck disable=SC2086 # shellcheck disable=SC2086
unset ${!PROMPT_P*} unset ${!PROMPT_P*}
[ -n "$VIRTUAL_ENV" ] && PROMPT_PVENV="${VIRTUAL_ENV%/*}" && PROMPT_PVENV="${PROMPT_PVENV##*/}"$'\n' if [ -n "$VIRTUAL_ENV" ]; then
[ -n "$ctx" ] && PROMPT_PK8S="$ctx/$(kns) " PROMPT_PVENV="${VIRTUAL_ENV%/*}" && PROMPT_PVENV="${PROMPT_PVENV##*/}"$'\n'
[[ "$err" =~ [1-9] ]] && PROMPT_PERR="${err// /|} " fi
if [ -n "$ctx" ]; then
PROMPT_PK8S="$ctx/$(kns) "
fi
if [[ "$err" =~ [1-9] ]]; then
PROMPT_PERR="${err// /|} "
fi
} }
PS1='\[\e[00;38;5;37m\]$PROMPT_PVENV\[\e[38;5;134m\]$PROMPT_PK8S\[\e[00m\]$(__git_ps1 "%s ")\[\e[01;38;5;32m\]\w\[\e[00m\] \[\e[38;5;160m\]$PROMPT_PERR${_[\j<1]+\[\e[38;5;71m\]\j }\[\e[00m\]' PS1='\[\e[00;38;5;37m\]$PROMPT_PVENV\[\e[38;5;134m\]$PROMPT_PK8S\[\e[00m\]$(__git_ps1 "%s ")\[\e[01;38;5;32m\]\w\[\e[00m\] \[\e[38;5;160m\]$PROMPT_PERR${_[\j<1]+\[\e[38;5;71m\]\j }\[\e[00m\]'

95
.config/bookmarks Normal file
View File

@ -0,0 +1,95 @@
# vim: tabstop=8 nowrap
# TODO
https://swatchseries.is/watch-tv/watch-rick-and-morty-39480.10164145
https://serverfault.com/questions/1150627/bind9-behind-nginx-reverse-proxy-doh/1168780#1168780
https://www.grepular.com/Automatically_Encrypting_all_Incoming_Email
https://www.grepular.com/Protecting_a_Laptop_from_Simple_and_Sophisticated_Attacks
https://www.rtcsec.com/article/slack-webrtc-turn-compromise-and-bug-bounty/
https://www.youtube.com/playlist?list=PLjAJj2LotlkOzOgp1xXJkbF73ZrQeDE7j
comm/discord https://discord.com/app
comm/whatsapp https://web.whatsapp.com
games/lichess https://lichess.org
gmk/chat https://chat.gmoker.com
gmk/git https://git.gmoker.com
gmk/searx https://searx.gmoker.com
maby/bazarr https://bazarr.ovh.maby.dev
maby/cloud https://cloud.maby.dev
maby/git https://git.maby.dev
maby/prowlarr https://prowlarr.ovh.maby.dev
maby/radarr https://radarr.ovh.maby.dev
maby/sonarr https://sonarr.ovh.maby.dev
maby/torrent https://torrent.ovh.maby.dev
maby/tv https://tv.maby.dev
media/dailymotion https://www.dailymotion.com
media/youtube https://youtube.com
media/ytmusic https://www.youtube.com/playlist?list=PLXd8_JG4e_d34zzFuv-ZtufN3VcbYnFnl
tools/crypto/coingecko https://www.coingecko.com
tools/crypto/mempool https://mempool.space
tools/deepl https://www.deepl.com
tools/nix/archwiki https://wiki.archlinux.org
tools/nix/crontab https://crontab.guru
tools/nix/debwiki https://wiki.debian.org
tools/nix/fedowiki https://docs.fedoraproject.org
tools/nix/gentoowiki https://wiki.gentoo.org
tools/regex101 https://regex101.com
tools/speedtest https://www.speedtest.net
adm/facture.net https://www.facture.net
games/chess.com https://www.chess.com
games/goclecd https://www.goclecd.fr
games/humanbenchmark https://humanbenchmark.com
games/igggames https://igg-games.com
games/leekwars https://leekwars.com
games/lolstats https://www.op.gg
games/mc/ores https://minecraft.fandom.com/wiki/Ore
games/mc/tlauncher https://tlauncher.org
games/mc/versions https://mcversions.net
games/sensitivity_25cm https://www.mouse-sensitivity.com
games/territorial https://territorial.io
games/tetr.io https://tetr.io
games/typing/10fastfingers https://10fastfingers.com/typing-test/english
games/typing/monkeytype https://monkeytype.com
games/typing/typeracer https://play.typeracer.com
games/ubfunkeys https://wynaut.itch.io/fig
games/wow/askmrrobot https://www.askmrrobot.com
games/wow/icyveins https://www.icy-veins.com
games/wow/method https://www.method.gg
games/wow/noxxic https://www.noxxic.com
games/wow/raidbots https://www.raidbots.com
games/wow/raider.io https://raider.io
games/wow/wago_luxthos https://wago.io/p/Luxthos
games/wow/warcraftlogs https://www.warcraftlogs.com
games/wow/wowhead https://www.wowhead.com
games/wow/wowprogress https://www.wowprogress.com
media/opensubtitles https://www.opensubtitles.org
media/streamingsites https://streamingsites.com
media/tmdb https://www.themoviedb.org
media/torhd https://torhd.cc
media/torrentscsv https://torrents-csv.com
media/watchsomuch https://watchsomuchtorrents.com
tools/archive https://archive.org
tools/crypto/mtpelerin https://www.mtpelerin.com
tools/gandi https://www.gandi.net
tools/memtest https://www.memtest.org
tools/namecheap https://www.namecheap.com
tools/nix/quickemu https://github.com/quickemu-project/quickemu
tools/nix/virtio-win https://github.com/virtio-win/virtio-win-pkg-scripts
tools/nix/winapps https://github.com/winapps-org/winapps
tools/nix/winfsp https://github.com/winfsp/winfsp
tools/nperf https://www.nperf.com
tools/semver https://semver.org
tools/ventoy https://github.com/ventoy/Ventoy/releases
tools/win/adwcleaner https://www.malwarebytes.com/adwcleaner
tools/win/changewindows https://changewindows.org
tools/win/crystaldisk https://crystalmark.info/en/software/crystaldiskinfo
tools/win/fido https://github.com/pbatard/Fido
tools/win/kms https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys
tools/win/malwarebytes https://www.malwarebytes.com
tools/win/massgrave https://massgrave.dev
tools/win/msmgtoolkit https://msmgtoolkit.in
tools/win/office https://answers.microsoft.com/en-us/msoffice/forum/all/useful-microsoft-download-links-for-office-direct/7bcaa971-9493-44b6-a1ba-0db4c6957c47
tools/win/server https://www.microsoft.com/en-us/evalcenter/download-windows-server-2025
tools/win/snappydriver http://www.snappy-driver-installer.org
tools/z-library https://z-library.sk

View File

@ -6,7 +6,7 @@
[diff] [diff]
tool = nvimdiff tool = nvimdiff
[difftool "nvimdiff"] [difftool "nvimdiff"]
cmd = nvim -d -c \"wincmd l\" \"$LOCAL\" \"$REMOTE\" cmd = nvim -d \"$REMOTE\" \"$LOCAL\"
[init] [init]
defaultBranch = main defaultBranch = main
[alias] [alias]
@ -30,6 +30,7 @@ ls = ls-files
m = merge m = merge
p = push p = push
r = remote r = remote
rso = remote show origin -n
rb = rebase rb = rebase
rev = revert rev = revert
rh = reset rh = reset

View File

@ -1,6 +1,7 @@
set menu-feed-sorting unread-desc set menu-feed-sorting unread-desc
set menu-item-sorting unread-desc set menu-item-sorting unread-desc
set notification-command '' set notification-command ''
set reload-period 60
bind V exec mpv "%l" bind V exec mpv "%l"
bind q quit-hard bind q quit-hard

View File

@ -1,39 +1,32 @@
@ Global [60] {100}
@ Entertainment @ Entertainment
https://www.youtube.com/feeds/videos.xml?channel_id=UCI4W-ck8ZLA_YljxMhlpg2g "Chess Simp" https://www.youtube.com/feeds/videos.xml?channel_id=UCI4W-ck8ZLA_YljxMhlpg2g "Chess Simp"
https://www.youtube.com/feeds/videos.xml?channel_id=UCf-vV5woXPFpkvZKwooWoyw "WirtualTV"
@ News @ News
https://archlinux.org/feeds/news/ "ArchLinux" https://archlinux.org/feeds/news/ "ArchLinux"
https://odysee.com/$/rss/@BrodieRobertson:5 "BrodieRobertson" https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "BrodieRobertson"
https://www.debian.org/News/news "Debian" https://www.debian.org/News/news "Debian"
https://f-droid.org/feed.xml "F-Droid" https://f-droid.org/feed.xml "F-Droid"
https://odysee.com/$/rss/@AlphaNerd:8 "MentalOutlaw" https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA "MentalOutlaw"
https://suckless.org/atom.xml "suckless.org" https://suckless.org/atom.xml "suckless.org"
https://tails.net/news/index.en.rss "Tails" https://tails.net/news/index.en.rss "Tails"
@ Updates @ Updates
https://github.com/coturn/coturn/releases.atom "Coturn"
https://github.com/vector-im/element-web/releases.atom "Element"
https://github.com/go-gitea/gitea/releases.atom "Gitea"
https://gitea.com/gitea/act_runner/releases.rss "Act runner" https://gitea.com/gitea/act_runner/releases.rss "Act runner"
https://github.com/arkenfox/user.js/releases.atom "arkenfox"
https://github.com/vector-im/element-web/releases.atom "Element" < item-rule "title NOT LIKE '%-rc._'"
https://github.com/go-gitea/gitea/releases.atom "Gitea" < item-rule "title NOT LIKE '%-rc_' AND title NOT LIKE '%-dev%'"
https://github.com/jellyfin/jellyfin/releases.atom "Jellyfin" https://github.com/jellyfin/jellyfin/releases.atom "Jellyfin"
https://github.com/modoboa/modoboa/releases.atom "Modoboa" https://www.getmonero.org/feed.xml "Monero" < item-rule "title NOT LIKE 'Monero GUI%released'"
https://www.getmonero.org/feed.xml "Monero" https://github.com/nextcloud/server/releases.atom "Nextcloud" < item-rule "title NOT LIKE '%rc_' AND title NOT LIKE '%beta_'"
https://github.com/nextcloud/server/releases.atom "Nextcloud" https://github.com/qbittorrent/qBittorrent/tags.atom "qBittorrent" < item-rule "title NOT LIKE '%rc_' AND title NOT LIKE '%beta_'"
https://github.com/searxng/searxng/commits/master.atom "SearXNG" https://github.com/searxng/searxng/commits/master.atom "SearXNG"
https://github.com/element-hq/synapse/releases.atom "Synapse" https://github.com/element-hq/synapse/releases.atom "Synapse" < item-rule "title NOT LIKE '%rc%'"
https://github.com/matrix-org/dendrite/releases.atom "Dendrite"
https://github.com/qbittorrent/qBittorrent/tags.atom "qBittorrent"
https://github.com/ventoy/Ventoy/releases.atom "Ventoy" https://github.com/ventoy/Ventoy/releases.atom "Ventoy"
@ K8S @ K8S
https://github.com/kubernetes/kubernetes/releases.atom "Kubernetes" https://github.com/kubernetes/kubernetes/releases.atom "Kubernetes" < item-rule "title NOT LIKE '%-rc._' AND title NOT LIKE '%-alpha._' AND title NOT LIKE '%-beta._'"
https://github.com/cert-manager/cert-manager/releases.atom "cert-manager" https://github.com/cert-manager/cert-manager/releases.atom "cert-manager" < item-rule "title NOT LIKE 'cmd/ctl/%' AND title NOT LIKE '%-alpha._' AND title NOT LIKE '%-beta._'"
https://github.com/cloudnative-pg/cloudnative-pg/releases.atom "CloudNativePG" https://github.com/cloudnative-pg/cloudnative-pg/releases.atom "CloudNativePG" < item-rule "title NOT LIKE '%-rc_'"
https://github.com/flannel-io/flannel/releases.atom "flannel" https://github.com/flannel-io/flannel/releases.atom "flannel"
https://github.com/kubernetes/ingress-nginx/releases.atom "Ingress-NGINX" https://github.com/kubernetes/ingress-nginx/releases.atom "Ingress-NGINX" < item-rule "title LIKE 'controller-%' AND title NOT LIKE '%-beta._'"
https://github.com/metallb/metallb/releases.atom "MetalLB" https://github.com/metallb/metallb/releases.atom "MetalLB" < item-rule "title NOT LIKE 'metallb-chart-%'"
https://github.com/kubernetes-csi/csi-driver-nfs/releases.atom "NFS" https://github.com/kubernetes-csi/csi-driver-nfs/releases.atom "NFS"
https://github.com/rook/rook/releases.atom "Rook"

View File

@ -0,0 +1 @@
html.lua

View File

@ -0,0 +1,2 @@
vim.opt_local.shiftwidth = 2
vim.opt_local.tabstop = 2

View File

@ -0,0 +1 @@
json.lua

View File

View File

@ -23,8 +23,8 @@ vim.g.netrw_list_hide = "\\.o$,\\.d$,\\.gc..$"
vim.opt.lazyredraw = true vim.opt.lazyredraw = true
vim.opt.complete = vim.o.complete .. ",i" vim.opt.complete = vim.o.complete .. ",i"
vim.loader.enable() vim.g.go_recommended_style = 0
vim.cmd("packadd plenary")
require"theme" require"theme"
require"pack-lspconfig" require"pack-lspconfig"
require"pack-telescope" require"pack-telescope"

View File

@ -24,4 +24,5 @@ local on_attach = function(_, bufnr)
end end
lspconfig["bashls"].setup { on_attach = on_attach } lspconfig["bashls"].setup { on_attach = on_attach }
lspconfig["gopls"].setup { on_attach = on_attach }
lspconfig["pyright"].setup { on_attach = on_attach } lspconfig["pyright"].setup { on_attach = on_attach }

View File

@ -1,4 +1,3 @@
vim.cmd("packadd telescope")
require"telescope".setup { require"telescope".setup {
defaults = { defaults = {
file_ignore_patterns = { file_ignore_patterns = {

View File

@ -1,8 +1,5 @@
vim.cmd("packadd treesitter")
require"nvim-treesitter.configs".setup { require"nvim-treesitter.configs".setup {
auto_install = true, auto_install = true,
highlight = { enable = true }, highlight = { enable = true },
ignore_install = { "gitcommit" }, -- broken ignore_install = { "gitcommit" }, -- broken
} }
vim.cmd("TSUpdate")

View File

@ -1,4 +1,3 @@
vim.cmd("packadd onedark")
local theme = require"onedark" local theme = require"onedark"
theme.setup { theme.setup {
style = "dark", style = "dark",

@ -1 +0,0 @@
Subproject commit fae34f7c635797f4bf62fb00e7d0516efa8abe37

@ -1 +0,0 @@
Subproject commit 2d9b06177a975543726ce5c73fca176cedbffe9d

@ -1 +0,0 @@
Subproject commit 85922dde3767e01d42a08e750a773effbffaea3e

@ -1 +0,0 @@
Subproject commit 9565149634ec5e0fc9e740f4edb6cab26bf7fb6f

@ -0,0 +1 @@
Subproject commit 67a74c275d1116d575ab25485d1bfa6b2a9c38a6

@ -0,0 +1 @@
Subproject commit 857c5ac632080dba10aae49dba902ce3abf91b35

@ -0,0 +1 @@
Subproject commit a4ed82509cecc56df1c7138920a1aeaf246c0ac5

@ -0,0 +1 @@
Subproject commit 523a9e148919f58eb5a013f76787e57696e00c93

View File

@ -2,67 +2,45 @@
# Shadows # # Shadows #
################################# #################################
# Enabled client-side shadows on windows. Note desktop windows # Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow, # (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option. # unless explicitly requested using the wintypes option.
# #
# shadow = false # Can be set per-window using rules.
#
# Default: false
#shadow = true; #shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12) # The blur radius for shadows, in pixels.
# shadow-radius = 12 #
# Default: 12
shadow-radius = 7; shadow-radius = 7;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75) # The opacity of shadows.
#
# Range: 0.0 - 1.0
# Default: 0.75
# shadow-opacity = .75 # shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15) # The left offset for shadows, in pixels.
# shadow-offset-x = -15 #
# Default: -15
shadow-offset-x = -7; shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15) # The top offset for shadows, in pixels.
# shadow-offset-y = -15 #
# Default: -15
shadow-offset-y = -7; shadow-offset-y = -7;
# Red color value of shadow (0.0 - 1.0, defaults to 0). # Hex string color value of shadow. Formatted like "#RRGGBB", e.g. "#C0FFEE".
# shadow-red = 0 #
# Default: #000000
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000" # shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular monitor to that monitor. This is # Crop shadow of a window fully on a particular monitor to that monitor. This is
# currently implemented using the X RandR extension. # currently implemented using the X RandR extension.
#
# Default: false
# crop-shadow-to-monitor = false # crop-shadow-to-monitor = false
@ -70,26 +48,21 @@ shadow-exclude = [
# Fading # # Fading #
################################# #################################
# Fade windows in/out when opening/closing and when opacity changes, # Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used. # unless no-fading-openclose is used. Can be set per-window using rules.
# fading = false #
# Default: false
#fading = true; #fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028) # Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03; fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03) # Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03; fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10) # The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10 # fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
# Do not fade on window open/close. # Do not fade on window open/close.
# no-fading-openclose = false # no-fading-openclose = false
@ -101,41 +74,16 @@ fade-out-step = 0.03;
# Transparency / Opacity # # Transparency / Opacity #
################################# #################################
# Opacity of window titlebars and borders.
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0) #
# inactive-opacity = 1 # Range: 0.1 - 1.0
#inactive-opacity = 0.8; # Default: 1.0 (disabled)
frame-opacity = 0.7;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
#frame-opacity = 0.7;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity. # Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
# #
# opacity-rule = [] # Default: false
# inactive-dim-fixed = true
################################# #################################
# Corners # # Corners #
@ -144,21 +92,15 @@ focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Sets the radius of rounded window corners. When > 0, the compositor will # Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with # round the corners of windows. Does not interact well with
# `transparent-clipping`. # `transparent-clipping`.
#
# Default: 0 (disabled)
corner-radius = 0 corner-radius = 0
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
################################# #################################
# Background-Blurring # # Blur #
################################# #################################
# Parameters for background blurring, see BLUR section in the man page for more information.
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method = # blur-method =
# blur-size = 12 # blur-size = 12
# #
@ -167,108 +109,96 @@ rounded-corners-exclude = [
# blur-strength = 5 # blur-strength = 5
# Blur background of semi-transparent / ARGB windows. # Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior. # Can be set per-window using rules.
# The name of the switch may change without prior notifications.
# #
# Default: false
# blur-background = false # blur-background = false
# Blur background of windows when the window frame is not opaque. # Blur background of windows when the window frame is not opaque.
# Implies: # Implies:
# blur-background # blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
# #
# Default: false
# blur-background-frame = false # blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity. # Use fixed blur strength rather than adjusting according to window opacity.
#
# Default: false
# blur-background-fixed = false # blur-background-fixed = false
# Specify the blur convolution kernel, with the following format: # Specify the blur convolution kernel, with the following format:
# example: # example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; # blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
# Can also be a pre-defined kernel, see the man page.
# #
# blur-kern = "" # Default: ""
blur-kern = "3x3box"; blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
################################# #################################
# General Settings # # General Settings #
################################# #################################
# Enable remote control via D-Bus. See the man page for more details. # Enable remote control via D-Bus. See the man page for more details.
#
# Default: false
# dbus = true # dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers. # Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false # daemon = false
# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`. # Specify the backend to use: `xrender`, `glx`, or `egl`.
# `xrender` is the default one.
# #
# backend = "glx" # Default: "xrender"
backend = "glx"; backend = "glx"
# Use higher precision during rendering, and apply dither when presenting the # Use higher precision during rendering, and apply dither when presenting the
# rendered screen. Reduces banding artifacts, but might cause performance # rendered screen. Reduces banding artifacts, but may cause performance
# degradation. Only works with OpenGL. # degradation. Only works with OpenGL.
dithered-present = false; dithered-present = false;
# Enable/disable VSync. # Enable/disable VSync.
# vsync = false
vsync = true;
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
# #
# mark-wmwin-focused = false # Default: false
mark-wmwin-focused = true; vsync = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them # Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately. # shaped windows. The accuracy is not very high, unfortunately.
# #
# detect-rounded-corners = false # Has nothing to do with `corner-radius`.
#
# Default: false
detect-rounded-corners = true; detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers # Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows. # not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
# #
# detect-client-opacity = false # Default: false
detect-client-opacity = true; detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, # Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, # rather than listening to 'FocusIn'/'FocusOut' event. May be more accurate,
# provided that the WM supports it. # provided that the WM supports it.
# #
# Default: false
# use-ewmh-active-win = false # use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected, # Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering # to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows. # when redirecting/unredirecting windows.
# #
# Default: false
unredir-if-possible = true unredir-if-possible = true
# Delay before unredirecting the window, in milliseconds. Defaults to 0. # Delay before unredirecting the window, in milliseconds.
#
# Default: 0.
# unredir-if-possible-delay = 0 # unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows # Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time. # in the same group focused at the same time.
# #
# detect-transient = false # Default: false
detect-transient = true; detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same # Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
@ -276,102 +206,67 @@ detect-transient = true;
# will be considered focused or unfocused at the same time. # will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too. # 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
# #
# Default: false
# detect-client-leader = false # detect-client-leader = false
# Resize damaged region by a specific number of pixels. # Use of damage information for rendering. This cause the only the part of the
# A positive value enlarges it while a negative one shrinks it. # screen that has actually changed to be redrawn, instead of the whole screen
# If the value is positive, those additional pixels will not be actually painted # every time. Should improve performance.
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
# #
# resize-damage = 1 # Default: false
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
glx-no-stencil = true;
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true; use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw # Use X Sync fence to wait for the completion of rendering of other windows,
# calls are finished before picom starts drawing. Needed on nvidia-drivers # before using their content to render the current screen.
# with GLX backend for some users.
# #
# Required for explicit sync drivers, such as nvidia.
#
# Default: false
# xrender-sync-fence = false # xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window # GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface. # contents. Read the man page for a detailed explanation of the interface.
# #
# Can be set per-window using rules.
#
# window-shader-fg = "default" # window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# Force all windows to be painted with blending. Useful if you # Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent. # have a `window-shader-fg` that could turn opaque pixels transparent.
# #
# Default: false
# force-win-blend = false # force-win-blend = false
# Do not use EWMH to detect fullscreen windows. # Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates. # Reverts to checking if a window is fullscreen based only on its size and coordinates.
# #
# Default: false
# no-ewmh-fullscreen = false # no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value. # Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window, # Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit. # so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0) # Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled.
# #
# Default: 1.0 (disabled)
# max-brightness = 1.0 # max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do, # Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them. # instead of blending on top of them. e.g. placing a transparent window on top
# of another window will cut a "hole" in that window, and show the desktop background
# underneath.
# #
# Default: false
# transparent-clipping = false # transparent-clipping = false
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# Set the log level. Possible values are: # Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error" # "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter. # in increasing level of importance. Case insensitive.
# If using the "TRACE" log level, it's better to log into a file # If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs. # using *--log-file*, since it can generate a huge stream of logs.
# #
# log-level = "debug" # Default: "warn"
log-level = "warn"; # log-level = "warn";
# Set the log file. # Set the log file.
# If *--log-file* is never specified, logs will be written to stderr. # If *--log-file* is never specified, logs will be written to stderr.
@ -381,51 +276,42 @@ log-level = "warn";
# #
# log-file = "/path/to/your/log/file" # log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file. # Write process ID to a file.
# write-pid-path = "/path/to/your/log/file" # write-pid-path = "/path/to/your/log/file"
# Window type settings # Rule-based per-window options.
# #
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard: # See WINDOW RULES section in the man page for how these work.
# "unknown", "desktop", "dock", "toolbar", "menu", "utility", #rules: ({
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu", # match = "window_type = 'tooltip'";
# "tooltip", "notification", "combo", and "dnd". # fade = false;
# shadow = true;
# opacity = 0.75;
# full-shadow = false;
#}, {
# match = "window_type = 'dock' || "
# "window_type = 'desktop' || "
# "_GTK_FRAME_EXTENTS@";
# blur-background = false;
#}, {
# match = "window_type != 'dock'";
# # shader = "my_shader.frag";
#}, {
# match = "window_type = 'dock' || "
# "window_type = 'desktop'";
# corner-radius = 0;
#}, {
# match = "name = 'Notification' || "
# "class_g = 'Conky' || "
# "class_g ?= 'Notify-osd' || "
# "class_g = 'Cairo-clock' || "
# "_GTK_FRAME_EXTENTS@";
# shadow = false;
#})
# `@include` directive can be used to include additional configuration files.
# Relative paths are search either in the parent of this configuration file
# (when the configuration is loaded through a symlink, the symlink will be
# resolved first). Or in `$XDG_CONFIG_HOME/picom/include`.
# #
# Following per window-type options are available: :: # @include "extra.conf"
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
#wintypes:
#{
# tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
# dock = { shadow = false; clip-shadow-above = true; }
# dnd = { shadow = false; }
# popup_menu = { opacity = 0.8; }
# dropdown_menu = { opacity = 0.8; }
#};

View File

@ -52,9 +52,6 @@ static const Layout layouts[] = {
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \ { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} }, { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* commands */ /* commands */
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
@ -112,4 +109,3 @@ static const Button buttons[] = {
{ ClkTagBar, MODKEY, Button1, tag, {0} }, { ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} }, { ClkTagBar, MODKEY, Button3, toggletag, {0} },
}; };

View File

@ -60,11 +60,11 @@ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn()
static const char *dmenucmd[] = { "dmenu_run", "-i", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; static const char *dmenucmd[] = { "dmenu_run", "-i", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[] = { "alacritty", NULL }; static const char *termcmd[] = { "alacritty", NULL };
static const char *lockcmd[] = { "lock", NULL }; static const char *lockcmd[] = { "lock", NULL };
static const char *wwwcmd[] = { "org.mozilla.firefox", NULL }; static const char *wwwcmd[] = { "bookmarks", NULL };
static const char *pwwwcmd[] = { "org.mozilla.firefox", "--private-window", NULL }; static const char *pwwwcmd[] = { "bookmarks", "-p", NULL };
static const char *calccmd[] = { "alacritty", "-epython", NULL }; static const char *calccmd[] = { "alacritty", "-epython", NULL };
static const char *fmcmd[] = { "pcmanfm", NULL }; static const char *fmcmd[] = { "pcmanfm", NULL };
static const char *prtsccmd[] = { "sh", "-c", "gm import png:- | xclip -sel c -t image/png && xclip -sel c -o | feh -", NULL }; static const char *prtsccmd[] = { "sh", "-c", "import png:- | xclip -sel c -t image/png && xclip -sel c -o | feh -", NULL };
static const char *lvolcmd[] = { "vol", "s", "-5", NULL }; static const char *lvolcmd[] = { "vol", "s", "-5", NULL };
static const char *rvolcmd[] = { "vol", "s", "+5", NULL }; static const char *rvolcmd[] = { "vol", "s", "+5", NULL };
static const char *mutecmd[] = { "vol", "s", "m", NULL }; static const char *mutecmd[] = { "vol", "s", "m", NULL };
@ -75,8 +75,8 @@ static const char *pausecmd[] = { "playerctl", "play-pause", NULL };
static const char *prevcmd[] = { "playerctl", "previous", NULL }; static const char *prevcmd[] = { "playerctl", "previous", NULL };
static const char *nextcmd[] = { "playerctl", "next", NULL }; static const char *nextcmd[] = { "playerctl", "next", NULL };
static const char *stopcmd[] = { "playerctl", "stop", NULL }; static const char *stopcmd[] = { "playerctl", "stop", NULL };
static const char *lbrtcmd[] = { "light", "-10", NULL }; static const char *lbrtcmd[] = { "light", "-1", NULL };
static const char *rbrtcmd[] = { "light", "+10", NULL }; static const char *rbrtcmd[] = { "light", "+1", NULL };
static const char *passselectcmd[] = { "pass", "select", NULL }; static const char *passselectcmd[] = { "pass", "select", NULL };
static const char *passopencmd[] = { "pass", "openurl", NULL }; static const char *passopencmd[] = { "pass", "openurl", NULL };
static const char *passusercmd[] = { "pass", "printuser", NULL }; static const char *passusercmd[] = { "pass", "printuser", NULL };

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/podman.socket

View File

@ -0,0 +1 @@
../wallpaper.timer

View File

@ -0,0 +1,6 @@
[Unit]
Description=Randomly changes wallpaper
[Service]
Type=oneshot
ExecStart=bash wallpaper

View File

@ -0,0 +1,9 @@
[Unit]
Description=Randomly changes wallpaper
[Timer]
OnUnitInactiveSec=10min
Unit=wallpaper.service
[Install]
WantedBy=timers.target

Binary file not shown.

Before

Width:  |  Height:  |  Size: 996 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 573 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

25
.gitmodules vendored
View File

@ -1,12 +1,21 @@
[submodule ".config/nvim/pack/plugins/opt/onedark"] [submodule ".config/nvim/pack/plugins/start/onedark"]
path = .config/nvim/pack/plugins/opt/onedark path = .config/nvim/pack/plugins/start/onedark
url = https://github.com/navarasu/onedark.nvim url = https://github.com/navarasu/onedark.nvim
[submodule ".config/nvim/pack/plugins/opt/plenary"] [submodule ".config/nvim/pack/plugins/start/plenary"]
path = .config/nvim/pack/plugins/opt/plenary path = .config/nvim/pack/plugins/start/plenary
url = https://github.com/nvim-lua/plenary.nvim.git url = https://github.com/nvim-lua/plenary.nvim.git
[submodule ".config/nvim/pack/plugins/opt/telescope"] [submodule ".config/nvim/pack/plugins/start/telescope"]
path = .config/nvim/pack/plugins/opt/telescope path = .config/nvim/pack/plugins/start/telescope
url = https://github.com/nvim-telescope/telescope.nvim.git url = https://github.com/nvim-telescope/telescope.nvim.git
[submodule ".config/nvim/pack/plugins/opt/treesitter"] [submodule ".config/nvim/pack/plugins/start/treesitter"]
path = .config/nvim/pack/plugins/opt/treesitter path = .config/nvim/pack/plugins/start/treesitter
url = https://github.com/nvim-treesitter/nvim-treesitter.git url = https://github.com/nvim-treesitter/nvim-treesitter.git
[submodule ".local/aur/newsraft"]
path = .local/aur/newsraft
url = https://aur.archlinux.org/newsraft.git
[submodule ".local/aur/shellcheck"]
path = .local/aur/shellcheck
url = https://aur.archlinux.org/shellcheck-bin.git
[submodule ".local/aur/sparrow"]
path = .local/aur/sparrow
url = https://aur.archlinux.org/sparrow-wallet.git

1
.local/aur/newsraft Submodule

@ -0,0 +1 @@
Subproject commit 0e935562f6c6931e809321374860c4bba74d297a

1
.local/aur/shellcheck Submodule

@ -0,0 +1 @@
Subproject commit d5a870d66bb728e17d2e70c23025b2fa11791d1a

1
.local/aur/sparrow Submodule

@ -0,0 +1 @@
Subproject commit 582b5504e110b0c21310eb7814b14633f64684d8

View File

@ -1,39 +0,0 @@
#!/bin/bash -e
function get_row() {
local row _col
IFS=';' read -rsdR -p $'\e[6n' row _col
echo "${row#??}"
}
ROW="$(($(get_row) + 1))"
function clear_output() {
local row
row="$(get_row)"
for _ in $(seq "$ROW" "$row"); do
printf '\e[1A\e[K'
done
}
while true; do
mapfile -t LSBLK <<< "$(lsblk -n --paths --list | grep part)"
COLUMNS=1
select dev in "${LSBLK[@]}"; do
if [ -z "$dev" ]; then
clear_output
break
fi
name="$(awk '{print $1}' <<< "$dev")"
clear_output
if mount | grep -q "$name"; then
umount "$name"
else
udisksctl mount -b "$name" > /dev/null
fi
break
done || exit
done

26
.local/bin/bookmarks Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash -e
shopt -s extglob
if [ "$1" = -p ]; then
BROWSER="$BROWSER --private-window"
elif [[ "$(xdotool getwindowfocus getwindowname)" != *'Mozilla Firefox' ]]; then
BROWSER="$BROWSER --new-window"
fi
mapfile -t list < <(grep -Pv '^(#|$)' "$XDG_CONFIG_HOME/bookmarks")
q="$(printf '%s\n' '' "${list[@]}" | dmenu -l 16)"
if [ -z "$q" ]; then
exec $BROWSER
elif [[ "$q" == *://* ]]; then
url="${q/*+( )/}"
if [ "$1" = -p ] || [[ "$url" == http?(s)://* ]]; then
exec $BROWSER "$url"
fi
exec xdg-open "$url"
fi
if [[ "$q" =~ ^[^[:space:]]+(\.[^[:space:]]+)+$ ]]; then
exec $BROWSER "$q"
fi
exec $BROWSER "https://searx.gmoker.com/search?q=$(jq -Rr '@uri' <<< "$q")"

View File

@ -1,16 +1,34 @@
#!/bin/bash -e #!/bin/bash
declare -A aliases function dkr() {
aliases=( local ep="$1"; shift
[arch]=archlinux/archlinux:base
[debian]=debian:12-slim (set -x
podman run --rm -it -v "$PWD:/mnt/" -w /mnt/ --entrypoint "$ep" \
"$img" "$@"
)
}
declare -A aliases=(
[arch]=docker.io/archlinux/archlinux:base
[debian]=docker.io/debian:12-slim
[flutter]=git.gmoker.com/icing/flutter:main
[kaniko]=gcr.io/kaniko-project/executor:debug
) )
if [ -z "$1" ]; then if [ -z "$1" ]; then
exit 1 exit 1
fi fi
img="${aliases[$1]:-$1:latest}"; shift if [ -n "${aliases[$1]}" ]; then
img="${aliases[$1]}"
else
img="docker.io/$1"
[[ "$img" == *:* ]] || img+=:latest
fi
shift
set -x dkr bash "$@"
podman run --rm -it -v "$PWD:/mnt/" -w /mnt/ "docker.io/$img" "$@" if [ "$?" = 127 ]; then
dkr sh "$@"
fi

10
.local/bin/ffcapture Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash -e
output="$HOME/Videos/ffcapture$(date '+%Y%m%d_%H%M%S').mp4"
ffmpeg \
-framerate 30 \
-f x11grab -i "$DISPLAY.0" -c:v libx265 \
"$output"
# -f pulse -i # sink

View File

@ -1,5 +1,10 @@
#!/bin/bash -e #!/bin/bash -e
if [ -z "$1" ] || [ -z "$2" ]; then
echo "USAGE: $(basename "${BASH_SOURCE[0]}") in out [smallside]" >&2
exit 1
fi
in="$1"; shift in="$1"; shift
out="$1"; shift out="$1"; shift
smallside="${1:-720}"; shift || true smallside="${1:-720}"; shift || true
@ -9,10 +14,6 @@ if ! [ -r "$in" ]; then
exit 1 exit 1
fi fi
if [ -z "$out" ]; then
echo "error: output file name can't be empty" >&2
exit 1
fi
set -x set -x
#ffmpeg -i "$in" -r 24 -vcodec libx265 -vf "scale=-2:$smallside,setpts=0.5*PTS" "$@" "$out" #ffmpeg -i "$in" -r 24 -vcodec libx265 -vf "scale=-2:$smallside,setpts=0.5*PTS" "$@" "$out"

38
.local/bin/firefox Executable file
View File

@ -0,0 +1,38 @@
#!/bin/bash
sites=(
'https://discord.com'
'https://gmoker.com'
'https://login.microsoftonline.com'
'https://maby.dev'
'https://web.whatsapp.com'
)
function update() {
local start='^/\*---- USER PREFERENCES ----\*/$'
local end='^/\*---- END USER PREFERENCES ----\*/$'
local af userpref
af="$(curl -L 'https://github.com/arkenfox/user.js/raw/refs/heads/master/user.js')"
while read -r p; do
userpref="$(sed -n "\@$start@,\@$end@p" "$ff/$p/user.js")"
printf '%s\n\n%s\n' "$af" "$userpref" > "$ff/$p/user.js"
done < <(awk -F= '/^Path=/{print $2}' "$ff/profiles.ini")
}
ff="$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox"
if [ "$1" == update ]; then
update
exit
fi
profile="$ff/$(sed -n '/^\[Install/,/^Default=/s/.*=//p' "$ff/profiles.ini")"
if ! fuser -s "$profile"; then
for i in "${!sites[@]}"; do
sq+="INSERT INTO moz_perms VALUES($i,'${sites[$i]}','cookie',1,0,0,0);"
done
sqlite3 "$profile/permissions.sqlite" <<< "DELETE FROM moz_perms; $sq"
sqlite3 "$profile/places.sqlite" <<< "DELETE FROM moz_bookmarks;"
fi
org.mozilla.firefox "$@"

18
.local/bin/giteadelimg Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
read -rsp "PASSWD: " PASSWD; echo
read -rp "OWNER: " OWN
read -rp "NAME: " NAME
TOK="$(jq -rR '@uri' <<< "$PASSWD")"
API="https://ange:$TOK@git.gmoker.com/api/v1/packages"
PKG="$(curl "$API/$OWN" | jq -r ".[] | select(.name == \"$NAME\").version")"
echo "$PKG"
read -rp "Continue?"
while read -r pkg; do
(set -x
curl -XDELETE "$API/$OWN/container/$(jq -rR '@uri' <<< "$NAME")/$pkg"
)
done <<< "$PKG"

View File

@ -1,32 +1,21 @@
#!/bin/bash -e #!/bin/bash -e
function get_current() { STEPS=16
local cur; cur="$(cat "$1/brightness")" DIR="$(find /sys/class/backlight/* -print -quit)"
local max; max="$(cat "$1/max_brightness")"
echo "$((cur * 100 / max))" CUR="$(cat "$DIR/brightness")"
} MAX=$(cat "$DIR/max_brightness")
function set_light() {
local max; max="$(cat "$1/max_brightness")"
echo "$((CUR * max / 100))" > "$1/brightness"
}
DIRS=(/sys/class/backlight/*)
CUR="$(get_current "${DIRS[0]}")"
case "${1:0:1}" in case "${1:0:1}" in
'') echo "$CUR"; exit ;; '') echo "$CUR"; exit ;;
'+'|'-') CUR="$(($CUR + $1 - $CUR % $1 + $CUR % $1 * 10 / $1 / 5 * $1))" ;; '+'|'-') CUR=$(((CUR / STEPS + $1) * STEPS)) ;;
*) CUR="$1" ;; *) CUR="$1" ;;
esac esac
echo "$CUR"
[ "$CUR" -lt 0 ] && CUR=0 if [ "$CUR" -lt 0 ]; then
[ "$CUR" -gt 100 ] && CUR=100 CUR=0
elif [ "$CUR" -gt "$MAX" ]; then
CUR="$MAX"
fi
for d in "${DIRS[@]}"; do echo "$CUR" > "$DIR/brightness"
set_light "$d"
done

View File

@ -3,123 +3,125 @@
function update_crypto() { function update_crypto() {
local c local c
c="$(crypto 2> /dev/null)" && crypto="$c" c="$(crypto 2> /dev/null)" && echo "$c" > "$SBAR/crypto"
} }
function update_cpu() { function update_cpu() {
cpu=" $(awk '{print $1}' /proc/loadavg)" echo " $(awk '{print $1}' /proc/loadavg)" > "$SBAR/cpu"
} }
function update_memory() { function update_memory() {
memory=" $(free -h | awk '/^Mem:/{print $3}')" echo " $(free -h | awk '/^Mem:/{print $3}')" > "$SBAR/memory"
} }
function update_bat() { function update_bat() {
local dir cap local cap; cap="$(cat /sys/class/power_supply/BAT0/capacity)"
dir='/sys/class/power_supply/BAT0' if grep -qv Discharging /sys/class/power_supply/BAT0/status; then
cap="$(cat "$dir/capacity")" echo " $cap%" > "$SBAR/bat"
{ grep -qv Discharging "$dir/status" && bat=" $cap%"; } || else
{ [ "$cap" -gt 80 ] && bat=" $cap%"; } || echo " $cap%" > "$SBAR/bat"
{ [ "$cap" -gt 60 ] && bat=" $cap%"; } || fi
{ [ "$cap" -gt 40 ] && bat=" $cap%"; } ||
{ [ "$cap" -gt 20 ] && bat=" $cap%"; } ||
{ bat=" $cap%"; }
} }
function update_sink_vol() { function update_sink_vol() {
local sink vol local vol mute
sink="$(wpctl get-volume '@DEFAULT_AUDIO_SINK@')" read -r _ vol mute < <(wpctl get-volume '@DEFAULT_AUDIO_SINK@') || return
if grep -q MUTED <<< "$sink"; then if [ -n "$mute" ]; then
sink_vol='🔇' echo '🔇' > "$SBAR/sink"
return else
echo " $((10#${vol/./}))" > "$SBAR/sink"
fi fi
vol="$(awk '{printf "%.0f", $2 * 100}' <<< "$sink")"
{ [ "$vol" -gt 67 ] && sink_vol=" $vol"; } ||
{ [ "$vol" -gt 33 ] && sink_vol=" $vol"; } ||
{ sink_vol=" $vol"; }
} }
function update_source_vol() { function update_source_vol() {
local source vol local vol mute
source="$(wpctl get-volume '@DEFAULT_AUDIO_SOURCE@')" read -r _ vol mute < <(wpctl get-volume '@DEFAULT_AUDIO_SOURCE@') || return
if grep -q MUTED <<< "$source"; then if [ -n "$mute" ]; then
source_vol='' echo '' > "$SBAR/source"
return else
echo " $((10#${vol/./}))" > "$SBAR/source"
fi fi
source_vol=" $(awk '{printf "%.0f", $2 * 100}' <<< "$source")"
} }
function update_net() { function update_net() {
local dev j ssid sig local dev j ssid sig
dev="$(ip route show default | sed -n 's/.*dev\s\+\(\w\+\).*/\1/p;q')" dev="$(ip route | grep -oP 'default.*dev\s+\K[^\s]+')"
j="$(networkctl status "$dev" --json=short)" j="$(networkctl status "$dev" --json=short)"
case "$(jq -r .Type <<< "$j")" in case "$(jq -r .Type <<< "$j")" in
ether) ether)
net="🌐 $dev" echo "🌐 $dev" > "$SBAR/net"
;; ;;
wlan) wlan)
ssid="$(jq -r .SSID <<< "$j")" ssid="$(jq -r .SSID <<< "$j")"
sig="$(awk "/$dev/{printf \"%.0f\", \$3}" /proc/net/wireless)" sig="$(awk "/$dev/{printf \"%.0f\", \$3}" /proc/net/wireless)"
{ [ "$sig" -gt 56 ] && net="▂▄▆█ $ssid"; } || if [ "$sig" -gt 56 ]; then echo "▂▄▆█ $ssid" > "$SBAR/net"
{ [ "$sig" -gt 38 ] && net="▂▄▆_ $ssid"; } || elif [ "$sig" -gt 38 ]; then echo "▂▄▆_ $ssid" > "$SBAR/net"
{ [ "$sig" -gt 21 ] && net="▂▄__ $ssid"; } || elif [ "$sig" -gt 21 ]; then echo "▂▄__ $ssid" > "$SBAR/net"
{ [ "$sig" -gt 3 ] && net="▂___ $ssid"; } || elif [ "$sig" -gt 3 ]; then echo "▂___ $ssid" > "$SBAR/net"
{ net="____ $ssid"; } else echo "____ $ssid" > "$SBAR/net"
fi
;; ;;
*) *)
net='⚠' echo '⚠' > "$SBAR/net"
;; ;;
esac esac
} }
function update_time() { function update_vpn() {
time="$(TZ=Asia/Makassar date '+%a %m-%d %R %Z'); $(TZ=Asia/Jakarta date '+%R %Z'); $(TZ=Europe/Paris date '+%R %Z')" local v; v="$(ip -br link show type wireguard | awk '{print $1}')"
if [ -n "$v" ]; then
echo " 🔒 $v" > "$SBAR/vpn"
else
: > "$SBAR/vpn"
fi
} }
function reload() { function update_time() {
sec=0 echo "$(TZ=Asia/Makassar date '+%R %Z') - $(date -u '+%a %m-%d %R')" \
> "$SBAR/time"
} }
function display() { function display() {
"${DISPLAYCMD[@]}" "$crypto | $cpu | $memory | $sink_vol $source_vol | $net | $bat | $time" for f in "$SBAR"/*; do
local "$(basename "$f")"="$(cat "$f")"
done
# shellcheck disable=SC2154
xsetroot -name "$crypto | $cpu | $memory | $sink $source | $net$vpn | $bat | $time"
} }
if [ "$XDG_SESSION_TYPE" = wayland ]; then
DISPLAYCMD=(echo)
else
DISPLAYCMD=(xsetroot -name)
fi
# SIGNALING # SIGNALING
# trap '<function>;display;wait' 'RTMIN+n' # trap '<function>;display;wait -n' 'RTMIN+n'
trap 'reload' 'RTMIN' trap 'update_sink_vol;display;wait -n' 'RTMIN+0'
trap 'update_sink_vol;display;wait' 'RTMIN+1' trap 'update_source_vol;display;wait -n' 'RTMIN+1'
trap 'update_source_vol;display;wait' 'RTMIN+2' trap 'update_net;display;wait -n' 'RTMIN+2'
trap 'update_net;display;wait' 'RTMIN+3' trap 'update_vpn;display;wait -n' 'RTMIN+3'
# to update it from external commands # to update it from external commands
## kill -m "$(cat ~/.cache/pidofbar)" ## kill -m "$(cat "$XDG_CACHE_HOME/pidofbar")"
# where m = 34 + n # where m = 34 + n
echo "$$" > "$HOME/.cache/pidofbar" SBAR="$XDG_CACHE_HOME/sbar"
mkdir -p "$SBAR"
echo "$$" > "$SBAR/pid"
(while :; do
update_crypto
sleep $((300 - 10#$(date '+%S') % 300)) & wait -n
done &)
sec=0
while true; do while true; do
[ "$((sec % 300))" -eq 5 ] && update_crypto update_cpu
[ "$((sec % 5))" -eq 0 ] && { update_memory
update_cpu update_sink_vol
update_memory update_source_vol
update_sink_vol update_net
update_source_vol update_vpn
update_net update_bat
update_bat update_time
update_time display
display sleep $((5 - 10#$(date '+%S') % 5)) & wait -n
}
((sec += 5))
awk "@load \"time\"; BEGIN {d=5; s=$(date '+%S.%N'); sleep(d - s % d)}" &
wait
done done

28
.local/bin/vm Executable file
View File

@ -0,0 +1,28 @@
#!/bin/bash -e
ISO="$1"
DISK="$HOME/${ISO%.*}.qcow2"
MAXMEM="$(free -g | awk '/^Mem:/{print $6 / 2}')G"
OVMF_CODE=/usr/share/edk2/x64/OVMF_CODE.4m.fd
OVMF_VARS=/tmp/OVMF_VARS.4m.fd
set -x
if [ -f "$OVMF_VARS" ]; then
cp -f /usr/share/edk2/x64/OVMF_VARS.4m.fd "$OVMF_VARS"
fi
if ! [ -f "$DISK" ]; then
qemu-img create -f qcow2 "$DISK" 20G
fi
qemu-system-x86_64 \
-accel kvm \
-M q35 \
-monitor stdio \
-cpu host \
-m "2G,maxmem=$MAXMEM" \
-vga virtio \
-audio pipewire,model=hda \
-nic model=virtio-net-pci,type=user \
-drive "if=pflash,format=raw,file=$OVMF_CODE,readonly=on" \
-drive "if=pflash,format=raw,file=$OVMF_VARS" \
-drive "if=virtio,file=$DISK" \
-drive "file=$ISO,media=cdrom,readonly=on"

View File

@ -3,11 +3,11 @@
case "$1" in case "$1" in
s) s)
DEV='@DEFAULT_AUDIO_SINK@' DEV='@DEFAULT_AUDIO_SINK@'
SIG=35 SIG=34
;; ;;
m) m)
DEV='@DEFAULT_AUDIO_SOURCE@' DEV='@DEFAULT_AUDIO_SOURCE@'
SIG=36 SIG=35
;; ;;
*) *)
exit 1 exit 1
@ -18,9 +18,13 @@ shift
function update_vol() { function update_vol() {
case "$1" in case "$1" in
+*|-*) +*|-*)
CUR="$(($CUR + $1 - $CUR % $1 + $CUR % $1 * 10 / $1 / 5 * $1))" # shellcheck disable=SC2017
[ "$CUR" -lt 0 ] && CUR=0 CUR=$((CUR + $1 - CUR % $1 + CUR % $1 * 10 / $1 / 5 * $1))
[ "$CUR" -gt 200 ] && CUR=200 if [ "$CUR" -lt 0 ]; then
CUR=0
elif [ "$CUR" -gt 300 ]; then
CUR=300
fi
;; ;;
*) *)
CUR="$1" CUR="$1"
@ -29,7 +33,7 @@ function update_vol() {
} }
read -r _ CUR MUTE < <(wpctl get-volume "$DEV") read -r _ CUR MUTE < <(wpctl get-volume "$DEV")
CUR="$(("10#${CUR/./}"))" CUR=$((10#${CUR/./}))
if [ -z "$1" ]; then if [ -z "$1" ]; then
echo "$CUR" echo "$CUR"
@ -40,7 +44,9 @@ else
if [[ "$1" =~ [0-9] ]]; then if [[ "$1" =~ [0-9] ]]; then
update_vol "$1" update_vol "$1"
fi fi
[ -n "$MUTE" ] && wpctl set-mute "$DEV" 0 if [ -n "$MUTE" ]; then
wpctl set-mute "$DEV" 0
fi
fi fi
kill "-$SIG" "$(cat "$HOME/.cache/pidofbar")" kill "-$SIG" "$(cat "$XDG_CACHE_HOME/sbar/pid")"

27
.local/bin/vpn Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash -e
if tty -s; then
DMENU=fzf
SUDO=sudo
else
DMENU=/usr/local/bin/dmenu
SUDO=pkexec
fi
if [ "$EUID" != 0 ]; then
exec "$SUDO" env DISPLAY="$DISPLAY" XAUTHORITY="$XAUTHORITY" \
XDG_CACHE_HOME="$XDG_CACHE_HOME" "$BASH" -- "${BASH_SOURCE[0]}" "$@"
fi
if [ "$1" != off ]; then
set -- "$(basename -s.conf "/etc/wireguard/$1"*.conf | "$DMENU")"
if ! wg | grep -q "$1"; then
wg-quick up "$1"
fi
fi
while read -r i; do
wg-quick down "$i"
done < <(ip -br link show type wireguard | awk "\$1 != \"$1\"{print \$1}")
kill -37 "$(cat "$XDG_CACHE_HOME/sbar/pid")"

5
.local/bin/wallpaper Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
shopt -s extglob
feh --bg-fill "$(shuf -en1 "$XDG_CONFIG_HOME/wallpapers/"!(lock.png))" --no-fehbg

View File

@ -1,13 +1,15 @@
#!/bin/bash -e #!/bin/bash -e
iwctl=(iwctl station wlan0) iwctl=(iwctl station "$(find /sys/class/net/wlan* -printf '%f' -quit)")
rfkill unblock wlan rfkill unblock wlan
"${iwctl[@]}" show | grep -q 'Scanning\s\+yes' || "${iwctl[@]}" scan if ! "${iwctl[@]}" show | grep -q 'Scanning\s\+yes'; then
"${iwctl[@]}" scan
fi
for _ in {0..29}; do for _ in {0..29}; do
if "${iwctl[@]}" show | grep -q '\s*State\s\+connected\s*$'; then if "${iwctl[@]}" show | grep -q '\s*State\s\+connected\s*$'; then
kill -37 "$(cat "$HOME/.cache/pidofbar")" kill -36 "$(cat "$XDG_CACHE_HOME/sbar/pid")"
exit 0 exit 0
fi fi
sleep 1 sleep 1

View File

@ -1,3 +0,0 @@
#!/bin/bash -e
env LUTRIS_SKIP_INIT=1 flatpak run net.lutris.Lutris lutris:rungameid/1

View File

@ -1,6 +1,12 @@
# vim: ft=bash
function _ddev() { function _ddev() {
mapfile -t COMPREPLY < <(compgen -W \ cache="/tmp/${FUNCNAME[0]}"
"$(curl -sfL 'https://api.github.com/repos/docker-library/official-images/git/trees/master?recursive=1' | sed -nE 's/.*"library\/(.+)",$/\1/p')" \
-- "${COMP_WORDS[1]}") if ! [ -f "$cache" ]; then
curl -sfL 'https://api.github.com/repos/docker-library/official-images/git/trees/master?recursive=1' | sed -nE 's/.*"library\/(.+)",$/\1/p' > "$cache"
fi
[ "$COMP_CWORD" -ne 1 ] && return
mapfile -t COMPREPLY < <(compgen -W "$(cat "$cache")" -- "${COMP_WORDS[1]}")
} }
complete -F _ddev ddev complete -F _ddev ddev

View File

@ -1,6 +1,11 @@
# vim: ft=bash
function _gi() { function _gi() {
mapfile -t COMPREPLY < <(compgen -W \ cache="/tmp/${FUNCNAME[0]}"
"$(curl -sfL https://www.toptal.com/developers/gitignore/api/list | tr ',' '\n')" \
-- "${COMP_WORDS[1]}") if ! [ -f "$cache" ]; then
curl -sfL https://www.toptal.com/developers/gitignore/api/list | tr ',' '\n' > "$cache"
fi
mapfile -t COMPREPLY < <(compgen -W "$(cat "$cache")" -- "${COMP_WORDS[$COMP_CWORD]}")
} }
complete -F _gi gi complete -F _gi gi

View File

@ -1,3 +1,5 @@
# vim: ft=bash
function _kctx() { function _kctx() {
[ "$COMP_CWORD" -ne 1 ] && return [ "$COMP_CWORD" -ne 1 ] && return
mapfile -t COMPREPLY < <(compgen -W \ mapfile -t COMPREPLY < <(compgen -W \

View File

@ -1,3 +1,5 @@
# vim: ft=bash
function _kns() { function _kns() {
[ "$COMP_CWORD" -ne 1 ] && return [ "$COMP_CWORD" -ne 1 ] && return
mapfile -t COMPREPLY < <(compgen -W \ mapfile -t COMPREPLY < <(compgen -W \

View File

@ -1,2 +0,0 @@
. /usr/share/bash-completion/completions/pacman
complete -F _pacman pac

21
.ssh/known_hosts Normal file
View File

@ -0,0 +1,21 @@
# vim: nowrap
git.gmoker.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDgTtgsVL6fT12EJXUtuGfQra/jG8411Bm8n0kxqt+z8ELNSmaAXMQ5J9WZpK96fU1EaOwBRYJr885Cj7z9hjNkyadbO058huleEI5my91Vtk9lsB1DpdjG1V07uvPyOqrxy2dk/BtRzvzTUrf3B1oAnNJu6ntz73c7t2IiEfsm6z8KqTOKtgbU6D7BnskovVSRP3lS1phSFjzJWKfkGfxyQlOVH/woTSp5G4cYDI6pz+aG3ideHaWE6Ls8yC+76KbVjnUAPHCGk4zUWrqCp2iVVek+13hl7oyp3fwSOIyGzW+x6288PvAgkVTmgRBuTU0VXUgjxJImVAqZFqz0h9X44F2y2quBRXra0f8NXb5uPID1jmP73dudJC3wXie/QW+aQTF6rKAVq750HseQum7HZoD+s8Qg8t1ROxyVqYkes35JjblkRm1+Mips1mZozjwYuAsX8P24z/u2R07Y1fACYr0gX4iIGQSU+ie42n1/33xK2W1HGb4zrsu3RptxQp2rpNsYZ+9NO3VWqaWUbhIyFfyd+jEh8tzCbUvRySSmK5kTSGzTU07flhLehqgKWeWiI+Q4xrg0SLpLLFZJKHc0+935xD9jRNW+FXhOU1ud7nUCRnBlvo0Wp/yKjcU1ycJKt7cmaAwprHGg5KnOAzszAvRVMWAzw6ICyTQmTSY/fQ==
git.maby.dev ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCy6Vljjd9lVRmXjwhxuRopFTALb18I1rVzeyr8X6g1BIvl8PE8EBBeWgJ673pmzdA1KMFbJ5uMah5Cz5oqeXJi/cqneKW5sFiIlRB+/epOGPBHbfDNQOsv+vR1qt+N++SjuP59E2846JEM5G7380eb4iOTSzkPwgv4zEPIIWYzMO4jmHytrsmKU7mKOqbaRYXAc9pqJBJ3K0uvsCBSydCVwICv6ykfex+kPyBxU2o52NgHvrq7vgn4eREy1Fnt4HG8GT46/3H48HOr6zbB43sS3JiMxVNWK2YU3IBGeuo5PMkUBzuWx/GB33W5Pc2GTARoW11T63SZ/EBlJQyRozwD4UzJkJJRtYn//WZLimz9KFMV50Wc9o+Lcfz/xshTfgCn0B9rac1XzsBjJ0riMqyx+6UWjizrrtJtkhhEfobKcws1wRi/I+lWJM08th8DKUMKT599CjjiESFqX1QvfABYt56FDDORskYZRLi2AYeIPsLmLYxmjh9NVu3CcNNPsFmu2xqCWp5Symd6DMSpzejnwL0rWdm1kdPBLLRaOnp/EmwaRVFt98K4XaFA7hHd10NxAoQlG50yUfTo0fsngedpWYKwMsLjatgozjoB6eQAxkVGs4MaGgSwYyn5jrmYnFeAzLPCWL6kzd4dmnvrDi2SCcOWRL0+LNF1ltOw/+U7sw==
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
gmk-agn-k3s10.gmoker.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBg/Q1LaxJETYLM3OQ4Af3FOSIjNdGuuW+E9N1Myo+eTDcXFCiMntpabaa4892h6iir83ipWxHfcWPysGAjg9HA=
gmk-agn-k3s10.gmoker.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEG8qbky30YMixmAkSHKaw0YdFkqB38pFRg/SyYT5rcE
gmk-agn-k3s10.gmoker.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCe0XtLIv+dXyYuTex6PPDOwKG9FVwWi8XvcERb6IRKE+yLHWYip3tCA0gC+WZ8OpiA1DrcKmPpKq8QBHanH4sxyVK1i/RjM0ZfxyXDJ+mpX/qYFsJKq36HlGs7nsFtJhyeK+vvwjeNRkTgT2IF5NjvzPlju30vbBlNsewIO6wN2iA3Ae2DwxKkYI7IkKXVSfcoNSbUUkIwFwoLDLCVsmUXojeWgZdiKfv64tiLKiwkiRSolPRmKNDi9jS9R+d9J0u8XksfSJzDbGbk3O+S4lLltfsYXw+ONoXxQW9xmsOt/tU0EssiYaN1I0fS1fq4a1R4/KSjG3qVOs1ty4M5zyCkbmlQnbsJNGdA9x3WvyURcw6cNnnI2KQhkmNesw8r8XTvXOXc7Oh0pTRa4+azL89gjTCqKj3ijdwOyqo6PtwobHa175F1sC3SkRwPD9cpzz7ls+vwyctEvNR/cbO3W6sht0sTbNN2gbZnIi485KuYBTB8zFW+79hhbIjIyZesD/s=
gmk-gra-k3s10.gmoker.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFVue2qHONB78l8dSSx401QhJS2ShXIxidG6oRyGQ9zcPzx0usC+jeT8vtTV0od4qPDFKBgmvS1oP3AXRcACaFQ=
gmk-gra-k3s10.gmoker.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKO5Li+9f7j6xtxwWgES2KKTjUErcOdEcsczQ+m5aDQ2
gmk-gra-k3s10.gmoker.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCcnkKy7wvuSLqKd2NI3KYkpZyF5KbitCcfO7oJufgFeBzvnSHT7ZUifCvgmoa/0B3r+zsxpiq2MrCFqEUkLF7d2NUpM2Yi7ymq9Txt/2idk3o3sGyQ1dZTVqY0Qv6eCW3jCUCHnw8glDPku03/uh1Yycvl/ytamn3JJXYkzeG1KsTDuIUdNoM7JTPBBpaWKzWtqWkbmRIzY687bTWMjOp/jhnblaqqdNUA6FPP6mwBOlmfhA+vyK1Vj6TXVkHUrVURBLyrS69ED74+jUjMCpEimb/NlXJVf7S2403FNeykpHmRkVWYyCBJ5r3yGYZGZARuGk/gyCL3xyWzYTc1PIENvoV8mHjYKyxAGkSLKkokuIoofpq4G4z/vIfAT3n7UufnFo8zrj5tZpIWmZmFbfkYsS3gYONoBu+O17jTSIiISHGeEd9ChXETuyicD3LCcGtXgbfl6huW6HsjsrQK54gVa53nsYnAeGgnD8hwTIKtdo4FcdUYY6wBK1WdZY2NpV8=
gmk-gra-k8s10.gmoker.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFw3zNFkiL2zyHqzYKGSdRoDidexlF67lRw2/ziBxbL2bKpknzmLFmkX/so4NLfRoL3l7KBPerpgEB/QgEmDx/4=
gmk-gra-k8s10.gmoker.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPmeHCzrppCRHwRWhK6PEpbA0t76dDB7BACyFEM3557E
gmk-gra-k8s10.gmoker.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDNeYdgb3xb/QTlATNtkxkr8WryMlSCYpTVHesapzNOJwCrqCErxFehsb3PYLgWAKrvMJTyabj3J3EBwDlwhy1a+2XHUjJE++bdYPj4UhRGziUVcLeKhz/cMiK5DCqeE7PqE5WdinMou0+wQByDKjjzBs3vrtjW9/2YYRIECHUbYiN+4AmPAtDko+ya9/Omc3XB78WeFs/DOIdm+k7r/T8R/zhgVExfg5QxBr6/CZHeheQ9x/sqWtHsGcrcBhLLfupri2jTFcL6IAIoRigC+OQvJpx7DmkyZidGX6i/bMxaj+4cItLDNVE8zyetRFR+BiC7YZKr/Osv7Ggfe/UWBYJEFNpSPzh18hromzhQcLPeJeaj0e53SdUTkoMpqVRD+9f8Ur1cYDLnpX5pZVBmcd/TejOVGXezMvZsKRscksGn8kkKPclP7GfwgUCFR8bUQO4ZXCIkI8a4yUCmHv/lwsN9msSEnptGwois8GyMcXCQ2PGHeooM3k0SfVyNQRr1zWM=
maby-rbx-10.maby.dev ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDo8ghj94fc7ZDqtFCteCZvGKXxAgyr8weVVBhMgn/jrn+E7lhKwnAYHBO4A8RkOk0ZpzmPgzUmjF/NVEtCtmCI=
maby-rbx-10.maby.dev ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMRBXBjej1iFEPX/J9lDYG5PKPSq6eaUefz9vkR/N53f
maby-rbx-10.maby.dev ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCNmPM49diEYdiEXEPXykcXMyWp+lvUav7GvJ9WZ8S9M8P65Cs8x2cEliKcxS8/73zOYe2cMMTHQflFsu7PGMxyYSUCtFyH0tHPoWdy4GqCTUhoGOeW7mEZr3TBSC/ie/kEXpLgFk3v9xQVm18Hj7UBDEWHqQhpXNrzH2vwGksYdxDYQ51gGEcf5oaVauFRPa50ZpQDHiQ18hNwoE+SlkBcoSuAddXxg7PYZbgKHpWL1HXU+qYFbCY8rtHuTgkSQYCw6RCPyp7euZKzxM8oOgZkK+V6LqwXn/rBuHIaFR8+RJO+bL9iBwnOW5C3qEGI1PZ2Nf5FtXwVFuMtEX7DSQfxFfyZbfKY7Nr+yv1x4vMJiaa8/Ds30aG4FPYuYsG9GTk6ibhCqTl1UjXEJrbi+Ps7a0yUJVYn1AqTs0BhNEwJVzMuhVaYzy28cNPmKHp0vhymSMWxjL0evaZYn9bsGr87GVwYmnmA/aJKFAZK1cH6r0kBfSfOPjzPwNiaCywZQc8=
wg.yw5n.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNL6/GXyFdQl0pJxc5V7DssrAQNYVLjA/bQyP29a7McxxHUQvOnDm+4+GNDV0vX4tERBLXk5KfpdLtRIsrkFn9o=
wg.yw5n.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBTqzAcx3b60/DRQxdQtrBCPr4IV5Yy2bT+MDICM/t4S
wg.yw5n.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCh4CPf/3FZzFtJiSW8eSDc9mqjAkadyqYt7lZowIJnFhU663Jsqk6KeS9oHmfSYw43da0eTxxPWACAA7gptHcEqiOqyi6qQc90YL9oPQv8gxPoPl09e5Eawj7qKdkA/1hsY4kZ615P5GN1eX8hBsDczax5ta0m45YhSzsEfEk5aKQlZEO0wF1KzVdmrfgtvdERVJOkWZTua7IqgYLWI6OaPgBWJN0+GXPXVUCF1cb93ffFOboPguYWbRvZbNGjW0q2NbOfKWxon6lfBJ1RSbZBb5vYOEeKY0Wl2X1bBCOLbqNjgs40qenEA7+xhoobWCfRnW2mBYoIhRuO+IfOSAecsWUxbNUCP108GCIYHNxtK1ixVQMrH7BvTXogrkIZ3Y8W7PoDhy27jJme1ZEa2a/nJC/6ZVnfKuyFnBauHcQwOMw0ASsVPDWnSV0X69bhz5FN8wQ2ZcSnEcgh8wb7M01Ld9zlS57xDaL2PFk7hNdRprm+iVZpEUN2QoGreStNQ3E=

View File

@ -1,12 +1,3 @@
#unified-extensions-button, #unified-extensions-button > .toolbarbutton-icon{
width: 0px !important;
padding: 0px !important;
}
.tab-close-button { .tab-close-button {
visibility: collapse !important; visibility: collapse !important;
} }
#alltabs-button {
display: none !important;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,52 +0,0 @@
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("browser.aboutConfig.showWarning", false);
user_pref("browser.contentblocking.category", "strict");
user_pref("browser.download.useDownloadDir", false);
user_pref("browser.formfill.enable", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
user_pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
user_pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines", "");
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.preferences.moreFromMozilla", false);
user_pref("browser.privatebrowsing.vpnpromourl", "");
user_pref("browser.tabs.tabmanager.enabled", false);
user_pref("browser.topsites.contile.cachedTiles", "");
user_pref("browser.urlbar.update2.engineAliasRefresh", true);
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
user_pref("dom.security.https_only_mode", true);
user_pref("extensions.formautofill.addresses.enabled", false);
user_pref("extensions.formautofill.creditCards.enabled", false);
user_pref("extensions.pocket.enabled", false);
user_pref("findbar.highlightAll", true);
user_pref("identity.fxaccounts.enabled", false);
user_pref("media.videocontrols.picture-in-picture.video-toggle.enabled", false);
user_pref("media.webspeech.synth.dont_notify_on_error", true);
user_pref("network.proxy.socks_remote_dns", true);
user_pref("privacy.sanitize.sanitizeOnShutdown", true);
user_pref("signon.rememberSignons", false);
user_pref("startup.homepage_welcome_url", "");
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.pioneer-new-studies-available", false);
// user preferences
user_pref("browser.startup.homepage", "https://music.youtube.com");
user_pref("browser.startup.page", 1);
user_pref("browser.toolbars.bookmarks.visibility", "always");
user_pref("browser.translations.enable", false);
user_pref("privacy.clearOnShutdown.cache", false);
user_pref("privacy.clearOnShutdown.cookies", false);
user_pref("privacy.clearOnShutdown.downloads", true);
user_pref("privacy.clearOnShutdown.formdata", true);
user_pref("privacy.clearOnShutdown.history", true);
user_pref("privacy.clearOnShutdown.offlineApps", true);
user_pref("privacy.clearOnShutdown.openWindows", true);
user_pref("privacy.clearOnShutdown.sessions", true);
user_pref("privacy.clearOnShutdown.siteSettings", true);
//user_pref("privacy.clearOnShutdown_v2.cache", false);
//user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", false);
//user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", false);
//user_pref("privacy.clearOnShutdown_v2.siteSettings", false);

View File

@ -3,12 +3,6 @@ Version=2
[InstallCF146F38BCAB2D21] [InstallCF146F38BCAB2D21]
Default=ange Default=ange
Locked=1
[Profile1]
Name=music
IsRelative=1
Path=music
[Profile0] [Profile0]
Name=ange Name=ange

View File

@ -3,7 +3,6 @@
dbus-update-activation-environment --systemd DISPLAY XAUTHORITY dbus-update-activation-environment --systemd DISPLAY XAUTHORITY
# startup # startup
autorandr -c &
xss-lock -n "feh --fullscreen '$XDG_CONFIG_HOME/wallpapers/lock.png'" -- lock & xss-lock -n "feh --fullscreen '$XDG_CONFIG_HOME/wallpapers/lock.png'" -- lock &
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 || # arch /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 || # arch
/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 || # debian /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 || # debian
@ -15,4 +14,6 @@ sbar &
xset s 600 15 xset s 600 15
xset dpms 616 616 616 xset dpms 616 616 616
wallpaper
exec dwm exec dwm

View File

@ -1,17 +1,17 @@
# dotfiles # dotfiles
See (https://git.maby.dev/ange/archinstall.git) for installation See https://git.maby.dev/ange/archinstall.git for installation
- To clone the repo: - To clone the repo:
```bash ```bash
git clone --bare https://git.maby.dev/ange/.dotfiles.git ~/.dotfiles git clone --bare https://git.maby.dev/ange/.dotfiles.git ~/.dotfiles
alias config='git --git-dir=$HOME/.dotfiles --work-tree=$HOME' alias c='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
config checkout -f c checkout
config submodule update --init --recursive --remote c submodule update --init --recursive --remote
config config status.showUntrackedFiles no c config status.showUntrackedFiles no
``` ```
- To update submodules: - To update submodules:
```bash ```bash
config submodule update --recursive --remote c submodule update --recursive --remote
``` ```