Private
Public Access
1
0
Files
Kordophone/kordophoned
James Magahern c1507e9ee1 Merge branch 'wip/macos-xpc'
* wip/macos-xpc: (23 commits)
  auth: try switching to platform agnostic auth store
  daemon: fix crash when misconfigured
  xpc: better file descriptor handling
  xpc: adds OpenAttachmentFd
  xpc: full attachment data
  sync policy: only ignore empty bodies if there are no attachments
  xpc: include attachment guids
  cargo fmt
  xpc: Some cleanup
  xpc: refactor -- separate rpc impl and xpc glue
  xpc: refactor, less chatty logging
  xpc: Use reply port when replying to RPC messages
  cargo fmt
  xpc: implement signals
  xpc: implement rest of methods in kpcli except signals.
  cargo fmt
  xpc: Better type unpacking
  xpc: implement GetConversations
  xpc: kpcli: clean up client interface
  xpc: generic interface for dispatching methods
  ...
2025-08-25 01:01:56 -07:00
..
2025-08-25 01:01:56 -07:00
2025-08-01 12:26:17 -07:00
2025-08-25 01:01:56 -07:00
2025-08-25 01:01:56 -07:00

kordophoned

This is the client Kordophone daemon. It exposes a dbus interface for accessing the caching layer, handles the update cycle, etc.

Building RPM

Make sure cargo-generate-rpm is installed, cargo install cargo-generate-rpm.

Then:

cargo build --release
strip -s target/release/kordophoned
cargo generate-rpm

Running on macOS

Before any client can talk to the kordophone daemon on macOS, the XPC service needs to be manually registered with launchd.

  • Register using launchctl load net.buzzert.kordophonecd.plist

Plans are to embed this into the app executable, which would then not need to be manually registered (only via the following Swift code):

try? SMAppService.agent(plistName: "net.buzzert.kordophonecd.plist").register()

and the following in Info.plist:

<key>Label</key><string>net.buzzert.kordophonecd</string>
<key>BundleProgram</key><string>Contents/MacOS/kordophoned</string>
<key>MachServices</key><dict><key>net.buzzert.kordophonecd</key><true/></dict>
<key>KeepAlive</key><true/>