Repository navigation
Releases: tryingET/niri-desktop-continuity
Release list
v0.1.2
pipx install niri-desktop-continuity==0.1.2Changed
- Releases are built and published by CI from the pushed tag alone: the GitHub Release now carries
the wheel, sdist andSHA256SUMSfrom the same build that goes to PyPI. The 0.1.1 GitHub Release
has no attached files (releases here are immutable); its notes list the PyPI digests. - No change to the tool's behavior.
Verify
Built once from v0.1.2 by the release workflow after just ci passed on it. The
same files are on PyPI, uploaded through trusted
publishing. Check the files attached here with sha256sum -c SHA256SUMS.
v0.1.1
Now on PyPI, and Ghostty-only by design.
pipx install niri-desktop-continuityChanged
- Terminal sessions are read only in Ghostty, by design. Other terminals (kitty, WezTerm, foot,
Alacritty) now reopen as plain applications with their own command line, instead of receiving
Ghostty's--working-directoryand-e, which they do not accept. Captures made by 0.1.0 keep
their old recipes until the nextcapture.
Added
- On PyPI:
pipx install niri-desktop-continuity. Each release is built once in CI from its tag,
attached to the GitHub Release withSHA256SUMSand uploaded to PyPI through trusted publishing. - README links and images are absolute, so the page reads the same on PyPI.
Upgrade
If you installed 0.1.0 from GitHub, switch to PyPI with pipx install --force niri-desktop-continuity; after that, pipx upgrade niri-desktop-continuity picks up new releases. If you use a terminal other than Ghostty, run capture once after upgrading so its windows get the new plain-application recipes.
Verify
This release's files are on PyPI, built once from this tag in the release workflow after just ci passed on it, and uploaded through trusted publishing (PyPI shows their provenance). SHA-256:
5bdf69ba0b3c89fa1f4fa339a6367cff10b4e5d06e1ba65153ae8ac9bbc95f98 niri_desktop_continuity-0.1.1-py3-none-any.whl
5061bbb1390be5d8ee642c3f4b719ff5753e043fc30906300a547ee2a5b9713a niri_desktop_continuity-0.1.1.tar.gz
Releases in this repository are immutable, so files cannot be attached after publishing; the workflow's attempt to add them here was refused. From the next release the workflow creates the release together with its files.
Full history: CHANGELOG.md.
v0.1.0
Reboot, log in, and your niri desktop comes back. Windows reopen on their workspaces in their column order, Claude Code and Pi sessions resume by id, and anything that cannot be reopened safely is reported, never guessed.
First public release. Alpha, for niri on Linux, Python 3.11+,
no runtime dependencies. Install from the release wheel or with
pipx install git+https://github.com/tryingET/niri-desktop-continuity@v0.1.0.
Save and reopen your desktop
capturesaves windows, workspaces, column layout and a private reopen recipe per window:
a Claude Code session (resumed by id), a Pi session, an application command line and working
directory, a terminal's last command, a shell in the same directory, or a command you gave
declare. Anything else is recorded asunknownwith a reason.restoreprints the placement plan;restore --applylaunches each recipe through niri, puts
the window on its saved workspace, rebuilds the saved column order and widths and re-applies
workspace names. Windows open before the run are never moved or closed; every run leaves a
receipt. Browsers, Thunderbird and Obsidian are launched once and restore their own windows.autostart --enableadds opt-in systemd user units: a capture every 15 minutes and a reopen at
login when the capture came from a different niri instance.--disableremoves them.declare --pid PID -- COMMANDreopens a terminal session that cannot be resumed as a fresh
command, for example a new session started from a handoff note.- Applications restart in their saved working directory. Chromium and Electron command lines,
which those programs rewrite into one process title, are split at a real program file.
Check before you restart
previewwrites an offline HTML/SVG map of the latest capture (or a given digest). Every tile
says how the window comes back, and an After a reboot section lists each window's kind,
exact command and directory, or why it will not reopen.
Safety and privacy
- A Claude process without a session registry entry is never replayed from its command line.
X11 windows (xwayland-client) and unresolvable AppImage mounts are reported, not guessed. - State is private (
0700/0600); window titles and session titles are stored only with
capture --include-titles. No network requests, telemetry or daemon; discovered binaries are
hashed, never executed.
Also included, experimental
- Blocked restart proposals, a single-column reorder with exact approvals, and loss-bounded
reconstruction and resolution lifecycles that need a separately owned adapter (none ships
here). See docs/recovery.md.
Known limits
- Reopening is not restoring memory: unsaved drafts, scrollback and hidden tab order are lost.
- X11 applications are not reopened. Placement is by workspace index; the monitor is not restored.
- Arguments that contained spaces cannot be recovered from a rewritten process title.
- Stay idle while
restore --applyarranges columns; niri has no atomic focus-and-move.
Install
pipx install git+https://github.com/tryingET/niri-desktop-continuity@v0.1.0
# or the wheel attached below:
pipx install ./niri_desktop_continuity-0.1.0-py3-none-any.whlThen niri-desktop-continuity capture, preview and restore (a dry run). The README has the one-minute walkthrough.
Verify
sha256sum -c SHA256SUMS28e30f09ce04d797d06849bb2bcd91439d958e75f1311d6429cfe38772ee7ea8 niri_desktop_continuity-0.1.0-py3-none-any.whl
38fffc24256d56eea7d5278edd2d2075b2cd1514b0202e73cb58ce429fbae04b niri_desktop_continuity-0.1.0.tar.gz
Provenance
- Source: tag
v0.1.0, commitfd186a990275253fbf5447056751c88e96632686. - CI on that commit: run 35435503934 (
just ci: 666 tests, privacy check, build, installed-wheel smoke). - Artifacts built with
uv build(uv 0.12.17) from a clean clone of the tag; the installed-wheel smoke passed on the attached wheel. - No PyPI release yet.