* 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 ...
38 lines
1.0 KiB
Markdown
38 lines
1.0 KiB
Markdown
# 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):
|
|
|
|
```swift
|
|
try? SMAppService.agent(plistName: "net.buzzert.kordophonecd.plist").register()
|
|
```
|
|
|
|
and the following in Info.plist:
|
|
|
|
```xml
|
|
<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/>
|
|
```
|
|
|