Skip to content

Releases: tryingET/niri-desktop-continuity

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 19 Sep 10:42
Immutable release. Only release title and notes can be modified.
pipx install niri-desktop-continuity==0.1.2

Changed

  • Releases are built and published by CI from the pushed tag alone: the GitHub Release now carries
    the wheel, sdist and SHA256SUMS from 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

Choose a tag to compare

@tryingET tryingET released this 19 Sep 10:11
Immutable release. Only release title and notes can be modified.

Now on PyPI, and Ghostty-only by design.

pipx install niri-desktop-continuity

Changed

  • 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-directory and -e, which they do not accept. Captures made by 0.1.0 keep
    their old recipes until the next capture.

Added

  • On PyPI: pipx install niri-desktop-continuity. Each release is built once in CI from its tag,
    attached to the GitHub Release with SHA256SUMS and 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

Choose a tag to compare

@tryingET tryingET released this 19 Sep 09:49

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

  • capture saves 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 as unknown with a reason.
  • restore prints the placement plan; restore --apply launches 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 --enable adds opt-in systemd user units: a capture every 15 minutes and a reopen at
    login when the capture came from a different niri instance. --disable removes them.
  • declare --pid PID -- COMMAND reopens 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

  • preview writes 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 --apply arranges 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.whl

Then niri-desktop-continuity capture, preview and restore (a dry run). The README has the one-minute walkthrough.

Verify

sha256sum -c SHA256SUMS
28e30f09ce04d797d06849bb2bcd91439d958e75f1311d6429cfe38772ee7ea8  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, commit fd186a990275253fbf5447056751c88e96632686.
  • 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.