Native GTK4 + libadwaita app that wraps ffmpeg to batch-convert source video into editorial-ready Apple ProRes .mov. Targets Omarchy / Hyprland on Arch Linux specifically. Highlights: * Real ffmpeg encode (prores_ks → prores fallback) with live progress parsing, cancelable serial queue, disk-space pre-check, source-missing guard, output-collision (N) suffixes. * GPU decode auto-probe at install time — picks cuda → qsv → vaapi based on what actually initialises on the host. ProRes encoding stays on CPU (no vendor ships a GPU encoder); offloading the decode side cuts wall time 25-40% on H.264 / HEVC sources. * Theme-aware: tracks the active Omarchy theme on every launch by parsing colors.toml / ghostty.conf / alacritty.toml / kitty.conf in priority order. 34 stock + custom themes verified. * Pro camera support: .MXF (Canon XF / Sony XDCAM / Panasonic AVC-Intra) with proxy-directory pruning so dropping a Sony XAVC card maps masters in CLIP/ but skips the low-res duplicates in SUB/. * Multi-track audio preserved — 4 mono PCM streams from a Canon C300/C500 land in the output as 4 separate tracks. Optional 24-bit toggle. * Live encode-speed indicator with ffmpeg -progress parsing; ETA refines from real measured throughput rather than a fixed heuristic. * Hyprland-aware install — registers walker entry, six hicolor icon sizes, float+centre windowrule for class dev.nocoder.NoCoder. Distribution model: git clone + bash install.sh. The installer copies the source tree to ~/.local/share/nocoder/ so the clone is disposable. Updates are git pull + re-run install.sh. Documented at README.md.
61 lines
2.1 KiB
Bash
Executable file
61 lines
2.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# uninstall.sh — reverse what install.sh did.
|
|
# Leaves pacman packages alone (they may be needed by other apps).
|
|
|
|
set -euo pipefail
|
|
|
|
APP_ID="dev.nocoder.NoCoder"
|
|
LAUNCHER_NAME="nocoder"
|
|
|
|
BIN_DIR="$HOME/.local/bin"
|
|
DESKTOP_DIR="$HOME/.local/share/applications"
|
|
HICOLOR_DIR="$HOME/.local/share/icons/hicolor"
|
|
INSTALL_DIR="$HOME/.local/share/nocoder"
|
|
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nocoder"
|
|
HYPR_CONF="$HOME/.config/hypr/windows.conf"
|
|
|
|
MARK_BEGIN="# >>> nocoder windowrules begin"
|
|
MARK_END="# <<< nocoder windowrules end"
|
|
|
|
GREEN=$'\e[32m'; DIM=$'\e[2m'; RESET=$'\e[0m'
|
|
say() { printf '%s==>%s %s\n' "$GREEN" "$RESET" "$*"; }
|
|
|
|
say "Removing installed app tree, launcher, desktop entry, icons, config"
|
|
rm -rf "$INSTALL_DIR"
|
|
rm -rf "$CONFIG_DIR"
|
|
rm -f "$BIN_DIR/$LAUNCHER_NAME"
|
|
rm -f "$DESKTOP_DIR/$APP_ID.desktop"
|
|
# Old SVG location (pre-2026-04-21 rebrand) and current multi-size PNGs.
|
|
rm -f "$HICOLOR_DIR/scalable/apps/$APP_ID.svg"
|
|
for sz in 48 64 96 128 256 512; do
|
|
rm -f "$HICOLOR_DIR/${sz}x${sz}/apps/$APP_ID.png"
|
|
done
|
|
|
|
command -v update-desktop-database >/dev/null 2>&1 && \
|
|
update-desktop-database -q "$DESKTOP_DIR" || true
|
|
command -v gtk-update-icon-cache >/dev/null 2>&1 && \
|
|
gtk-update-icon-cache -q -t "$HICOLOR_DIR" || true
|
|
|
|
if [[ -f "$HYPR_CONF" ]]; then
|
|
# Only strip if both markers are present (closed block). An unclosed BEGIN
|
|
# would otherwise make awk eat everything to EOF, including user edits.
|
|
if grep -qxF "$MARK_BEGIN" "$HYPR_CONF" && ! grep -qxF "$MARK_END" "$HYPR_CONF"; then
|
|
echo "!! unclosed '$MARK_BEGIN' block in $HYPR_CONF — not touching it."
|
|
elif grep -qxF "$MARK_BEGIN" "$HYPR_CONF"; then
|
|
say "Stripping Hyprland windowrules block"
|
|
tmp="$(mktemp)"
|
|
awk -v b="$MARK_BEGIN" -v e="$MARK_END" '
|
|
$0 == b { skip = 1; next }
|
|
skip && $0 == e { skip = 0; next }
|
|
!skip { print }
|
|
' "$HYPR_CONF" > "$tmp"
|
|
mv "$tmp" "$HYPR_CONF"
|
|
fi
|
|
|
|
if command -v hyprctl >/dev/null 2>&1 && [[ -n "${HYPRLAND_INSTANCE_SIGNATURE:-}" ]]; then
|
|
hyprctl reload >/dev/null
|
|
fi
|
|
fi
|
|
|
|
echo "${DIM}Pacman packages left in place. Remove manually if desired.${RESET}"
|
|
echo "Done."
|