Files
omarchy-setup/profiles/features/handoff/systemd/user/lan-mouse.service
T
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

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