# Compression compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; } alias decompress="tar -xzf" # Write iso file to sd card iso2sd() { if [ $# -ne 2 ]; then echo "Usage: iso2sd " echo "Example: iso2sd ~/Downloads/ubuntu-25.04-desktop-amd64.iso /dev/sda" echo -e "\nAvailable SD cards:" lsblk -d -o NAME | grep -E '^sd[a-z]' | awk '{print "/dev/"$1}' else sudo dd bs=4M status=progress oflag=sync if="$1" of="$2" sudo eject $2 fi } format-drive() { if [ $# -ne 2 ]; then echo "Usage: format-drive " echo "Example: format-drive /dev/sda 'My Stuff'" echo -e "\nAvailable drives:" lsblk -d -o NAME -n | awk '{print "/dev/"$1}' else echo "WARNING: This will completely erase all data on $1 and label it '$2'." read -rp "Are you sure you want to continue? (y/N): " confirm if [[ "$confirm" =~ ^[Yy]$ ]]; then sudo wipefs -a "$1" sudo dd if=/dev/zero of="$1" bs=1M count=100 status=progress sudo parted -s "$1" mklabel gpt sudo parted -s "$1" mkpart primary ext4 1MiB 100% sudo mkfs.ext4 -L "$2" "$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")" echo "Drive $1 formatted and labeled '$2'." fi fi } # Create a desktop launcher for a web app web2app() { if [ "$#" -ne 3 ]; then echo "Usage: web2app (IconURL must be in PNG -- use https://dashboardicons.com)" return 1 fi local APP_NAME="$1" local APP_URL="$2" local ICON_URL="$3" local ICON_DIR="$HOME/.local/share/applications/icons" local DESKTOP_FILE="$HOME/.local/share/applications/${APP_NAME}.desktop" local ICON_PATH="${ICON_DIR}/${APP_NAME}.png" mkdir -p "$ICON_DIR" if ! curl -sL -o "$ICON_PATH" "$ICON_URL"; then echo "Error: Failed to download icon." return 1 fi cat > "$DESKTOP_FILE" <" return 1 fi local APP_NAME="$1" local ICON_DIR="$HOME/.local/share/applications/icons" local DESKTOP_FILE="$HOME/.local/share/applications/${APP_NAME}.desktop" local ICON_PATH="${ICON_DIR}/${APP_NAME}.png" rm "$DESKTOP_FILE" rm "$ICON_PATH" }