Created
February 13, 2026 03:48
-
-
Save morgan9e/3bc27c4946622dd22a7c6ff954b96ab2 to your computer and use it in GitHub Desktop.
Flatpak wrapper for multi-profile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -euo pipefail | |
| PROFILE="default" | |
| usage() { | |
| echo "Usage: flatpak-alt [-p PROFILE] run <app-id> [args...]" | |
| echo " flatpak-alt -p work run org.mozilla.firefox" | |
| exit "${1:-0}" | |
| } | |
| while [[ $# -gt 0 ]]; do | |
| case "$1" in | |
| -p|--profile) PROFILE="$2"; shift 2 ;; | |
| -h|--help) usage 0 ;; | |
| run) shift; break ;; | |
| *) echo "Unknown option: $1" >&2; usage 1 ;; | |
| esac | |
| done | |
| [[ $# -lt 1 ]] && { echo "Missing app ID." >&2; usage 1; } | |
| APP_ID="$1"; shift | |
| [[ "$PROFILE" =~ ^[a-zA-Z0-9_-]+$ ]] || { echo "Invalid profile name: $PROFILE" >&2; exit 1; } | |
| [[ "$PROFILE" == "app" ]] && { echo "Profile name 'app' is reserved" >&2; exit 1; } | |
| # ~/.var/<profile>/app/<app-id>/{cache,config,data} | |
| PROFILE_DIR="${HOME}/.var/${PROFILE}" | |
| ENTRYPOINT="${PROFILE_DIR}/.entrypoint" | |
| mkdir -p "$PROFILE_DIR" | |
| CMD=$(flatpak info -m "$APP_ID" | sed -n 's/^command=//p') | |
| [[ -z "$CMD" ]] && { echo "Could not resolve command for $APP_ID" >&2; exit 1; } | |
| cat > "$ENTRYPOINT" << INNER | |
| #!/bin/bash | |
| set -euo pipefail | |
| APP_DIR="\${_ALT_DIR}/\${FLATPAK_ID}" | |
| export XDG_CACHE_HOME="\${APP_DIR}/cache" | |
| export XDG_DATA_HOME="\${APP_DIR}/data" | |
| export XDG_CONFIG_HOME="\${APP_DIR}/config" | |
| mkdir -p "\$XDG_CACHE_HOME" "\$XDG_DATA_HOME" "\$XDG_CONFIG_HOME" | |
| printf '\e[1;32m[%s] profile=%s → %s\e[0m\n' "\$FLATPAK_ID" "\$_ALT_PROFILE" "\$APP_DIR" | |
| exec ${CMD} "\$@" | |
| INNER | |
| chmod +x "$ENTRYPOINT" | |
| exec flatpak run \ | |
| --filesystem="$PROFILE_DIR" \ | |
| --env=_ALT_PROFILE="$PROFILE" \ | |
| --env=_ALT_DIR="$PROFILE_DIR" \ | |
| --command="$ENTRYPOINT" \ | |
| "$APP_ID" "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment