refactor: rebuild as a git menu plugin on nemo-repo-core
Keeps the git half of the context menu from the single file extension. Open Terminal Here and Open in Editor are not git actions and work on any folder, so they moved to nemo-folder-tools. The actions are a table rather than three near identical blocks, which is what makes adding git fetch a one line change. Entries now also appear inside a repository rather than only on its root, using the upward walk from nemo-repo-core.
This commit is contained in:
1 parent
d81b502300
commit
1d80aa8879
11 files changed
+190
-696
No files matched your search
+51
-28
@@ -1,40 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
# Installs the nemo-repo-emblems extension for the current user:
|
||||
# - symlinks the extension .py into ~/.local/share/nemo-python/extensions/
|
||||
# - symlinks the bundled emblem SVGs into ~/.local/share/icons/hicolor/scalable/emblems/
|
||||
# - creates ~/.config/nemo-repo-emblems.json from the bundled default if missing
|
||||
# - refreshes the icon cache and restarts nemo
|
||||
# Installs the nemo-repo-git-menu plugin for the current user. No root needed.
|
||||
#
|
||||
# ./install.sh link the plugin (edits in this checkout go live)
|
||||
# ./install.sh --copy copy the plugin instead of linking it
|
||||
#
|
||||
# Requires nemo-repo-core: https://github.com/dualfroz/nemo-repo-core
|
||||
set -euo pipefail
|
||||
|
||||
SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
sourceDir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
dataHome="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||
extensionsDir="$dataHome/nemo-python/extensions"
|
||||
coreDir="$dataHome/nemo-repo-core"
|
||||
pluginFile="nemoRepoGitMenu.py"
|
||||
|
||||
EXT_DIR="$HOME/.local/share/nemo-python/extensions"
|
||||
ICON_DIR="$HOME/.local/share/icons/hicolor/scalable/emblems"
|
||||
CONFIG_PATH="$HOME/.config/nemo-repo-emblems.json"
|
||||
mode="link"
|
||||
if [ "${1:-}" = "--copy" ]; then
|
||||
mode="copy"
|
||||
elif [ -n "${1:-}" ]; then
|
||||
echo "usage: $0 [--copy]" >&2
|
||||
exit 2
|
||||
fi
|
||||
|
||||
mkdir -p "$EXT_DIR" "$ICON_DIR" "$(dirname "$CONFIG_PATH")"
|
||||
if [ ! -d "$coreDir/nemoRepoCore" ] && ! python3 -c "import nemoRepoCore" >/dev/null 2>&1; then
|
||||
cat >&2 <<'MESSAGE'
|
||||
nemo-repo-core is not installed, and this plugin is nothing without it:
|
||||
|
||||
ln -sf "$SRC_DIR/nemo_repo_emblems.py" "$EXT_DIR/nemo_repo_emblems.py"
|
||||
echo "Linked extension -> $EXT_DIR/nemo_repo_emblems.py"
|
||||
git clone https://github.com/dualfroz/nemo-repo-core
|
||||
cd nemo-repo-core && ./install.sh
|
||||
MESSAGE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for svg in "$SRC_DIR"/emblems/*.svg; do
|
||||
ln -sf "$svg" "$ICON_DIR/$(basename "$svg")"
|
||||
done
|
||||
echo "Linked emblem icons -> $ICON_DIR"
|
||||
|
||||
if [ ! -f "$CONFIG_PATH" ]; then
|
||||
cp "$SRC_DIR/config.default.json" "$CONFIG_PATH"
|
||||
echo "Created default config -> $CONFIG_PATH"
|
||||
mkdir -p "$extensionsDir"
|
||||
target="$extensionsDir/$pluginFile"
|
||||
rm -f "$target"
|
||||
if [ "$mode" = "copy" ]; then
|
||||
cp "$sourceDir/$pluginFile" "$target"
|
||||
echo "Copied plugin -> $target"
|
||||
else
|
||||
echo "Config already exists, left untouched -> $CONFIG_PATH"
|
||||
ln -s "$sourceDir/$pluginFile" "$target"
|
||||
echo "Linked plugin -> $target"
|
||||
fi
|
||||
|
||||
if command -v gtk-update-icon-cache >/dev/null 2>&1; then
|
||||
gtk-update-icon-cache -f -t "$HOME/.local/share/icons/hicolor" 2>/dev/null || true
|
||||
if ! PYTHONPATH="$coreDir:$extensionsDir" python3 -c "import nemoRepoGitMenu" >/dev/null 2>&1; then
|
||||
echo >&2
|
||||
echo "The plugin did not import cleanly:" >&2
|
||||
PYTHONPATH="$coreDir:$extensionsDir" python3 -c "import nemoRepoGitMenu" >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
echo "Import check passed."
|
||||
|
||||
legacyExtension="$extensionsDir/nemo_repo_emblems.py"
|
||||
if [ -e "$legacyExtension" ]; then
|
||||
echo
|
||||
echo "WARNING: the pre-split single file extension is still installed:"
|
||||
echo " $legacyExtension"
|
||||
echo "Running both duplicates emblems, columns and menu entries. Remove it with:"
|
||||
echo " rm \"$legacyExtension\""
|
||||
fi
|
||||
|
||||
echo "Restarting nemo..."
|
||||
nemo -q || true
|
||||
(nemo --no-desktop >/dev/null 2>&1 &) || true
|
||||
|
||||
echo "Done. Edit $CONFIG_PATH to toggle indicators/actions (live-reloaded, no restart needed)."
|
||||
echo
|
||||
echo "Restart Nemo to load the plugin: nemo -q"
|
||||
Reference in new issue
Block a user