This commit is contained in:
2026-07-12 08:16:17 +03:30
commit 72be1234e1
2027 changed files with 221388 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
Credits to *<u><a href="https://github.com/swindlesmccoop/">Swindles McCoop</a></u>* for **edsc**, **sb-liisten, sb-memory, sb-volume, sb-cputemp, sb-cpuusage, sb-network, and sb-battery**. Really useful tools.
(same username on [https://git.cbps.xyz/swindlesmccoop](git.cbps.xyz) he's my daddy btw i love him)
Executable
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env sh
VIDEO_SIZE="1920x1080"
DISPLAY_NUM=":0.0"
AUDIO_SOURCE="default"
FPS="60"
OUTPUT_FILE="recording_$(date +%Y%m%d_%H%M%S).mkv"
AUDIO_BITRATE="128k"
record() {
local out_file="${1:-$OUTPUT_FILE}"
echo "Starting screen + mic recording..."
echo "Resolution: $VIDEO_SIZE @ ${FPS}fps"
echo "Audio source: $AUDIO_SOURCE"
echo "Output: $out_file"
ffmpeg -y \
-thread_queue_size 1024 \
-f x11grab -framerate "$FPS" -video_size "$VIDEO_SIZE" -i "$DISPLAY_NUM" \
-thread_queue_size 1024 \
-f pulse -i "$AUDIO_SOURCE" \
-c:v h264_nvenc -preset p1 -rc vbr -cq 23 \
-pix_fmt yuv420p \
-c:a aac -b:a "$AUDIO_BITRATE" \
-vsync 1 \
"$out_file"
}
show_help() {
echo "Usage: $0 record [output_file]"
}
if [ "$1" = "--record" ]; then
record "$2"
else
show_help
fi
+10
View File
@@ -0,0 +1,10 @@
#!/bin/sh
AUR_URL="https://aur.archlinux.org"
TIMEOUT=5
if curl -s --head --fail --max-time "$TIMEOUT" "$AUR_URL" > /dev/null; then
echo "Unfortunately, the AUR is up."
else
echo "AUR IS DOWN"
fi
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/env python3
def read_file(path):
try:
with open(path, "r") as f:
return f.read().strip()
except:
return None
def get_battery_info():
capacity = read_file("/sys/class/power_supply/BAT1/capacity")
status = read_file("/sys/class/power_supply/BAT1/status")
ac_online = read_file("/sys/class/power_supply/ACAD/online")
try:
percent = int(capacity)
except (TypeError, ValueError):
percent = None
charging = (status == "Charging") or (ac_online == "1")
return charging, percent
def print_symbol():
charging, percent = get_battery_info()
if percent is None:
print("[?]")
return
if charging and percent >= 90:
print("[++]")
elif charging and percent < 30:
print("[-+]")
elif charging:
print("[+]")
elif not charging and percent < 30:
print("[--]")
else:
print("[-]")
if __name__ == "__main__":
print_symbol()
+118
View File
@@ -0,0 +1,118 @@
#!/bin/sh
WMENU="wmenu"
DMENU="dmenu"
BROWSER="firefox-bin"
NOTIFY="notify-send"
CHOICES="Paulgo
URL
Incognito URL
YouTube
Codeberg
Tildegit
IPLeak
Safebooru
Wikipedia"
notify() {
"$NOTIFY" "$1" "$2" 2>/dev/null
}
run_wmenu() {
printf '%s\n' "$1" | $WMENU -p "$2"
}
run_dmenu() {
printf '' | $DMENU -p "$1"
}
urlencode() {
python3 -c "import sys, urllib.parse as ul; print(ul.quote_plus(sys.argv[1]))" "$1"
}
open_url() {
url="$1"
if pgrep -x "$BROWSER" >/dev/null; then
"$BROWSER" --new-tab "$url" &
else
"$BROWSER" "$url" &
fi
}
main() {
choice=$(run_wmenu "$CHOICES" "Where to?")
[ -z "$choice" ] && notify "Error" "No selection made" && exit 1
case "$choice" in
Codeberg)
repo=$(run_dmenu "Username & repo (user/repo):")
[ -z "$repo" ] && notify "Error" "No input" && exit 1
open_url "https://codeberg.org/$repo"
;;
Tildegit)
repo=$(run_dmenu "Username & repo (user/repo):")
[ -z "$repo" ] && notify "Error" "No input" && exit 1
open_url "https://tildegit.org/$repo"
;;
IPLeak)
open_url "https://ipleak.net"
;;
Paulgo)
query=$(run_dmenu "Search Paulgo:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://paulgo.io/search?q=$qenc"
;;
Wikipedia)
query=$(run_dmenu "Search Wikipedia:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://en.wikipedia.org/wiki/Special:Search?search=$qenc"
;;
URL)
url=$(run_dmenu "Enter URL:")
[ -z "$url" ] && notify "Error" "No URL entered" && exit 1
case "$url" in
http*) ;;
*) url="https://$url" ;;
esac
open_url "$url"
;;
"Incognito URL")
url=$(run_dmenu "Enter incognito URL:")
[ -z "$url" ] && notify "Error" "No URL entered" && exit 1
case "$url" in
http*) ;;
*) url="https://$url" ;;
esac
"$BROWSER" --private-window "$url" &
;;
YouTube)
query=$(run_dmenu "Search YouTube:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://youtube.com/results?search_query=$qenc"
;;
Safebooru)
query=$(run_dmenu "Search Safebooru:")
[ -z "$query" ] && notify "Error" "No input" && exit 1
qenc=$(urlencode "$query")
open_url "https://safebooru.org/index.php?page=post&s=list&tags=$qenc"
;;
*)
notify "Error" "Invalid selection: $choice"
exit 1
;;
esac
}
for cmd in "$WMENU" "$DMENU" "$BROWSER" "$NOTIFY"; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: required command '$cmd' not found" >&2
exit 1
fi
done
main
BIN
View File
Binary file not shown.
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env bash
word=${1:-$(xclip -o -selection primary 2>/dev/null || wl-paste 2>/dev/null)}
# Check for empty word or special characters
[[ -z "$word" || "$word" =~ [\/] ]] && notify-send -h string:bgcolor:#bf616a -t 3000 "Invalid input." && exit 0
query=$(curl -s --connect-timeout 5 --max-time 10 "https://api.dictionaryapi.dev/api/v2/entries/en_US/$word")
# Check for connection error (curl exit status stored in $?)
[ $? -ne 0 ] && notify-send -h string:bgcolor:#bf616a -t 3000 "Connection error." && exit 1
# Check for invalid word response
[[ "$query" == *"No Definitions Found"* ]] && notify-send -h string:bgcolor:#bf616a -t 3000 "Invalid word." && exit 0
# Show only first 3 definitions
def=$(echo "$query" | jq -r '[.[].meanings[] | {pos: .partOfSpeech, def: .definitions[].definition}] | .[:3].[] | "\n\(.pos). \(.def)"')
# Requires a notification daemon to be installed
notify-send "$word -" "$def"
### MORE OPTIONS :)
# Show first definition for each part of speech (thanks @morgengabe1 on youtube)
# def=$(echo "$query" | jq -r '.[0].meanings[] | "\(.partOfSpeech): \(.definitions[0].definition)\n"')
# Show all definitions
# def=$(echo "$query" | jq -r '.[].meanings[] | "\n\(.partOfSpeech). \(.definitions[].definition)"')
# Regex + grep for just definition, if anyone prefers that to jq
# def=$(grep -Po '"definition":"\K(.*?)(?=")' <<< "$query")
# bold=$(tput bold) # Print text bold with echo, for visual clarity
# normal=$(tput sgr0) # Reset text to normal
# echo "${bold}Definition of $word"
# echo "${normal}$def"
+39
View File
@@ -0,0 +1,39 @@
#!/bin/sh
RUN_WITH_PROXY() {
BINARY=$1
shift
if [ -n "$BINARY" ]; then
exec "$BINARY" --proxy-server="socks5://127.0.0.1:65000" "$@"
fi
}
GET_VESKTOP() {
if command -v vesktop >/dev/null 2>&1; then
echo "$(command -v vesktop)"
elif command -v vesktop-bin >/dev/null 2>&1; then
echo "$(command -v vesktop-bin)"
elif command -v flatpak >/dev/null 2>&1 && flatpak list --ids | grep -q "dev.vencord.Vesktop"; then
echo "flatpak run dev.vencord.Vesktop"
fi
}
GET_DISCORD() {
if command -v linux-discord >/dev/null 2>&1; then
echo "$(command -v linux-discord)"
elif command -v flatpak >/dev/null 2>&1 && flatpak list --ids | grep -q "com.discordapp.Discord"; then
echo "flatpak run com.discordapp.Discord"
fi
}
OS=$(uname -s)
if [ "$OS" = "FreeBSD" ]; then
CMD=$(GET_DISCORD)
RUN_WITH_PROXY $CMD "$@"
elif [ "$OS" = "Linux" ]; then
CMD=$(GET_VESKTOP)
RUN_WITH_PROXY $CMD "$@"
else
linux-discord --proxy-server="socks5://127.0.0.1:65000" "$@"
fi
+161
View File
@@ -0,0 +1,161 @@
#!/usr/bin/env python3
import os
import subprocess
import sys
from pathlib import Path
DMENU_ARGS = [
"dmenu",
"-i",
"-fn", "JetBrainsMono Nerd Font-10",
"-nb", "#121212",
"-nf", "#e0e0e0",
"-sb", "#222222",
"-sf", "#e0e0e0",
"-l", "10",
"-p", "Launch:",
]
DESKTOP_DIRS = [
Path.home() / ".local/share/applications",
Path.home() / ".local/share/flatpak/exports/share/applications",
Path("/var/lib/flatpak/exports/share/applications"),
Path("/usr/share/applications"),
Path("/usr/local/share/applications"),
]
INVALID_EXEC_PREFIXES = ("wine", "wscript", "rundll32", "winhlp32", "hh ")
def parse_desktop_file(path: Path):
"""
Returns (name, exec_cmd) or (None, None) if the file should be skipped.
Handles: NoDisplay=true, Hidden=true, missing Name/Exec, field codes, env wrappers.
"""
props = {}
in_desktop_entry = False
try:
with path.open(encoding="utf-8", errors="replace") as f:
for line in f:
line = line.rstrip("\n")
if line.startswith("["):
in_desktop_entry = line == "[Desktop Entry]"
continue
if not in_desktop_entry or "=" not in line:
continue
key, _, value = line.partition("=")
key = key.strip()
if key not in props:
props[key] = value.strip()
except OSError:
return None, None
if props.get("NoDisplay", "").lower() == "true":
return None, None
if props.get("Hidden", "").lower() == "true":
return None, None
if props.get("Type", "") != "Application":
return None, None
name = props.get("Name")
exec_raw = props.get("Exec")
if not name or not exec_raw:
return None, None
exec_cmd = clean_exec(exec_raw)
if not exec_cmd:
return None, None
lower = exec_cmd.lower()
if any(lower.startswith(p) for p in INVALID_EXEC_PREFIXES):
return None, None
terminal = props.get("Terminal", "").lower() == "true"
if terminal:
term = os.environ.get("TERMINAL", "xterm")
exec_cmd = f"{term} -e {exec_cmd}"
return name, exec_cmd
def clean_exec(exec_raw: str) -> str:
tokens = exec_raw.split()
cleaned = []
for token in tokens:
if token.startswith("%") and len(token) == 2 and token[1].isalpha():
continue
cleaned.append(token)
return " ".join(cleaned).strip()
def collect_apps():
seen_stems = {}
for directory in DESKTOP_DIRS:
if not directory.is_dir():
continue
for desktop_file in sorted(directory.glob("*.desktop")):
stem = desktop_file.stem.lower()
if stem not in seen_stems:
seen_stems[stem] = desktop_file
apps = {}
for desktop_file in seen_stems.values():
name, cmd = parse_desktop_file(desktop_file)
if name and cmd and name not in apps:
apps[name] = cmd
return apps
def run_dmenu(app_names: list[str]) -> str | None:
names_input = "\n".join(sorted(app_names, key=str.casefold)).encode()
try:
result = subprocess.run(
DMENU_ARGS,
input=names_input,
capture_output=True,
)
except FileNotFoundError:
sys.exit("error: dmenu not found in PATH")
if result.returncode != 0:
return None
return result.stdout.decode().strip()
def launch(cmd: str):
subprocess.Popen(
cmd,
shell=True,
stdin=subprocess.DEVNULL,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
start_new_session=True,
)
def main():
apps = collect_apps()
if not apps:
sys.exit("error: no applications found")
selected = run_dmenu(list(apps.keys()))
if not selected:
return
cmd = apps.get(selected)
if not cmd:
sys.exit(f"error: no command found for '{selected}'")
launch(cmd)
if __name__ == "__main__":
main()
Executable
+2
View File
@@ -0,0 +1,2 @@
#!/bin/zsh
xclip -sel clipboard
Executable
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
if [ -z "$1" ]; then
SCRIPT=$(find . -type f | fzfse)
else
SCRIPT="$1"
fi
if [ -z "$SCRIPT" ]; then
echo 'Usage: edsc [file]'
exit 1
fi
emacsclient -c -nw "$SCRIPT"
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
kitty -e emacsclient -c $1
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
emacsclient -c $1
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from numpy.f2py.f2py2e import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+43
View File
@@ -0,0 +1,43 @@
#!/bin/sh
# Credits to Swindles McCoop
# Coast's configuration of Firemenu
# ## Bravemenu
set -e
DMENU_CMD="dmenu -i -fn Cozette:size=13 -nb #151821 -nf #a9b1d6 -sb #414868 -sf #c0caf5"
CHOICES="URL
Google
YouTube
Spotify
Discord
Git.gay
Github
DeepSeek
ChatGPT
4chan
Proton Inbox
Proton Drive
Google Inbox
Ente Auth"
CHOICE=$(printf "$CHOICES" | $DMENU_CMD -p "Bravemenu ")
SWALLOW=
case $CHOICE in
"URL") printf '' | $DMENU_CMD -p 'Enter URL(s):' | xargs $SWALLOW brave > /dev/null ;;
"Discord") $SWALLOW brave https://discord.com/app/ > /dev/null ;;
"Spotify") $SWALLOW brave https://open.spotify.com/ > /dev/null ;;
"DeepSeek") $SWALLOW brave https://chat.deepseek.com/ > /dev/null ;;
"ChatGPT") $SWALLOW brave https://chatgpt.com/ > /dev/null ;;
#"Github") $SWALLOW brave https://github.com/ > /dev/null ;;
"Github") printf '' | $DMENU_CMD -p 'Repository:' | sed 's|^|https://github.com/|' | sed 's/ /%20/g' | xargs $SWALLOW brave > /dev/null ;;
"Git.gay") printf '' | $DMENU_CMD -p 'Repository:' | sed 's|^|https://git.gay/|' | sed 's/ /%20/g' | xargs $SWALLOW brave > /dev/null ;;
#"Git.gay") $SWALLOW brave https://git.gay/ > /dev/null ;;
"Google") printf '' | $DMENU_CMD -p 'Search:' | sed 's|^|https://google.com/search?q=|' | sed 's/ /%20/g' | xargs $SWALLOW brave > /dev/null ;;
"Link") printf '' | $DMENU_CMD -p 'Enter URL(s):' | xargs $SWALLOW brave > /dev/null ;;
"YouTube") printf '' | $DMENU_CMD -p 'Search:' | sed 's|^|https://youtube.com/results?search_query=|' | sed 's/ /%20/g' | xargs $SWALLOW brave > /dev/null ;;
"4chan") printf '3\na\naco\nadv\nan\nb\nbant\nbiz\nc\ncgl\nck\ncm\nco\nd\ndiy\ne\nf\nfa\nfit\ng\ngd\ngif\nh\nhc\nhis\nhm\nhr\ni\nic\nint\njp\nk\nlgbt\nlit\nm\nmlp\nmu\nn\nnews\no\nout\np\npo\npol\npw\nqa\nqst\nr\nr9k\ns\ns4s\nsci\nsoc\nsp\nt\ntg\ntoy\ntrv\ntv\nu\nv\nvg\nvip\nvm\nvmg\nvp\nvr\nvrpg\nvst\nvt\nw\nwg\nwsg\nwsr\nx\nxs\ny' | $DMENU_CMD -p 'Board letter:' | sed 's|^|https://4chan.org/|' | xargs $SWALLOW brave > /dev/null ;;
"Proton Inbox") printf '' | $SWALLOW brave https://mail.proton.me/u/0/inbox > /dev/null ;;
"Proton Drive") printf '' | $SWALLOW brave https://drive.proton.me/ > /dev/null ;;
"Google Inbox") printf '' | $SWALLOW brave https://mail.google.com/mail/u/0/ ;;
"Ente Auth") printf '' | $SWALLOW brave https://auth.ente.io/auth ;;
esac
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
fzf --layout=reverse --height 40%
+29
View File
@@ -0,0 +1,29 @@
#!/bin/zsh
grub_screen() {
clear
echo -e "\n\n\t GNU GRUB 2.06"
echo -e "\n"
echo -e "\t Minimal BASH-like line editing is supported. For the first word, TAB"
echo -e "\t lists possible command completions. Anywhere else TAB lists possible"
echo -e "\t device or file completions."
echo -e "\n"
}
grub_screen
# Fake GRUB prompt
while true; do
echo -ne " grub> "
read -r command
case $command in
exit|quit)
clear
break
;;
*)
echo -e "\t Unknown command. Press a key to continue..."
read -r dummy
;;
esac
done
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3
import sys
from hyfetch.__main__ import run_rust
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(run_rust())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3
import sys
from hyfetch.__main__ import run_rust
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(run_rust())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3
import sys
from hyfetch.__main__ import run_py
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(run_py())
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env python3
import subprocess
import sys
import signal
try:
# Find PID(s) of running 'radio' process (matching name)
out = subprocess.check_output(["pgrep", "-f", "radio"])
pids = [int(pid) for pid in out.decode().strip().split()]
except subprocess.CalledProcessError:
print("No running 'radio' process found.")
sys.exit(1)
for pid in pids:
try:
# Send SIGKILL (kill -9) to each found pid
subprocess.run(["kill", "-9", str(pid)])
print(f"Killed PID {pid}")
except Exception as e:
print(f"Failed to kill PID {pid}: {e}")
Executable
+124
View File
@@ -0,0 +1,124 @@
#!/usr/bin/env python3
import ast
import operator
import math
import sys
_OPERATORS = {
ast.Add: operator.add,
ast.Sub: operator.sub,
ast.Mult: operator.mul,
ast.Div: operator.truediv,
ast.Mod: operator.mod,
ast.Pow: operator.pow,
ast.USub: operator.neg,
ast.UAdd: operator.pos,
ast.FloorDiv: operator.floordiv,
}
_MATH_FUNCS = {name: getattr(math, name) for name in dir(math) if not name.startswith("_") and callable(getattr(math, name))}
_MATH_FUNCS.update({
"abs": abs,
"round": round,
"factorial": math.factorial,
"degrees": math.degrees,
"radians": math.radians,
"isclose": math.isclose,
"isfinite": math.isfinite,
"isinf": math.isinf,
"isnan": math.isnan,
"log2": math.log2,
"log10": math.log10,
"log": math.log,
"exp": math.exp,
"expm1": math.expm1,
"fsum": math.fsum,
"gamma": math.gamma,
"lgamma": math.lgamma,
"trunc": math.trunc,
"max": max,
"min": min,
"sum": sum,
})
_CONSTANTS = {
"pi": math.pi,
"e": math.e,
"tau": math.tau,
"inf": math.inf,
"nan": math.nan,
}
class matheval(ast.NodeVisitor):
def visit(self, node):
if isinstance(node, ast.Expression):
return self.visit(node.body)
return super().visit(node)
def visit_BinOp(self, node):
left = self.visit(node.left)
right = self.visit(node.right)
op_type = type(node.op)
if op_type in _OPERATORS:
return _OPERATORS[op_type](left, right)
raise ValueError(f"Unsupported binary operator {op_type.__name__}")
def visit_UnaryOp(self, node):
operand = self.visit(node.operand)
op_type = type(node.op)
if op_type in _OPERATORS:
return _OPERATORS[op_type](operand)
raise ValueError(f"Unsupported unary operator {op_type.__name__}")
def visit_Call(self, node):
if not isinstance(node.func, ast.Name):
raise ValueError("Only simple function calls allowed")
func_name = node.func.id
if func_name not in _MATH_FUNCS:
raise ValueError(f"Unknown function '{func_name}'")
args = [self.visit(arg) for arg in node.args]
return _MATH_FUNCS[func_name](*args)
def visit_Name(self, node):
if node.id in _CONSTANTS:
return _CONSTANTS[node.id]
raise ValueError(f"Unknown identifier '{node.id}'")
def visit_Constant(self, node):
if isinstance(node.value, (int, float)):
return node.value
raise ValueError(f"Unsupported constant type: {type(node.value).__name__}")
def visit_List(self, node):
return [self.visit(el) for el in node.elts]
def visit_Tuple(self, node):
return tuple(self.visit(el) for el in node.elts)
def generic_visit(self, node):
raise ValueError(f"Unsupported expression: {type(node).__name__}")
def main():
if len(sys.argv) < 2:
print("Usage: math '<expression>'")
print("Example: math 'sin(pi/2) + 2^3'")
sys.exit(1)
expr = " ".join(sys.argv[1:])
expr = expr.replace("^", "**")
expr = expr.replace("\n", "")
try:
tree = ast.parse(expr, mode="eval")
evaluator = matheval()
result = evaluator.visit(tree)
if isinstance(result, float) and result.is_integer():
print(int(result))
else:
print(result)
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()
+57
View File
@@ -0,0 +1,57 @@
#!/bin/sh
CONFIG_FILE="${HOME}/.config/mksymlink.conf"
TARGET_BASE="${HOME}/.config"
usage() {
echo "Usage: $0 [-c config_file] [-t target_base]"
exit 1
}
while getopts "c:t:h" opt; do
case "$opt" in
c) CONFIG_FILE="$OPTARG" ;;
t) TARGET_BASE="$OPTARG" ;;
h) usage ;;
*) usage ;;
esac
done
if [ ! -f "$CONFIG_FILE" ]; then
echo "Error: config file '$CONFIG_FILE' does not exist" 1>&2
exit 2
fi
. "$CONFIG_FILE"
if [ -z "$MAIN" ]; then
echo "Error: MAIN is not set in config file" 1>&2
exit 3
fi
mkdir -p "$TARGET_BASE"
for entry in $list; do
TARGET=$(echo "$entry" | cut -d= -f1)
SRC_REL=$(echo "$entry" | cut -d= -f2)
SRC="$MAIN/$SRC_REL"
TARGET_PATH="$TARGET_BASE/$TARGET"
if [ ! -e "$SRC" ]; then
echo "Warning: source '$SRC' does not exist, skipping" 1>&2
continue
fi
mkdir -p "$(dirname "$TARGET_PATH")"
if [ -L "$TARGET_PATH" ]; then
rm "$TARGET_PATH"
elif [ -e "$TARGET_PATH" ]; then
echo "Warning: target '$TARGET_PATH' exists and is not a symlink, skipping" 1>&2
continue
fi
ln -s "$SRC" "$TARGET_PATH"
echo "Created symlink: $TARGET_PATH -> $SRC"
done
+126
View File
@@ -0,0 +1,126 @@
#!/usr/bin/env lua
local launcher = "dmenu"
local dmenu_args = {
"-i",
"-fn", "JetBrainsMono Nerd Font-10",
"-nb", "#121212",
"-nf", "#e0e0e0",
"-sb", "#222222",
"-sf", "#e0e0e0",
"-l", "10",
}
local music_dir = "/home/coast/Music"
local max_length = 30
local default_icon = "/usr/share/icons/hicolor/48x48/apps/musical-note.png"
local function build_menu(prompt)
if launcher == "rofi" then
return string.format("rofi -dmenu -i -p '%s'", prompt)
else
local args = "dmenu"
for _, v in ipairs(dmenu_args) do
args = args .. " '" .. v .. "'"
end
args = args .. string.format(" -p '%s'", prompt)
return args
end
end
local function escape(str)
return str:gsub("'", "'\\''")
end
local function capture(cmd)
local f = io.popen(cmd, 'r')
local s = f:read('*a')
f:close()
return s:gsub("^%s*(.-)%s*$", "%1")
end
local function truncate(str, len)
if #str > len then
return str:sub(1, len) .. "..."
end
return str
end
local function get_cover(song_file)
if not song_file or song_file == "" then return default_icon end
local full_path = music_dir .. "/" .. song_file
local dir = full_path:match("(.*[/\\])") or music_dir
local names = {"cover.jpg", "cover.png", "folder.jpg", "folder.png", "front.jpg", "front.png"}
for _, name in ipairs(names) do
local path = dir .. name
local f = io.open(path, "r")
if f then
f:close()
return path
end
end
return default_icon
end
local action = arg[1]
if action == "shuf" then
os.execute("mpc random on >/dev/null && notify-send 'Shuffle enabled'")
os.exit(0)
elseif action == "shufno" then
os.execute("mpc random off >/dev/null && notify-send 'Shuffle disabled'")
os.exit(0)
elseif action == "next" then
os.execute("mpc next >/dev/null")
os.exit(0)
elseif action == "prev" then
os.execute("mpc prev >/dev/null")
os.exit(0)
elseif action == "toggle" then
os.execute("mpc toggle >/dev/null")
os.exit(0)
elseif action == "current" then
local current = capture("mpc current")
if current ~= "" then io.write(current .. "\n") end
os.exit(0)
elseif action == "info" then
local file = capture("mpc --format '%file%' current")
local title = capture("mpc current")
local cover = get_cover(file)
os.execute(string.format("notify-send 'Currently Playing' '%s' -i '%s'", escape(title), cover))
os.exit(0)
elseif action == "album" then
local album = capture("mpc list album | " .. build_menu("Select Album"))
if album ~= "" then
os.execute(string.format("mpc clear >/dev/null && mpc find album '%s' | mpc add && mpc play >/dev/null", escape(album)))
end
os.exit(0)
elseif action == "artist" then
local artist = capture("mpc list artist | " .. build_menu("Select Artist"))
if artist ~= "" then
os.execute(string.format("mpc clear >/dev/null && mpc find artist '%s' | mpc add && mpc play >/dev/null", escape(artist)))
end
os.exit(0)
elseif action == "search" then
local menu = "mpc --format '%title% - %artist% - %album%\t%file%' search any '' | " .. build_menu("Search music")
local choice = capture(menu)
if choice == "" then os.exit(0) end
local file = choice:match("\t(.-)$")
if file then
os.execute(string.format("mpc clear >/dev/null && mpc add '%s' >/dev/null && mpc play >/dev/null", escape(file)))
os.exit(0)
end
elseif action == "reload" then
os.execute("mpc update && mpc clear && mpc add / && mpc play >/dev/null")
os.execute("notify-send 'Library refreshed. Now playing...'")
os.exit(0)
end
os.execute("mpc play >/dev/null 2>&1")
os.execute("mpc volume 15 >/dev/null 2>&1")
local file = capture("mpc --format '%file%' current")
local title = capture("mpc current")
local cover = get_cover(file)
local display = truncate(title, max_length)
os.execute(string.format("notify-send 'Now playing...' '%s' -i '%s'", escape(display), cover))
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3.13
import sys
from nodeenv import main
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main())
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from numpy._configtool import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3.13
import sys
from pyright.cli import entrypoint
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(entrypoint())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3.13
import sys
from pyright.langserver import entrypoint
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(entrypoint())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3.13
import sys
from pyright.cli import entrypoint
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(entrypoint())
+7
View File
@@ -0,0 +1,7 @@
#!/usr/bin/python3.13
import sys
from pyright.langserver import entrypoint
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(entrypoint())
Executable
+8
View File
@@ -0,0 +1,8 @@
#!/nix/store/1ki8jq5sax0hm1sqbw0jk6qnqpy417zx-python3-3.13.5/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
from qrcode.console_scripts import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import subprocess
import time
from pathlib import Path
import threading
import json
import tempfile
import urllib.request
import websocket
# 128kbps Opus
URL="https://radio.animebits.moe/stream/stream128.ogg"
# 256kbps Opus
#URL="https://radio.animebits.moe/stream/stream256.ogg"
# ~148kbps VBR AAC
#URL="https://radio.animebits.moe/stream/stream128.aac"
# ~192kbps VBR MP3
#URL="https://radio.animebits.moe/stream/stream192.mp3"
# Lossless FLAC
#URL="https://radio.animebits.moe/stream/stream.flac"
#config file & pid
CONF = Path.home() / ".config" / "radiorc"
PID = Path.home() / ".config" / "radio-pid"
with open(CONF) as f:
VOL = f.read().strip()
def notify(title, image_url=None):
icon_path = None
if image_url:
try:
tmp = tempfile.NamedTemporaryFile(delete=False, suffix=".png")
urllib.request.urlretrieve(image_url, tmp.name)
icon_path = tmp.name
except:
icon_path = None
args = ["notify-send", title]
if icon_path:
args += ["-i", icon_path]
subprocess.run(args)
def ws_listener():
def on_message(ws, message):
data = json.loads(message)
if "data" in data and "title" in data["data"]:
title = data["data"]["title"]
image = data["data"].get("album_cover")
notify(title, image)
def on_error(ws, error):
pass
def on_close(ws, close_status_code, close_msg):
time.sleep(1)
run_ws()
def on_open(ws):
pass
def run_ws():
ws = websocket.WebSocketApp("wss://radio.animebits.moe/api/events/basic",
on_message=on_message,
on_error=on_error,
on_close=on_close,
on_open=on_open)
ws.run_forever()
run_ws()
threading.Thread(target=ws_listener, daemon=True).start()
while True:
try:
print("Playing now...")
subprocess.run(["notify-send", "Playing now..."])
proc = subprocess.Popen(["mpv", "--no-video", f"--volume={VOL}", URL])
with open(PID, "w") as f:
f.write(str(proc.pid))
proc.wait()
except KeyboardInterrupt:
subprocess.run(["notify-send", "Stopping now..."])
print("\nStopping now...")
break
except Exception as e:
print(f"Something broke... trying again... Error: {e}")
time.sleep(2)
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
systemctl restart --user emacs.service
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
WINEPREFIX=$HOME/.wine
prime-run wine /home/coast/files/rimworld/RimWorldWin64.exe
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
batteries=(/sys/class/power_supply/BAT*)
# Check if any battery directories exist
found=false
for b in "${batteries[@]}"; do
if [ -d "$b" ]; then
found=true
break
fi
done
if [ "$found" = false ]; then
echo "None"
exit 1
fi
first=true
for battery in /sys/class/power_supply/BAT*; do
if [ -d "$battery" ]; then
if [ -r "$battery/capacity" ]; then
capacity=$(<"$battery/capacity")
else
capacity=0
fi
if [ "$first" = true ]; then
echo -n "${capacity}%"
first=false
else
echo -n " ${capacity}%"
fi
fi
done
echo
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
_linux() {
sensors $1 | awk '/^temp1/ {print $2}' | sed 's/+//'
}
_openbsd() {
[ "$1" = "-f" ] && printf "$(expr $(sysctl | grep hw.sensors.cpu0.temp0 | sed 's/\.00.*//' | sed 's/.*=//') \* 9 / 5 + 32 2> /dev/null)°F" || sysctl | grep hw.sensors.cpu0.temp0 | sed 's/.*=//' | sed 's/\.00//' | sed 's/ deg/°/'
}
_freebsd() {
C_TEMP=$(sysctl hw.acpi.thermal.tz0.temperature | sed 's/^.* //' )
[ "$1" = "-f" ] && printf "$(expr $(printf $C_TEMP | sed 's/\..C//') \* 9 / 5 + 32)°F" || printf "$C_TEMP" | sed 's/C/°C/'
}
case $(uname) in
Linux) _linux "$@" ;;
OpenBSD) _openbsd "$@" ;;
FreeBSD) _freebsd "$@" ;;
esac
+30
View File
@@ -0,0 +1,30 @@
#!/bin/sh
#Display CPU usage percentage
_openbsd() {
CPUS=$(sysctl | grep 'hw.ncpuonline' | sed 's/^.*=//')
TOTALUSAGE=$(ps aux | awk '{print $3}' | sed '1d' | sort | paste -s -d+ - | bc)
USAGE=$(printf "$TOTALUSAGE / $CPUS\n" | bc -l)
printf "$USAGE" | grep "^\.[0-9]" > /dev/null && printf "0$(printf $USAGE | cut -c1-3)%%" || printf "$(printf "$USAGE" | cut -c1-4)%%\n"
}
_freebsd() {
CPUS="$(sysctl hw.ncpu | sed 's/^.*: //')"
FREE=$(ps -o %cpu -p $(pgrep -S idle) | tail -n 1)
TPP=$(expr $CPUS \* 100)
TOTALUSAGE=$(printf "$TPP - $FREE" | bc -l)
USAGE=$(printf "$TOTALUSAGE / $CPUS" | bc -l | cut -c -4)
printf "$USAGE" | egrep "\.[0-9]{3}" > /dev/null && printf "0$(printf $USAGE | cut -c -3)%%\n" || printf -- "$USAGE%%\n"
}
_linux() {
TOTALUSAGE="$(ps axch -o cmd,%cpu --sort=-%cpu | sed 's/ //' | grep -E -o " [0-9].*" | sed 's/ //' | paste -s -d+ - | bc)"
USAGE="$(printf "$(printf "$TOTALUSAGE / $(nproc)\n" | bc -l | cut -c1-4)%%\n")"
printf -- "$USAGE%" | grep "^\.[0-9]" > /dev/null && printf -- "0$(printf -- $USAGE% | cut -c1-3)%%" || printf -- "$(printf -- "$USAGE%" | cut -c1-4)%%\n"
}
case $(uname) in
Linux) _linux ;;
OpenBSD) _openbsd ;;
FreeBSD) _freebsd ;;
esac
+38
View File
@@ -0,0 +1,38 @@
#!/bin/sh
#Liisten for the status bar
#options
LOOPCOUNT=1 #however many times you want the song to play minus one (for technical reasons)
SONGDIR="$HOME/music/brstm"
cd "$SONGDIR"
MODE=$(printf "Random\nForever" | dmenu -i)
playsong () {
vgmstream-cli -m "$SONG" > /tmp/brstminfo.txt
STARTLOOP="$(grep "seconds" /tmp/brstminfo.txt | head -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
ENDLOOP="$(grep "seconds" /tmp/brstminfo.txt | tail -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
echo "Now playing: \"$(echo $SONG | sed 's/\.brstm//')\""
mpv --ab-loop-a="$STARTLOOP" --ab-loop-b="$ENDLOOP" --ab-loop-count="$LOOPCOUNT" "$SONG"
}
forever () {
SONG="$(command ls -1 | dmenu -i)"
vgmstream-cli -m "$SONG" > /tmp/brstminfo.txt
STARTLOOP="$(grep "seconds" /tmp/brstminfo.txt | head -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
ENDLOOP="$(grep "seconds" /tmp/brstminfo.txt | tail -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
mpv --ab-loop-a="$STARTLOOP" --ab-loop-b="$ENDLOOP" --loop-file=inf "$SONG"
}
random () {
while true; do
RANDNUM=$(shuf -i 1-$(ls -1 | wc -l) -n 1)
SONG="$(command ls | head -n $RANDNUM | tail -n 1)"
playsong
done
}
case "$MODE" in
Forever) forever ;;
Random) random ;;
esac
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
_openbsd() {
TOTAL="$(free | awk '/^Mem:/ {print $2}')"
MUSED="$(top -b -n 1 | grep -o 'Real.*' | sed 's/Real: //' | sed 's/\/.*//')"
printf "$MUSED" | egrep "[0-9]{4}" > /dev/null && FUSED="$(printf "$MUSED" | cut -c -2 | sed 's/./.&/2')G" || FUSED=$MUSED
printf "$FUSED/$TOTAL\n"
}
_freebsd() {
TOTAL="$(freecolor -om | awk '/^Mem:/ {print $2}')"
MUSED="$(freecolor -om | awk '/^Mem:/ {print $3}')"
printf "$MUSED" | egrep "[0-9]{4}" > /dev/null && FUSED="$(printf "$MUSED" | cut -c -2 | sed 's/./.&/2')G" || FUSED=""$MUSED"M"
printf "$TOTAL" | egrep "[0-9]{4}" > /dev/null && TOTAL="$(printf "$TOTAL" | cut -c -2 | sed 's/./.&/2')G" || FUSED=$TOTAL
printf "$FUSED/$TOTAL\n"
}
_linux() {
MUSED="$(free -m | awk '/^Mem:/ {print $3}')"
echo "$MUSED"
}
case $(uname) in
Linux) _linux ;;
OpenBSD) _openbsd ;;
FreeBSD) _freebsd ;;
esac
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
# Show local IP and transfer if connected to the internet. Opens $NETWORKMANAGER on click
NETWORKMANAGER=connman-gtk
ifconfig | grep ".*inet.*netmask" | tail -n 1 | sed 's/inet //g' | sed 's/ netmask.*//g' | sed 's/ //g' | sed 's/ //g'
case $BLOCK_BUTTON in
1) $NETWORKMANAGER ;;
esac
+7
View File
@@ -0,0 +1,7 @@
#!/bin/sh
swap_used_kib=$(awk '/SwapTotal/ {total=$2} /SwapFree/ {free=$2} END {print total - free}' /proc/meminfo)
swap_used_mib=$((swap_used_kib / 1024))
echo "${swap_used_mib}"
+14
View File
@@ -0,0 +1,14 @@
#!/bin/sh
_bsd() {
sndioctl -n output.level | sed 's/0\.//' | sed 's/.$/%/' | sed 's/\.//'
}
_linux() {
printf "$(pamixer --get-volume)%%\n"
}
case $(uname) in
Linux) _linux ;;
*BSD) _bsd ;;
esac
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
set -e
printf "Title: "
read TITLE
printf "Sound device (ex: default, 1, 2): "
read SNDDEV
TITLE="$(echo $TITLE | sed 's/ /_/g')"
DIRNAME="$TITLE-$(date '+%s')"
mkdir -p "$HOME/videos/screencasts/$DIRNAME"
ffmpeg -loglevel fatal -video_size 1600x900 -framerate 30 -f x11grab -i :0.0 -c:v libx264 -preset veryfast "$HOME/videos/screencasts/$DIRNAME/video.mkv" & printf "Video recording started.\n"
aucat -f snd/$SNDDEV -o "$HOME/videos/screencasts/$DIRNAME/audio.wav" > /dev/null & printf "Audio recording started.\n\n"
printf "Press enter to stop recording"
read lol
kill $(pgrep ffmpeg)
kill $(pgrep aucat)
cd "$HOME/videos/screencasts/$DIRNAME"
ffmpeg -loglevel fatal -i video.mkv -i audio.wav -c copy final.mkv
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
DIR="$HOME/Pictures/Screenshots"
FILE="$DIR/shot_$(date +%s).png"
mkdir -p "$DIR"
maim -s "$FILE"
xclip -selection clipboard -t image/png -i "$FILE"
notify-send "Region Captured" "Saved and copied to clipboard"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
maim -i "$(xdotool getactivewindow)" /tmp/shot.png
xclip -selection clipboard -t image/png -i /tmp/shot.png
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
DIR="$HOME/Pictures/Screenshots"
mkdir -p "$DIR"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
FINAL_FILE="$DIR/screenshot_$TIMESTAMP.png"
TEMP_FULLSCREEN=$(mktemp /tmp/fullscreen_XXXXXX.png)
grim "$TEMP_FULLSCREEN"
TEMP_FILE=$(mktemp /tmp/screenshot_XXXXXX.png)
grim -g "$(slurp)" "$TEMP_FILE"
cp "$TEMP_FILE" "$FINAL_FILE"
wl-copy < "$TEMP_FILE"
notify-send "Screenshot" "Saved to $FINAL_FILE" -i "$TEMP_FILE"
rm "$TEMP_FILE" "$TEMP_FULLSCREEN"
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env python3
import os
import secrets
import subprocess
BASE_DIR = "/home/coast/.local/src/wall"
wallpapers = []
for root, dirs, files in os.walk(BASE_DIR):
for file in files:
if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
wallpapers.append(os.path.join(root, file))
if not wallpapers:
print("No wallpapers found!")
exit(1)
chosen_wallpaper = secrets.choice(wallpapers)
print(chosen_wallpaper)
subprocess.run(["swaybg", "-i", chosen_wallpaper, "-m", "fill"])
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
WALL_DIR="/home/coast/.local/src/wall"
SUBDIR=$(find "$WALL_DIR" -mindepth 1 -maxdepth 1 -type d | shuf -n1)
FILE=$(find "$SUBDIR" -type f \( -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg' \) | shuf -n1)
if [[ -n "$FILE" ]]; then
swaymsg output '*' bg "$FILE" fill
fi
+2
View File
@@ -0,0 +1,2 @@
#!sh
flatpak run org.vinegarhq.Sober
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from stacki3 import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
cd "$HOME/Downloads/MeowGun" && wine meowgun.exe
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
cd "/home/coast/.wine/drive_c/WolfQuest/" && env WINEDLLOVERRIDES="winhttp=n,b" wine64.bin WolfQuestAE.exe
+39
View File
@@ -0,0 +1,39 @@
#!/bin/sh
wlr-randr --output eDP-1 --off &
(
if ! pgrep -x foot >/dev/null; then
foot -s
fi
) &
(
if ! pgrep -x udiskie >/dev/null; then
/usr/bin/udiskie
fi
) &
(
if ! pgrep -x swaybg >/dev/null; then
swaybg -i "/home/coast/.local/src/wall/landscapes/1685466762541384.jpg" &
fi
) &
(
if ! pgrep -x polkit-gnome-authentication-agent >/dev/null; then
/usr/libexec/polkit-gnome-authentication-agent-1
fi
) &
(
if ! pgrep -x eww >/dev/null; then
eww daemon &
eww open-many year month day &
else
pkill eww
eww daemon &
eww open-many year month day &
fi
) &
+8
View File
@@ -0,0 +1,8 @@
#!/bin/sh
export WAYLAND_DISPLAY=wayland-0
export XDG_CURRENT_DESKTOP=niri
export XDG_SESSION_TYPE=wayland
export XWAYLAND_DISPLAY=:1
xwayland-satellite &
niri &
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
dbus-run-session qtile start -b wayland
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
COMMAND="$*"
BINARY="$(printf "$COMMAND" | sed 's/ .*//')"
ARGS="$(printf "$COMMAND" | sed "s/$BINARY //")"
main() {
WINID=$(xdo id)
xdo hide $WINID
$BINARY "$ARGS" || $BINARY $ARGS
xdo show $WINID
}
[ "$1" = "" ] && printf "Error: You must provide at least one argument.\nExample usage: swallow mpv ~/videos/AmericanPsycho.mkv\n" || main "$@"
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env sh
# Open encrypted swap manually
/usr/bin/cryptsetup open /dev/nvme0n1p2 cryptswap
/usr/sbin/swapon /dev/dm-1
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env sh
# Close encrypted swap manually
swapoff /dev/dm-1
cryptsetup close cryptswap
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Date
date=$(date "+%I:%M %p")
# CPU temp
cpu=$(sensors | grep "Package" | cut -f 1-3,5 -d " ")
# Alsa master volume
volume=$(amixer get Master | grep "Right:" | cut -f 7,8 -d " ")
# Battery percentage
batt=""
for b in /sys/class/power_supply/BAT*; do
if [ -d "$b" ]; then
if [ -r "$b/capacity" ]; then
cap=$(<"$b/capacity")
else
cap=0
fi
if [ -z "$batt" ]; then
batt="${cap}%"
else
batt="$batt ${cap}%"
fi
fi
done
# If no battery found
if [ -z "$batt" ]; then
batt="None"
fi
# Status bar
echo "BAT: $batt | $date"
+8
View File
@@ -0,0 +1,8 @@
#!/usr/lib/python-exec/python3.13/python
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from tabulate import _main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(_main())
+13
View File
@@ -0,0 +1,13 @@
#!/bin/sh
outputs_json="$(niri msg --json outputs)"
echo "$outputs_json" | jq -c '.[]' | while read -r out; do
name=$(echo "$out" | jq -r '.name')
dpms=$(echo "$out" | jq -r '.dpms')
if [ "$dpms" = "On" ]; then
echo "Turning off $name"
niri msg output "$name" dpms off
fi
done
BIN
View File
Binary file not shown.
+79
View File
@@ -0,0 +1,79 @@
#!/usr/bin/env lua
local home = os.getenv("home") or os.getenv("HOME")
local cache_dir = home .. "/.cache"
local zig_cache = cache_dir .. "/zig"
local proxy_cmd = "ssh -o ProxyCommand='nc -X 5 -x 127.0.0.1:65000 %h %p'"
local project_dir = arg[1] or (home .. "/Projects/river/river")
local function run(cmd)
local ok = os.execute(cmd)
if not ok then
io.stderr:write("failed: " .. cmd .. "\n")
os.exit(1)
end
end
local function fetch_git_dep(path, commit)
local name = path:match("([^/]+)$"):gsub("^zig%-", "")
local tmp = cache_dir .. "/" .. name .. "-tmp"
local tarball = cache_dir .. "/" .. name .. ".tar.gz"
run("rm -rf " .. tmp)
run('GIT_SSH_COMMAND="' .. proxy_cmd .. '" git clone git@codeberg.org:' .. path .. ".git " .. tmp)
run("git -C " .. tmp .. " checkout " .. commit)
run("tar -czf " .. tarball .. " -C " .. cache_dir .. " " .. name .. "-tmp")
run("zig fetch --global-cache-dir " .. zig_cache .. " file://" .. tarball)
run(
"sed -i '/\\."
.. name
.. ' = /,/\\.hash/{s|.url = "[^"]*"|.url = "file://'
.. tarball
.. "\"|}' "
.. project_dir
.. "/build.zig.zon"
)
end
local function fetch_https_dep(url)
local filename = url:match("([^/]+)$")
local name = filename:gsub("^zig%-", ""):gsub("%-v?[0-9].*$", ""):gsub("%.tar%.gz$", "")
local tarball = cache_dir .. "/" .. filename
run('GIT_SSH_COMMAND="' .. proxy_cmd .. '" curl -x socks5h://127.0.0.1:65000 -Lo ' .. tarball .. " " .. url)
run("zig fetch --global-cache-dir " .. zig_cache .. " file://" .. tarball)
run(
"sed -i '/\\."
.. name
.. ' = /,/\\.hash/{s|.url = "[^"]*"|.url = "file://'
.. tarball
.. "\"|}' "
.. project_dir
.. "/build.zig.zon"
)
end
run("git -C " .. project_dir .. " pull")
local zon = io.open(project_dir .. "/build.zig.zon", "r")
if not zon then
io.stderr:write("cant open build.zig.zon\n")
os.exit(1)
end
for line in zon:lines() do
local path, commit = line:match("git%+https://codeberg%.org/([^?]+)%?ref=[^#]+#([a-f0-9]+)")
if path and commit then
fetch_git_dep(path, commit)
else
local url = line:match('"(https://codeberg%.org/[^"]+%.tar%.gz)"')
if url then
fetch_https_dep(url)
end
end
end
zon:close()
run("cd " .. project_dir .. " && zig build -Doptimize=ReleaseSafe --prefix " .. home .. "/.local install")
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env sh
if [ -z "$1" ]; then
echo "usage: $0 <file>"
exit 1
fi
FILE="$1"
RESPONSE=$(curl -s -X POST \
-F "file=@${FILE}" \
https://coast.is-terrible.com/api/files/create)
URL=$(echo "$RESPONSE" | jq -r '.url')
THUMBNAIL_URL=$(echo "$RESPONSE" | jq -r '.thumb')
DELETION_URL=$(echo "$RESPONSE" | jq -r '.del_url')
ERROR=$(echo "$RESPONSE" | jq -r '.error')
if [ "$ERROR" != "null" ]; then
echo "Error uploading file: $ERROR"
exit 1
fi
echo "file uploaded successfully!"
echo "url: $URL"
echo "thumbnail url: $THUMBNAIL_URL"
echo "deletion url: $DELETION_URL"
+29
View File
@@ -0,0 +1,29 @@
#!/usr/bin/env python3
import os
import subprocess
import sys
RED = "\033[0;31m"
RESET = "\033[0m"
def main():
if os.geteuid() != 0:
print(f"{RED}[!] Superuser access is required{RESET}")
sys.exit(1)
if not os.path.exists("/dev/sda"):
print(f"{RED}[!] USB not found!{RESET}")
sys.exit(1)
print(f"{RED}[*] Decrypting /dev/sda1...{RESET}")
try:
subprocess.run(["cryptsetup", "open", "/dev/sda1", "sda1_crypt"], check=True)
subprocess.run(["mount", "/dev/mapper/sda1_crypt", "/mnt/usb", "--mkdir"], check=True)
print(f"{RED}[*] Decrypted and mounted to /mnt/usb!{RESET}")
except subprocess.CalledProcessError as e:
print(f"{RED}[!] Error: {e}{RESET}")
sys.exit(1)
if __name__ == "__main__":
main()
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env python3
import os
import subprocess
import sys
RED = "\033[0;31m"
RESET = "\033[0m"
def run(cmd, fail_msg):
try:
subprocess.run(cmd, check=True)
except subprocess.CalledProcessError:
print(f"{RED}[!] {fail_msg}{RESET}")
sys.exit(1)
def main():
if os.geteuid() != 0:
print(f"{RED}[!] Superuser access is required{RESET}")
sys.exit(1)
print(f"{RED}[*] Unmounting /mnt/usb...{RESET}")
run(["umount", "/mnt/usb"], "Failed to unmount /mnt/usb")
print(f"{RED}[*] Closing encrypted device...{RESET}")
run(["cryptsetup", "close", "sda1_crypt"], "Failed to close mapper device")
print(f"{RED}[*] Unmounted and closed successfully!{RESET}")
if __name__ == "__main__":
main()
+75
View File
@@ -0,0 +1,75 @@
#!awk -f
function uwuify(s, o) {
o = s
# r/l -> w/W
o = gensub(/[rl]/, "w", "g", o)
o = gensub(/[RL]/, "W", "g", o)
# n + vowel -> ny
o = gensub(/N([AEIOU])/, "NY\\1", "g", o)
o = gensub(/([nN])([aeiouAEIOU])/, "\\1y\\2", "g", o)
# soft c before e/i
o = gensub(/c([ie])/, "sh\\1", "g", o)
o = gensub(/C([ie])/, "Sh\\1", "g", o)
o = gensub(/C([IE])/, "SH\\1", "g", o)
# th -> d
o = gensub(/th/, "d", "g", o)
o = gensub(/Th/, "D", "g", o)
o = gensub(/TH/, "D", "g", o)
# ove -> uv
o = gensub(/ove/, "uv", "g", o)
o = gensub(/OVE/, "UV", "g", o)
# ing -> in
o = gensub(/ing\b/, "in", "g", o)
o = gensub(/ING\b/, "IN", "g", o)
# punctuation uwuifier
o = gensub(/!+/, " owo~ ", "g", o)
o = gensub(/\?+/, " uwu?", "g", o)
o = gensub(/\.{3}/, "… >w< ", "g", o)
return o
}
function uwuify_line(line, pre, post, uw_pre, diff, fullseq, num, newnum, newseq) {
if (match(line, /^(.*:)/)) {
pre = substr(line, 1, RLENGTH)
post = substr(line, RLENGTH + 1)
uw_pre = uwuify(pre)
diff = length(uw_pre) - length(pre)
if (match(uw_pre, /\033\[[0-9]+C/)) {
fullseq = substr(uw_pre, RSTART, RLENGTH)
if (match(fullseq, /\033\[([0-9]+)C/, m)) {
num = m[1]
newnum = num - diff
if (newnum < 0) newnum = 0
newseq = "\033[" newnum "C"
uw_pre = substr(uw_pre, 1, RSTART - 1) newseq substr(uw_pre, RSTART + RLENGTH)
}
}
return uw_pre uwuify(post)
}
return uwuify(line)
}
{
# Kitty image protocol lines stay raw
if ($0 ~ /\033_G/) {
print $0
} else if ($0 ~ /\033\[[0-9]+C/) {
out = uwuify_line($0)
print out
} else {
out = uwuify($0)
print out
}
}
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
vesktop --ozone-platform=wayland
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from win2xcur.main.win2xcur import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+8
View File
@@ -0,0 +1,8 @@
#!/usr/lib/python-exec/python3.13/python
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from websocket._wsdump import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/python3.13
# -*- coding: utf-8 -*-
import re
import sys
if __name__ == '__main__':
from win2xcur.main.x2wincur import main
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pyudev
import subprocess
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='block')
for device in iter(monitor.poll, None):
if device.action == 'add':
print(f"New device detected: {device.device_node}")
subprocess.run(f"notify-send 'New device connected: {device.device_node}'", shell=True)
+123
View File
@@ -0,0 +1,123 @@
[ColorEffects:Disabled]
Color=56,56,56
ColorAmount=0
ColorEffect=0
ContrastAmount=0.4
ContrastEffect=1
IntensityAmount=0.1
IntensityEffect=2
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=112,111,110
ColorAmount=0.025
ColorEffect=2
ContrastAmount=0.1
ContrastEffect=2
Enable=false
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=189,195,199
BackgroundNormal=30,30,32
DecorationFocus=80,80,82
DecorationHover=110,110,112
ForegroundActive=61,174,233
ForegroundInactive=127,140,141
ForegroundLink=100,100,100
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=170,170,172
ForegroundPositive=85,255,255
ForegroundVisited=127,140,141
[Colors:Complementary]
BackgroundAlternate=59,64,69
BackgroundNormal=49,54,59
DecorationFocus=80,80,82
DecorationHover=80,80,82
ForegroundActive=246,116,0
ForegroundInactive=175,176,179
ForegroundLink=61,174,230
ForegroundNegative=237,21,21
ForegroundNeutral=201,206,59
ForegroundNormal=218,218,220
ForegroundPositive=17,209,22
ForegroundVisited=61,174,230
[Colors:Selection]
BackgroundAlternate=29,153,243
BackgroundNormal=114,114,116
DecorationFocus=80,80,82
DecorationHover=110,110,112
ForegroundActive=252,252,252
ForegroundInactive=218,218,220
ForegroundLink=200,200,200
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=218,218,220
ForegroundPositive=85,255,255
ForegroundVisited=189,195,199
[Colors:Tooltip]
BackgroundAlternate=77,77,77
BackgroundNormal=30,30,32
DecorationFocus=80,80,82
DecorationHover=110,110,112
ForegroundActive=61,174,233
ForegroundInactive=189,195,199
ForegroundLink=100,100,100
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=170,170,172
ForegroundPositive=85,255,255
ForegroundVisited=127,140,141
[Colors:View]
BackgroundAlternate=30,30,32
BackgroundNormal=30,30,32
DecorationFocus=80,80,82
DecorationHover=110,110,112
ForegroundActive=61,174,233
ForegroundInactive=127,140,141
ForegroundLink=100,100,100
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=170,170,172
ForegroundPositive=85,255,255
ForegroundVisited=127,140,141
[Colors:Window]
BackgroundAlternate=189,195,199
BackgroundNormal=30,30,32
DecorationFocus=80,80,82
DecorationHover=110,110,112
ForegroundActive=61,174,233
ForegroundInactive=127,140,141
ForegroundLink=100,100,100
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=170,170,172
ForegroundPositive=85,255,255
ForegroundVisited=127,140,141
[General]
ColorScheme=Monochrome
Name=Monochrome
shadeSortColumn=true
[KDE]
contrast=4
[WM]
activeBackground=30,30,32
activeBlend=255,255,255
activeForeground=170,170,172
inactiveBackground=30,30,32
inactiveBlend=154,169,200
inactiveForeground=120,120,122
[Colors:Panel]
BackgroundNormal=0,0,0
ForegroundNormal=255,255,255
+1630
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="35"
height="200"
version="1.1"
id="svg8"
sodipodi:docname="add-workspace-active.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs12">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1168"
x="-0.102608"
y="-0.040503159"
width="1.205216"
height="1.0810063">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="3.2065"
id="feGaussianBlur1170" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1174"
x="-0.147"
y="-0.147"
width="1.294"
height="1.294">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.98"
id="feGaussianBlur1176" />
</filter>
</defs>
<sodipodi:namedview
id="namedview10"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="3.337544"
inkscape:cx="18.876156"
inkscape:cy="88.088726"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg8">
<inkscape:grid
type="xygrid"
id="grid340"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<rect
id="rect612"
width="75"
height="190"
x="5"
y="6"
rx="8"
ry="8"
style="fill:#000000;fill-opacity:1;filter:url(#filter1168);opacity:0.25" />
<rect
id="rect342"
width="75"
height="190"
x="5"
y="5"
rx="8"
ry="8"
style="fill:#006a83;fill-opacity:1" />
<path
d="m 18,95 c -0.554,0 -1,0.446 -1,1 v 4 h -4 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 h 4 v 4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 v -4 h 4 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 h -4 v -4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
color="#000000"
color-rendering="auto"
fill="#ffffff"
image-rendering="auto"
solid-color="#000000"
style="isolation:auto;mix-blend-mode:normal;shape-rendering:auto;fill:#000000;filter:url(#filter1174);opacity:0.15"
id="path1172" />
<path
d="m 18,94 c -0.554,0 -1,0.446 -1,1 v 4 h -4 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 h 4 v 4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 v -4 h 4 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 h -4 v -4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z"
color="#000000"
color-rendering="auto"
fill="#ffffff"
image-rendering="auto"
solid-color="#000000"
style="isolation:auto;mix-blend-mode:normal;shape-rendering:auto;fill:#eff1f5;fill-opacity:1"
id="path4" />
<path
id="rect607"
style="fill:#ffffff;fill-opacity:1;opacity:0.1"
d="M 13 5 C 8.5680044 5 5 8.5680044 5 13 L 5 14 C 5 9.5680044 8.5680044 6 13 6 L 72 6 C 76.431996 6 80 9.5680044 80 14 L 80 13 C 80 8.5680044 76.431996 5 72 5 L 13 5 z " />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="35"
height="200"
id="svg2"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="add-workspace-hover.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="-81.038405"
inkscape:cy="108.58132"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1366"
inkscape:window-height="709"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="false"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true">
<inkscape:grid
type="xygrid"
id="grid3040"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="0,1"
position="20,100"
id="guide3893"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="18,190"
id="guide3895"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-852.36218)">
<path
id="rect4694"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 7,857.36218 28,0 0,190.00002 -28,0 c -1.108,0 -2,-0.892 -2,-2 L 5,859.36218 c 0,-1.108 0.892,-2 2,-2 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccssss" />
<g
transform="translate(0,-0.9999969)"
id="g3917-7"
style="fill:#eceff1;fill-opacity:1;opacity:0.5;stroke:none;stroke-opacity:1" />
<path
id="rect4804"
transform="translate(0,852.36218)"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 18,94 c -0.554,0 -1,0.446 -1,1 l 0,4 -4,0 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 l 4,0 0,4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 l 0,-4 4,0 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 l -4,0 0,-4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="35"
height="200"
id="svg2"
version="1.1"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
sodipodi:docname="add-workspace.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4"
inkscape:cx="-28.526103"
inkscape:cy="75.41215"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1366"
inkscape:window-height="709"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
showguides="false"
inkscape:guide-bbox="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:bbox-nodes="true"
inkscape:document-rotation="0">
<inkscape:grid
type="xygrid"
id="grid3040"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
<sodipodi:guide
orientation="0,1"
position="20,100"
id="guide3893"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="18,190"
id="guide3895"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-852.36218)">
<path
id="rect4694"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.35;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 7,857.36218 28,0 0,190.00002 -28,0 c -1.108,0 -2,-0.892 -2,-2 L 5,859.36218 c 0,-1.108 0.892,-2 2,-2 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccssss" />
<g
transform="translate(0,-0.9999969)"
id="g3917-7"
style="fill:#eceff1;fill-opacity:1;opacity:0.5;stroke:none;stroke-opacity:1" />
<path
id="rect4804"
transform="translate(0,852.36218)"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.87;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 18,94 c -0.554,0 -1,0.446 -1,1 l 0,4 -4,0 c -0.554,0 -1,0.446 -1,1 0,0.554 0.446,1 1,1 l 4,0 0,4 c 0,0.554 0.446,1 1,1 0.554,0 1,-0.446 1,-1 l 0,-4 4,0 c 0.554,0 1,-0.446 1,-1 0,-0.554 -0.446,-1 -1,-1 l -4,0 0,-4 c 0,-0.554 -0.446,-1 -1,-1 z m 8,6 a 8,8 0 0 1 -8,8 8,8 0 0 1 -8,-8 8,8 0 0 1 8,-8 8,8 0 0 1 8,8 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
viewBox="0 0 16 16"
version="1.1"
id="svg4"
sodipodi:docname="calendar-arrow-left.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="704"
id="namedview6"
showgrid="false"
inkscape:zoom="29.5"
inkscape:cx="13.680381"
inkscape:cy="6.1418434"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M10 3v10L5 8z"
fill="#000000"
opacity="0.54"
id="path2"
style="fill:#e6e6e6" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="16"
height="16"
viewBox="0 0 16 16"
version="1.1"
id="svg4"
sodipodi:docname="calendar-arrow-right.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="704"
id="namedview6"
showgrid="false"
inkscape:zoom="14.75"
inkscape:cx="8"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M6 3v10l5-5z"
fill="#000000"
opacity="0.54"
id="path2"
style="fill:#e6e6e6" />
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg1516"
sodipodi:docname="checkbox-dark.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1520">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1446"
x="-0.05808"
y="-0.05808"
width="1.11616"
height="1.11616">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.484"
id="feGaussianBlur1448" />
</filter>
</defs>
<sodipodi:namedview
id="namedview1518"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="19.666667"
inkscape:cx="15.711864"
inkscape:cy="14.542373"
inkscape:window-width="1835"
inkscape:window-height="977"
inkscape:window-x="102"
inkscape:window-y="102"
inkscape:window-maximized="0"
inkscape:current-layer="svg1516" />
<rect
style="opacity:0.25;fill:#000000;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter1446)"
id="rect890"
width="20"
height="20"
x="2"
y="3"
rx="4"
ry="4" />
<rect
style="fill:#27a1b9;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
id="rect616"
width="20"
height="20"
x="2"
y="2"
rx="4"
ry="4" />
<path
id="rect340"
d="m 18.36396,7.7576861 c -0.391736,-0.3917365 -1.022477,-0.3917368 -1.414214,0 L 10.585785,14.121648 7.0502516,10.586113 c -0.3917367,-0.391737 -1.0224771,-0.391736 -1.4142135,0 -0.3917365,0.391736 -0.3917368,1.022477 0,1.414214 l 4.2426409,4.242641 c 0.02448,0.02448 0.04973,0.04625 0.07596,0.06767 0.393511,0.321347 0.971002,0.299581 1.338255,-0.06767 l 7.071068,-7.0710684 c 0.391737,-0.3917367 0.391736,-1.0224771 0,-1.4142135 z"
style="fill:#1e1e2e;fill-opacity:1" />
<path
id="rect885"
style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
d="M 6,2 C 3.7840022,2 2,3.7840022 2,6 V 7 C 2,4.7840022 3.7840022,3 6,3 h 12 c 2.215998,0 4,1.7840022 4,4 V 6 C 22,3.7840022 20.215998,2 18,2 Z" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,3 @@
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
</svg>

After

Width:  |  Height:  |  Size: 168 B

@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg439"
sodipodi:docname="checkbox.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs443">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1446"
x="-0.05808"
y="-0.05808"
width="1.11616"
height="1.11616">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.484"
id="feGaussianBlur1448" />
</filter>
</defs>
<sodipodi:namedview
id="namedview441"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="19.666667"
inkscape:cx="10.677966"
inkscape:cy="12.762712"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg439">
<inkscape:grid
type="xygrid"
id="grid562"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<rect
style="opacity:0.25;fill:#000000;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter1446)"
id="rect890"
width="20"
height="20"
x="2"
y="3"
rx="4"
ry="4" />
<rect
style="opacity:1;fill:#006a83;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
id="rect616"
width="20"
height="20"
x="2"
y="2"
rx="4"
ry="4" />
<path
id="rect340"
d="m 18.36396,7.7576861 c -0.391736,-0.3917365 -1.022477,-0.3917368 -1.414214,0 L 10.585785,14.121648 7.0502516,10.586113 c -0.3917367,-0.391737 -1.0224771,-0.391736 -1.4142135,0 -0.3917365,0.391736 -0.3917368,1.022477 0,1.414214 l 4.2426409,4.242641 c 0.02448,0.02448 0.04973,0.04625 0.07596,0.06767 0.393511,0.321347 0.971002,0.299581 1.338255,-0.06767 l 7.071068,-7.0710684 c 0.391737,-0.3917367 0.391736,-1.0224771 0,-1.4142135 z"
style="fill:#eff1f5;fill-opacity:1" />
<path
id="rect885"
style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
d="M 6 2 C 3.7840022 2 2 3.7840022 2 6 L 2 7 C 2 4.7840022 3.7840022 3 6 3 L 18 3 C 20.215998 3 22 4.7840022 22 7 L 22 6 C 22 3.7840022 20.215998 2 18 2 L 6 2 z " />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Foreground"
width="26"
height="26"
enable-background="new 0 0 16 16"
version="1.0"
viewBox="0 0 18.909 18.909"
sodipodi:docname="close-active.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="30.192308"
inkscape:cx="13.099363"
inkscape:cy="13.099363"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Foreground" />
<defs
id="defs1">
<filter
id="filter839"
x="-0.047999999"
y="-0.047999999"
width="1.096"
height="1.096"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.32"
id="feGaussianBlur1" />
</filter>
</defs>
<circle
cx="9.4545"
cy="10.182"
r="8"
fill="#000000"
filter="url(#filter839)"
opacity=".1"
stroke-width="0"
id="circle1" />
<circle
cx="9.4545"
cy="9.4545"
r="8"
fill="#d8354a"
stroke-width="0"
id="circle2"
style="fill:#c64343;fill-opacity:1" />
<path
d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z"
fill="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.3606"
style="paint-order:markers stroke fill"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Foreground"
width="26"
height="26"
enable-background="new 0 0 16 16"
version="1.0"
viewBox="0 0 18.909 18.909"
sodipodi:docname="close-hover.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="30.192308"
inkscape:cx="13.066242"
inkscape:cy="13.066242"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Foreground" />
<defs
id="defs1">
<filter
id="filter839"
x="-0.047999999"
y="-0.047999999"
width="1.096"
height="1.096"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.32"
id="feGaussianBlur1" />
</filter>
</defs>
<circle
cx="9.4545"
cy="10.182"
r="8"
fill="#000000"
filter="url(#filter839)"
opacity=".1"
stroke-width="0"
id="circle1" />
<circle
cx="9.4545"
cy="9.4545"
r="8"
fill="#ff7a80"
stroke-width="0"
id="circle2"
style="fill:#b2555b;fill-opacity:1;opacity:1" />
<path
d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z"
fill="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.3606"
style="paint-order:markers stroke fill"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
id="Foreground"
width="26"
height="26"
enable-background="new 0 0 16 16"
version="1.0"
viewBox="0 0 18.909 18.909"
sodipodi:docname="close.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="30.192308"
inkscape:cx="13.033121"
inkscape:cy="13.033121"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Foreground" />
<defs
id="defs1">
<filter
id="filter879"
x="-0.047999999"
y="-0.047999999"
width="1.096"
height="1.096"
color-interpolation-filters="sRGB">
<feGaussianBlur
stdDeviation="0.32"
id="feGaussianBlur1" />
</filter>
</defs>
<circle
cx="9.4545"
cy="10.182"
r="8"
fill="#000000"
filter="url(#filter879)"
opacity=".1"
stroke-width="0"
id="circle1" />
<circle
cx="9.4545"
cy="9.4545"
r="8"
fill="#f75a61"
stroke-width="0"
id="circle2"
style="fill:#f52a65;fill-opacity:1;opacity:1" />
<path
d="m6.1115 5.7478c-0.092952 1e-7 -0.18588 0.035309-0.2571 0.10653-0.14245 0.14245-0.14245 0.37175 0 0.5142l3.0852 3.0866-3.0852 3.0852c-0.14245 0.14245-0.14245 0.37175 0 0.5142 0.14245 0.14245 0.37317 0.14245 0.51562 0l3.0852-3.0852 3.0852 3.0852c0.14245 0.14245 0.37175 0.14245 0.5142 0 0.14245-0.14245 0.14245-0.37175 0-0.5142l-3.0852-3.0852 3.0852-3.0866c0.14245-0.14245 0.14245-0.37175 0-0.5142-0.14245-0.14245-0.37175-0.14245-0.5142 0l-3.0852 3.0852-3.0852-3.0852c-0.071224-0.071224-0.16557-0.10653-0.25852-0.10653z"
fill="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.3606"
style="paint-order:markers stroke fill"
id="path2" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="104"
height="104"
version="1.1"
id="svg1"
sodipodi:docname="corner-ripple.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="7.5769231"
inkscape:cx="52.197969"
inkscape:cy="52.13198"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1" />
<g
transform="translate(0 -948.36)"
id="g1"
style="fill:#27a1b9;fill-opacity:1">
<circle
id="corner-ripple"
cx="52"
cy="1000.4"
r="48"
fill="#009688"
opacity=".25"
style="fill:#27a1b9;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg1780"
sodipodi:docname="radiobutton-dark.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1784">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1250"
x="-0.05808"
y="-0.05808"
width="1.11616"
height="1.11616">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.484"
id="feGaussianBlur1252" />
</filter>
</defs>
<sodipodi:namedview
id="namedview1782"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="19.666667"
inkscape:cx="11.59322"
inkscape:cy="12.355932"
inkscape:window-width="1835"
inkscape:window-height="977"
inkscape:window-x="102"
inkscape:window-y="102"
inkscape:window-maximized="0"
inkscape:current-layer="svg1780" />
<circle
id="circle694"
cx="12"
cy="13"
r="10"
style="opacity:0.25;fill:#000000;fill-opacity:1;filter:url(#filter1250)" />
<circle
id="path291"
cx="12"
cy="12"
r="10"
style="fill:#27a1b9;fill-opacity:1" />
<circle
id="path675"
cx="12"
cy="12"
r="3"
style="fill:#1e1e2e;stroke-width:1.2;fill-opacity:1" />
<path
id="circle689"
style="opacity:0.1;fill:#ffffff;fill-opacity:1"
d="M 12,2 A 10,10 0 0 0 2,12 10,10 0 0 0 2.0351562,12.5 10,10 0 0 1 12,3 10,10 0 0 1 21.976562,12.341797 10,10 0 0 0 22,12 10,10 0 0 0 12,2 Z" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1,3 @@
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".12"/>
</svg>

After

Width:  |  Height:  |  Size: 168 B

@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="radiobutton.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1250"
x="-0.05808"
y="-0.05808"
width="1.11616"
height="1.11616">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.484"
id="feGaussianBlur1252" />
</filter>
</defs>
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="19.666667"
inkscape:cx="11.466102"
inkscape:cy="12.508474"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4">
<inkscape:grid
type="xygrid"
id="grid237"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<circle
id="circle694"
cx="12"
cy="13"
r="10"
style="fill:#000000;fill-opacity:1;filter:url(#filter1250);opacity:0.25" />
<circle
id="path291"
cx="12"
cy="12"
r="10"
style="fill:#006a83;fill-opacity:1" />
<circle
id="path675"
cx="12"
cy="12"
r="3"
style="fill:#ffffff;stroke-width:1.2" />
<path
id="circle689"
style="fill:#ffffff;fill-opacity:1;opacity:0.1"
d="M 12 2 A 10 10 0 0 0 2 12 A 10 10 0 0 0 2.0351562 12.5 A 10 10 0 0 1 12 3 A 10 10 0 0 1 21.976562 12.341797 A 10 10 0 0 0 22 12 A 10 10 0 0 0 12 2 z " />
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="48"
height="24"
version="1.1"
id="svg3299"
sodipodi:docname="toggle-off.svg"
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3303" />
<sodipodi:namedview
id="namedview3301"
pagecolor="#474747"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="5.9"
inkscape:cx="5.4237288"
inkscape:cy="12.542373"
inkscape:window-width="1661"
inkscape:window-height="740"
inkscape:window-x="129"
inkscape:window-y="1210"
inkscape:window-maximized="0"
inkscape:current-layer="svg3299">
<inkscape:grid
type="xygrid"
id="grid3422"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<rect
transform="scale(-1,1)"
x="-48"
y="-0.019988"
width="48"
height="24"
rx="12"
ry="12"
fill="#ffffff"
opacity="0.45"
stroke-width="0"
style="paint-order:stroke fill markers"
id="rect3295" />
<circle
cx="12"
cy="12"
r="9"
fill="#ffffff"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#1a1b26;fill-opacity:1"
id="circle3297" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="48"
height="24"
version="1.1"
id="svg939"
sodipodi:docname="toggle-on-dark.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs943">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter863"
x="-0.14699999"
y="-0.14699999"
width="1.294"
height="1.294">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.1025"
id="feGaussianBlur865" />
</filter>
</defs>
<sodipodi:namedview
id="namedview941"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="16.68772"
inkscape:cx="26.906012"
inkscape:cy="13.243271"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg939">
<inkscape:grid
type="xygrid"
id="grid1663"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<rect
transform="scale(-1,1)"
x="-48"
y="-0.019988"
width="48"
height="24"
rx="12"
ry="12"
fill="#009688"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#27a1b9;fill-opacity:1"
id="rect2" />
<circle
cx="36"
cy="13"
r="9"
fill="#ffffff"
stroke-width="0"
style="opacity:0.35;fill:#000000;paint-order:stroke fill markers;filter:url(#filter863)"
id="circle307" />
<circle
cx="36"
cy="12"
r="9"
fill="#ffffff"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#1e1e2e;fill-opacity:1"
id="circle4" />
<path
id="rect876"
style="opacity:0.1;fill:#ffffff;paint-order:stroke fill markers"
d="m 12,-0.01953125 c -6.6479934,0 -12,5.35200665 -12,12.00000025 0,0.171056 0.00665429,0.340494 0.01367188,0.509765 C 0.27938822,6.080891 5.523063,1 12,1 H 36 C 42.476937,1 47.720612,6.080891 47.986328,12.490234 47.993346,12.320963 48,12.151525 48,11.980469 48,5.3324754 42.647993,-0.01953125 36,-0.01953125 Z" />
<path
id="circle1665"
style="paint-order:stroke fill markers;fill:#ffffff;fill-opacity:1;opacity:0.1"
d="M 36 3 A 9 9 0 0 0 27 12 A 9 9 0 0 0 27.035156 12.5 A 9 9 0 0 1 36 4 A 9 9 0 0 1 44.974609 12.359375 A 9 9 0 0 0 45 12 A 9 9 0 0 0 36 3 z " />
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="48"
height="24"
version="1.1"
id="svg6"
sodipodi:docname="toggle-on.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter863"
x="-0.14699999"
y="-0.14699999"
width="1.294"
height="1.294">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="1.1025"
id="feGaussianBlur865" />
</filter>
</defs>
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="11.8"
inkscape:cx="22.711864"
inkscape:cy="17.372881"
inkscape:window-width="1835"
inkscape:window-height="977"
inkscape:window-x="102"
inkscape:window-y="102"
inkscape:window-maximized="0"
inkscape:current-layer="svg6">
<inkscape:grid
type="xygrid"
id="grid293"
originx="0"
originy="0"
spacingy="1"
spacingx="1"
units="px"
visible="true" />
</sodipodi:namedview>
<rect
transform="scale(-1,1)"
x="-48"
y="-0.019988"
width="48"
height="24"
rx="12"
ry="12"
fill="#009688"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#006a83;fill-opacity:1"
id="rect2" />
<circle
cx="36"
cy="13"
r="9"
fill="#ffffff"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#000000;filter:url(#filter863);opacity:0.35"
id="circle307" />
<circle
cx="36"
cy="12"
r="9"
fill="#ffffff"
stroke-width="0"
style="paint-order:stroke fill markers;fill:#eff1f5;fill-opacity:1"
id="circle4" />
<path
id="rect876"
style="paint-order:stroke fill markers;fill:#ffffff;opacity:0.1"
d="M -12 -0.01953125 C -5.3520066 -0.01953125 0 5.3324754 0 11.980469 C 0 12.151525 -0.0066542885 12.320963 -0.013671875 12.490234 C -0.27938822 6.080891 -5.523063 1 -12 1 L -36 1 C -42.476937 1 -47.720612 6.080891 -47.986328 12.490234 C -47.993346 12.320963 -48 12.151525 -48 11.980469 C -48 5.3324754 -42.647993 -0.01953125 -36 -0.01953125 L -12 -0.01953125 z "
transform="scale(-1,1)" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -0,0 +1,6 @@
<svg width="400" height="120" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -932.36)">
<rect x="10" y="942.36" width="380" height="160" rx="18" ry="18" fill="#4d4d4d" stroke-width="0"/>
<path class="ColorScheme-Text" d="m200 964.36c-4.4183 0-8 3.5817-8 8h-16v4h48v-4h-16c0-4.4183-3.5817-8-8-8zm0 4c2.2091 1e-5 4 1.7909 4 4h-8c1e-5 -2.2091 1.7909-4 4-4zm-20 12v32c0 4.4321 3.5679 8.0001 8 8.0001h24c4.4321 0 8-3.568 8-8.0001v-32h-38zm4 4h32v28c0 2.2161-1.7839 4.0001-4 4.0001h-24c-2.2161 0-4-1.784-4-4.0001z" fill="#ececec"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 573 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#FFFFFF" opacity="0.7">
<path d="m10 3v10l-5-5z"/>
</svg>

After

Width:  |  Height:  |  Size: 149 B

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#FFFFFF" opacity="0.7">
<path d="m6 3v10l5-5z"/>
</svg>

After

Width:  |  Height:  |  Size: 147 B

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="48"
height="48"
version="1.1"
id="svg6"
sodipodi:docname="calendar-today.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs10" />
<sodipodi:namedview
id="namedview8"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="6.9532167"
inkscape:cx="-13.087468"
inkscape:cy="15.676198"
inkscape:window-width="1920"
inkscape:window-height="1012"
inkscape:window-x="0"
inkscape:window-y="32"
inkscape:window-maximized="1"
inkscape:current-layer="svg6">
<inkscape:grid
type="xygrid"
id="grid293" />
</sodipodi:namedview>
<g
transform="matrix(2,0,0,2,-939.14001,-1079.92)"
id="g4"
style="fill:#ffffff">
<circle
cx="481.57001"
cy="559.46002"
r="1.5"
color="#000000"
color-rendering="auto"
fill-opacity="0.2"
image-rendering="auto"
shape-rendering="auto"
solid-color="#000000"
style="isolation:auto;mix-blend-mode:normal;paint-order:normal;fill:#ffffff"
id="circle2" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
version="1.1"
viewBox="0 0 24 24"
id="svg1516"
sodipodi:docname="checkbox-dark.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1520">
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter1446"
x="-0.05808"
y="-0.05808"
width="1.11616"
height="1.11616">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.484"
id="feGaussianBlur1448" />
</filter>
</defs>
<sodipodi:namedview
id="namedview1518"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="13.906433"
inkscape:cx="9.4560553"
inkscape:cy="15.53238"
inkscape:window-width="1867"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg1516" />
<rect
style="opacity:0.25;fill:#000000;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:url(#filter1446)"
id="rect890"
width="20"
height="20"
x="2"
y="3"
rx="4"
ry="4" />
<rect
style="fill:#27a1b9;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
id="rect616"
width="20"
height="20"
x="2"
y="2"
rx="4"
ry="4" />
<path
id="rect340"
d="m 18.36396,7.7576861 c -0.391736,-0.3917365 -1.022477,-0.3917368 -1.414214,0 L 10.585785,14.121648 7.0502516,10.586113 c -0.3917367,-0.391737 -1.0224771,-0.391736 -1.4142135,0 -0.3917365,0.391736 -0.3917368,1.022477 0,1.414214 l 4.2426409,4.242641 c 0.02448,0.02448 0.04973,0.04625 0.07596,0.06767 0.393511,0.321347 0.971002,0.299581 1.338255,-0.06767 l 7.071068,-7.0710684 c 0.391737,-0.3917367 0.391736,-1.0224771 0,-1.4142135 z"
style="fill:#1a1b26;fill-opacity:1" />
<path
id="rect885"
style="opacity:0.1;fill:#ffffff;fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:round"
d="M 6,2 C 3.7840022,2 2,3.7840022 2,6 V 7 C 2,4.7840022 3.7840022,3 6,3 h 12 c 2.215998,0 4,1.7840022 4,4 V 6 C 22,3.7840022 20.215998,2 18,2 Z" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1,3 @@
<svg width="24" height="24" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" fill="#ffffff" opacity=".25"/>
</svg>

After

Width:  |  Height:  |  Size: 168 B

Some files were not shown because too many files have changed in this diff Show More