~andreafeletto/dotfiles

f44a113f9a50248fc947480c31a202415e42696f — Andrea Feletto 1 year, 3 months ago 89d2ce5
update
M bash/.bash_aliases => bash/.bash_aliases +5 -3
@@ 1,9 1,11 @@
#!/usr/bin/env bash

# Enable sudo for Aliases
# enable sudo for aliases
alias sudo='sudo '

# Add Verbosity
alias hx='helix'

# add verbosity
alias rm='rm -v'
alias mv='mv -nv'
alias mkdir='mkdir -pv'


@@ 12,7 14,7 @@ alias ln='ln -v'
alias chown='chown -v'
alias chmod='chmod -v'

# Add Color and Format
# add color and format
alias ll='ls -AlhvLG --time-style="+" --group-directories-first --color=auto'
alias lll='ls -ahnv --group-directories-first --color=auto'
alias grep='grep --color=auto'

M bash/.bashrc => bash/.bashrc +1 -0
@@ 27,3 27,4 @@ osc7_cwd() {
	printf '\e]7;file://%s%s\e\\' "$HOSTNAME" "$PWD"
}
PROMPT_COMMAND=osc7_cwd


M electron/.config/electron-flags.conf => electron/.config/electron-flags.conf +2 -2
@@ 1,2 1,2 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland
--enable-features=UseOzonePlatform,WaylandWindowDecorations
--ozone-platform=wayland
\ No newline at end of file

A etc/tmpfiles.d/fix-wake-after-suspend.conf => etc/tmpfiles.d/fix-wake-after-suspend.conf +2 -0
@@ 0,0 1,2 @@
#    Path                  Mode UID  GID  Age Argument
w    /proc/acpi/wakeup     -    -    -    -   PWRB

M foot/.config/foot/foot.ini => foot/.config/foot/foot.ini +1 -1
@@ 1,4 1,4 @@
term=foot-extra
#term=foot-extra

font=JetBrainsMono-Regular:size=10
font-bold=JetBrainsMono-Bold:size=10:style=bold

M fuzzel/.config/fuzzel/fuzzel.ini => fuzzel/.config/fuzzel/fuzzel.ini +19 -2
@@ 1,2 1,19 @@
font=monospace
prompt=> 
[main]
font=monospace:size=10
icons-enabled=false
show-actions=true
lines=14
width=36
line-height=16

[colors]
background=111111ff
text=dcdcccff
match=325b68ff
selection=eee8d5ff
selection-text=657b83ff
border=93a1a1ff

[border]
width=4
radius=0

M gammastep/.config/gammastep/config.ini => gammastep/.config/gammastep/config.ini +0 -1
@@ 1,4 1,3 @@

[general]
location-provider=manual


M helix/.config/helix/config.toml => helix/.config/helix/config.toml +7 -3
@@ 1,11 1,15 @@
theme = "onedark"

[editor]
line-number = "relative"
mouse = false
auto-pairs = false
cursorline = true
bufferline = "multiple"
color-modes = true
cursorline = true
line-number = "relative"
mouse = false

[editor.soft-wrap]
enable = true

[editor.statusline]
left = ["mode", "diagnostics", "spinner"]

M mako/.config/mako/config => mako/.config/mako/config +9 -2
@@ 1,2 1,9 @@
background-color=#000000
border-color=#4C7899FF
on-button-left=dismiss
on-button-right=exec makoctl menu -n "$id" fuzzel -d -p '> '

background-color=#002b36ff
width=420
height=160
border-size=4
border-color=#93a1a1ff
outer-margin=6

M mpv/.config/mpv/input.conf => mpv/.config/mpv/input.conf +1 -1
@@ 10,7 10,7 @@ j seek -60
= set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0

H add video-pan-x  0.01
L add video-pan-x -0.01
# L add video-pan-x -0.01
K add video-pan-y  0.01
J add video-pan-y -0.01


M packages.md => packages.md +1 -44
@@ 1,35 1,14 @@
# login
greetd
greetd-tuigreet-bin

# obs
obs-studio
xdg-desktop-portal-wlr

# desktop
river-git
levee-git
fuzzel
amfora
firefox
1password-beta

# desktop daemons
gammastep
mako
blueman
polkit-gnome

# crypto
signify
age

# spellcheck
enchant
hunspell-en_US
hunspell-it

