navka -> lesavka migration

This commit is contained in:
Brad Stein 2025-06-23 07:18:26 -05:00
parent 90b23145b6
commit 3f0eb0cbbe
18 changed files with 41 additions and 41 deletions

View File

@ -1,9 +1,9 @@
[[bin]]
name = "navka-client"
name = "lesavka-client"
path = "src/main.rs"
[package]
name = "navka_client"
name = "lesavka_client"
version = "0.3.0"
edition = "2024"
@ -12,7 +12,7 @@ tokio = { version = "1.45", features = ["full", "fs", "rt-mult
tonic = { version = "0.13", features = ["transport"] }
tokio-stream = { version = "0.1", features = ["sync"] }
anyhow = "1.0"
navka_common = { path = "../common" }
lesavka_common = { path = "../common" }
tracing = { version = "0.1", features = ["std"] }
tracing-subscriber = { version = "0.3", features = ["fmt", "env-filter"] }
tracing-appender = "0.2"
@ -29,5 +29,5 @@ raw-window-handle = "0.6"
prost-build = "0.13"
[lib]
name = "navka_client"
name = "lesavka_client"
path = "src/lib.rs"

View File

@ -9,12 +9,12 @@ use tokio_stream::{wrappers::BroadcastStream, StreamExt};
use tonic::Request;
use tracing::{debug, error, info, warn};
use navka_common::navka::{relay_client::RelayClient, KeyboardReport, MouseReport, MonitorRequest, VideoPacket};
use lesavka_common::lesavka::{relay_client::RelayClient, KeyboardReport, MouseReport, MonitorRequest, VideoPacket};
use navka_client::input::inputs::InputAggregator;
use navka_client::output::video::MonitorWindow;
use lesavka_client::input::inputs::InputAggregator;
use lesavka_client::output::video::MonitorWindow;
pub struct NavkaClientApp {
pub struct LesavkaClientApp {
aggregator: Option<InputAggregator>,
server_addr: String,
dev_mode: bool,
@ -22,7 +22,7 @@ pub struct NavkaClientApp {
mou_tx: broadcast::Sender<MouseReport>,
}
impl NavkaClientApp {
impl LesavkaClientApp {
pub fn new() -> Result<Self> {
let dev_mode = std::env::var("NAVKA_DEV_MODE").is_ok();
let server_addr = std::env::args()

View File

@ -5,7 +5,7 @@ use evdev::{Device, EventType, KeyCode, RelativeAxisCode};
use tokio::{sync::broadcast::Sender, time::{interval, Duration}};
use tracing::{debug, info};
use navka_common::navka::{KeyboardReport, MouseReport};
use lesavka_common::lesavka::{KeyboardReport, MouseReport};
use super::{keyboard::KeyboardAggregator, mouse::MouseAggregator,
camera::CameraCapture, microphone::MicrophoneCapture};

View File

@ -5,7 +5,7 @@ use evdev::{Device, EventType, InputEvent, KeyCode};
use tokio::sync::broadcast::Sender;
use tracing::{debug, error, info, warn};
use navka_common::navka::KeyboardReport;
use lesavka_common::lesavka::KeyboardReport;
use super::keymap::{is_modifier, keycode_to_usage};

View File

@ -4,7 +4,7 @@ use evdev::{Device, EventType, InputEvent, KeyCode, RelativeAxisCode};
use tokio::sync::broadcast::{self, Sender};
use tracing::{debug, error, warn};
use navka_common::navka::MouseReport;
use lesavka_common::lesavka::MouseReport;
pub struct MouseAggregator {
dev: Device,

View File

@ -6,4 +6,4 @@ pub mod app;
pub mod input;
pub mod output;
pub use app::NavkaClientApp;
pub use app::LesavkaClientApp;

View File

@ -8,15 +8,15 @@ use tracing_appender::non_blocking;
use tracing_appender::non_blocking::WorkerGuard;
use tracing_subscriber::{filter::EnvFilter, fmt, prelude::*};
use navka_client::NavkaClientApp;
use lesavka_client::LesavkaClientApp;
#[tokio::main]
async fn main() -> Result<()> {
/*------------- common filter & stderr layer ------------------------*/
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| {
EnvFilter::new(
"navka_client=trace,\
navka_server=trace,\
"lesavka_client=trace,\
lesavka_server=trace,\
tonic=debug,\
h2=debug,\
tower=debug",
@ -33,7 +33,7 @@ async fn main() -> Result<()> {
/*------------- subscriber setup -----------------------------------*/
if dev_mode {
let log_path = Path::new("/tmp").join("navka-client.log");
let log_path = Path::new("/tmp").join("lesavka-client.log");
// file → nonblocking writer (+ guard)
let file = OpenOptions::new()
@ -56,7 +56,7 @@ async fn main() -> Result<()> {
.with(file_layer)
.init();
tracing::info!("navka-client running in DEV mode → {}", log_path.display());
tracing::info!("lesavka-client running in DEV mode → {}", log_path.display());
} else {
tracing_subscriber::registry()
.with(env_filter)
@ -65,6 +65,6 @@ async fn main() -> Result<()> {
}
/*------------- run the actual application -------------------------*/
let mut app = NavkaClientApp::new()?;
let mut app = LesavkaClientApp::new()?;
app.run().await
}

View File

@ -3,7 +3,7 @@
use gstreamer as gst;
use gstreamer_app as gst_app;
use gst::prelude::*;
use navka_common::navka::VideoPacket;
use lesavka_common::lesavka::VideoPacket;
use winit::{
event_loop::EventLoop,
window::{Window, WindowBuilder},

View File

@ -1,5 +1,5 @@
[package]
name = "navka-common"
name = "lesavka-common"
version = "0.2.0"
edition = "2024"
build = "build.rs"
@ -12,5 +12,5 @@ prost = "0.13"
tonic-build = { version = "0.13", features = ["prost"] }
[lib]
name = "navka_common"
name = "lesavka_common"
path = "src/lib.rs"

View File

@ -4,6 +4,6 @@ fn main() {
tonic_build::configure()
.build_server(true)
.build_client(true)
.compile_protos(&["proto/navka.proto"], &["proto"])
.compile_protos(&["proto/lesavka.proto"], &["proto"])
.expect("prost build failed");
}

View File

@ -1,5 +1,5 @@
syntax = "proto3";
package navka;
package lesavka;
// smaller, fixed-size payloads -> less allocation and simpler decoding
message KeyboardReport { bytes data = 1; } // exactly 8 bytes

View File

@ -1,6 +1,6 @@
// Re-export the code generated by build.rs (navka.rs, relay.rs, etc.)
// Re-export the code generated by build.rs (lesavka.rs, relay.rs, etc.)
// common/src/lib.rs
pub mod navka {
include!(concat!(env!("OUT_DIR"), "/navka.rs"));
pub mod lesavka {
include!(concat!(env!("OUT_DIR"), "/lesavka.rs"));
}

View File

@ -28,7 +28,7 @@ sudo install -Dm755 "$SRC/client/target/release/lesavka-client" /usr/local/bin/l
# 6. systemd service for system scope: /etc/systemd/system/lesavka-client.service
sudo tee /etc/systemd/system/lesavka-client.service >/dev/null <<'EOF'
[Unit]
Description=Navka Client
Description=Lesavka Client
After=network-online.target
Wants=network-online.target

View File

@ -34,8 +34,8 @@ echo 0x0200 >"$G/bcdUSB"
mkdir -p "$G/strings/0x409"
echo "$(cat /proc/sys/kernel/random/uuid)" >"$G/strings/0x409/serialnumber"
echo "Navka" >"$G/strings/0x409/manufacturer"
echo "Navka Composite" >"$G/strings/0x409/product"
echo "Lesavka" >"$G/strings/0x409/manufacturer"
echo "Lesavka Composite" >"$G/strings/0x409/product"
# ----------------------- HID keyboard (usb0) -----------------------
mkdir -p "$G/functions/hid.usb0"

View File

@ -1,9 +1,9 @@
[[bin]]
name = "navka-server"
name = "lesavka-server"
path = "src/main.rs"
[package]
name = "navka_server"
name = "lesavka_server"
version = "0.2.0"
edition = "2024"
@ -12,7 +12,7 @@ tokio = { version = "1.45", features = ["full", "fs"] }
tokio-stream = "0.1"
tonic = { version = "0.13", features = ["transport"] }
anyhow = "1.0"
navka_common = { path = "../common" }
lesavka_common = { path = "../common" }
tracing = { version = "0.1", features = ["std"] }
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
libc = "0.2"

View File

@ -1,4 +1,4 @@
//! navka-server — receive HidReport and write to /dev/hidg0
//! lesavka-server — receive HidReport and write to /dev/hidg0
// sever/src/main.rs
#![forbid(unsafe_code)]
@ -12,9 +12,9 @@ use tracing::{error, info, trace, warn};
use tracing_subscriber::{fmt, EnvFilter};
use udev::{Enumerator, MonitorBuilder};
use navka_server::{video, usb_reset};
use lesavka_server::{video, usb_reset};
use navka_common::navka::{
use lesavka_common::lesavka::{
relay_server::{Relay, RelayServer},
KeyboardReport, MouseReport,
MonitorRequest, VideoPacket,
@ -149,7 +149,7 @@ async fn main() -> anyhow::Result<()> {
/* logging */
fmt().with_env_filter(
EnvFilter::try_from_default_env()
.unwrap_or_else(|_| EnvFilter::new("navka_server=info")),
.unwrap_or_else(|_| EnvFilter::new("lesavka_server=info")),
)
.init();
@ -172,7 +172,7 @@ async fn main() -> anyhow::Result<()> {
ms: Arc::new(Mutex::new(ms)),
};
println!("🌐 navka-server listening on 0.0.0.0:50051");
println!("🌐 lesavka-server listening on 0.0.0.0:50051");
Server::builder()
.add_service(RelayServer::new(handler))
.serve(([0, 0, 0, 0], 50051).into())

View File

@ -4,7 +4,7 @@ use anyhow::Context;
use gstreamer as gst;
use gstreamer_app as gst_app;
use gst::prelude::*;
use navka_common::navka::VideoPacket;
use lesavka_common::lesavka::VideoPacket;
use tokio_stream::wrappers::ReceiverStream;
use tonic::Status;

View File

@ -1,7 +1,7 @@
#[tokio::test]
async fn hid_roundtrip() {
use navka_common::navka::*;
use navka_server::RelaySvc; // export the struct in lib.rs
use lesavka_common::lesavka::*;
use lesavka_server::RelaySvc; // export the struct in lib.rs
let svc = RelaySvc::default();
let (mut cli, srv) = tonic::transport::Channel::balance_channel(1);
tokio::spawn(tonic::transport::server::Server::builder()