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
34 lines
1.6 KiB
Desktop File
34 lines
1.6 KiB
Desktop File
[Unit]
|
|
Description=lan-mouse input sharing daemon (omarchy-handoff)
|
|
PartOf=graphical-session.target
|
|
After=graphical-session.target xdg-desktop-portal-hyprland.service
|
|
Requisite=graphical-session.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
# LAN_MOUSE_LOG_LEVEL, NOT RUST_LOG -- lan-mouse silently ignores RUST_LOG.
|
|
# Note there is NO auth-rejection message at any level: rejection surfaces only
|
|
# as a frontend event, so debug gives connect attempts and DTLS alert text only.
|
|
# To see WHICH side rejected a handshake you need the wire, not the log.
|
|
Environment=LAN_MOUSE_LOG_LEVEL=info
|
|
# Patched daemon: upstream 0.11.0 forwards UNACCELERATED pointer deltas
|
|
# (input-capture/src/layer_shell.rs discards the accelerated dx/dy in the same
|
|
# event), and the wlr-virtual-pointer receiver applies no curve of its own, so
|
|
# the remote pointer is far too fast and sensitivity/accel_profile are inert on
|
|
# BOTH ends. Built by install.sh from handoff/patch/ -- see its REBUILD.md.
|
|
# Falls back to nothing: if the build is missing the unit fails loudly rather
|
|
# than silently running the unpatched binary with the wrong pointer feel.
|
|
ExecStart=%h/.local/bin/lan-mouse-patched daemon
|
|
# LAN_MOUSE_POINTER_SCALE (default 1.0) is per-machine, so it is not set here:
|
|
# a machine that needs it ships lan-mouse.service.d/pointer-scale.conf
|
|
# (see machines/macbook-air-m2).
|
|
Restart=on-failure
|
|
RestartSec=2
|
|
# Output goes to the journal on purpose. The previous autostart.lua path sent
|
|
# both streams to /dev/null, which hid every pairing failure for hours.
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
[Install]
|
|
WantedBy=graphical-session.target
|