# fonts
adobe-source-code-pro-fonts
gnu-free-fonts
ttf-dejavu


@@ 39,49 18,27 @@ ttf-ms-fonts
ttf-opensans
ttf-symbola
ttf-windows

# drivers
bluez
openssh
pipewire
pipewire-alsa
pipewire-pulse
xorg-xwayland

# documents
zathura
zathura-pdf-mupdf
zathura-djvu

# utility
fff
fzf
nfm-git
grim
htop
man-pages
pulsemixer
rmtrash
stow
tree
words
xdg-user-dirs
xdg-utils
yay

# media
mpv
imv

# vis plugins
vis-base16-git
vis-fzf-open-git
vis-open_rej-git
vis-pairs-git
vis-smart-backspace-git
vis-spellcheck-git
vis-surround-git

# programming
bash-completion
dash
git

M river/.config/river/autorun => river/.config/river/autorun +5 -8
@@ 1,9 1,6 @@
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
dbus-update-activation-environment DISPLAY
levee pulse backlight battery > ~/.local/share/levee.log 2>&1
foot --server
gammastep
mako
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
1password --silent
rivercarro -no-smart-gaps -main-ratio 0.5 -inner-gaps 16 -outer-gaps 16
foot --log-level=warning --server
levee pulse backlight battery
1password --log warn --silent
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
transmission-daemon

M river/.config/river/init => river/.config/river/init +40 -9
@@ 1,16 1,20 @@
#!/bin/sh

riverctl map normal Super Q spawn 'launcher'
riverctl map normal Super I spawn 'fuzzel'
config_home=${XDG_CONFIG_HOME:-$HOME/.config}
config_dir=$config_home/river

riverctl map normal Super Q spawn 'fuzzel --log-level=warning'
riverctl map normal Super W spawn '$BROWSER'
riverctl map normal Super E spawn '$TERMINAL'
riverctl map normal Super A spawn '$TERMINAL nfm'
riverctl map normal Super I spawn '$TERMINAL senpai-irc'
riverctl map normal Super P spawn '1password --quick-access'

riverctl map normal Super BackSpace close
riverctl map normal Super+Shift BackSpace exit
riverctl map normal Super+Shift Delete spawn 'byebye'
riverctl map normal Super Space spawn 'swaylock'

riverctl map-switch normal lid close spawn 'waylock -fork-on-lock && sleep 10 && systemctl suspend-then-hibernate'

riverctl map normal Super J focus-view next
riverctl map normal Super K focus-view previous


@@ 27,12 31,14 @@ riverctl map normal Super Tab swap next
riverctl map-pointer normal Super BTN_LEFT move-view
riverctl map-pointer normal Super+Shift BTN_LEFT resize-view

riverctl map normal Super+Shift 0 set-view-tags 511

for i in $(seq 1 9); do
    tags=$((1 << ($i - 1)))
    riverctl map normal Super $i set-focused-tags $tags
    riverctl map normal Super+Shift $i set-view-tags $tags
    riverctl map normal Super+Control $i toggle-focused-tags $tags
    riverctl map normal Super+Shift+Control $i toggle-view-tags $tags
	tags=$((1 << ("$i" - 1)))
	riverctl map normal Super "$i" set-focused-tags $tags
	riverctl map normal Super+Shift "$i" set-view-tags $tags
	riverctl map normal Super+Control "$i" toggle-focused-tags $tags
	riverctl map normal Super+Shift+Control "$i" toggle-view-tags $tags
done

riverctl map normal None XF86AudioRaiseVolume spawn \


@@ 41,6 47,12 @@ riverctl map normal None XF86AudioLowerVolume spawn \
	'pulsemixer --unmute --change-volume -5'
riverctl map normal None XF86AudioMute spawn \
	'pulsemixer --toggle-mute'
riverctl map normal None XF86AudioPlay spawn \
	'playerctl play-pause'
riverctl map normal None XF86AudioPrev spawn \
	'playerctl previous'
riverctl map normal None XF86AudioNext spawn \
	'playerctl next'
riverctl map normal None XF86MonBrightnessUp spawn \
	'brightnessctl s +5% -m | cut -d, -f 4 | sed "s/.$//" > $XDG_RUNTIME_DIR/wob.sock'
riverctl map normal None XF86MonBrightnessDown spawn \


@@ 54,6 66,7 @@ riverctl map normal Super N spawn \
riverctl map normal Super+Shift N spawn \
	'makoctl restore'

riverctl keyboard-layout -options 'caps:swapescape' 'it'
riverctl set-repeat 50 200

touchpad='pointer-2-7-SynPS/2_Synaptics_TouchPad'


@@ 62,12 75,30 @@ riverctl input $touchpad natural-scroll enabled
riverctl input $touchpad pointer-accel 0.4
riverctl focus-follows-cursor normal

riverctl rule-add ssd -app-id firefox
riverctl rule-add no-float -app-id valent
riverctl rule-add float -title 'Firefox — Sharing Indicator'

riverctl border-width 4
riverctl border-color-focused 0x93a1a1
riverctl border-color-unfocused 0x325b68

riverctl default-layout rivercarro

systemctl --user import-environment \
	DISPLAY \
	WAYLAND_DISPLAY \
	XDG_CURRENT_DESKTOP

dbus-update-activation-environment --systemd \
	DISPLAY \
	WAYLAND_DISPLAY \
	XDG_CURRENT_DESKTOP

while read -r cmd; do
	pgrep -f "${cmd%% *}" >/dev/null || riverctl spawn "$cmd"
done < "$XDG_CONFIG_HOME/river/autorun"
done < "$config_dir/autorun"

while read -r cmd; do
	riverctl spawn "flatpak run $cmd --gapplication-service"
done < "$config_dir/flatpak"

M services.md => services.md +1 -3
@@ 1,14 1,12 @@
# system

* bluetooth
* docker
* greetd
* iwd
* libvirtd
* systemd-resolved
* systemd-timesyncd
* transmission

# user

* spotifyd
* wob

M sh/.local/bin/byebye => sh/.local/bin/byebye +7 -3
@@ 1,10 1,14 @@
#!/bin/sh

res=$(printf 'shutdown\nreboot\n' | menu)
res=$(printf 'shutdown\nreboot\nsuspend\nhibernate\n' | fuzzel --dmenu)

case $res in
	shutdown)
		poweroff ;;
		systemctl poweroff ;;
	reboot)
		reboot ;;
		systemctl reboot ;;
	suspend)
		systemctl suspend-then-hibernate ;;
	hibernate)
		systemctl hibernate ;;
esac

D sh/.local/bin/color-picker => sh/.local/bin/color-picker +0 -3
@@ 1,3 0,0 @@
#!/bin/sh

grim -g "$(slurp -p)" -t ppm - | convert - -format '%[pixel:p{0,0}]\n' info:-

A sh/.local/bin/compositor => sh/.local/bin/compositor +11 -0
@@ 0,0 1,11 @@
#!/bin/sh

export XDG_CURRENT_DESKTOP='river'
export XDG_SESSION_TYPE=wayland
export SDL_VIDEODRIVER=wayland
export MOZ_ENABLE_WAYLAND=1
export MOZ_USE_XINPUT2=1
export MOZ_DBUS_REMOTE=1
export _JAVA_AWT_WM_NONREPARENTING=1

river -log-level warning > ~/.local/share/river.log 2>&1

D sh/.local/bin/dzip => sh/.local/bin/dzip +0 -36
@@ 1,36 0,0 @@
#!/bin/sh

Prompt='destination: '

lsd() {
	ls -1a | while read -r Entry; do
		[ -d "$Entry" ] && printf '%s\n' "$Entry"
	done
}

if [ -z "$1" ]; then
	printf 'usage: dzip <file.zip>\n' 1>&2
	exit 1
fi

case "$1" in
	/*) Zip="$1" ;;
	*)  Zip="$PWD/$1" ;;
esac

while true; do
	res=$(lsd | menu -p "$Prompt")

	# quit
	[ -z "$res" ] && exit 1

	# target chosen
	if [ "$res" = '.' ]; then
		printf '%s\n' "$PWD"
		unzip -o "$Zip" -d "$PWD"
		exit 0
	fi

	# navigate
	cd "$res"
done

D sh/.local/bin/faster => sh/.local/bin/faster +0 -3
@@ 1,3 0,0 @@
#!/bin/sh

pacman -Qq | grep '\-git$' | yay -Syu --removemake --nocleanmenu --nodiffmenu -

D sh/.local/bin/launcher => sh/.local/bin/launcher +0 -3
@@ 1,3 0,0 @@
#!/bin/sh

{ IFS=:; ls -H $PATH; } | sort -u | menu | $SHELL

D sh/.local/bin/menu => sh/.local/bin/menu +0 -7
@@ 1,7 0,0 @@
#!/bin/sh

fuzzel --dmenu \
	--background=111111ff --text-color=dcdcccff --match-color=325b68ff \
	--selection-color=eee8d5ff --selection-text-color=657b83ff \
	--border-radius=0 --border-width=4 --border-color=93a1a1ff \
	--font=monospace:size=10 --line-height=16 --lines=10

D sh/.local/bin/opass => sh/.local/bin/opass +0 -181
@@ 1,181 0,0 @@
#!/bin/sh

Version='0.0.2'
PrgName=${0##*/}

for Dep in op dmenu jq xclip; do
	if ! command -v "$Dep" > /dev/null 2>&1; then
		printf 'error: missing dependency %s\n' "$Dep"
		exit 1
	fi
done

DataDir="${XDG_DATA_HOME:-$HOME/.local/share}/opass"
LogFile="$DataDir/logs"
TokenFile="$DataDir/token"
DBFile="$DataDir/db"
TokenAgeFile="$DataDir/tokenage"
TokenAgeLimit=1800

Usage() {
	while read -r Line; do
		printf '%b\n' "$Line"
	done <<-EOF
		\rUsage: $PrgName [OPTION...]
		\rWrapper for 1Password using dmenu.

		\rOptions:
		\r  -h, --help, -?      display this help and exit
		\r  -v, --version       output version infromation and exit
		\r  --verbose           print logs
		\r  --token-age         print token age and exit
		\r  --update-db         update database containing uuids
		\r  -p, --password      query password
		\r  -a, --all           query entire item
		\r  -y, --yank, --copy  copy result to CLIPBOARD
		\r  --stdout            print result to stdout
		\r  --purge             delete files created by this script

		\rGit repository: <https://github.com/andreafeletto/dotfiles>
	EOF
}

Die() {
	printf 'error: %s\n' "$1" 1>&2
	exit 1
}

Log() {
	[ -n "$Verbose" ] && printf 'log: %s\n' "$1" 1>&2
	printf '%s: %s\n' "$(date '+%T')" "$1" >> "$LogFile"
}

