chkservice
rust-block
chkservice | rust-block | |
---|---|---|
3 | 2 | |
342 | 47 | |
- | - | |
0.0 | 0.0 | |
almost 2 years ago | 3 months ago | |
C++ | Rust | |
GNU General Public License v3.0 or later | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
chkservice
- GitHub - linuxenko/chkservice: Systemd units manager with ncurses, terminal interface
-
Baby's first Rust with extra steps (XPC, launchd, and FFI)!
I wondered if there was something similar to LaunchControl that could run in a terminal. I've used chkservice on Linux, but there seems to be no macOS equivalent. I've been dying for an excuse to learn a little bit of Rust (loved n+1 years in a row by the SO developer survey2) -- so this was my chance. Several months later I ended up with launchk. The rest of this post will go over: getting started, interfacing with launchd, a lot of macOS IPC bits, getting stuck, and a bunch of probably questionable Rust FFI stuff.
-
systemd GUI that works and is maintained (and will work on Mint)?
There is chkservice, which runs, but it ncurses rather than true GUI and some of its actions fail with a message saying . . graphical elevation is needed. And it's a bit arcane to use. (Github page.)
rust-block
- macOS Apps in Rust
-
Baby's first Rust with extra steps (XPC, launchd, and FFI)!
let block = ConcreteBlock::new(move |key: *const c_char, value: xpc_object_t| { unsafe { xpc_retain(value) }; let str_key = unsafe { CStr::from_ptr(key).to_string_lossy().to_string() }; let xpc_object: XPCObject = value.into(); map_refcell .borrow_mut() .insert(str_key, xpc_object.into()); true }); // https://github.com/SSheldon/rust-block#creating-blocks let block = block.copy(); let ok = unsafe { xpc_dictionary_apply(object.as_ptr(), &*block as *const _ as *mut _) };
What are some alternatives?
systemdgenie - Systemd managment utility
rust-objc - Objective-C Runtime bindings and wrapper for Rust.
launchk - Cursive TUI that queries XPC to peek at launchd state
k9s - 🐶 Kubernetes CLI To Manage Your Clusters In Style!
ip2unix - Turn IP sockets into Unix domain sockets
rust-bindgen - Automatically generates Rust FFI bindings to C (and some C++) libraries.
systemd-manager
Cursive - A Text User Interface library for the Rust programming language
tokio - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
amd-disable-c6 - Systemd service to automatically disable the C6 power saving state on AMD Zen (Ryzen / Epyc) processors
swift-bridge - swift-bridge facilitates Rust and Swift interop.