Skip to content

rendychen0331/rendy-git

Repository files navigation

rendy-git

English | 正體中文

TortoiseGit for Linux: right-click in the Nautilus file manager to commit, browse the log, view diffs, and push/pull.

No terminal, no commands to memorize.


Requirements

Item Notes
Linux desktop GNOME (Nautilus, GNOME 43+) or KDE Plasma (Dolphin)
git 2.23 or later
python3 3.9 or later
nautilus-python GNOME only: provides the Nautilus context menu. KDE needs no extra package -- Dolphin reads a plain service-menu file

Install nautilus-python first; the package name differs per distribution:

sudo pacman -S nautilus-python         # Arch
sudo dnf install nautilus-python       # Fedora
sudo apt install python3-nautilus      # Debian / Ubuntu (the one odd name)

Note for Arch users

Arch ships a Python newer than the current PySide6 pip wheels, so pip install PySide6 can fail on a perfectly healthy system. Install the system package first; the install script falls back to it automatically when pip fails:

sudo pacman -S pyside6

Install

The package you download depends on your distribution; how you reload the menu depends on your desktop (GNOME or KDE). Both menus ship in every package -- your desktop picks up the one it uses.

Arch Linux: from the package

Every tagged release ships a .pkg.tar.zst built by CI (Releases page):

sudo pacman -U rendy-git-*.pkg.tar.zst          # Arch

Then reload the file manager: GNOME nautilus -q; KDE just reopen Dolphin (run kbuildsycoca6 if the menu does not appear).

Ubuntu / Debian: from the package

sudo apt install ./rendy-git_*_all.deb

Then reload the menu: GNOME nautilus -q; KDE reopen Dolphin (run kbuildsycoca6 if it does not appear).

PySide6: Ubuntu 25.10+ / Debian 13 install it automatically (a Recommends). Ubuntu 23.04-25.04 / Debian 12 do not package PySide6 at all -- add it once with:

python3 -m pip install --user --break-system-packages PySide6

KDE neon uses this .deb too (it is Ubuntu 24.04 based) — add PySide6 via pip as above.

Ubuntu 22.04 is not supported (GNOME 42 predates the Nautilus 4.0 extension API).

The package uses the system Python and pyside6; nautilus-python is an optional dependency for the context menu.

Any distro: from source

git clone <this repository> rendy-git
cd rendy-git
./packaging/install.sh

Then reload the menu: GNOME nautilus -q; KDE reopen Dolphin (run kbuildsycoca6 if it does not appear).

The script needs no root; everything lands in your home directory:

  • ~/.local/share/rendy-git/venv — PySide6 lives here, without polluting the system Python
  • ~/.local/bin/rendy-git — the command itself
  • ~/.local/share/nautilus-python/extensions/ — the context menu

If the installer warns that ~/.local/bin is not on PATH, the context menu cannot find the program. Add export PATH="$HOME/.local/bin:$PATH" to ~/.bashrc and reopen the terminal.

Uninstall:

./packaging/install.sh --uninstall

Usage

Right-click inside any Git project folder (or on selected files); everything lives under the Rendy Git submenu. Works in GNOME Files (Nautilus) and in KDE's Dolphin.

Dolphin note: its menu is a static service menu, so all actions always show; an action that needs a repo simply reports "Not inside a Git repository" when used elsewhere.

Folders that are not a git repo also show the submenu, holding just two items: Create Repository Here... and Clone....

Menu item What it does
Create Repository Here... Create a new git repo in this folder (non-repo folders only)
Clone... Paste a URL, clone into a subfolder here (non-repo folders only)
Git Commit... Tick files, write a message, commit. Optionally push in the same step
Compare with Previous Version Diff a selected file against the last commit that touched it (selection only)
Git Branch / Checkout... Switch, create, and delete branches
Git Tag... List tags, create (annotated or lightweight), delete, push a tag to the remote
Git Stash... Stash current changes; browse, apply, and drop stashes
Edit Conflicts / Resolve... During a merge/rebase conflict: pick "mine" or "theirs" per file, or mark hand-edited files resolved; Abort the whole operation
Git Sync... One window with "to push" and "fetched, not merged" commits, plus Fetch/Pull/Push buttons
Git Show Log Browse history; click a commit for its message and files, double-click a file for its diff
Git Diff View uncommitted changes
Git Pull... / Push... Pick the remote and branch first (pull offers rebase; push offers force / -u), then live progress
Git Fetch Fetch all remotes with live progress
Git Add Stage the selected files
Git Revert... Restore selected files to their last committed state
Settings... Settings window: git identity (global/per-repo), fonts, commit defaults, advanced options. Opens inside or outside a repo

The same commands work from a terminal, with identical behavior:

rendy-git commit .              # the whole repo
rendy-git log src/app.py        # history of a single file
rendy-git diff src/             # changes under one folder

Commit window rules

  • Ticked files are exactly what goes into the commit. Files you git add-ed elsewhere but left unticked are unstaged before committing. What you see is what you get.
  • Untracked files start unticked. Accidentally committing a build artefact costs far more than one extra click.
  • Amend pre-fills the previous commit message. Commit & Push then pushes with --force-with-lease — it only overwrites when the remote has no commits you haven't fetched, so it cannot clobber a colleague's work.

About Revert / Discard

This cannot be undone. Files return to their last committed content; your changes are gone.

One deliberate exception: files that were never committed are not deleted — they are only unstaged back to untracked. The program has no right to delete something you never committed.

Troubleshooting

Logs are written to logs/:

File Contents
rendy-git_YYYYMMDD.err.log Warnings and errors only — start here
rendy-git_YYYYMMDD.task.jsonl One line per action: what ran, ok/fail, duration
rendy-git_YYYYMMDD.log Full detail; grep it with the trace id found in the two files above

Common issues:

  • No context menu in GNOME Files → nautilus-python is missing, or you forgot nautilus -q
  • No context menu in Dolphin → check the file exists (ls /usr/share/kio/servicemenus/rendy-git.desktop or ~/.local/share/kio/servicemenus/); a menu under ~/.local should be executable for Plasma 6 (chmod +xinstall.sh does this); then run kbuildsycoca6 and reopen Dolphin
  • Push hangs or asks for a password → background password prompts are disabled (they would freeze the window forever). Set up an SSH key or a git credential helper first
  • Selected files from two different repos → refused, because there is no single repo to act on

Language

The UI follows the system language (LANG) by default. To switch manually: context menu → Settings... → Interface → Language, or set "language" in config.json ("auto" / "en" / "zh_TW").

Traditional Chinese is built in. To add another language, copy lang/zh_TW.json to lang/<code>.json (e.g. ja.json) and translate the values — keys are the English source strings, and untranslated strings simply fall back to English. No reinstall needed; new windows pick it up.

Configuration

The Settings... menu item is the easy way; it edits this config.json (next to the program, or ~/.config/rendy-git/config.json):

{
  "git_executable": "git",
  "log_level": "INFO",
  "language": "auto",
  "ui": { "diff_font_family": "monospace", "diff_font_size": 10 },
  "commit": { "amend_default": false, "signoff_default": false },
  "log_dialog": { "page_size": 200 }
}

Not yet implemented

v1 deliberately skips icon overlays — TortoiseGit's green check / red exclamation drawn on file icons.

Linux has no equivalent mechanism: Nautilus only offers emblems (small corner icons), they update with a lag, and they need a background daemon polling git status, which slows the whole file manager down on large repos. A half-working, misleading version is worse than none.

Also missing: merge/rebase launch dialogs (conflict resolution exists), blame, submodules, remote branch deletion, "set as compare baseline" paired diff, revision graph, bisect.

About

Right-click Git for GNOME Files (Nautilus) — commit, log, diff, push/pull, branches, stash, and conflict resolution, straight from the file manager.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors