aboutsummaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2024-09-27dbus/config: implement file loading functionsOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-27dbus: return exported error for nil configOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-27dbus/config: remove unused methodOphestra Umiker
Null checking is replaced by helper/args while string building is no longer required. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-25helper/args: simplify argument parsing and eliminate excess memory copiesOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-25dbus: use generalised helper.Helper for xdg-dbus-proxyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-25helper: clean up and separate helper process management from dbusOphestra Umiker
The previous code was poorly documented and made little sense in some parts. This is a generalised and cleaned up implementation in the helper package making use of the Args interface. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-24helper/args: hold a read lock in WriteToOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-24dbus: assert fmt.Stringer instead of helper.Args on argument sealOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-24dbus: seal as io.WriterTo interfaceOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-24helper: separate helper args fd builder from dbusOphestra Umiker
This method of passing arguments is used in bubblewrap as well as other tools, this commit separates the argument builder/writer to the helper package and generalise it as an interface. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-24app: improve dbus proxy verbose messagesOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-23nix: make bubblewrap available in PATHOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-22state: round printed uptime to the secondOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-22nix: remove obnoxious shell hookOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-22release: 0.0.0-beta.4Ophestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-22app: clean up interactions and handle all application state and setup/teardownOphestra Umiker
There was an earlier attempt of cleaning up the app package however it ended up creating even more of a mess and the code structure largely still looked like Ego with state setup scattered everywhere and a bunch of ugly hacks had to be implemented to keep track of all of them. In this commit the entire app package is rewritten to track everything that has to do with an app in one thread safe value. In anticipation of the client/server split also made changes: - Console messages are cleaned up to be consistent - State tracking is fully rewritten to be cleaner and usable for multiple process and client/server - Encapsulate errors to easier identify type of action causing the error as well as additional info - System-level setup operations is grouped in a way that can be collectively committed/reverted and gracefully handles errors returned by each operation - Resource sharing is made more fine-grained with PID-scoped resources whenever possible, a few remnants (X11, Wayland, PulseAudio) will be addressed when a generic proxy is available - Application setup takes a JSON-friendly config struct and deterministically generates system setup operations Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-21acl: define Go type alias for acl_perm_tOphestra Umiker
Define exported type alias for C.acl_perm_t and accept that for UpdatePerm. This makes representing its function signature significantly less cumbersome. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-17release: 0.0.0-beta.3Ophestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-17nix: include package buildInputs in devShellsOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-17exit: move final and early code to internal packageOphestra Umiker
Exit cleanup state information is now stored in a dedicated struct and built up using methods of that struct. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-16release: 0.0.0-beta.2Ophestra Umiker
This project started as a Go implementation of https://github.com/intgr/ego. That is clearly no longer what it is anymore and the tagged releases no longer made sense, so we're going back to v0. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-16move acl and xcb binding packages to top levelOphestra Umiker
These packages are reasonably clean and do not interact with other packages. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-16final: refactor for removal of system package and reduction of interactions ↵Ophestra Umiker
to state package State query command has been moved to main where it belongs, "system" information are now fetched in app.New and stored in *App with accessors for relevant values. Exit (cleanup-related) functions are separated into its dedicated "final" package. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-13nix: pass method string directlyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-13flag: move method flag from mainOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-12verbose: remove system package interactionOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-12app: handle launch method in New functionOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-11enable filter in README exampleOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09nix: fix typo in nixos module implementation previously missed due to lazy evalOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09update README documentOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/run: empty launcher environmentOphestra Umiker
The launcher process should not receive the child's environment. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09nix: implement dbus-system option in nixos moduleOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/dbus: accept system bus configOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09dbus/config: seal with session and system bus proxyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09dbus/config: fix builtin defaultsOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09dbus/config: document fields and add --call and --broadcastOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09release: 1.1.0Ophestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09update README documentOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09nix: implement new dbus options in nixos moduleOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09nix: add xdg-dbus-proxy to PATH via wrapProgramOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09flag: rename cli to flagOphestra Umiker
Yet another leftover from Ego. The cli name made no sense and this file only contains flag declarations now hence the rename. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/dbus: set dbusAddress earlyOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/dbus: manage dbus proxy and pass address to childOphestra Umiker
This commit adds code that starts and registers the D-Bus proxy, as well as cleanup code that tracks and closes the daemon once our child exits. A few more flags were added to pass D-Bus config to xdg-dbus-proxy. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09dbus: implement xdg-dbus-proxy wrapperOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app: treat display server variable unset as fatalOphestra Umiker
This is yet another remnant of Ego, as Ego unconditionally shares these resources and the absence of them are ignored and warned about in verbose logging. In our case they are individually opt-in so silently dropping them while the enablement is still set makes very little sense. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-09app/run: remove bare launch optionOphestra Umiker
This flag serves no use and is only a leftover from Ego. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08state/print: collect and output state information of all usersOphestra Umiker
The -state flag now outputs state of all users. The old behaviour can be accessed via the -state-current flag, user is selected via -u. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08nix: provide options for capability flagsOphestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-08clean up setup/launcher code and enable better control over sharesOphestra Umiker
In the past Wayland, X and PulseAudio are shared unconditionally. This can unnecessarily increase attack surface as some of these resources might not be needed at all. This commit moves all environment preparation code to the internal app package and selectively call them based on flags. An "enablements" bitfield is introduced tracking all enabled shares. This value is registered after successful child process launch and stored in launcher states. Code responsible for running the child process is isolated to its own app/run file and cleaned up. Launch method selection is also extensively cleaned up. The internal state/track readLaunchers function now takes uid as an argument. Launcher state is now printed using text/tabwriter and argv is only emitted when verbose. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
2024-09-04release: 1.0.4Ophestra Umiker
Signed-off-by: Ophestra Umiker <cat@ophivana.moe>