<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotfiles/dot_config/zsh, branch master</title>
<subtitle>My linux config and rc files</subtitle>
<id>https://git.sommerfeld.dev/dotfiles/atom/dot_config/zsh?h=master</id>
<link rel='self' href='https://git.sommerfeld.dev/dotfiles/atom/dot_config/zsh?h=master'/>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/'/>
<updated>2026-07-02T10:35:35Z</updated>
<entry>
<title>Prune stale dotfiles commentary</title>
<updated>2026-07-02T10:35:35Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-07-02T10:35:35Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=f0c626059451e1f8621600e610240739d5633560'/>
<id>urn:sha1:f0c626059451e1f8621600e610240739d5633560</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use local gpg-agent on VM</title>
<updated>2026-06-19T15:36:01Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-19T15:36:01Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=7eacd3c160f23fbff65c510aae70266b33b48bc2'/>
<id>urn:sha1:7eacd3c160f23fbff65c510aae70266b33b48bc2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Reduce Arch package surface</title>
<updated>2026-06-18T11:06:20Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-18T11:06:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=511793cba498f52b0f92904965ea5c9afa8b6ea4'/>
<id>urn:sha1:511793cba498f52b0f92904965ea5c9afa8b6ea4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Allow unmatched globs in zsh</title>
<updated>2026-06-17T14:47:38Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-17T14:47:38Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=08a1557a6896fe5772374a588cefafcc7e352493'/>
<id>urn:sha1:08a1557a6896fe5772374a588cefafcc7e352493</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use absolute editor commands under sudo</title>
<updated>2026-06-14T23:55:44Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-14T23:55:44Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=066df8cc91966a0fbe5b2a32c45ad984fd9ae468'/>
<id>urn:sha1:066df8cc91966a0fbe5b2a32c45ad984fd9ae468</id>
<content type='text'>
Resolve nvim before exporting editor and pager variables so sudo-rs env_keep does not depend on root's secure_path.

Update the Waybar pacdiff action to pass an absolute DIFFPROG through sudo.
</content>
</entry>
<entry>
<title>Add mosh work VM alias</title>
<updated>2026-06-14T23:55:43Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-14T23:55:43Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=14f5a45a67b2d719e8912c335be8f521e39291fd'/>
<id>urn:sha1:14f5a45a67b2d719e8912c335be8f521e39291fd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Limit git switch completion to local branches</title>
<updated>2026-06-05T10:06:04Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-06-05T10:06:04Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=929f8bea128361822b054db36402b5e19234319f'/>
<id>urn:sha1:929f8bea128361822b054db36402b5e19234319f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>refactor(suspend): drop SSH session inhibit; AC rule handles it</title>
<updated>2026-05-29T10:18:15Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:15Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=45ce3902227fdfe4380d7b956ed89274e04b6ba5'/>
<id>urn:sha1:45ce3902227fdfe4380d7b956ed89274e04b6ba5</id>
<content type='text'>
Same rationale as the previous commit: the new policy is "if you don't
want the machine to sleep, plug it in." An SSH-only inhibit in zprofile
is redundant on AC (logind already ignores the lid) and inconsistent on
battery (it would hold the lock for an SSH-attached idle session,
defeating the schedule).

Also removes a stale doc reference to zellij-inhibit-suspend.path which
no longer exists.
</content>
</entry>
<entry>
<title>feat(suspend): hold inhibit lock while any zellij session exists</title>
<updated>2026-05-29T10:18:13Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:13Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=01df321e907b6c8568bb8622eb44a5c1486a0631'/>
<id>urn:sha1:01df321e907b6c8568bb8622eb44a5c1486a0631</id>
<content type='text'>
The SSH-shell inhibitor in dot_zprofile is bound to the lifetime of the
login shell, so it disappears the moment the user detaches a zellij
session and disconnects — defeating the whole point of using zellij for
persistent remote work.

Add a user-scope path+service+watcher trio that ties the inhibit lock
to the existence of zellij sessions instead:

  - dot_local/bin/executable_zellij-inhibit-watcher
      Polls `zellij list-sessions --short` every 15s, exits when none
      remain. Override poll interval via $ZELLIJ_INHIBIT_POLL.

  - dot_config/systemd/user/zellij-inhibit-suspend.service
      Wraps the watcher in `systemd-inhibit --what=sleep:idle:handle-lid-switch
      --mode=block`. When the watcher exits, the service stops and the
      lock is released.

  - dot_config/systemd/user/zellij-inhibit-suspend.path
      Activates the service whenever $XDG_RUNTIME_DIR/zellij becomes
      non-empty (i.e. zellij creates its first session socket). Re-fires
      on every empty→non-empty transition.

Enable via systemd-units/user.txt (the .path unit; the service is
on-demand).

The existing SSH-shell inhibitor is kept as a backstop for non-zellij
remote sessions and is now documented as such.

VM (nix/vm.nix) deliberately not updated: the Ubuntu remote-dev VM
never suspends, so the inhibit machinery would be inert there.
</content>
</entry>
<entry>
<title>feat(zsh): inhibit suspend while an SSH session is active</title>
<updated>2026-05-29T10:18:13Z</updated>
<author>
<name>sommerfeld</name>
<email>sommerfeld@sommerfeld.dev</email>
</author>
<published>2026-05-29T10:18:13Z</published>
<link rel='alternate' type='text/html' href='https://git.sommerfeld.dev/dotfiles/commit/?id=263f39704ae5e8f44a79d64dce2be048009b4df6'/>
<id>urn:sha1:263f39704ae5e8f44a79d64dce2be048009b4df6</id>
<content type='text'>
A remote session is useless if the laptop suspends mid-command, but
logind doesn't suppress lid-close or idle-suspend for SSH sessions on
its own — you have to hold an explicit inhibitor lock.

When $SSH_CONNECTION is set, re-exec the login shell under
`systemd-inhibit --what=sleep:idle:handle-lid-switch --mode=block`
so the lock is bound to the shell's lifetime: it covers swayidle,
logind's HandleLidSwitch, and any other consumer that respects
inhibit locks, and it's released the moment the SSH session ends.

A guard env var prevents recursion if the user nests a login shell
inside the wrapped one (e.g. `exec zsh -l`).
</content>
</entry>
</feed>
