Import existing LinTunes project

Snapshot of the existing codebase before working through the TASKS.md
backlog. Real library data (data/) and the iTunes import fixture
(itunes-test-library/) are gitignored.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 21:12:01 -04:00
commit f6d35fa594
70 changed files with 8992 additions and 0 deletions

34
packaging/install-desktop.sh Executable file
View File

@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Install the lintunes .desktop entry and icon for the current user, so GNOME
# shows a proper icon and the app can be pinned to the dash.
# Re-run after swapping packaging/lintunes.png to update the icon.
set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APPS_DIR="$HOME/.local/share/applications"
ICON_DIR="$HOME/.local/share/icons/hicolor/256x256/apps"
mkdir -p "$APPS_DIR" "$ICON_DIR"
cp "$HERE/lintunes.png" "$ICON_DIR/lintunes.png"
# If lintunes isn't on PATH, point Exec at this checkout's module instead.
# We must NOT rely on the working directory: GNOME's dash launches apps via a
# systemd scope that does not reliably honor the Path= key, so `python3 -m`
# would fail with "No module named 'lintunes'". Put the checkout on PYTHONPATH
# and use absolute python so the launch is independent of CWD and PATH.
PROJECT_DIR="$(dirname "$HERE")"
PY="$(command -v python3 || echo /usr/bin/python3)"
if command -v lintunes >/dev/null 2>&1; then
cp "$HERE/lintunes.desktop" "$APPS_DIR/lintunes.desktop"
else
sed -e "s|^Exec=lintunes|Exec=/usr/bin/env PYTHONPATH=$PROJECT_DIR $PY -m lintunes.main|" \
-e "s|^Terminal=|Path=$PROJECT_DIR\nTerminal=|" \
"$HERE/lintunes.desktop" > "$APPS_DIR/lintunes.desktop"
fi
command -v update-desktop-database >/dev/null 2>&1 && \
update-desktop-database "$APPS_DIR" || true
command -v gtk-update-icon-cache >/dev/null 2>&1 && \
gtk-update-icon-cache -t "$HOME/.local/share/icons/hicolor" 2>/dev/null || true
echo "Installed. Find 'LinTunes' in the app grid; right-click to pin to dash."