Purge() {
	for File in "$DataDir"/*; do
		rm "$File"
	done
}

GetTokenAge() {
	Log 'getting token age'
	if [ -r "$TokenAgeFile" ]; then
		Log 'token age file found'
		Now=$(date +%s)
		read -r TokenAge < "$TokenAgeFile"
		printf '%s\n' "$((Now - TokenAge))"
	else
		Die 'unknown token age'
	fi
}

ValidateTokenAge() {
	Log 'validating token age'
	[ -r "$TokenAgeFile" ] && [ "$(GetTokenAge)" -lt "$TokenAgeLimit" ]
}

UpdateTokenAge() {
	Log 'updating token age'
	date '+%s' > "$TokenAgeFile"
}

NewToken() {
	Log 'generating new token'
	while true; do
		Entry=$(dmenu -P -p 'password') || exit 1
		Token=$(printf '%s' "$Entry" | op signin my --raw 2> /dev/null) && break
	done
	printf '%s' "$Token"
}

GetToken() {
	Log 'getting token'
	if [ -r "$TokenFile" ] && ValidateTokenAge; then
		Log 'found valid token: reading'
		read -r SessionToken < "$TokenFile"
		Log "got token: $SessionToken"
	else
		Log 'token file not found or too old'
		SessionToken=$(NewToken)
		Log "got new token: $SessionToken"
		UpdateTokenAge
		printf '%s\n' "$SessionToken" > "$TokenFile"
	fi
}

while [ -n "$1" ]; do
	case $1 in
		-h|--help|-\?)
			Usage; exit 0 ;;
		-v|--version)
			printf '%s\n' "$Version"; exit 0 ;;
		--verbose)
			Verbose=1 ;;
		--token-age)
			GetTokenAge; exit 0 ;;
		--update-db)
			MustUpdateDb=1 ;;
		-p|--password)
			Field='password' ;;
		-a|--all)
			Field='all' ;;
		-y|--yank|--copy)
			MustYank=1 ;;
		--stdout)
			MustPrint=1 ;;
		--purge)
			Purge; exit 0 ;;
		*)
			Die "unknown option: $1" ;;
	esac
	shift
done

mkdir -p "$DataDir"

GetToken

if [ -n "$MustUpdateDb" ] || [ ! -f "$DBFile" ]; then
	Log 'updating db'
	JQCmd='.[] | .overview.title + ": " + .uuid' 
	op list items --session="$SessionToken" | jq -r "$JQCmd" > "$DBFile"
	UpdateTokenAge
fi

[ -z "$Field" ] && exit 0

Log 'running dmenu'
Choice=$(dmenu -p 'choose' -i < "$DBFile") || exit 1
ItemName=${Choice%%: *}
Uuid=${Choice##*: }

Log "got uuid: $Uuid"
Item=$(op get item "$Uuid" --session="$SessionToken")
# printf '%s' "$Item" | jq '.'

Log "querying field: $Field"
case $Field in
	all)
		JQCmd='.' ;;
	password)
		JQCmd='.details.fields 
			| map(select(.designation == "password")) 
			| .[0].value' ;;
esac

Result=$(printf '%s' "$Item" | jq -r "$JQCmd")

if [ -n "$MustYank" ]; then
	printf '%s' "$Result" | xclip -selection 'clipboard'
	if command -v notify-send > /dev/null 2>&1; then
		notify-send "$PrgName" "$Field yanked from item: $ItemName"
	fi
fi

if [ -n "$MustPrint" ]; then
	printf '%s\n' "$Result"
fi

unset DataDir TokenFile LastActionFile \
	  TokenAgeLimit Now TokenAge SessionToken \
	  JQCmd DBFile


M sh/.local/bin/rinomato => sh/.local/bin/rinomato +1 -1
@@ 21,7 21,7 @@ lines_after=$(wc -l "$tmpfile")
[ "${lines%% *}" -ne "${lines_after%% *}" ] && exit 1

# rename
printf '%s' "$files" | paste - "$tmpfile" | while read -r old new; do
printf '%s' "$files" | paste - "$tmpfile" | while IFS="$(printf '\t')" read -r old new; do
        [ "$old" = "$new" ] && continue
        printf '%s -> %s\n' "$old" "$new"
        command mv "$old" "$new"

M sh/.local/bin/screenshot => sh/.local/bin/screenshot +15 -3
@@ 1,12 1,24 @@
#!/bin/sh

directory="$(xdg-user-dir PICTURES)/screenshots"
filename="$directory/$(date +%F-%H-%M-%S).png"
filename="$(date +%F-%H-%M-%S).png"
path="$directory/$filename"

mkdir -p "$directory"

if [ $# -eq 0 ]; then
	grim "$filename"
	grim "$path"
else
	grim -g "$(slurp)" "$filename"
	grim -g "$(slurp)" "$path"
fi

action=$(notify-send 'screenshot' "$filename" \
	--action='preview=preview' \
	--action='directory=open directory')

case $action in
	preview)
		xdg-open "$path" ;;
	directory)
		xdg-open "$directory" ;;
esac

M sh/.profile => sh/.profile +14 -21
@@ 1,6 1,6 @@
#!/bin/sh

export EDITOR='hx'
export EDITOR='helix'
export BROWSER='firefox'
export TERMINAL='footclient'
export READER='zathura'


@@ 8,33 8,26 @@ export READER='zathura'
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"

PATH="$PATH:$HOME/.local/bin"
PATH="$XDG_STATE_HOME/nix/profile/bin:$PATH"
PATH="$HOME/.local/bin:$PATH"
PATH="$PATH:$HOME/.local/cargo/bin"
PATH="$PATH:$GOPATH/bin"
PATH="$PATH:$GEM_HOME/bin"
PATH="$PATH:$XDG_DATA_HOME/npm/bin"
PATH="$PATH:$ANDROID_HOME/platform-tools"
PATH="$PATH:/usr/lib/helix"
export PATH

export HISTFILE="$XDG_CACHE_HOME/bash/history"
export CARGO_HOME="$HOME/.local/cargo"
export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
export GOCACHE="$XDG_CACHE_HOME/go/build"
export GOMODCACHE="$XDG_CACHE_HOME/go/mod"
export GOPATH="$XDG_DATA_HOME/go"
export HELIX_RUNTIME="$XDG_DATA_HOME/helix/runtime"
export IPYTHONDIR="$XDG_CONFIG_HOME/ipython"
export JUPYTER_CONFIG_DIR="$XDG_CONFIG_HOME/jupyter"
export JUPYTERLAB_DIR="$XDG_DATA_HOME/jupyter/lab"
export LESSKEY="$XDG_CONFIG_HOME/less/lesskey"
export LESSHISTFILE="$XDG_CACHE_HOME/less/history"
export HISTFILE="$XDG_CACHE_HOME/bash/history"
export INPUTRC="$XDG_CONFIG_HOME/readline/inputrc"
export JUPYTER_PLATFORM_DIRS="1"
export NIX_PATH=".local/state/nix/profiles/channels"
export NODE_REPL_HISTORY="$XDG_DATA_HOME/node_repl_history"
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
export RANDFILE="$XDG_DATA_HOME/openssl/rnd"
export PYTHONPYCACHEPREFIX="$XDG_CACHE_HOME/python"
export PYTHONSTARTUP="$XDG_CONFIG_HOME/python/startup.py"
export R_LIBS_USER="$XDG_DATA_HOME/R/lib"
export INPUTRC="$XDG_CONFIG_HOME/readline/inputrc"
export GEM_HOME="$XDG_DATA_HOME/gem"
export GEM_SPEC_CACHE="$XDG_CACHE_HOME/gem"
export CARGO_HOME="$HOME/.local/cargo"
export PYTHONUSERBASE="$XDG_DATA_HOME/python"
export RANDFILE="$XDG_DATA_HOME/openssl/rnd"
export RUSTUP_HOME="$HOME/.local/rustup"
export SQLITE_HISTORY="$XDG_DATA_HOME/sqlite_history"

M swayidle/.config/swayidle/config => swayidle/.config/swayidle/config +2 -1
@@ 1,1 1,2 @@
timeout 600 'wlopm --off \*' resume 'wlopm --on \*'
\ No newline at end of file
timeout 300 'chayang && waylock -fork-on-lock'
timeout 600 'systemctl suspend-then-hibernate'

A systemd/.local/share/systemd/user/swayidle.service => systemd/.local/share/systemd/user/swayidle.service +12 -0
@@ 0,0 1,12 @@
[Unit]
Description=Run commands on idle timeout
Documentation=man:swayidle(1)
PartOf=graphical-session.target
After=graphical-session.target
ConditionEnvironment=WAYLAND_DISPLAY

[Service]
ExecStart=/usr/bin/swayidle -w

[Install]
WantedBy=graphical-session.target

M xdg/.config/mimeapps.list => xdg/.config/mimeapps.list +4 -1
@@ 3,7 3,7 @@ application/epub+zip=org.pwmt.zathura.desktop;
application/gzip=zip.desktop;
application/pdf=org.pwmt.zathura.desktop;
application/x-bittorrent=torrent.desktop;
application/zip=zip.desktop
application/zip=zip.desktop;
image/gif=imv.desktop;
image/jpeg=imv.desktop;
image/png=imv.desktop;


@@ 16,4 16,7 @@ text/x-makefile=text.desktop;
text/x-shellscript=text.desktop;
video/mp4=video.desktop;
video/quicktime=video.desktop;
video/x-matroska=video.desktop;
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
x-scheme-handler/magnet=torrent.desktop;

D xdg/.local/share/applications/gemini.desktop => xdg/.local/share/applications/gemini.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Type=Application
Name=Amfora
Terminal=true
Exec=/usr/local/bin/st -e amfora %u
MimeType=x-scheme-handler/gemini;

M zls/.config/zls.json => zls/.config/zls.json +2 -5
@@ 1,9 1,6 @@
{
  "zig_exe_path": "/usr/bin/zig",
  "zig_exe_path": "/home/andrea/.local/bin/zig-master",
  "enable_snippets": false,
  "warn_style": true,
  "enable_semantic_tokens": true,
  "operator_completions": true,
  "include_at_in_builtins": false,
  "max_detail_length": 1048576
  "use_comptime_interpreter": true
}
\ No newline at end of file