8 Commits
Author SHA1 Message Date
noconnorandClaude Opus 5.5 717ad1d3a9 base: Super+Ctrl+T toggles one persistent btop
Omarchy's Activity binding launches a fresh btop each time, so its graph
history is gone on every open. base now starts a single btop at login on
special:activity and binds Super+Ctrl+T to show/hide it; if btop is quit,
the next toggle re-seeds it. Ships as hypr/layers/10-base.lua so every
profile, including the Coder desktops, gets it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 09:08:09 -05:00
noconnorandClaude Opus 5.5 02c4e81869 macbook-air-m2: label the 7746 ufw rule ocovo, not ohv
ohv was ocovo's old name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 07:38:36 -05:00
noconnorandClaude Opus 5.5 5c9797655e Capture omarchy-air's post-10-16 customizations into its layer
Everything on the Air that existed only on the machine:

- git/config and mimeapps.list, which the omarchy-air-host branch captured
  but profiles never picked up.
- NetBird: netbird-bin under [aur], the networkd drop-in it writes, and a
  setup.sh that runs `netbird service install` and enables the unit (the AUR
  package ships none). `netbird up` stays manual.
- ufw rules beyond Omarchy's stock set and the handoff step's 4242 rule:
  ssh and the ocovo fabric (7746/udp) from the home LAN, 7746 over wt0, and
  7790/tcp.

base gains omarchy-fix-qt-color and a setup.sh that runs it. Qt 6.12's
QtQuick Color singleton shadows the shell's qs.Commons Color, so the bar,
lock screen and polkit dialog lose every colour; the fix renames the
singleton to ShellColor. An omarchy upgrade restores the stock files, so it
is idempotent, skips Qt < 6.12, and no-ops once upstream renames it.
Verified: run against the pristine backup it reproduces the Air's
hand-patched /usr/share/omarchy/shell byte for byte.

Left out on purpose: ocovo-node.service (written by `ocovo service
install`) and environment.d/ohv.conf belong to those projects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 07:32:00 -05:00
noconnorandClaude Opus 5.5 54763b9e78 Hold the Agents widget at the Omarchy 4.0.4 panel
4.5.0rc2 replaced the Agents panel with a compact one: a meter per limit,
the percentage only on hover, no tokens by day or by model. noconnor.agents
is a clone of omarchy.agents with Panel.qml, Main.qml and README.md from
upstream v4.0.4, vendored as plain files in personal-desktop's config/ so
the config step installs and captures it. capture.sh's plugin step skips
plugins vendored that way instead of warning they aren't git checkouts.

shell.json is synced from the live HP: the bar uses noconnor.agents, plus
the 4.5 centerBegin/centerEnd layout, elsewhen and the antigravity plugin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 19:09:20 -04:00
noconnorandClaude Opus 5.5 87a31858fd Profiles: machines, roles and shared layers
The repo was one machine's capture. It is now a set of profiles built from
layers under profiles/:

  machines/  hp-laptop, macbook-air-m2, coder-desktop
  roles/     developer, devops, ai-agents
  features/  handoff (lan-mouse)
  shared     base, personal, personal-desktop

A profile resolves to its includes (depth first), any --roles, then itself;
for a path several layers provide, the last wins. install.sh --show prints
the layers and which one owns each file.

Hyprland settings no longer share a file: base's hyprland.lua loads
~/.config/hypr/layers/*.lua with Omarchy's own require_all, and bindings.lua
stays stock so nothing binds twice. Verified with Hyprland 0.56.2
--verify-config for all three profiles, plus a broken probe layer to prove
the directory is loaded.

packages.txt gains per-line arch (Arch Linux ARM lacks opencode, codex, mise,
shellcheck) and cmd= (skip when dotfiles' ~/.local/bin already provides the
command), and an [ignore] section that replaces capture.sh's hard-coded list.
Tab-separated records would have collapsed empty fields under read, so
package records use the unit separator.

hp-laptop: re-captured. monitors.lua catch-all scale is now 1, shell.json
has four new plugins, fix-stuck-displays has its connector-name fix,
navbar-cat is gone, plugin-manager and omarchy-phone are pinned, the
herdr-hud working tree is re-diffed and bin/herdr-web rides along. Its
handoff peer is now the Air (192.168.1.49); the old default list was the
HP's own addresses, written from the Air's side.

macbook-air-m2: captured read-only over SSH as it is (no themes, plugins
or bar changes). Its LAN_MOUSE_POINTER_SCALE=0.7 moves from the shared unit
into a lan-mouse.service.d drop-in in its own layer.

coder-desktop: the Omarchy settings covert-cloud's image used to patch in
by hand (Virtual-1 at 1920x1080, no animations, stay-awake, Retro 82 once),
for the image to apply at a pinned commit. Roles reach it per workspace via
install.sh --roles ... --no-clobber.

capture.sh writes each file back into the layer that owns it, and refuses
to run before the first layered install unless --force, since the old file
shapes would land in shared layers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0153egowV1Xw2RNjZnSyZicc
2026-10-16 16:01:54 -04:00
noconnorandClaude Opus 5 b3f3f46b98 Make install.sh --handoff self-sufficient for a stock machine
A fresh generic install wants input sharing without the packages, config,
themes or plugins steps dragging personalizations along, so the handoff
step now stands alone: it installs lan-mouse and rust, drops in the
wrapper, builds the patch, installs and enables the unit, and opens the
firewall. Everything is idempotent, so a later full run does no extra
work. Verified by running it twice on omarchy-air -- second pass is all
skips, and the daemon comes back armed with a real barrier.

Drops python-evdev from the required set. packages.txt calls it a
lan-mouse dependency, but omarchy-air runs this entire setup without it
installed, so it is not needed for sharing and a minimal install should
not pull it.

The ufw section now degrades instead of half-applying: if sudo needs a
password and there is no terminal to prompt on, it prints the exact
commands to run and says what breaks without them, rather than emitting
raw sudo errors.

Hardware note for whoever reads this next: Omarchy's own installer covers
most of what packages.txt lists under hardware. install/hardware has
per-vendor trees (apple, asus, framework, intel, lenovo) plus vulkan.sh,
zram.sh, fix-fkeys.sh, sof-firmware.sh and thermald.sh, and the installer
prompts for keyboard, user, hostname and timezone. So vulkan-intel,
sof-firmware, thermald, zram-generator and the hid_apple fnmode drop-in
are all redundant on a fresh install, and the intel-* entries are wrong
on non-Intel hardware. Apply the hardware block only on the machine it
was captured from.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LrgrMhPG8CTo9XZF326rjZ
2026-10-10 17:38:39 -04:00
noconnorandClaude Opus 5 50176b78ee Sync omarchy-air's handoff work: pointer patch, firewall, case fix
Everything from the air side of lan-mouse that was living only on that
machine, plus corrections to what this repo already said.

New: handoff/patch/ is a two-line source patch making the daemon forward
the ACCELERATED pointer deltas. Upstream 0.11.0 forwards dx_unaccel and
discards the accelerated pair in the same event, and the wlr receiver
applies no curve either, so remote motion arrives with the sender's
acceleration stripped and nothing replacing it -- and sensitivity /
accel_profile are inert on both ends, so no config can fix it. The patch
also adds LAN_MOUSE_POINTER_SCALE for the residual logical-ppi gap
(0.7 for air's 140.1ppi against the LG's ~95.8). install.sh builds it
per-machine; the unit now runs the result. This laptop is still unpatched,
so its forwarded motion is still wrong until the handoff step runs here.

New: install.sh --handoff opens 4242/udp for the peer in ufw. ufw is
default-deny inbound and a dropped inbound packet presents IDENTICALLY to
a bad certificate; this cost a day. Nothing in the repo covered it.

Fixed: cmd_restart bypassed the systemd unit with pkill + uwsm-app, which
races Restart=on-failure and can leave two daemons on 4242. It now prefers
the unit, matching what cmd_log already assumed, and keeps the hand-start
path only for when no unit exists.

Documented, and this was the actual root cause of a day of dead crossings:
fingerprints are CASE-SENSITIVE. lan-mouse generates them lowercase and
compares with a plain map lookup, while openssl prints uppercase and
cli authorize-key stores what it is handed. An uppercase digest is the
right digest, valid TOML, non-empty, passes every guard, and never
matches -- the handshake dies bad_certificate. Also documented:
authorization is receiver-side only (connect.rs sets insecure_skip_verify),
so each direction depends solely on the receiver's list and a sender cannot
tell whether it is talking to the real peer.

Corrected: README claimed the unknown-device* accel rule was needed because
the receiver double-accelerates already-accelerated deltas. That is backwards
and the rule is a measured no-op -- the device matches, but sensitivity and
accel_profile are libinput settings and a wlr-virtual-pointer is not a
libinput device. Measured on both machines: 398x198px travel at
sensitivity 0 and identical at -0.9, exactly 1:1. Lines kept (harmless, and
the naming note is worth having) with the real mechanism written down.

~/.config/lan-mouse/ stays out of the repo as before; handoff/config/ holds
example configs carrying the backend, edge and lowercase rules instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LrgrMhPG8CTo9XZF326rjZ
2026-10-10 17:06:34 -04:00
noconnorandClaude Opus 5 9ac198da26 Capture this laptop's Omarchy customizations
Everything on top of a stock Omarchy 4.0.4-1 install, gathered so a second
machine can be brought to the same state: the ~/.config files that actually
differ from the shipped defaults, the three hand-built themes, the ten shell
plugins pinned to commits, the two custom scripts, two user units, and the
/etc drop-ins.

install.sh applies it all idempotently, backing up anything it overwrites.
capture.sh runs the other way so the repo stays the source of truth rather
than a snapshot that rots.

indie.herdr-hud's ten local-only commits ship as a git bundle plus a
working-tree patch, since they stay off the upstream PR deliberately.

Secrets, the dotfiles repo's territory (shell/git/mise), the remote-access
stack and aether-managed themes are all scoped out; README says why for each.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-10 12:07:15 -04:00