Goal
Add one scoped deskflow role so dotfiles can install Deskflow on Arch/CachyOS and macOS, with optional external server-layout config.
Findings
- Deskflow fits dotfiles as a package-manager/bootstrap role.
- Arch has an official
deskflow package in extra.
- macOS uses the upstream Deskflow Homebrew tap:
deskflow/tap.
- Treat this like
kitty/ghostty: install app + manage stable user config only.
- Do not source-build by default.
- Do not make autostart/service plumbing part of the base role.
Proposed role shape
roles/deskflow/
tasks/main.yml
tasks/Archlinux.yml
tasks/MacOSX.yml
templates/deskflow-server.conf.j2
Implementation notes
Arch/CachyOS
Install via pacman:
community.general.pacman:
name: deskflow
state: present
macOS
Add upstream tap, then install the stable cask:
community.general.homebrew_tap:
name: deskflow/tap
state: present
community.general.homebrew_cask:
name: deskflow
state: present
Equivalent manual command: brew tap deskflow/tap && brew install --cask deskflow.
Use deskflow-dev only as an explicit opt-in for continuous builds.
Config boundaries
Do not version/control the full Deskflow.conf or .state file. They contain app/session state and will churn.
Leave unmanaged:
lastVersion
shown*
xdpRestoreToken
windowGeometry / .state
- peer/pairing/fingerprint state
- other GUI-generated session state
If layout is managed, render only the separate plain-text server config from vars:
templates/deskflow-server.conf.j2 -> managed deskflow-server.conf
Then set only the external-config pointers needed to use it:
[server]
externalConfig=true
externalConfigFile=<managed path>/deskflow-server.conf
Relevant names/paths:
- GUI app:
Deskflow
- GUI/CLI binary:
deskflow
- core process:
deskflow-core
- Linux settings path:
~/.config/Deskflow/Deskflow.conf
- macOS settings path:
~/Library/Deskflow/Deskflow.conf
- settings override flag:
deskflow -s/--settings <path>
Manual first-run requirements
Dotfiles should document, not automate, these steps:
- macOS Accessibility permission for
Deskflow / deskflow.
- macOS Local Network permission on newer macOS if prompted.
- KDE/Wayland portal/input-capture grants if prompted.
- Peer fingerprint confirmation / pairing.
- Firewall/LAN reachability for port
24800.
Acceptance criteria
dotfiles -t deskflow installs Deskflow on Arch/CachyOS via pacman.
dotfiles -t deskflow adds deskflow/tap and installs the stable deskflow cask on macOS.
- Role renders
deskflow-server.conf.j2 to a managed external server config when layout vars are configured.
- Role sets only
server/externalConfig=true and server/externalConfigFile=<managed server config path> when enabling managed layout.
- Role explicitly leaves broad
Deskflow.conf and .state files unmanaged.
- Role notes document first-run permissions, pairing/fingerprint confirmation, and port
24800 reachability.
Goal
Add one scoped
deskflowrole so dotfiles can install Deskflow on Arch/CachyOS and macOS, with optional external server-layout config.Findings
deskflowpackage inextra.deskflow/tap.kitty/ghostty: install app + manage stable user config only.Proposed role shape
Implementation notes
Arch/CachyOS
Install via pacman:
macOS
Add upstream tap, then install the stable cask:
Equivalent manual command:
brew tap deskflow/tap && brew install --cask deskflow.Use
deskflow-devonly as an explicit opt-in for continuous builds.Config boundaries
Do not version/control the full
Deskflow.confor.statefile. They contain app/session state and will churn.Leave unmanaged:
lastVersionshown*xdpRestoreTokenwindowGeometry/.stateIf layout is managed, render only the separate plain-text server config from vars:
Then set only the external-config pointers needed to use it:
Relevant names/paths:
Deskflowdeskflowdeskflow-core~/.config/Deskflow/Deskflow.conf~/Library/Deskflow/Deskflow.confdeskflow -s/--settings <path>Manual first-run requirements
Dotfiles should document, not automate, these steps:
Deskflow/deskflow.24800.Acceptance criteria
dotfiles -t deskflowinstalls Deskflow on Arch/CachyOS via pacman.dotfiles -t deskflowaddsdeskflow/tapand installs the stabledeskflowcask on macOS.deskflow-server.conf.j2to a managed external server config when layout vars are configured.server/externalConfig=trueandserver/externalConfigFile=<managed server config path>when enabling managed layout.Deskflow.confand.statefiles unmanaged.24800reachability.