dualfroz bd1c9546ee chore: pin the core requirement to 0.1.0
nemo-repo-core dropped from 1.0.0 to 0.1.0 while its API is still
unsettled, and requireCore treats the minor as the breaking component in
the 0.x range.
2026-08-05 20:40:57 +02:00

nemo-repo-columns

"Git Branch" and "Git Status" columns for the list view in Nemo, the Cinnamon file manager.

Point Nemo at the directory where you keep your checkouts, switch to list view, and every repository shows its branch and how it stands:

project-a     main       clean
project-b     feature/x  2 ahead, 3 changed
project-c     main       1 behind, no upstream

Both columns can be sorted, so "everything with local changes" is one click on the Git Status header.

Values are computed for repository roots and left blank for everything else, so mixing repositories and ordinary folders in one listing stays readable.

Requirements

Install

git clone https://github.com/dualfroz/nemo-repo-core
cd nemo-repo-core && ./install.sh && cd ..

git clone https://github.com/dualfroz/nemo-repo-columns
cd nemo-repo-columns && ./install.sh

nemo -q

Then turn the columns on: in list view, right click the column headers, or use Edit > Preferences > List View to set the default for every folder.

install.sh links the plugin into ~/.local/share/nemo-python/extensions and checks that it imports. Pass --copy to copy instead of link. ./uninstall.sh removes it. Nothing is written outside your home directory and no root is required.

What the columns say

Git Branch is the checked out branch, or (detached) on a detached HEAD.

Git Status is a summary, in this order, with empty parts left out:

Part Meaning
N ahead Commits the upstream does not have
N behind Commits you do not have
no upstream The branch is not tracking anything
N changed Staged plus unstaged modifications
N untracked Files git does not know about
clean None of the above

A repository git cannot read shows ? and the reason.

Configuration

Shared file, read live:

~/.config/nemo-repo-core.json
{
  "cache_ttl_seconds": 5,
  "columns": {
    "branch": true,
    "status": true
  }
}

columns decides which of the two are offered to Nemo at all. Unlike every other setting in this family it is read once at startup, because Nemo asks for the column list when it loads the extension, so changing it needs nemo -q.

cache_ttl_seconds (core setting, default 5) bounds how stale a value can be when the change did not touch .git. Changes inside .git, such as a commit or a fetch, update the columns immediately.

Notes

  • Listing a directory of repositories runs one git status per repository, not one per row: results are cached and shared with the other plugins in this family.
  • Only repository roots get values. A folder inside a checkout is left blank on purpose, so a source tree does not repeat the same branch on every row.

Migrating from the single file version

These columns used to be part of nemo_repo_emblems.py, one file that also provided emblems, a properties tab and a context menu. They are now separate plugins on a shared core.

The one visible change: ahead and behind used to be written with arrows, and are now written as 2 ahead, 1 behind.

Your config carries over automatically, ~/.config/nemo-repo-emblems.json is copied to ~/.config/nemo-repo-core.json on first run and the old file is left alone. Remove the old extension so nothing is drawn twice:

rm ~/.local/share/nemo-python/extensions/nemo_repo_emblems.py
nemo -q

Tested on

Linux Mint 22.2 (Zara), Cinnamon 6.4.14, Nemo 6.4.5, python-nemo 6.4.0, Python 3.12.3.

License

MIT. See LICENSE.

S
Description
No description provided
Readme MIT
42 KiB
0 Stars 1 Watchers 0 Forks
Languages
Python 58%
Shell 42%