summaryrefslogtreecommitdiff
path: root/.local/bin
diff options
context:
space:
mode:
authorBenjamin Chausse <benjamin@chausse.xyz>2025-03-30 01:00:51 -0400
committerBenjamin Chausse <benjamin@chausse.xyz>2025-03-30 01:00:51 -0400
commitf4c4550e327d9090c82a735d39d104d0bedb602d (patch)
treefcfa762512155c132a66d3adbb56067ca2d5d61b /.local/bin
parent43dbb32d741e11f8e06341f515944ec757d4578f (diff)
Loads of laptop shit
Diffstat (limited to '.local/bin')
-rwxr-xr-x.local/bin/capture42
-rwxr-xr-x.local/bin/cidr1
-rwxr-xr-x.local/bin/colorpicker2
-rwxr-xr-x.local/bin/displayselect7
-rwxr-xr-x.local/bin/dropdowntoggle55
-rwxr-xr-x.local/bin/dwmbar/check-eselect8
-rwxr-xr-x.local/bin/dwmbar/check-mail5
-rwxr-xr-x.local/bin/dwmbar/dwmb-layout4
-rwxr-xr-x.local/bin/fpt16
-rwxr-xr-x.local/bin/fzf-shortcuts23
-rwxr-xr-x.local/bin/gpg6
-rwxr-xr-x.local/bin/groffdown54
-rwxr-xr-x.local/bin/gsetup9
-rwxr-xr-x.local/bin/layouttoggle46
-rwxr-xr-x.local/bin/lazydockerbin0 -> 11558912 bytes
-rwxr-xr-x.local/bin/makewall4
-rwxr-xr-x.local/bin/makewall.bak30
-rwxr-xr-x.local/bin/media-notify5
-rwxr-xr-x.local/bin/monchange6
-rwxr-xr-x.local/bin/monselect4
l---------.local/bin/scope1
-rwxr-xr-x.local/bin/setbg2
-rwxr-xr-x.local/bin/shortcutgen40
-rwxr-xr-x.local/bin/shortcutgen-v155
-rwxr-xr-x.local/bin/shortcutgen.bak23
-rwxr-xr-x.local/bin/sixprev9
l---------.local/bin/strm1
-rwxr-xr-x.local/bin/winit6
-rwxr-xr-x.local/bin/wstart12
29 files changed, 416 insertions, 60 deletions
diff --git a/.local/bin/capture b/.local/bin/capture
new file mode 100755
index 0000000..49799f6
--- /dev/null
+++ b/.local/bin/capture
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+capturedir="${XDG_PICTURES_DIR:-$HOME/Pictures}/captures"
+
+infomsg="Usage: capture [OPTION]
+ -h,--help: Print this help message
+ -s,--selection: Capture a portion of the screen
+ -f,--fullscreen: Grab the entire screen
+"
+
+capturetype=""
+capturename="/dev/null"
+msg="Capture location: "
+
+icon="󰄀"
+
+case "$1" in
+ -w|--window)
+ capturetype="Window"
+ msg="Not implemented yet"
+ ;;
+
+ -s|--selection)
+ capturetype="Region"
+ sel="$(slurp -w0 -b"447a6c69")"
+ capturename="$capturedir/capture-$(date "+%Y-%M-%d_%H-%m-%S").png"
+ grim -t png -g "$sel" $capturename
+ msg="$msg$capturename"
+ ;;
+
+ -f|--fulscreen)
+ capturetype="Fulscreen"
+ capturename="$capturedir/capture-$(date "+%Y-%M-%d_%H-%m-%S").png"
+ msg="$msg$capturename"
+ grim -t png "$capturename"
+ ;;
+
+ *) echo "Invalid argument provided" && printf "$infomsg" && exit 1 ;;
+esac
+
+wl-copy --type image/png < $capturename
+notify-send "$msg" -a "$icon $capturetype Capture" -i "$capturename"
diff --git a/.local/bin/cidr b/.local/bin/cidr
new file mode 100755
index 0000000..18c4214
--- /dev/null
+++ b/.local/bin/cidr
@@ -0,0 +1 @@
+/usr/bin/cider --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform-hint=auto
diff --git a/.local/bin/colorpicker b/.local/bin/colorpicker
index 5e37201..032abd8 100755
--- a/.local/bin/colorpicker
+++ b/.local/bin/colorpicker
@@ -6,6 +6,6 @@
sed "s/fill=.*>/fill=\"$col\">/g" $HOME/.local/share/circle.svg > /tmp/circle.svg
-echo "$col" | xsel -b
+echo "$col" | wl-copy
notify-send -i "/tmp/circle.svg" -a "Colorpicker" "$col was successfully copied to your clipboard."
diff --git a/.local/bin/displayselect b/.local/bin/displayselect
deleted file mode 100755
index 2b87894..0000000
--- a/.local/bin/displayselect
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-layoutdir="$XDG_CONFIG_HOME/screenlayout"
-
-layout="$(ls "$layoutdir" | dmenu -p "󰍺 Select layout: ")"
-
-[ -z "$layout" ] || sh "$layoutdir/$layout"
diff --git a/.local/bin/dropdowntoggle b/.local/bin/dropdowntoggle
index e1f98fb..1384699 100755
--- a/.local/bin/dropdowntoggle
+++ b/.local/bin/dropdowntoggle
@@ -1,34 +1,39 @@
#!/bin/sh
-# Toggle dropdown terminal windows.
-# The first argument is the title of the window.
-# The rest of it is the program/command to be run
-# in the dropdown window.
+# Toggle dropdown terminal windows in River.
+# The first argument is the name of the dropdown window.
+# The rest is the command to be run inside the terminal.
name="$1"
class="dropdown"
title="dropdown_$name"
-active="$(xdotool search --name "$title" | wc -l)"
shift
-case "$TERMINAL" in
-*st)
- classflag="-c"
- titleflag="-t"
- cmdflag="-e"
- ;;
-*alacritty)
- classflag="--class"
- titleflag="--title"
- cmdflag="--command"
- ;;
- *foot)
- classflag="-a"
- titleflag="--title"
- cmdflag="-e"
-esac
+# Get the window ID of an existing dropdown terminal
+existing=$(riverctl list-views | awk -v class="$class" '$3 == class {print $1}')
-case "$active" in
-0) $TERMINAL "$classflag" "dropdown" "$titleflag" "$title" "$cmdflag" "$@" & ;;
-*) kill -9 "$(xdotool search --name "$class" getwindowpid)" ;;
-esac
+if [ -n "$existing" ]; then
+ # If found, close it
+ riverctl close-view "$existing"
+else
+ # Otherwise, launch a new one
+ case "$TERMINAL" in
+ *st)
+ classflag="-c"
+ titleflag="-t"
+ cmdflag="-e"
+ ;;
+ *alacritty)
+ classflag="--class"
+ titleflag="--title"
+ cmdflag="--command"
+ ;;
+ *foot)
+ classflag="-a"
+ titleflag="--title"
+ cmdflag="-e"
+ ;;
+ esac
+
+ $TERMINAL "$classflag" "$class" "$titleflag" "$title" "$cmdflag" "$@" &
+fi
diff --git a/.local/bin/dwmbar/check-eselect b/.local/bin/dwmbar/check-eselect
new file mode 100755
index 0000000..760765b
--- /dev/null
+++ b/.local/bin/dwmbar/check-eselect
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+if [ "$(eselect news count all)" -eq 0 ]; then
+ exit 1
+else
+ exit 0
+fi
+
diff --git a/.local/bin/dwmbar/check-mail b/.local/bin/dwmbar/check-mail
new file mode 100755
index 0000000..c9ab3b2
--- /dev/null
+++ b/.local/bin/dwmbar/check-mail
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+[ -z "$($HOME/.local/bin/dwmbar/dwmb-mail)" ] && exit 1
+
+exit 0
diff --git a/.local/bin/dwmbar/dwmb-layout b/.local/bin/dwmbar/dwmb-layout
index 1455398..83d1ba3 100755
--- a/.local/bin/dwmbar/dwmb-layout
+++ b/.local/bin/dwmbar/dwmb-layout
@@ -1,3 +1,5 @@
#!/bin/sh
-echo "  $(cat "$HOME/.cache/layout")"
+text="  $(cat "$HOME/.cache/layout")"
+
+printf '{ "text": "%s", "class": "block" }\n' "$text"
diff --git a/.local/bin/fpt b/.local/bin/fpt
new file mode 100755
index 0000000..e0f4271
--- /dev/null
+++ b/.local/bin/fpt
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+PREVIEW_TEXT="ABCDEFGHIJKLM\n""\
+NOPQRSTUVWXYZ\n""\
+abcdefghijklm\n""\
+nopqrstuvwxyz\n""\
+1234567890\n""\
+!@$\%(){}[]"
+
+convert -size "532x365" xc:"#ffffff" \
+ -gravity center \
+ -pointsize 38 \
+ -font "$1" \
+ -fill "#000000" \
+ -annotate +0+0 "$PREVIEW_TEXT" \
+ -flatten "jpeg:-" | img2sixel
diff --git a/.local/bin/fzf-shortcuts b/.local/bin/fzf-shortcuts
new file mode 100755
index 0000000..5e0fb4a
--- /dev/null
+++ b/.local/bin/fzf-shortcuts
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# Example shortcutfile contents:
+# Compilation : /home/master/.local/src
+# Config : /home/master/.config
+# CV : /home/master/Dropbox/A/work/Application/CV/current
+# Downloads : /home/master/Downloads
+# Dropbox : /home/master/Dropbox
+# Hotkeys : /home/master/.config/sxhkd
+
+shortcutfile="${XDG_CACHE_HOME:-$HOME/.cache}/plain-shortcuts"
+
+# Read the file and pass it to fzf
+selected=$(cat "$shortcutfile" | fzf)
+
+# Extract the path part (after the colon)
+selected_path=$(echo "$selected" | cut -d ':' -f 2-)
+
+# Trim leading and trailing whitespace
+selected_path=$(echo "$selected_path" | sed 's/^ *//;s/ *$//')
+
+# Print the selected path
+echo "$selected_path"
diff --git a/.local/bin/gpg b/.local/bin/gpg
new file mode 100755
index 0000000..a28021a
--- /dev/null
+++ b/.local/bin/gpg
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -n "$FUGITIVE" ]; then
+ set -- --pinentry-mode loopback "$@"
+fi
+exec /usr/bin/gpg "$@"
diff --git a/.local/bin/groffdown b/.local/bin/groffdown
new file mode 100755
index 0000000..f2810a5
--- /dev/null
+++ b/.local/bin/groffdown
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+file=$(readlink -f "$1")
+dir=$(dirname "$file")
+base="${file%.*}"
+
+output=$( sed -e '1,1d
+ s/title:/\.TL\n/
+ s/author:/\.AU\n/
+ s/date:/\.ND\n/
+ s/institution:/\.AI\n/
+
+ s/\\begin{abstract}/\.AB/
+ s/\\end{abstract}/\.AE/
+
+ s/^\#####.\(.*\)/\.NH 5\n\1\n\.PP/g
+ s/^\####.\(.*\)/\.NH 4\n\1\n\.PP/g
+ s/^\###.\(.*\)/\.NH 3\n\1\n\.PP/g
+ s/^\##.\(.*\)/\.NH 2\n\1\n\.PP/g
+ s/^\#.\(.*\)/\.NH 1\n\1\n\.PP/g
+
+ s/\*\*\*\(.*\)\*\*\*$/\n\.BI\ \"\1\"\ /g
+ s/\*\*\*\(.*\)\*\*\*\(.\)$/\n\.BI\ \"\1\"\ \"\2\"/g
+ s/\*\*\*\(.*\)\*\*\*\(.\)/\n\.BI\ \"\1\"\ \"\2\"\n/g
+
+ s/\*\*\(.*\)\*\*$/\n\.B\ \"\1\"\ /g
+ s/\*\*\(.*\)\*\*\(.\)$/\n\.B\ \"\1\"\ \"\2\"/g
+ s/\*\*\(.*\)\*\*\(.\)/\n\.B\ \"\1\"\ \"\2\"\n/g
+
+ s/\*\(.*\)\*$/\n\.I\ \"\1\"\ /g
+ s/\*\(.*\)\*\(.\)$/\n\.I\ \"\1\"\ \"\2\"/g
+ s/\*\(.*\)\*\(.\)/\n\.I\ \"\1\"\ \"\2\"\n/g
+
+ s/`\(.*\)`$/\n\.CW\ \"\1\"\ /g
+ s/`\(.*\)`\(.\)$/\n\.CW\ \"\1\"\ \"\2\"/g
+ s/`\(.*\)`\(.\)/\n\.CW\ \"\1\"\ \"\2\"\n/g
+
+ s/^\ ...............-\ /.IP\ \\(bu\ 10\n/g
+ s/^\ ...........-\ /.IP\ \\(bu\ 8\n/g
+ s/^\ .......-\ /.IP\ \\(bu\ 6\n/g
+ s/^\ ...-\ /.IP\ \\(bu\ 4\n/g
+ s/^-\ /.IP\ \\(bu\ 2\n/g
+ s/^\ .*-\ /.IP\ \\(bu\ 12\n/g
+
+ ' $1)
+# echo "$output" | groff -me -ms -kejpt -T pdf > $base.pdf
+
+# echo "$output" > $base.ms
+# groff -ms $base.ms -T pdf > $base.pdf
+
+echo "$output"
+
+# $output >> output.ms
+# s/\*\*\*.*\*\*\*/Hi\1hi/g
diff --git a/.local/bin/gsetup b/.local/bin/gsetup
new file mode 100755
index 0000000..3684fb1
--- /dev/null
+++ b/.local/bin/gsetup
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+repo="$1"
+[ -z "$repo" ] && repo="$(basename "$(pwd)")"
+
+git remote set-url origin "ssh://chausse.xyz/$repo"
+git remote set-url --add --push origin "ssh://chausse.xyz/$repo"
+git remote set-url --add --push origin git@github.com:ChausseBenjamin/$repo
+
diff --git a/.local/bin/layouttoggle b/.local/bin/layouttoggle
index d1ceba5..b64e923 100755
--- a/.local/bin/layouttoggle
+++ b/.local/bin/layouttoggle
@@ -1,20 +1,34 @@
#!/bin/sh
-layout=$(cat "$HOME/.cache/layout")
+cachefile="$HOME/.cache/layout"
-case "$layout" in
-ca)
- setxkbmap -model pc104 -layout us -variant ,,
- echo us >"$HOME/.cache/layout"
- ;;
-us)
- setxkbmap -model pc104 -layout ca -variant ,,
- echo ca >"$HOME/.cache/layout"
- ;;
-*)
- setxkbmap -model pc104 -layout us -variant ,,
- echo us >"$HOME/.cache/layout"
- ;;
-esac
+# Handle manual override first
+if [ -n "$1" ]; then
+ echo "$1" >"$cachefile"
+else
+ # Ensure the cache file exists, or initialize it
+ [ -f "$cachefile" ] || echo "us" >"$cachefile"
+ layout=$(cat "$cachefile")
+
+ case "$layout" in
+ ca)
+ echo us >"$cachefile"
+ ;;
+ us)
+ echo ca >"$cachefile"
+ ;;
+ *)
+ echo us >"$cachefile"
+ ;;
+ esac
+fi
+
+# Apply keyboard layout
+riverctl keyboard-layout -model pc104 "$(cat "$cachefile")"
+
+# Restart the correct block if waybar is running
+waybar_pid=$(pidof waybar)
+if [ -n "$waybar_pid" ]; then
+ kill -38 "$waybar_pid"
+fi
-kill -38 "$(pidof dwmblocks)"
diff --git a/.local/bin/lazydocker b/.local/bin/lazydocker
new file mode 100755
index 0000000..c356cb3
--- /dev/null
+++ b/.local/bin/lazydocker
Binary files differ
diff --git a/.local/bin/makewall b/.local/bin/makewall
index 3458676..6929bc5 100755
--- a/.local/bin/makewall
+++ b/.local/bin/makewall
@@ -1,6 +1,6 @@
-#!/bin/sh
+#!/bin/bash
-wallDir="${XDG_CONFIG_HOME:-$HOME}/wallpapers"
+wallDir="${XDG_CONFIG_HOME:-$HOME/.config}/wallpapers"
# Acquire the list of connected displays and their models
displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | "\(.name) \(.model)"')"
diff --git a/.local/bin/makewall.bak b/.local/bin/makewall.bak
new file mode 100755
index 0000000..b098dff
--- /dev/null
+++ b/.local/bin/makewall.bak
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+wallDir="${XDG_CONFIG_HOME:-$HOME}/wallpapers"
+
+# Acquire the list of connected displays
+displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | .name')"
+echo "$displays"
+
+# If there is a wallpaper with a filename matching the display
+# name, set it as the wallpaper for that display.
+# ex: DP-1.jpg and DP-1.png are both valid filenames
+# Otherwise, set the wallpaper to the default wallpaper
+# (default.png or default.jpg)
+setDisplay() {
+ case $(ls $wallDir) in
+ *"$1"*)
+ wall=$(ls $wallDir | grep "$1" | head -n 1)
+ ;;
+ *)
+ wall=$(ls $wallDir | grep "default" | head -n 1)
+ ;;
+ esac
+ swaybg --output $1 -m fill --image $wallDir/$wall &
+}
+
+# Set the wallpaper for each display
+killall swaybg >/dev/null 2>&1
+for display in $displays; do
+ setDisplay $display
+done
diff --git a/.local/bin/media-notify b/.local/bin/media-notify
new file mode 100755
index 0000000..dd9563f
--- /dev/null
+++ b/.local/bin/media-notify
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+# Create a temporary directory
+current="$(mktemp -d)"
+raw="$(playerctl metadata)"
diff --git a/.local/bin/monchange b/.local/bin/monchange
new file mode 100755
index 0000000..b761037
--- /dev/null
+++ b/.local/bin/monchange
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Script to run whenever monitor configuration changes
+pidof waybar || setsid waybar
+pidof rivertile || rivertile &
+makewall &
diff --git a/.local/bin/monselect b/.local/bin/monselect
new file mode 100755
index 0000000..7ef0646
--- /dev/null
+++ b/.local/bin/monselect
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Acquire the list of connected displays
+displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | .name' | tofi)"
diff --git a/.local/bin/scope b/.local/bin/scope
new file mode 120000
index 0000000..7d5b41b
--- /dev/null
+++ b/.local/bin/scope
@@ -0,0 +1 @@
+/home/master/.config/lf/scope \ No newline at end of file
diff --git a/.local/bin/setbg b/.local/bin/setbg
index bfde81e..942c4e6 100755
--- a/.local/bin/setbg
+++ b/.local/bin/setbg
@@ -5,7 +5,7 @@
[ ! -f "$1" ] && exit
[ -z "$(file "$1" | grep -o 'image data')" ] && exit
-displays=$(xrandr | grep " connected" | sed 's/^\([a-Z,0-9,-]*\).*/\1/')
+displays=$(wlr-randr --json | jq -r '.[] | select(.active) | .name')
# Same as above but use dmenu only if there are multiple displays
if [ "$(echo "$displays" | wc -l)" -gt 1 ]; then
diff --git a/.local/bin/shortcutgen b/.local/bin/shortcutgen
index 7f26997..d09248c 100755
--- a/.local/bin/shortcutgen
+++ b/.local/bin/shortcutgen
@@ -3,15 +3,17 @@
# Quit if a valid configuration source doesn't exist
[ -f "$XDG_CONFIG_HOME/shortcutrc" ] && src="$XDG_CONFIG_HOME/shortcutrc" || exit 1
-# If you do not want to create a specific file, replace it's variable with /dev/null
+# If you do not want to create a specific file, replace its variable with /dev/null
awk -v lf_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts" \
-v gtk_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/bookmarks" \
-v zsh_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" \
-v env_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts" \
+ -v plain_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/plain-shortcuts" \
'
BEGIN {
FS=","
OFS=","
+ max_length = 0
}
# Function to remove whitespaces from a string
@@ -42,24 +44,48 @@ function fullpath(str) {
# Check if line is empty or contains only whitespace
if (NF) {
+ # Update max_length if current lhs is longer
+ if (length($1) > max_length) {
+ max_length = length($1)
+ }
+
+ # Store the current line for later processing
+ lines[NR] = $0
+ }
+}
+END {
+ for (i = 1; i <= NR; i++) {
+ split(lines[i], fields, FS)
+
+ # Skip processing if necessary fields are empty
+ if (fields[2] == "" || fields[3] == "") {
+ continue
+ }
# Convert column 2 to lowercase
- lc_col2 = tolower($2)
+ lc_col2 = tolower(fields[2])
# Convert column 2 to uppercase
- uc_col2 = toupper($2)
+ uc_col2 = toupper(fields[2])
# Write to $XDG_CONFIG_HOME/lf/shortcuts
- print "map g" lc_col2 " cd " $3 > lf_filepath
+ print "map g" lc_col2 " cd " fields[3] > lf_filepath
# Write to $XDG_CACHE_HOME/zsh-shortcuts
- print "g" lc_col2 "() {cd " $3 "}" > zsh_filepath
+ print "g" lc_col2 "() {cd " fields[3] "}" > zsh_filepath
# Write to $XDG_CACHE_HOME/env-shortcuts
- print "export G" uc_col2 "=" $3 "" > env_filepath
+ print "export G" uc_col2 "=" fields[3] "" > env_filepath
# Write to $XDG_CONFIG_HOME/gtk-3.0/bookmarks
- print "file://" fullpath($3) " " $1 > gtk_filepath
+ print "file://" fullpath(fields[3]) " " fields[1] > gtk_filepath
+
+ # Write plain Title + `,` + only if fields[1] is not empty
+ if (fields[1] != "") {
+ printf "%-*s : %s\n", max_length, fields[1], fullpath(fields[3]) > plain_filepath
+ } else if (fields[3] != "") {
+ printf "%s\n", fullpath(fields[3]) > plain_filepath
+ }
}
}
' "$src"
diff --git a/.local/bin/shortcutgen-v1 b/.local/bin/shortcutgen-v1
new file mode 100755
index 0000000..fa08875
--- /dev/null
+++ b/.local/bin/shortcutgen-v1
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+[ -f "$XDG_CONFIG_HOME/shortcutrc" ] && src="$XDG_CONFIG_HOME/shortcutrc" || exit 1
+
+# If you do not want to create a specific file, replace the path with /dev/null
+lf_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts"
+zsh_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts"
+env_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts"
+
+awk '
+BEGIN {
+ FS=","
+ OFS=","
+}
+
+# Function to remove whitespaces from a string
+function remove_whitespace(str) {
+ gsub(/[[:space:]]/, "", str)
+ return str
+}
+
+{
+ # Remove comments
+ gsub(/#.*/, "")
+
+ # Remove whitespaces from column 2
+ $2 = remove_whitespace($2)
+
+ # Remove leading and trailing whitespaces from column 3
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", $3)
+
+ # whenever a line contains only commas, replace it with an empty string
+ # so that we can check if a line is empty or not
+ gsub(/^,+$|^,+|,+$|,+,/, "", $0)
+
+ # Check if line is empty or contains only whitespace
+ if (NF) {
+
+ # Convert column 2 to lowercase
+ lc_col2 = tolower($2)
+
+ # Convert column 2 to uppercase
+ uc_col2 = toupper($2)
+
+ # Write to $XDG_CONFIG_HOME/lf/shortcuts
+ print "map g" lc_col2 " " $3 > ENVIRON["XDG_CONFIG_HOME"] "/lf/shortcuts"
+
+ # Write to $XDG_CACHE_HOME/zsh-shortcuts
+ print "alias g" lc_col2 "=\"cd " $3 "\"" > ENVIRON["XDG_CACHE_HOME"] "/zsh-shortcuts"
+
+ # Write to $XDG_CACHE_HOME/env-shortcuts
+ print "export G" uc_col2 "=\"" $3 "\"" > ENVIRON["XDG_CACHE_HOME"] "/env-shortcuts"
+ }
+}
+' XDG_CONFIG_HOME="$XDG_CONFIG_HOME" XDG_CACHE_HOME="$XDG_CACHE_HOME" "$src"
diff --git a/.local/bin/shortcutgen.bak b/.local/bin/shortcutgen.bak
new file mode 100755
index 0000000..fe5ed75
--- /dev/null
+++ b/.local/bin/shortcutgen.bak
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+
+# raw (basic processing before converting to specific formats)
+# - remove comments
+# - remove empty lines
+# - remove spacing (keep commas between columns)
+# - remove trailing whitespace
+
+# Strip comments, remove empty lines, condense spacing, remove trailing whitespace
+raw="$(sed 's/#.*//g;s/,[[:space:]]*/,/g;/^$/d;s/[[:space:]]*$//g' <"${XDG_CONFIG_HOME:-$HOME/.config}/shortcutrc")"
+
+# lf (sourced by lfrc)
+echo "$raw" | sed 's/\(.*\),\(.*\),\(.*\)/map g\2 cd \3/' >"${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts"
+
+# Shell aliases (read by zshrc)
+echo "$raw" | sed 's/\(.*\),\(.*\),\(.*\)/alias g\2="cd \3"/' >"${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts"
+
+# Environment variables (read by .profile)
+echo "$raw" | sed 's/^\(.*\),\(.*\),/export G\U\2=,/;s/,\(.*\)/\1/' >"${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts"
+
+
+
diff --git a/.local/bin/sixprev b/.local/bin/sixprev
new file mode 100755
index 0000000..8174f81
--- /dev/null
+++ b/.local/bin/sixprev
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Check if the file exists
+if [ ! -f "$1" ]; then
+ echo "File not found!"
+ exit 2
+fi
+
+convert "$1" -resize 600x sixel:- | cat
diff --git a/.local/bin/strm b/.local/bin/strm
new file mode 120000
index 0000000..c1a120b
--- /dev/null
+++ b/.local/bin/strm
@@ -0,0 +1 @@
+/home/master/.local/src/strm/strm \ No newline at end of file
diff --git a/.local/bin/winit b/.local/bin/winit
new file mode 100755
index 0000000..1fd2d9e
--- /dev/null
+++ b/.local/bin/winit
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# winit: Wayland Init (using dwl)
+
+dwl &
+swaybg -i ~/.config/wallpaper/default.jpg &
diff --git a/.local/bin/wstart b/.local/bin/wstart
new file mode 100755
index 0000000..9cc99d6
--- /dev/null
+++ b/.local/bin/wstart
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+repo="$(echo "$1" | sed 's/\.git//;s/.*\///;')"
+
+git clone "$1" "$repo/repo"
+
+cd "$repo/repo"
+
+# Get the main/master branch upstream from the cloned repo
+master="$(git branch --show-curent)"
+
+cd .. && mv repo "$master"