0.0.1
This commit is contained in:
Executable
+49
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
# Install rcalc launcher + icon for Wayland/XDG desktops (KDE, GNOME, …).
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
BIN="${ROOT}/dist/rcalc"
|
||||
ICON_SRC="${ROOT}/assets/icon-256.png"
|
||||
DESKTOP_SRC="${ROOT}/assets/rcalc.desktop"
|
||||
|
||||
if [[ ! -x "$BIN" ]]; then
|
||||
echo "Building release binary…"
|
||||
(cd "$ROOT" && cargo build --release)
|
||||
# Prefer project dist/, else cargo target
|
||||
if [[ -x "$ROOT/dist/rcalc" ]]; then
|
||||
BIN="$ROOT/dist/rcalc"
|
||||
else
|
||||
BIN="$(find "$ROOT" /tmp/cursor-sandbox-cache -path '*/release/rcalc' -type f 2>/dev/null | head -1 || true)"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! -x "$BIN" ]]; then
|
||||
echo "error: binary not found; run: cargo build --release && cp target/release/rcalc dist/" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
APP_DIR="${HOME}/.local/share/applications"
|
||||
ICON_DIR="${HOME}/.local/share/icons/hicolor/256x256/apps"
|
||||
mkdir -p "$APP_DIR" "$ICON_DIR" "${HOME}/.local/bin"
|
||||
|
||||
cp -f "$ICON_SRC" "${ICON_DIR}/rcalc.png"
|
||||
ln -sfn "$BIN" "${HOME}/.local/bin/rcalc"
|
||||
|
||||
# Rewrite Exec to absolute binary path
|
||||
sed "s|^Exec=.*|Exec=${BIN}|" "$DESKTOP_SRC" \
|
||||
| sed "s|^Path=.*|Path=${ROOT}|" \
|
||||
> "${APP_DIR}/rcalc.desktop"
|
||||
chmod 644 "${APP_DIR}/rcalc.desktop"
|
||||
|
||||
# Refresh caches (ignore failures on minimal setups)
|
||||
update-desktop-database "$APP_DIR" 2>/dev/null || true
|
||||
gtk-update-icon-cache -f -t "${HOME}/.local/share/icons/hicolor" 2>/dev/null || true
|
||||
|
||||
echo "Installed:"
|
||||
echo " launcher: ${APP_DIR}/rcalc.desktop"
|
||||
echo " icon: ${ICON_DIR}/rcalc.png"
|
||||
echo " symlink: ${HOME}/.local/bin/rcalc"
|
||||
echo
|
||||
echo "On Wayland: quit rcalc if running, then start it from the app menu"
|
||||
echo "(or: rcalc). The dock should show the custom icon."
|
||||
Reference in New Issue
Block a user