aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-07-16nix: build directly with buildGoModulesOphestra Umiker
Since we have no dependencies, we don't need a vendor hash, so doing this actually makes sense. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16adapt README documentOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16apply MIT licenseOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16apply X11 licenseOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-16state: track launcher states in runDir and clean up before exitOphestra Umiker
X11 hosts and ACL rules are no longer necessary after all launcher processes exit. This reverts all changes to the system made during setup when no launchers remain. State information is also saved in runDir which can be tracked externally. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15workflows: add release workflowOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15main: implement sudo and machinectl launcher methodsOphestra Umiker
This does almost exactly what github:intgr/ego does, with some minor optimisations and corrections. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15launcher: implement launcher wrapperOphestra Umiker
There is no way to have machinectl pass part of its argv to the child, and formatting the string for a shell is highly error-prone and complex, so the argv slice is encoded and passed to a launcher process launched by machinectl which then calls execve(2) to start the final process. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15util: PulseAudio cookie discoveryOphestra Umiker
This appears to be how a regular PulseAudio client discovers the PulseAudio cookie. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15acl: fix memory leak in removeEntryOphestra Umiker
According to manpage acl_get_qualifier(3) the void * returned by this function could be allocated on the heap. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15util: file copy and exec.LookPath wrapperOphestra Umiker
Add convenience functions for copying files to owner readable targets and LookPath comma ok wrapper. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-15nix: add libxcb package to dev shellOphestra Umiker
Since we link libxcb as well now this is needed in the dev shell for it to build properly without impure. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-14x11: wrap libxcb ChangeHosts requestOphestra Umiker
Even though many pure Go libxcb implementations exist, it is at least as complex and unreadable as libxcb, if not more. Since well known libraries like SDL, qt and gtk uses libxcb, and they somehow understand how to use it, I can only assume these people have read enough code to make sure it's correct enough. Call it wishful thinking. I don't care anymore. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11util: port sd_booted functionOphestra Umiker
Manpage provided by systemd states that the sd_booted function internally "checks whether the directory /run/systemd/system/ exists", as well as that "a simple check like this can also be implemented trivially in shell or any other language". This implies the behaviour of this function can be expected to be stable. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11nix: set up devShellOphestra Umiker
Since we're using cgo to call into libacl a few dependencies other than go are required to build. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-11acl: implement acl utils via libaclOphestra Umiker
The library is simple and should be easy to port to Go, however correctness matters more in this case and overhead from cgo is negligible for our usage scenario. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-07-09cli: parse and resolve flagsOphestra Umiker
Copy all flags from upstream. The machinectl flag is dropped as it does nothing. the flag package is used to reduce complexity since we do not care about compatibility with upstream. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>