Skip to content

Add Deskflow dotfiles role for Arch and macOS #155

Description

@TechDufus

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions