feat: massive cleanup, kctx cache

This commit is contained in:
ange 2025-04-05 06:31:22 +00:00
parent 23d1e06c20
commit a759ac8dd2
Signed by: ange
GPG Key ID: 9E0C4157BB7BEB1D
28 changed files with 320 additions and 1743 deletions

View File

@ -34,7 +34,6 @@ export MAKEFLAGS='-j'
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
export DOCKER_BUILDKIT=0
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock"
export SSH_AUTH_SOCK; SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"

View File

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

View File

@ -1,3 +1,27 @@
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() {
if [ -z "$1" ]; then
return 1
@ -17,7 +41,6 @@ function update() {
$TERM --hold -e "$SHELL" -xc "sudo pacman -Syu && echo $'\e[32mDONE'" &
$TERM --hold -e "$SHELL" -xc "flatpak update && echo -e $'\e[32mDONE'" &
$TERM --hold -e "$SHELL" -xc "git --git-dir='$HOME/.dotfiles/' --work-tree='$HOME' submodule update --remote --recursive && echo $'\e[32mDONE'" &
$TERM --hold -e "$SHELL" -xc "firefox update && echo -e $'\e[32mDONE'" &
}
function tmp() {

View File

@ -32,7 +32,6 @@ compalias dk='podman' \
dknrm='podman network rm' \
dksys='podman system' \
dksysdf='podman system df' \
dksysp='podman system prune' \
dktop='podman top' \
dkv='podman volume' \
dkvc='podman volume create' \
@ -63,12 +62,12 @@ compalias dc='docker-compose' \
function dkb() {
local name="${1:-${PWD##*/}}"; shift
docker build . -t "$name" "$@"
podman build . -t "$name" "$@"
}
function dkr() {
if [ -z "$1" ]; then
set -- "${PWD##*/}"
fi
docker run -i -t "$@"
podman run -i -t "$@"
}

View File

@ -1,46 +1,54 @@
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() {
local cache="$XDG_CACHE_HOME/${FUNCNAME[0]}"
local conf="${KUBECONFIG:-"$HOME/.kube/config"}"
local dir="$XDG_CACHE_HOME/kns"
if [ "$1" == - ]; then
echo "not implemented" >&2
return 1
elif [ -n "$1" ]; then
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
else
if [ "$conf" -nt "$cache" ]; then
set -- "$(kubectl config view --minify -ojsonpath='{..namespace}')"
else
cat "$cache"
return
fi
fi
tee "$cache" <<< "$1"
mkdir -p "$dir" > /dev/null
_kctxns "$dir/$(kctx)" kns "$@"
}
function kctx() {
local cache="$XDG_CACHE_HOME/${FUNCNAME[0]}"
local conf="${KUBECONFIG:-"$HOME/.kube/config"}"
if [ "$1" == - ]; then
echo "not implemented" >&2
return 1
elif [ -n "$1" ]; then
kubectl config use-context "$1" > /dev/null || return
else
if [ "$conf" -nt "$cache" ]; then
set -- "$(kubectl config current-context)"
else
cat "$cache"
return
fi
fi
tee "$cache" <<< "$1"
}
function _kctx_get() { kubectl config current-context ; }
function _kctx_set() { kubectl config use-context "$1" ; }
# shellcheck disable=SC2120
function kctx() { _kctxns "$XDG_CACHE_HOME/kctx" kctx "$@" ; }
alias kga='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)"' \
kgaoname='kubectl get "$(kubectl api-resources --verbs=list --namespaced -oname | grep -v event | paste -sd,)" -oname' \
@ -59,31 +67,22 @@ compalias k=kubectl \
krm='kubectl delete' \
function _k8salias() {
local name short
local n s a
for a in "$@"; do
name="${a#*=}" short="${a%%=*}"
compalias "kd${short}=kubectl describe $name" \
"kd${short}alloname=kubectl describe $name --all-namespaces -oname" \
"kd${short}allowide=kubectl describe $name --all-namespaces -owide" \
"kd${short}alloyaml=kubectl describe $name --all-namespaces -oyaml" \
"kd${short}oname=kubectl describe $name -oname" \
"kd${short}owide=kubectl describe $name -owide" \
"kd${short}oyaml=kubectl describe $name -oyaml" \
"kg${short}=kubectl get $name" \
"kg${short}alloname=kubectl get $name --all-namespaces -oname" \
"kg${short}allowide=kubectl get $name --all-namespaces -owide" \
"kg${short}alloyaml=kubectl get $name --all-namespaces -oyaml" \
"kg${short}oname=kubectl get $name -oname" \
"kg${short}owide=kubectl get $name -owide" \
"kg${short}oyaml=kubectl get $name -oyaml" \
"krm${short}=kubectl delete $name" \
"krm${short}alloname=kubectl delete $name --all-namespaces -oname" \
"krm${short}allowide=kubectl delete $name --all-namespaces -owide" \
"krm${short}alloyaml=kubectl delete $name --all-namespaces -oyaml" \
"krm${short}oname=kubectl delete $name -oname" \
"krm${short}owide=kubectl delete $name -owide" \
"krm${short}oyaml=kubectl delete $name -oyaml"
for a in '' "${@/=/= }"; do
s="${a%%=*}" n="${a#*=}"
compalias "kd${s}=kubectl describe$n" \
"kg${s}=kubectl get$n" \
"kg${s}alloname=kubectl get --all-namespaces -oname$n" \
"kg${s}allowide=kubectl get --all-namespaces -owide$n" \
"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 \

View File

@ -1,14 +1,12 @@
# 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
https://www.bunkerity.com/fr
https://morphaius.com/
https://searx.yw5n.com:30903/
comm/discord https://discord.com/app
comm/whatsapp https://web.whatsapp.com
@ -94,3 +92,4 @@ 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

@ -22,7 +22,6 @@ https://github.com/qbittorrent/qBittorrent/tags.atom "qBittorrent" < item-rule
https://github.com/searxng/searxng/commits/master.atom "SearXNG"
https://github.com/element-hq/synapse/releases.atom "Synapse" < item-rule "title NOT LIKE '%rc%'"
https://github.com/ventoy/Ventoy/releases.atom "Ventoy"
@ K8S
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" < item-rule "title NOT LIKE 'cmd/ctl/%' AND title NOT LIKE '%-alpha._' AND title NOT LIKE '%-beta._'"

View File

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

View File

@ -23,6 +23,8 @@ vim.g.netrw_list_hide = "\\.o$,\\.d$,\\.gc..$"
vim.opt.lazyredraw = true
vim.opt.complete = vim.o.complete .. ",i"
vim.g.go_recommended_style = 0
require"theme"
require"pack-lspconfig"
require"pack-telescope"

@ -1 +1 @@
Subproject commit 814f102cd1da3dc78c7d2f20f2ef3ed3cdf0e6e4
Subproject commit a4ed82509cecc56df1c7138920a1aeaf246c0ac5

@ -1 +1 @@
Subproject commit f0ff9f0e5dab10123d3192b12556aa8f88859790
Subproject commit 523a9e148919f58eb5a013f76787e57696e00c93

3
.gitmodules vendored
View File

@ -19,6 +19,3 @@
[submodule ".local/aur/sparrow"]
path = .local/aur/sparrow
url = https://aur.archlinux.org/sparrow-wallet.git
[submodule ".local/aur/waydroid"]
path = .local/aur/waydroid
url = https://aur.archlinux.org/waydroid.git

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

@ -1 +1 @@
Subproject commit b990349ef3384459b1879d3b535433a95c9af904
Subproject commit 582b5504e110b0c21310eb7814b14633f64684d8

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

View File

@ -1,20 +0,0 @@
#!/bin/bash -e
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
udisksctl mount -b "$name" > /dev/null
fi
break
done || exit
done

View File

@ -1,5 +1,4 @@
#!/bin/bash -e
shopt -s extglob
if [ "$1" = -p ]; then

View File

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

View File

@ -3,7 +3,6 @@
sites=(
'https://discord.com'
'https://gmoker.com'
'https://linkedin.com'
'https://login.microsoftonline.com'
'https://maby.dev'
'https://web.whatsapp.com'

View File

@ -3,29 +3,24 @@
function update_crypto() {
local c
c="$(crypto 2> /dev/null)" && crypto="$c"
c="$(crypto 2> /dev/null)" && echo "$c" > "$SBAR/crypto"
}
function update_cpu() {
cpu=" $(awk '{print $1}' /proc/loadavg)"
echo " $(awk '{print $1}' /proc/loadavg)" > "$SBAR/cpu"
}
function update_memory() {
memory=" $(free -h | awk '/^Mem:/{print $3}')"
echo " $(free -h | awk '/^Mem:/{print $3}')" > "$SBAR/memory"
}
function update_bat() {
local dir cap
local cap; cap="$(cat /sys/class/power_supply/BAT0/capacity)"
dir='/sys/class/power_supply/BAT0'
cap="$(cat "$dir/capacity")"
if grep -qv Discharging "$dir/status"; then
bat=" $cap%"
elif [ "$cap" -gt 80 ]; then bat=" $cap%"
elif [ "$cap" -gt 60 ]; then bat=" $cap%"
elif [ "$cap" -gt 40 ]; then bat=" $cap%"
elif [ "$cap" -gt 20 ]; then bat=" $cap%"
else bat=" $cap%"
if grep -qv Discharging /sys/class/power_supply/BAT0/status; then
echo " $cap%" > "$SBAR/bat"
else
echo " $cap%" > "$SBAR/bat"
fi
}
@ -33,11 +28,10 @@ function update_sink_vol() {
local vol mute
read -r _ vol mute < <(wpctl get-volume '@DEFAULT_AUDIO_SINK@') || return
vol=$((10#${vol/./}))
if [ -n "$mute" ]; then sink_vol='🔇'
elif [ "$vol" -gt 67 ]; then sink_vol=" $vol"
elif [ "$vol" -gt 33 ]; then sink_vol=" $vol"
else sink_vol=" $vol"
if [ -n "$mute" ]; then
echo '🔇' > "$SBAR/sink"
else
echo " $((10#${vol/./}))" > "$SBAR/sink"
fi
}
@ -45,9 +39,10 @@ function update_source_vol() {
local vol mute
read -r _ vol mute < <(wpctl get-volume '@DEFAULT_AUDIO_SOURCE@') || return
vol=$((10#${vol/./}))
if [ -n "$mute" ]; then source_vol='🔇'
else source_vol=" $vol"
if [ -n "$mute" ]; then
echo '' > "$SBAR/source"
else
echo " $((10#${vol/./}))" > "$SBAR/source"
fi
}
@ -58,20 +53,20 @@ function update_net() {
j="$(networkctl status "$dev" --json=short)"
case "$(jq -r .Type <<< "$j")" in
ether)
net="🌐 $dev"
echo "🌐 $dev" > "$SBAR/net"
;;
wlan)
ssid="$(jq -r .SSID <<< "$j")"
sig="$(awk "/$dev/{printf \"%.0f\", \$3}" /proc/net/wireless)"
if [ "$sig" -gt 56 ]; then net="▂▄▆█ $ssid"
elif [ "$sig" -gt 38 ]; then net="▂▄▆_ $ssid"
elif [ "$sig" -gt 21 ]; then net="▂▄__ $ssid"
elif [ "$sig" -gt 3 ]; then net="▂___ $ssid"
else net="____ $ssid"
if [ "$sig" -gt 56 ]; then echo "▂▄▆█ $ssid" > "$SBAR/net"
elif [ "$sig" -gt 38 ]; then echo "▂▄▆_ $ssid" > "$SBAR/net"
elif [ "$sig" -gt 21 ]; then echo "▂▄__ $ssid" > "$SBAR/net"
elif [ "$sig" -gt 3 ]; then echo "▂___ $ssid" > "$SBAR/net"
else echo "____ $ssid" > "$SBAR/net"
fi
;;
*)
net='⚠'
echo '⚠' > "$SBAR/net"
;;
esac
}
@ -79,58 +74,54 @@ function update_net() {
function update_vpn() {
local v; v="$(ip -br link show type wireguard | awk '{print $1}')"
if [ -n "$v" ]; then vpn=" 🔒 $v"
else vpn=
if [ -n "$v" ]; then
echo " 🔒 $v" > "$SBAR/vpn"
else
: > "$SBAR/vpn"
fi
}
function update_time() {
time="$(TZ=Asia/Makassar date '+%R %Z') - $(date -u '+%a %m-%d %R')"
}
function reload() {
sec=0
echo "$(TZ=Asia/Makassar date '+%R %Z') - $(date -u '+%a %m-%d %R')" \
> "$SBAR/time"
}
function display() {
"${DISPLAYCMD[@]}" "$crypto | $cpu | $memory | $sink_vol $source_vol | $net$vpn | $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
# trap '<function>;display;wait' 'RTMIN+n'
trap 'reload' 'RTMIN'
trap 'update_sink_vol;display;wait' 'RTMIN+1'
trap 'update_source_vol;display;wait' 'RTMIN+2'
trap 'update_net;display;wait' 'RTMIN+3'
trap 'update_vpn;display;wait' 'RTMIN+4'
# trap '<function>;display;wait -n' 'RTMIN+n'
trap 'update_sink_vol;display;wait -n' 'RTMIN+0'
trap 'update_source_vol;display;wait -n' 'RTMIN+1'
trap 'update_net;display;wait -n' 'RTMIN+2'
trap 'update_vpn;display;wait -n' 'RTMIN+3'
# to update it from external commands
## kill -m "$(cat "$XDG_CACHE_HOME/pidofbar")"
# where m = 34 + n
echo "$$" > "$XDG_CACHE_HOME/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
if [ $((sec % 300)) -eq 5 ]; then
update_crypto
fi
if [ $((sec % 5)) -eq 0 ]; then
update_cpu
update_memory
update_sink_vol
update_source_vol
update_net
update_vpn
update_bat
update_time
display
fi
((sec += 5))
sleep $((5 - 10#$(date '+%S') % 5)) & wait
update_cpu
update_memory
update_sink_vol
update_source_vol
update_net
update_vpn
update_bat
update_time
display
sleep $((5 - 10#$(date '+%S') % 5)) & wait -n
done

View File

@ -3,11 +3,11 @@
case "$1" in
s)
DEV='@DEFAULT_AUDIO_SINK@'
SIG=35
SIG=34
;;
m)
DEV='@DEFAULT_AUDIO_SOURCE@'
SIG=36
SIG=35
;;
*)
exit 1
@ -33,7 +33,7 @@ function update_vol() {
}
read -r _ CUR MUTE < <(wpctl get-volume "$DEV")
CUR=$(("10#${CUR/./}"))
CUR=$((10#${CUR/./}))
if [ -z "$1" ]; then
echo "$CUR"
@ -49,4 +49,4 @@ else
fi
fi
kill "-$SIG" "$(cat "$XDG_CACHE_HOME/pidofbar")"
kill "-$SIG" "$(cat "$XDG_CACHE_HOME/sbar/pid")"

View File

@ -13,16 +13,15 @@ if [ "$EUID" != 0 ]; then
XDG_CACHE_HOME="$XDG_CACHE_HOME" "$BASH" -- "${BASH_SOURCE[0]}" "$@"
fi
if [ -z "$1" ]; then
set -- "$(basename -s.conf /etc/wireguard/*.conf | "$DMENU")"
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 < <(wg show interfaces)
done < <(ip -br link show type wireguard | awk "\$1 != \"$1\"{print \$1}")
if [ "$1" != off ]; then
wg-quick up "$1"
fi
kill -38 "$(cat "$XDG_CACHE_HOME/pidofbar")"
kill -37 "$(cat "$XDG_CACHE_HOME/sbar/pid")"

View File

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

View File

@ -1,17 +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=
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-agn-001.maby.dev ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBApovEYSJC9rvvf/eKkCK2X5A5jPJ8IXL8ARTph1AFK/vk3fg0dALJPhhPNIYkByM3p0sjv8oDj7SDkcqXaTJI=
maby-agn-001.maby.dev ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIiwLJZj0vkh1TXzvnTbhXN69ZieiGyT0MhElqcfE4gi
maby-agn-001.maby.dev ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCiVxPl8ViIk1uKazSup2UDljaqJNcV8rIM/SP6ob78NIeP0xcc4YW3sa4g77k+yblyUdow//bMoSztkiqyigH/6PVtK3SJYmCWp7NjwSdaFY7p8nsAGYN25zOLJNAgRh8/n2NSK8PGmYgJ23WNMAzUx+PeLCcOia75IpzE8kKGXxh9FQ2f/fdMIn1n9RBmfx41MRSx+8NBzcc9uEZslyGkKack/1360cEhoqKKw2EloIAAo7wet9uXejW3c+sxmZ4OCcKvbMKsybPT9IcEgl+Boq8ny/GYwd393PDv155BszUrKZjwkRtQWXp6bET8UNGx+NAdGHoQZZ+Dmt2ZvQtM0GmLWOU8zriNWIKsAEpRpJqOsiQVkUqtBOpKLR6+IaW0Z9PklWqwIk1IRWCulsyXpmcdGsXXzDLiOA2qEsY2C1bh7uynkD9oQVj/FFWATV2WgHuSEAfY11Cv9t8d+Yq/0xox5Qv07hhhvBR15tGSkJ4jVgLov++nru0tb5DNbk8=
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
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,7 +1,7 @@
/******
* name: arkenfox user.js
* date: 13 January 2025
* version: 133
* date: 6 March 2025
* version: 135
* urls: https://github.com/arkenfox/user.js [repo]
* : https://arkenfox.github.io/gui/ [interactive]
* license: MIT: https://github.com/arkenfox/user.js/blob/master/LICENSE.txt
@ -63,6 +63,7 @@
6000: DON'T TOUCH
7000: DON'T BOTHER
8000: DON'T BOTHER: FINGERPRINTING
8500: TELEMETRY
9000: NON-PROJECT RELATED
9999: DEPRECATED / RENAMED
@ -82,7 +83,7 @@ user_pref("browser.aboutConfig.showWarning", false);
user_pref("_user.js.parrot", "0100 syntax error: the parrot's dead!");
/* 0102: set startup page [SETUP-CHROME]
* 0=blank, 1=home, 2=last visited page, 3=resume previous session
* [NOTE] Session Restore is cleared with history (2811), and not used in Private Browsing mode
* [NOTE] Session Restore is cleared with history (2811+), and not used in Private Browsing mode
* [SETTING] General>Startup>Restore previous session ***/
user_pref("browser.startup.page", 0);
/* 0103: set HOME+NEWWINDOW page
@ -116,8 +117,8 @@ user_pref("extensions.getAddons.showPane", false); // [HIDDEN PREF]
/* 0321: disable recommendations in about:addons' Extensions and Themes panes [FF68+] ***/
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
/* 0322: disable personalized Extension Recommendations in about:addons and AMO [FF65+]
* [NOTE] This pref has no effect when Health Reports (0331) are disabled
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to make personalized extension recommendations
* [NOTE] This pref has no effect when Health Reports (8501) are disabled
* [SETTING] Privacy & Security>Firefox Data Collection and Use>Allow personalized extension recommendations
* [1] https://support.mozilla.org/kb/personalized-extension-recommendations ***/
user_pref("browser.discovery.enabled", false);
/* 0323: disable shopping experience [FF116+]
@ -125,41 +126,13 @@ user_pref("browser.discovery.enabled", false);
user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
/** TELEMETRY ***/
/* 0330: disable new data submission [FF41+]
* If disabled, no policy is shown or upload takes place, ever
* [1] https://bugzilla.mozilla.org/1195552 ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false);
/* 0331: disable Health Reports
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send technical... data ***/
user_pref("datareporting.healthreport.uploadEnabled", false);
/* 0332: disable telemetry
* The "unified" pref affects the behavior of the "enabled" pref
* - If "unified" is false then "enabled" controls the telemetry module
* - If "unified" is true then "enabled" only controls whether to record extended data
* [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2]
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
* [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false); // see [NOTE]
user_pref("toolkit.telemetry.server", "data:,");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+]
user_pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+]
/* 0333: disable Telemetry Coverage
* [1] https://blog.mozilla.org/data/2018/08/20/effectively-measuring-search-in-firefox/ ***/
user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF]
user_pref("toolkit.coverage.endpoint.base", "");
/* 0335: disable Firefox Home (Activity Stream) telemetry ***/
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
/** STUDIES ***/
/* 0340: disable Studies
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to install and run studies ***/
* [SETTING] Privacy & Security>Firefox Data Collection and Use>Install and run studies ***/
user_pref("app.shield.optoutstudies.enabled", false);
/* 0341: disable Normandy/Shield [FF60+]
* Shield is a telemetry system that can push and test "recipes"
@ -173,7 +146,7 @@ user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false); // [FF44+]
// user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // [FF51+] [DEFAULT: false]
/* 0351: enforce no submission of backlogged Crash Reports [FF58+]
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports ***/
* [SETTING] Privacy & Security>Firefox Data Collection and Use>Send backlogged crash reports ***/
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false]
/** OTHER ***/
@ -261,7 +234,7 @@ user_pref("network.file.disable_unc_paths", true); // [HIDDEN PREF]
* [1] https://bugzilla.mozilla.org/1433507
* [2] https://en.wikipedia.org/wiki/GVfs
* [3] https://en.wikipedia.org/wiki/GIO_(software) ***/
user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: "" FF118+]
user_pref("network.gio.supported-protocols", ""); // [HIDDEN PREF] [DEFAULT: ""]
/* 0705: disable proxy direct failover for system requests [FF91+]
* [WARNING] Default true is a security feature against malicious extensions [1]
* [SETUP-CHROME] If you use a proxy and you trust your extensions
@ -320,11 +293,11 @@ user_pref("browser.urlbar.yelp.featureGate", false); // [FF124+]
/* 0807: disable urlbar clipboard suggestions [FF118+] ***/
// user_pref("browser.urlbar.clipboard.featureGate", false);
/* 0808: disable recent searches [FF120+]
* [NOTE] Recent searches are cleared with history (2811)
* [NOTE] Recent searches are cleared with history (2811+)
* [1] https://support.mozilla.org/kb/search-suggestions-firefox ***/
// user_pref("browser.urlbar.recentsearches.featureGate", false);
/* 0810: disable search and form history
* [NOTE] We also clear formdata on exit (2811)
* [NOTE] We also clear formdata on exit (2811+)
* [SETUP-WEB] Be aware that autocomplete form data can be read by third parties [1][2]
* [SETTING] Privacy & Security>History>Custom Settings>Remember search and form history
* [1] https://blog.mindedsecurity.com/2011/10/autocompleteagain.html
@ -337,7 +310,7 @@ user_pref("browser.formfill.enable", false);
/* 0820: disable coloring of visited links
* [SETUP-HARDEN] Bulk rapid history sniffing was mitigated in 2010 [1][2]. Slower and more expensive
* redraw timing attacks were largely mitigated in FF77+ [3]. Using RFP (4501) further hampers timing
* attacks. Don't forget clearing history on exit (2811). However, social engineering [2#limits][4][5]
* attacks. Don't forget clearing history on exit (2811+). However, social engineering [2#limits][4][5]
* and advanced targeted timing attacks could still produce usable results
* [1] https://developer.mozilla.org/docs/Web/CSS/Privacy_and_the_:visited_selector
* [2] https://dbaron.org/mozilla/visited-privacy
@ -380,7 +353,7 @@ user_pref("network.auth.subresource-http-auth-allow", 1);
/*** [SECTION 1000]: DISK AVOIDANCE ***/
user_pref("_user.js.parrot", "1000 syntax error: the parrot's gone to meet 'is maker!");
/* 1001: disable disk cache
* [NOTE] We also clear cache on exit (2811)
* [NOTE] We also clear cache on exit (2811+)
* [SETUP-CHROME] If you think disk cache helps perf, then feel free to override this ***/
user_pref("browser.cache.disk.enable", false);
/* 1002: set media cache in Private Browsing to in-memory and increase its maximum size
@ -442,13 +415,14 @@ user_pref("security.tls.enable_0rtt_data", false);
* [1] https://en.wikipedia.org/wiki/Ocsp ***/
user_pref("security.OCSP.enabled", 1); // [DEFAULT: 1]
/* 1212: set OCSP fetch failures (non-stapled, see 1211) to hard-fail
* [SETUP-WEB] SEC_ERROR_OCSP_SERVER_ERROR
* [SETUP-WEB] SEC_ERROR_OCSP_SERVER_ERROR | SEC_ERROR_OCSP_UNAUTHORIZED_REQUEST
* When a CA cannot be reached to validate a cert, Firefox just continues the connection (=soft-fail)
* Setting this pref to true tells Firefox to instead terminate the connection (=hard-fail)
* It is pointless to soft-fail when an OCSP fetch fails: you cannot confirm a cert is still valid (it
* could have been revoked) and/or you could be under attack (e.g. malicious blocking of OCSP servers)
* [1] https://blog.mozilla.org/security/2013/07/29/ocsp-stapling-in-firefox/
* [2] https://www.imperialviolet.org/2014/04/19/revchecking.html ***/
* [2] https://www.imperialviolet.org/2014/04/19/revchecking.html
* [3] https://letsencrypt.org/2024/12/05/ending-ocsp/ ***/
user_pref("security.OCSP.require", true);
/** CERTS / HPKP (HTTP Public Key Pinning) ***/
@ -463,7 +437,7 @@ user_pref("security.cert_pinning.enforcement_level", 2);
* 3 = consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked" (default)
* [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=1429800,1670985,1753071
* [2] https://blog.mozilla.org/security/tag/crlite/ ***/
user_pref("security.remote_settings.crlite_filters.enabled", true);
user_pref("security.remote_settings.crlite_filters.enabled", true); // [DEFAULT: true FF137+]
user_pref("security.pki.crlite_mode", 2);
/** MIXED CONTENT ***/
@ -647,41 +621,33 @@ user_pref("browser.contentblocking.category", "strict"); // [HIDDEN PREF]
/*** [SECTION 2800]: SHUTDOWN & SANITIZING ***/
user_pref("_user.js.parrot", "2800 syntax error: the parrot's bleedin' demised!");
/* 2810: enable Firefox to clear items on shutdown
* [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811), or manually via site data (2820) and
* [NOTE] In FF129+ clearing "siteSettings" on shutdown (2811+), or manually via site data (2820+) and
* via history (2830), will no longer remove sanitize on shutdown "cookie and site data" site exceptions (2815)
* [SETTING] Privacy & Security>History>Custom Settings>Clear history when Firefox closes | Settings ***/
user_pref("privacy.sanitize.sanitizeOnShutdown", true);
/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS | v2 migration is FF128+ ***/
/* 2811: set/enforce what items to clear on shutdown (if 2810 is true) [SETUP-CHROME]
* [NOTE] If "history" is true, downloads will also be cleared ***/
user_pref("privacy.clearOnShutdown.cache", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown_v2.cache", true); // [FF128+] [DEFAULT: true]
user_pref("privacy.clearOnShutdown.downloads", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.formdata", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown.history", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [FF128+] [DEFAULT: true]
// user_pref("privacy.clearOnShutdown.siteSettings", false); // [DEFAULT: false]
// user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [FF128+] [DEFAULT: false]
/* 2812: set Session Restore to clear on shutdown (if 2810 is true) [FF34+]
* [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811)
/** SANITIZE ON SHUTDOWN: IGNORES "ALLOW" SITE EXCEPTIONS ***/
/* 2811: set/enforce clearOnShutdown items (if 2810 is true) [SETUP-CHROME] [FF128+] ***/
user_pref("privacy.clearOnShutdown_v2.cache", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true); // [DEFAULT: true]
// user_pref("privacy.clearOnShutdown_v2.siteSettings", false); // [DEFAULT: false]
/* 2812: set/enforce clearOnShutdown items [FF136+] ***/
user_pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true); // [DEFAULT: true]
user_pref("privacy.clearOnShutdown_v2.downloads", true);
user_pref("privacy.clearOnShutdown_v2.formdata", true);
/* 2813: set Session Restore to clear on shutdown (if 2810 is true) [FF34+]
* [NOTE] Not needed if Session Restore is not used (0102) or it is already cleared with history (2811+)
* [NOTE] If true, this prevents resuming from crashes (also see 5008) ***/
// user_pref("privacy.clearOnShutdown.openWindows", true);
/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS FF103+ | v2 migration is FF128+ ***/
/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME]
* [NOTE] Exceptions: A "cookie" permission also controls "offlineApps" (see note below). For cross-domain logins,
* add exceptions for both sites e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on)
* [NOTE] "offlineApps": Offline Website Data: localStorage, service worker cache, QuotaManager (IndexedDB, asm-cache)
* [NOTE] "sessions": Active Logins (has no site exceptions): refers to HTTP Basic Authentication [1], not logins via cookies
/** SANITIZE ON SHUTDOWN: RESPECTS "ALLOW" SITE EXCEPTIONS ***/
/* 2815: set "Cookies" and "Site Data" to clear on shutdown (if 2810 is true) [SETUP-CHROME] [FF128+]
* [NOTE] Exceptions: For cross-domain logins, add exceptions for both sites
* e.g. https://www.youtube.com (site) + https://accounts.google.com (single sign on)
* [WARNING] Be selective with what sites you "Allow", as they also disable partitioning (1767271)
* [SETTING] to add site exceptions: Ctrl+I>Permissions>Cookies>Allow (when on the website in question)
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings
* [1] https://en.wikipedia.org/wiki/Basic_access_authentication ***/
user_pref("privacy.clearOnShutdown.cookies", true); // Cookies
user_pref("privacy.clearOnShutdown.offlineApps", true); // Site Data
user_pref("privacy.clearOnShutdown.sessions", true); // Active Logins [DEFAULT: true]
user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true); // Cookies, Site Data, Active Logins [FF128+]
* [SETTING] to manage site exceptions: Options>Privacy & Security>Permissions>Settings ***/
user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true);
/** SANITIZE SITE DATA: IGNORES "ALLOW" SITE EXCEPTIONS ***/
/* 2820: set manual "Clear Data" items [SETUP-CHROME] [FF128+]
@ -691,30 +657,24 @@ user_pref("privacy.clearSiteData.cache", true);
user_pref("privacy.clearSiteData.cookiesAndStorage", false); // keep false until it respects "allow" site exceptions
user_pref("privacy.clearSiteData.historyFormDataAndDownloads", true);
// user_pref("privacy.clearSiteData.siteSettings", false);
/* 2821: set manual "Clear Data" items [FF136+] ***/
user_pref("privacy.clearSiteData.browsingHistoryAndDownloads", true);
user_pref("privacy.clearSiteData.formdata", true);
/** SANITIZE HISTORY: IGNORES "ALLOW" SITE EXCEPTIONS | clearHistory migration is FF128+ ***/
/* 2830: set manual "Clear History" items, also via Ctrl-Shift-Del [SETUP-CHROME]
/** SANITIZE HISTORY: IGNORES "ALLOW" SITE EXCEPTIONS ***/
/* 2830: set manual "Clear History" items, also via Ctrl-Shift-Del [SETUP-CHROME] [FF128+]
* Firefox remembers your last choices. This will reset them when you start Firefox
* [NOTE] Regardless of what you set "downloads" to, as soon as the dialog
* for "Clear Recent History" is opened, it is synced to the same as "history"
* [SETTING] Privacy & Security>History>Custom Settings>Clear History ***/
user_pref("privacy.cpd.cache", true); // [DEFAULT: true]
user_pref("privacy.clearHistory.cache", true);
user_pref("privacy.cpd.formdata", true); // [DEFAULT: true]
user_pref("privacy.cpd.history", true); // [DEFAULT: true]
// user_pref("privacy.cpd.downloads", true); // not used, see note above
user_pref("privacy.clearHistory.historyFormDataAndDownloads", true);
user_pref("privacy.cpd.cookies", false);
user_pref("privacy.cpd.sessions", true); // [DEFAULT: true]
user_pref("privacy.cpd.offlineApps", false); // [DEFAULT: false]
user_pref("privacy.clearHistory.cache", true); // [DEFAULT: true]
user_pref("privacy.clearHistory.cookiesAndStorage", false);
// user_pref("privacy.cpd.openWindows", false); // Session Restore
// user_pref("privacy.cpd.passwords", false);
// user_pref("privacy.cpd.siteSettings", false);
// user_pref("privacy.clearHistory.siteSettings", false);
user_pref("privacy.clearHistory.historyFormDataAndDownloads", true); // [DEFAULT: true]
// user_pref("privacy.clearHistory.siteSettings", false); // [DEFAULT: false]
/* 2831: set manual "Clear History" items [FF136+] ***/
user_pref("privacy.clearHistory.browsingHistoryAndDownloads", true); // [DEFAULT: true]
user_pref("privacy.clearHistory.formdata", true);
/** SANITIZE MANUAL: TIMERANGE ***/
/* 2840: set "Time range to clear" for "Clear Data" (2820) and "Clear History" (2830)
/* 2840: set "Time range to clear" for "Clear Data" (2820+) and "Clear History" (2830+)
* Firefox remembers your last choice. This will reset the value when you start Firefox
* 0=everything, 1=last hour, 2=last two hours, 3=last four hours, 4=today
* [NOTE] Values 5 (last 5 minutes) and 6 (last 24 hours) are not listed in the dropdown,
@ -740,7 +700,7 @@ user_pref("privacy.sanitize.timeSpan", 0);
user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
/* 4001: enable FPP in PB mode [FF114+]
* [NOTE] In FF119+, FPP for all modes (7016) is enabled with ETP Strict (2701) ***/
// user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true FF118+]
// user_pref("privacy.fingerprintingProtection.pbmode", true); // [DEFAULT: true]
/* 4002: set global FPP overrides [FF114+]
* uses "RFPTargets" [1] which despite the name these are not used by RFP
* e.g. "+AllTargets,-CSSPrefersColorScheme,-JSDateTimeUTC" = all targets but allow prefers-color-scheme and do not change timezone
@ -763,7 +723,6 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
add letterboxing (4504), spoof_english (4506), and webgl (4520).
RFP is an all-or-nothing buy in: you cannot pick and choose what parts you want
[TEST] https://arkenfox.github.io/TZP/tzp.html
[WARNING] DO NOT USE extensions to alter RFP protected metrics
@ -771,8 +730,8 @@ user_pref("_user.js.parrot", "4000 syntax error: the parrot's bereft of life!");
1360039 - spoof navigator.hardwareConcurrency as 2 (FF55)
FF56
1333651 - spoof User Agent & Navigator API
version: android version spoofed as ESR (FF119 or lower)
OS: JS spoofed as Windows 10, OS 10.15, Android 10, or Linux | HTTP Headers spoofed as Windows or Android
JS: spoofed as Windows 10, OS 10.15, Android 10, or Linux
HTTP Header: spoofed as Windows 10 or Android 10.15 until FF136 then matches JS spoof
1369319 - disable device sensor API
1369357 - disable site specific zoom
1337161 - hide gamepads from content
@ -867,7 +826,6 @@ user_pref("widget.non-native-theme.use-theme-accent", false); // [DEFAULT: false
* Stops malicious window sizes and some screen resolution leaks.
* You can still right-click a link and open in a new window
* [SETTING] General>Tabs>Open links in tabs instead of new windows
* [TEST] https://arkenfox.github.io/TZP/tzp.html#screen
* [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/9881 ***/
user_pref("browser.link.open_newwindow", 3); // [DEFAULT: 3]
/* 4513: set all open window methods to abide by "browser.link.open_newwindow" (4512)
@ -935,7 +893,7 @@ user_pref("_user.js.parrot", "5000 syntax error: the parrot's taken 'is last bow
* [1] https://support.mozilla.org/kb/address-bar-autocomplete-firefox#w_url-autocomplete ***/
// user_pref("browser.urlbar.autoFill", false);
/* 5013: disable browsing and download history
* [NOTE] We also clear history and downloads on exit (2811)
* [NOTE] We also clear history and downloads on exit (2811+)
* [SETTING] Privacy & Security>History>Custom Settings>Remember browsing and download history ***/
// user_pref("places.history.enabled", false);
/* 5014: disable Windows jumplist [WINDOWS] ***/
@ -1060,16 +1018,20 @@ user_pref("extensions.webcompat-reporter.enabled", false); // [DEFAULT: false]
/* 6012: enforce Quarantined Domains [FF115+]
* [WHY] https://support.mozilla.org/kb/quarantined-domains */
user_pref("extensions.quarantinedDomains.enabled", true); // [DEFAULT: true]
/* 6050: prefsCleaner: previously active items removed from arkenfox 115-127 ***/
// user_pref("accessibility.force_disabled", "");
// user_pref("browser.urlbar.dnsResolveSingleWordsAfterSearch", "");
// user_pref("geo.provider.network.url", "");
// user_pref("geo.provider.network.logging.enabled", "");
// user_pref("geo.provider.use_gpsd", "");
// user_pref("network.protocol-handler.external.ms-windows-store", "");
// user_pref("privacy.partition.always_partition_third_party_non_cookie_storage", "");
// user_pref("privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", "");
// user_pref("privacy.partition.serviceWorkers", "");
/* 6050: prefsCleaner: reset previously active items removed from arkenfox FF128+ ***/
// user_pref("privacy.clearOnShutdown.cache", "");
// user_pref("privacy.clearOnShutdown.cookies", "");
// user_pref("privacy.clearOnShutdown.downloads", "");
// user_pref("privacy.clearOnShutdown.formdata", "");
// user_pref("privacy.clearOnShutdown.history", "");
// user_pref("privacy.clearOnShutdown.offlineApps", "");
// user_pref("privacy.clearOnShutdown.sessions", "");
// user_pref("privacy.cpd.cache", "");
// user_pref("privacy.cpd.cookies", "");
// user_pref("privacy.cpd.formdata", "");
// user_pref("privacy.cpd.history", "");
// user_pref("privacy.cpd.offlineApps", "");
// user_pref("privacy.cpd.sessions", "");
/*** [SECTION 7000]: DON'T BOTHER ***/
user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies!");
@ -1151,7 +1113,7 @@ user_pref("_user.js.parrot", "7000 syntax error: the parrot's pushing up daisies
// user_pref("network.http.referer.disallowCrossSiteRelaxingDefault.top_navigation", true); // [FF100+]
// user_pref("privacy.bounceTrackingProtection.mode", 1); // [FF131+] [ETP FF133+]
// user_pref("privacy.fingerprintingProtection", true); // [FF114+] [ETP FF119+]
// user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true FF123+]
// user_pref("privacy.partition.network_state.ocsp_cache", true); // [DEFAULT: true]
// user_pref("privacy.query_stripping.enabled", true); // [FF101+]
// user_pref("privacy.trackingprotection.enabled", true);
// user_pref("privacy.trackingprotection.socialtracking.enabled", true);
@ -1210,6 +1172,58 @@ user_pref("_user.js.parrot", "8000 syntax error: the parrot's crossed the Jordan
// user_pref("ui.use_standins_for_native_colors", "");
// user_pref("webgl.enable-debug-renderer-info", "");
/*** [SECTION 8500]: TELEMETRY
Arkenfox does not consider Firefox telemetry to be a privacy or security concern - comments below.
But since most arkenfox users prefer it disabled, we'll do that rather than cause overrides.
Opt-out
- Telemetry is essential: a browser engine is a _very_ large complex beast costing billions to maintain
- Opt-in telemetry _does not_ work and results in data that is unrepresentative and may be misleading
Choice
- Every new profile on first use provides data collection/use policy and the abillty to opt-out
- It can be disabled at any time (Settings>Privacy & Security>Data Collection and Use)
Data
- no PII (Personally Identifiable Information)
- can be viewed in about:telemetry
- uses Prio [1][2][3], Glean [4], Oblivious HTTP [5][6]
[1] https://crypto.stanford.edu/prio/
[2] https://hacks.mozilla.org/2018/10/testing-privacy-preserving-telemetry-with-prio/
[3] https://blog.mozilla.org/security/2019/06/06/next-steps-in-privacy-preserving-telemetry-with-prio/
[4] https://firefox-source-docs.mozilla.org/toolkit/components/glean/index.html
[5] https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/ohttp.html
[6] https://blog.mozilla.org/en/tag/oblivious-http/
***/
user_pref("_user.js.parrot", "8500 syntax error: the parrot's off the twig!");
/* 8500: disable new data submission [FF41+]
* If disabled, no policy is shown or upload takes place, ever
* [1] https://bugzilla.mozilla.org/1195552 ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false);
/* 8501: disable Health Reports
* [SETTING] Privacy & Security>Firefox Data Collection and Use>Send technical... data ***/
user_pref("datareporting.healthreport.uploadEnabled", false);
/* 0802: disable telemetry
* The "unified" pref affects the behavior of the "enabled" pref
* - If "unified" is false then "enabled" controls the telemetry module
* - If "unified" is true then "enabled" only controls whether to record extended data
* [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2]
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
* [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false); // see [NOTE]
user_pref("toolkit.telemetry.server", "data:,");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+]
user_pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+]
/* 8503: disable Telemetry Coverage
* [1] https://blog.mozilla.org/data/2018/08/20/effectively-measuring-search-in-firefox/ ***/
user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF]
user_pref("toolkit.coverage.endpoint.base", "");
/*** [SECTION 9000]: NON-PROJECT RELATED ***/
user_pref("_user.js.parrot", "9000 syntax error: the parrot's cashed in 'is chips!");
/* 9001: disable welcome notices ***/
@ -1223,74 +1237,6 @@ user_pref("browser.urlbar.showSearchTerms.enabled", false);
/*** [SECTION 9999]: DEPRECATED / RENAMED ***/
user_pref("_user.js.parrot", "9999 syntax error: the parrot's shuffled off 'is mortal coil!");
/* ESR115.x still uses all the following prefs
// [NOTE] replace the * with a slash in the line above to re-enable active ones
// FF116
// 4506: set RFP's font visibility level (1402) [FF94+]
// [-] https://bugzilla.mozilla.org/1838415
// user_pref("layout.css.font-visibility.resistFingerprinting", 1); // [DEFAULT: 1]
// FF117
// 1221: disable Windows Microsoft Family Safety cert [FF50+] [WINDOWS]
// 0=disable detecting Family Safety mode and importing the root
// 1=only attempt to detect Family Safety mode (don't import the root)
// 2=detect Family Safety mode and import the root
// [1] https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/21686
// [-] https://bugzilla.mozilla.org/1844908
user_pref("security.family_safety.mode", 0);
// 7018: disable service worker Web Notifications [FF44+]
// [WHY] Web Notifications are behind a prompt (7002)
// [1] https://blog.mozilla.org/en/products/firefox/block-notification-requests/
// [-] https://bugzilla.mozilla.org/1842457
// user_pref("dom.webnotifications.serviceworker.enabled", false);
// FF118
// 1402: limit font visibility (Windows, Mac, some Linux) [FF94+]
// Uses hardcoded lists with two parts: kBaseFonts + kLangPackFonts [1], bundled fonts are auto-allowed
// In normal windows: uses the first applicable: RFP over TP over Standard
// In Private Browsing windows: uses the most restrictive between normal and private
// 1=only base system fonts, 2=also fonts from optional language packs, 3=also user-installed fonts
// [1] https://searchfox.org/mozilla-central/search?path=StandardFonts*.inc
// [-] https://bugzilla.mozilla.org/1847599
// user_pref("layout.css.font-visibility.private", 1);
// user_pref("layout.css.font-visibility.standard", 1);
// user_pref("layout.css.font-visibility.trackingprotection", 1);
// 2623: disable permissions delegation [FF73+]
// Currently applies to cross-origin geolocation, camera, mic and screen-sharing
// permissions, and fullscreen requests. Disabling delegation means any prompts
// for these will show/use their correct 3rd party origin
// [1] https://groups.google.com/forum/#!topic/mozilla.dev.platform/BdFOMAuCGW8/discussion
// [-] https://bugzilla.mozilla.org/1697151
// user_pref("permissions.delegation.enabled", false);
// FF119
// 0211: use en-US locale regardless of the system or region locale
// [SETUP-WEB] May break some input methods e.g xim/ibus for CJK languages [1]
// [1] https://bugzilla.mozilla.org/buglist.cgi?bug_id=867501,1629630
// [-] https://bugzilla.mozilla.org/1846224
// user_pref("javascript.use_us_english_locale", true); // [HIDDEN PREF]
// 0711: disable skipping DoH when parental controls are enabled [FF70+]
// [-] https://bugzilla.mozilla.org/1586941
user_pref("network.dns.skipTRR-when-parental-control-enabled", false);
// FF123
// 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+]
// Defense-in-depth: currently covered by 0331
// [-] https://bugzilla.mozilla.org/1868988
user_pref("browser.ping-centre.telemetry", false);
// FF126
// 9003: disable What's New toolbar icon [FF69+]
// [-] https://bugzilla.mozilla.org/1724300
user_pref("browser.messaging-system.whatsNewPanel.enabled", false);
// FF127
// 2630: disable content analysis by DLP (Data Loss Prevention) agents - replaced by default_result
// [-] https://bugzilla.mozilla.org/1880314
user_pref("browser.contentanalysis.default_allow", false);
// 4511: enforce non-native widget theme
// Security: removes/reduces system API calls, e.g. win32k API [1]
// Fingerprinting: provides a uniform look and feel across platforms [2]
// [1] https://bugzilla.mozilla.org/1381938
// [2] https://bugzilla.mozilla.org/1411425
// [-] https://bugzilla.mozilla.org/1848899
user_pref("widget.non-native-theme.enabled", true); // [DEFAULT: true]
// ***/
/* ESR128.x still uses all the following prefs
// [NOTE] replace the * with a slash in the line above to re-enable active ones
// FF132
@ -1319,26 +1265,18 @@ user_pref("findbar.highlightAll", true);
user_pref("identity.fxaccounts.enabled", false);
user_pref("media.videocontrols.picture-in-picture.enabled", false);
user_pref("media.webspeech.synth.enabled", false);
user_pref("privacy.clearHistory.cache", false);
user_pref("privacy.clearHistory.browsingHistoryAndDownloads", true);
user_pref("privacy.clearHistory.cache", true);
user_pref("privacy.clearHistory.cookiesAndStorage", true);
user_pref("privacy.clearHistory.formdata", true);
user_pref("privacy.clearHistory.historyFormDataAndDownloads", true);
user_pref("privacy.clearHistory.siteSettings", true);
user_pref("privacy.clearOnShutdown.cache", false);
user_pref("privacy.clearOnShutdown.cookies", true);
user_pref("privacy.clearOnShutdown.downloads", false);
user_pref("privacy.clearOnShutdown.formdata", true);
user_pref("privacy.clearOnShutdown.history", false);
user_pref("privacy.clearOnShutdown.offlineApps", true);
user_pref("privacy.clearOnShutdown.sessions", true);
user_pref("privacy.clearOnShutdown.siteSettings", true);
user_pref("privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", false);
user_pref("privacy.clearOnShutdown_v2.cache", false);
user_pref("privacy.clearOnShutdown_v2.cookiesAndStorage", true);
user_pref("privacy.clearOnShutdown_v2.downloads", false);
user_pref("privacy.clearOnShutdown_v2.formdata", true);
user_pref("privacy.clearOnShutdown_v2.historyFormDataAndDownloads", false);
user_pref("privacy.clearOnShutdown_v2.siteSettings", true);
user_pref("privacy.clearSiteData.cache", true);
user_pref("privacy.clearSiteData.cookiesAndStorage", true);
user_pref("privacy.clearSiteData.historyFormDataAndDownloads", true);
user_pref("privacy.clearSiteData.siteSettings", true);
user_pref("privacy.cpd.cache", true);
user_pref("privacy.cpd.cookies", true);
user_pref("privacy.cpd.formdata", true);

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,3 @@ Name=ange
IsRelative=1
Path=ange
Default=1
[Profile1]
Name=music
IsRelative=1
Path=music

View File

@ -6,7 +6,7 @@ See https://git.maby.dev/ange/archinstall.git for installation
```bash
git clone --bare https://git.maby.dev/ange/.dotfiles.git ~/.dotfiles
alias c='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
c checkout -f
c checkout
c submodule update --init --recursive --remote
c config status.showUntrackedFiles no
```