Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@
[submodule "libs/libyuv-sys"]
path = libs/libyuv-sys
url = https://github.com/MahitMehta/libyuv-sys.git
[submodule "libs/scrap"]
path = libs/scrap
url = https://github.com/MahitMehta/scrap.git
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ members = [
exclude = [ "libs" ]

[workspace.package]
version = "0.1.16"
version = "0.1.17"
authors = ["Mahit Mehta", "Marco Ngai"]
license = "GPL-3.0-only"
edition = "2021"
1 change: 1 addition & 0 deletions libs/scrap
Submodule scrap added at de3cd4
8 changes: 5 additions & 3 deletions linux/debian/mrial_server.service
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
[Unit]
Description=Mrial Server
After=syslog.target network.target network-online.target sshd.service http-daem>
After=syslog.target network.target network-online.target sshd.service
Wants=network-online.target

[Service]
Type=simple
Restart=always
RestartSec=10
RestartSec=1s
StartLimitIntervalSec=15s
StartLimitBurst=3
ExecStart=/var/lib/mrial_server/scripts/startup.sh

[Install]
WantedBy=default.target
WantedBy=multi-user.target
5 changes: 2 additions & 3 deletions linux/debian/startup.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash

# Uncomment if using LightDM
# export XAUTHORITY=/var/lib/lightdm/.Xauthority
export DISPLAY=:0
export RUST_LOG=debug

/usr/bin/mrial_server
6 changes: 4 additions & 2 deletions mrial_server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ version.workspace = true

[dependencies]
futures = { version = "0.3.29", features = ["thread-pool", "executor"]}
scrap = "0.5"
# scrap = "0.5"
scrap = { path = "../libs/scrap" }
tokio = { version = "1.34.0", features = ["full"]}
mouse-rs = "0.4.2"
enigo = "0.2.0-rc2"
Expand Down Expand Up @@ -42,4 +43,5 @@ assets = [
["../target/release/mrial_server", "usr/bin/mrial_server", "755"],
["../linux/debian/*", "var/lib/mrial_server/scripts/", "755"]
]
maintainer-scripts = "../linux/debian"
maintainer-scripts = "../linux/debian"
systemd-units = { enable = true }
10 changes: 9 additions & 1 deletion mrial_server/src/audio/linux.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::conn::Connection;

use super::{AudioEncoder, AudioServerThread, IAudioController};
use log::{debug};
use mrial_proto::*;

use pipewire as pw;
Expand Down Expand Up @@ -39,7 +40,14 @@ impl IAudioController for AudioServerThread {
// 1. systemctl --user restart pipewire.service
// 2. "systemctl --user restart pipewire-pulse.service"
// 3. pactl load-module module-null-sink media.class=Audio/Sink sink_name=mrial_sink channel_map=stereo
let core = context.connect(None).unwrap();
let core = match context.connect(None) {
Ok(core) => core,
Err(e) => {
debug!("Failed to connect to PipeWire Context: {}", e);
// TODO: Should attempt to reconnect
return;
}
};

let data = UserData {
format: Default::default(),
Expand Down
9 changes: 8 additions & 1 deletion mrial_server/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,14 @@ async fn main() {
pretty_env_logger::init_timed();
let conn: Connection = Connection::new();

let mut video_server = VideoServerThread::new(conn.clone());
let mut video_server = match VideoServerThread::new(conn.clone()) {
Ok(server) => server,
Err(e) => {
log::error!("Failed to start Video Server: {}", e);
return;
}
};

let audio_server = AudioServerThread::new();

audio_server.run(conn);
Expand Down
11 changes: 10 additions & 1 deletion mrial_server/src/video/display.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
#[cfg(target_os = "linux")]
use xrandr::{ScreenResources, XHandle};
use xrandr::XrandrError;

pub struct DisplayMeta {}

impl DisplayMeta {
#[cfg(target_os = "linux")]
pub fn get_display_resolutions() -> Result<(Vec<u16>, Vec<u16>), xrandr::XrandrError> {
pub fn get_current_resolution() -> Result<(usize, usize), XrandrError> {
let mut handle = XHandle::open().unwrap();
let mon1 = &handle.monitors()?[0];

Ok((mon1.width_px as usize, mon1.height_px as usize))
}

#[cfg(target_os = "linux")]
pub fn get_display_resolutions() -> Result<(Vec<u16>, Vec<u16>), xrandr::XrandrError> {
let mut handle = XHandle::open().unwrap();
// let mon1 = &handle.monitors()?[0];

let mut widths: Vec<u16> = Vec::new();
let mut heights: Vec<u16> = Vec::new();

Expand Down
Loading
Loading