adding client suicide & dev mode
This commit is contained in:
parent
7bf6d22709
commit
c3375a6541
@ -41,14 +41,14 @@ impl NavkaClientApp {
|
||||
// 3) Start reading from all keyboards in a background task
|
||||
let mut aggregator = KeyboardAggregator::new(tx.clone());
|
||||
aggregator.init_devices()?; // discover & grab
|
||||
let kb_handle = tokio::spawn(async move {
|
||||
let mut kb_handle = tokio::spawn(async move {
|
||||
if let Err(e) = aggregator.run().await {
|
||||
tracing::error!("KeyboardAggregator failed: {e}");
|
||||
}
|
||||
});
|
||||
|
||||
// 4) Add 30 second suicide for dev mode
|
||||
let suicide_fut = async {
|
||||
let mut suicide_fut = async {
|
||||
if std::env::var_os("NAVKA_DEV_MODE").is_some() {
|
||||
tracing::info!("DEV-mode: will exit in 30 s");
|
||||
tokio::time::sleep(Duration::from_secs(30)).await;
|
||||
@ -59,7 +59,7 @@ impl NavkaClientApp {
|
||||
};
|
||||
|
||||
// 5) Inbound loop: we do something with reports from the server, e.g. logging:
|
||||
let inbound_fut = async {
|
||||
let mut inbound_fut = async {
|
||||
while let Some(report) = inbound.message().await? {
|
||||
tracing::debug!(?report.data, "msg from server");
|
||||
}
|
||||
@ -68,13 +68,13 @@ impl NavkaClientApp {
|
||||
|
||||
// 6) Race the futures
|
||||
tokio::select! {
|
||||
res = inbound_fut => {
|
||||
res = &mut inbound_fut => {
|
||||
tracing::warn!("Inbound stream ended: {res:?}");
|
||||
},
|
||||
res = kb_handle => {
|
||||
res = &mut kb_handle => {
|
||||
tracing::warn!("Keyboard task finished: {res:?}");
|
||||
},
|
||||
res = suicide_fut => {
|
||||
res = &mut suicide_fut => {
|
||||
tracing::warn!("Dev-mode shutdown: {res:?}");
|
||||
},
|
||||
}
|
||||
|
||||
@ -28,12 +28,14 @@ install -Dm755 "$SRC/client/target/release/navka-client" "$HOME/.local/bin/navka
|
||||
mkdir -p "$HOME/.config/systemd/user"
|
||||
cat >"$HOME/.config/systemd/user/navka-client.service" <<'EOF'
|
||||
[Unit]
|
||||
Description=Navka Client (keyboard/mouse -> navka-server)
|
||||
Description=Navka Client
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
ExecStart=/usr/local/bin/navka-client
|
||||
Environment=RUST_LOG=debug
|
||||
Environment=NAVKA_DEV_MODE=1
|
||||
@ -49,5 +51,6 @@ EOF
|
||||
loginctl enable-linger "$ORIG_USER"
|
||||
|
||||
# 8) Call the *user* instance inside the caller’s session
|
||||
sudo -iu "$ORIG_USER" systemctl --user daemon-reload
|
||||
sudo -iu "$ORIG_USER" systemctl --user enable --now navka-client.service
|
||||
sudo -iu "$ORIG_USER" systemctl daemon-reload
|
||||
sudo -iu "$ORIG_USER" systemctl enable --now navka-client.service
|
||||
sudo systemctl restart navka-server
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user