From ae10522e70ec19a443ff395ae9456b1484bc73ee Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 23 Oct 2021 06:56:16 +0530 Subject: [PATCH 1/9] event: Read and Send TOUCHPAD_HOLD gesture event --- src/libinput.rs | 126 +++++++++++++++++++++++++++++++++--------------- src/main.rs | 12 +++-- 2 files changed, 95 insertions(+), 43 deletions(-) diff --git a/src/libinput.rs b/src/libinput.rs index 82e63da..5e6f162 100644 --- a/src/libinput.rs +++ b/src/libinput.rs @@ -2,16 +2,17 @@ use std::{ fs::{File, OpenOptions}, os::unix::prelude::{AsRawFd, FromRawFd, IntoRawFd, OpenOptionsExt, RawFd}, path::Path, - sync::{mpsc}, + sync::mpsc, }; use input::{ event::gesture::GestureSwipeEvent, event::Event, - event::GestureEvent, + event::{gesture::GestureHoldEvent, GestureEvent}, ffi::{ - libinput_event_gesture_get_dx_unaccelerated, libinput_event_gesture_get_dy_unaccelerated, - libinput_event_gesture_get_finger_count, libinput_event_gesture_get_time, + libinput_event_gesture_get_cancelled, libinput_event_gesture_get_dx_unaccelerated, + libinput_event_gesture_get_dy_unaccelerated, libinput_event_gesture_get_finger_count, + libinput_event_gesture_get_time, }, Libinput, LibinputInterface, }; @@ -20,7 +21,7 @@ use serde::{Deserialize, Serialize}; use zvariant::derive::Type; #[derive(Debug, Deserialize, Serialize, Type)] -pub struct CustonSwipeEvent { +pub struct CustomSwipeEvent { pub stage: String, pub fingers: i32, pub dx: f64, @@ -28,9 +29,23 @@ pub struct CustonSwipeEvent { pub time: u32, } +#[derive(Debug, Deserialize, Serialize, Type)] +pub struct CustomHoldEvent { + pub stage: String, + pub fingers: i32, + pub time: u32, + pub is_cancelled: bool, +} + +pub enum CustomGestureEvent { + Swipe(CustomSwipeEvent), + Hold(CustomHoldEvent), +} + struct Interface; impl LibinputInterface for Interface { + #[allow(clippy::bad_bit_mask)] fn open_restricted(&mut self, path: &Path, flags: i32) -> Result { OpenOptions::new() .custom_flags(flags) @@ -47,7 +62,69 @@ impl LibinputInterface for Interface { } } -pub fn libinput_listener(transmitter: mpsc::Sender) { +pub fn handle_swipe(swipe: GestureSwipeEvent, transmitter: &mpsc::Sender) { + let stage = match &swipe { + GestureSwipeEvent::Begin(_) => "Begin", + GestureSwipeEvent::Update(_) => "Update", + GestureSwipeEvent::End(_) => "End", + _ => panic!("Unkown gesture event {:?}", swipe), + }; + + let (fingers, dx, dy, time) = unsafe { + let raw_gesture_event = input::AsRaw::as_raw_mut(&swipe); + ( + libinput_event_gesture_get_finger_count(raw_gesture_event), + libinput_event_gesture_get_dx_unaccelerated(raw_gesture_event), + libinput_event_gesture_get_dy_unaccelerated(raw_gesture_event), + libinput_event_gesture_get_time(raw_gesture_event), + ) + }; + + let swipe = CustomSwipeEvent { + stage: stage.into(), + fingers, + dx, + dy, + time, + }; + + transmitter.send(CustomGestureEvent::Swipe(swipe)).unwrap(); +} + +pub fn handle_hold(hold: GestureHoldEvent, transmitter: &mpsc::Sender) { + let stage = match &hold { + GestureHoldEvent::Begin(_) => "Begin", + GestureHoldEvent::End(_) => "End", + _ => panic!("Unkown gesture event {:?}", hold), + }; + + let (fingers, time, is_cancelled) = unsafe { + let raw_gesture_event = input::AsRaw::as_raw_mut(&hold); + ( + libinput_event_gesture_get_finger_count(raw_gesture_event), + libinput_event_gesture_get_time(raw_gesture_event), + // calling libinput_event_gesture_get_cancelled on begin gesture in error + matches!(hold, GestureHoldEvent::End(_)) + && libinput_event_gesture_get_cancelled(raw_gesture_event) != 0, + ) + }; + + // only send >= 3 finger hold gestures + if fingers < 3 { + return; + } + + let hold = CustomHoldEvent { + stage: stage.into(), + fingers, + time, + is_cancelled, + }; + + transmitter.send(CustomGestureEvent::Hold(hold)).unwrap(); +} + +pub fn libinput_listener(transmitter: mpsc::Sender) { let mut input = Libinput::new_with_udev(Interface); input.udev_assign_seat("seat0").unwrap(); @@ -72,38 +149,11 @@ pub fn libinput_listener(transmitter: mpsc::Sender) { break; } - if let Event::Gesture(GestureEvent::Swipe(swipe)) = event.unwrap() { - let stage = match &swipe { - GestureSwipeEvent::Begin(_) => "Begin", - GestureSwipeEvent::Update(_) => "Update", - GestureSwipeEvent::End(_) => "End", - _ => panic!("Unkown gesture event {:?}", swipe), - }; - - let fingers; - let dx; - let dy; - let time; - - unsafe { - let zz = input::AsRaw::as_raw_mut(&swipe); - fingers = libinput_event_gesture_get_finger_count(zz); - dx = libinput_event_gesture_get_dx_unaccelerated(zz); - dy = libinput_event_gesture_get_dy_unaccelerated(zz); - time = libinput_event_gesture_get_time(zz); - } - { - // println!("fingers: {}, dx: {}, dy: {}", fingers, dx, dy); - - transmitter - .send(CustonSwipeEvent { - stage: stage.into(), - fingers, - dx, - dy, - time, - }) - .unwrap(); + if let Event::Gesture(gesture_event) = event.unwrap() { + match gesture_event { + GestureEvent::Hold(hold) => handle_hold(hold, &transmitter), + GestureEvent::Swipe(swipe) => handle_swipe(swipe, &transmitter), + _ => {} } } } diff --git a/src/main.rs b/src/main.rs index 505494e..bd2084d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,7 +12,10 @@ struct Greeter {} #[dbus_interface(name = "org.gestureImprovements.gestures")] impl Greeter { #[dbus_interface(signal)] - fn touchpad_swipe(&self, event: &libinput::CustonSwipeEvent) -> zbus::Result<()>; + fn touchpad_swipe(&self, event: &libinput::CustomSwipeEvent) -> zbus::Result<()>; + + #[dbus_interface(signal)] + fn touchpad_hold(&self, event: &libinput::CustomHoldEvent) -> zbus::Result<()>; } fn main() { @@ -57,11 +60,10 @@ fn main() { match msg { Ok(msg) => { - // println!("greeted everyone!, {:?}", msg); object_server - .with(path, move |iface: &Greeter| { - iface.touchpad_swipe(&msg).unwrap(); - return Ok(()); + .with(path, move |iface: &Greeter| match &msg { + libinput::CustomGestureEvent::Hold(hold) => iface.touchpad_hold(hold), + libinput::CustomGestureEvent::Swipe(swipe) => iface.touchpad_swipe(swipe), }) .unwrap(); msg_recv += 1; From 4d04c29d6d6c36db6bc7602db8465ef253565da5 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 23 Oct 2021 07:26:22 +0530 Subject: [PATCH 2/9] Update install.sh to restart daemon --- README.md | 7 ++++--- install.sh | 13 +++++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6f6f02e..6791f1f 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,11 @@ sudo usermod -aG input $USER - Inside extracted folder, Run ``` # Without sudo/root -sh install.sh +sh install.sh # Reboot is needed after this + +# ** OR ** to restart daemon, without rebooting +sh install.sh --restart -# Restart system for changes to take an effect -# After restart service will be automatically started by extension ``` ### Build from source diff --git a/install.sh b/install.sh index c0861cb..84d76c9 100644 --- a/install.sh +++ b/install.sh @@ -11,5 +11,14 @@ echo "Installed ..." echo "" echo "Make sure to add user to 'input' group." echo "Run 'sudo usermod -aG input \$USER' to add user to 'input' group." -echo "Restart system for changes to take an effect." -echo "After restart service will be automatically started by extension." +echo "" + +if [[ "$1" = "--restart" ]]; then + systemctl --user daemon-reload + systemctl --user stop gesture_improvements_gesture_daemon.service + systemctl --user start gesture_improvements_gesture_daemon.service +else + echo "Restart system for changes to take an effect." +fi + +echo "Service will be automatically started by extension." \ No newline at end of file From d8d2419d13bf69b5807779c6a3d5221734acb6e4 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 23 Oct 2021 07:27:05 +0530 Subject: [PATCH 3/9] Upload artifatcs from release, instead of creating pre-release --- .github/workflows/prerelease.yaml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 9b33f2e..fb2a4ab 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -3,7 +3,7 @@ name: Pre release on: push: branches: - - main + - "*" paths-ignore: - README.md @@ -32,10 +32,8 @@ jobs: uninstall.sh \ gesture_improvements_gesture_daemon.service - - name: Automatic Releases - uses: marvinpinto/action-automatic-releases@v1.2.1 + - name: Upload archive artifact + uses: actions/upload-artifact@v2 with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - prerelease: true - automatic_release_tag: "git_release" - files: "${{ steps.zipName.outputs.filename }}" + name: ${{ steps.zipName.outputs.filename }}" + path: ${{ steps.zipName.outputs.filename }}" From 9abba406b4c0a9fb2be4c0c3b66feb7d54c77776 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 23 Oct 2021 07:33:18 +0530 Subject: [PATCH 4/9] Upload artifatcs from relase pipeline as well --- .github/workflows/prerelease.yaml | 4 ++-- .github/workflows/release.yaml | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index fb2a4ab..ccd43f4 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -35,5 +35,5 @@ jobs: - name: Upload archive artifact uses: actions/upload-artifact@v2 with: - name: ${{ steps.zipName.outputs.filename }}" - path: ${{ steps.zipName.outputs.filename }}" + name: ${{ steps.zipName.outputs.filename }} + path: ${{ steps.zipName.outputs.filename }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0d7d235..88cc5e1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -34,10 +34,16 @@ jobs: uninstall.sh \ gesture_improvements_gesture_daemon.service + - name: Upload archive artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ steps.zipName.outputs.filename }} + path: ${{ steps.zipName.outputs.filename }} + - name: Automatic Releases uses: marvinpinto/action-automatic-releases@v1.2.1 with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" + repo_token: ${{ secrets.GITHUB_TOKEN }} prerelease: false - automatic_release_tag: "${{ steps.zipName.outputs.tagname }}" - files: "${{ steps.zipName.outputs.filename }}" + automatic_release_tag: ${{ steps.zipName.outputs.tagname }} + files: ${{ steps.zipName.outputs.filename }} From 61fc0b510d9d6bd0934625c3e5fc67a16e0d28e5 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 23 Oct 2021 13:40:02 +0530 Subject: [PATCH 5/9] Remove quotes from artifacts name --- .github/workflows/prerelease.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index ccd43f4..688475c 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -18,7 +18,7 @@ jobs: - name: Create ZipFile Name id: zipName - run: echo "::set-output name=filename::'gnome-x11-gesture-daemon.$(date --iso-8601).$(git rev-parse --short HEAD).zip'" + run: echo "::set-output name=filename::gnome-x11-gesture-daemon.$(date --iso-8601).$(git rev-parse --short HEAD).zip" - name: Install dependencies run: sudo apt update && sudo apt install -y libinput-dev - name: Build From a0e24f66fe687741764343877e2d5ccf2c217b0c Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sun, 24 Oct 2021 01:04:39 +0530 Subject: [PATCH 6/9] Add --version commandline option --- .github/workflows/prerelease.yaml | 4 +++- .github/workflows/release.yaml | 4 +++- Cargo.lock | 2 +- Cargo.toml | 2 +- install.sh | 2 +- src/main.rs | 24 ++++++++++++++++++++++++ 6 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.github/workflows/prerelease.yaml b/.github/workflows/prerelease.yaml index 688475c..694aeb8 100644 --- a/.github/workflows/prerelease.yaml +++ b/.github/workflows/prerelease.yaml @@ -22,7 +22,9 @@ jobs: - name: Install dependencies run: sudo apt update && sudo apt install -y libinput-dev - name: Build - run: cargo build --release + run: | + export GIT_HEAD_SHA=$(git rev-parse HEAD) + cargo build --release - name: Create Zip run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 88cc5e1..e8d46e3 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -24,7 +24,9 @@ jobs: - name: Install dependencies run: sudo apt update && sudo apt install -y libinput-dev - name: Build - run: cargo build --release + run: | + export GIT_HEAD_SHA=$(git rev-parse HEAD) + cargo build --release - name: Create Zip run: | diff --git a/Cargo.lock b/Cargo.lock index 8ca5b76..eeabd89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -224,7 +224,7 @@ dependencies = [ [[package]] name = "gesture_improvements_gesture_daemon" -version = "0.1.0" +version = "0.1.3" dependencies = [ "input", "libc", diff --git a/Cargo.toml b/Cargo.toml index da15753..dc388f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gesture_improvements_gesture_daemon" -version = "0.1.0" +version = "0.1.3" authors = ["Harshad Gavali "] edition = "2018" diff --git a/install.sh b/install.sh index 84d76c9..32ab83d 100644 --- a/install.sh +++ b/install.sh @@ -13,7 +13,7 @@ echo "Make sure to add user to 'input' group." echo "Run 'sudo usermod -aG input \$USER' to add user to 'input' group." echo "" -if [[ "$1" = "--restart" ]]; then +if [ "$1" = "--restart" ]; then systemctl --user daemon-reload systemctl --user stop gesture_improvements_gesture_daemon.service systemctl --user start gesture_improvements_gesture_daemon.service diff --git a/src/main.rs b/src/main.rs index bd2084d..3a176e1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,7 +18,31 @@ impl Greeter { fn touchpad_hold(&self, event: &libinput::CustomHoldEvent) -> zbus::Result<()>; } +fn display_info(arguments: Vec) { + const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); + const COMMIT: Option<&'static str> = option_env!("GIT_HEAD_SHA"); + + match arguments[1].as_str() { + "--version" => { + println!("version: {}", VERSION.unwrap_or("unknown")); + if let Some(commit) = COMMIT { + println!("commit: {}", commit) + } + } + + _ => { + println!("unknown args, {:?}", arguments); + } + } +} + fn main() { + let arguments: Vec = std::env::args().collect(); + if arguments.len() > 1 { + display_info(arguments); + return; + } + let (transmitter, reciever) = mpsc::channel(); let connection = zbus::Connection::new_session().unwrap(); From c6dfac6f103d1558794c6ebe10999029b13d8684 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 20 Nov 2021 17:20:45 +0530 Subject: [PATCH 7/9] pinch-gesture: Add support for pinch gesture --- Dockerfile | 2 +- src/libinput.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++----- src/main.rs | 4 ++++ 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index cbc7e20..94fc62a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:slim-bullseye +FROM rust:slim WORKDIR /pwd diff --git a/src/libinput.rs b/src/libinput.rs index 5e6f162..c041aa9 100644 --- a/src/libinput.rs +++ b/src/libinput.rs @@ -6,12 +6,14 @@ use std::{ }; use input::{ - event::gesture::GestureSwipeEvent, - event::Event, - event::{gesture::GestureHoldEvent, GestureEvent}, + event::{ + gesture::{GestureHoldEvent, GesturePinchEvent, GestureSwipeEvent}, + Event, GestureEvent, + }, ffi::{ - libinput_event_gesture_get_cancelled, libinput_event_gesture_get_dx_unaccelerated, - libinput_event_gesture_get_dy_unaccelerated, libinput_event_gesture_get_finger_count, + libinput_event_gesture_get_angle_delta, libinput_event_gesture_get_cancelled, + libinput_event_gesture_get_dx_unaccelerated, libinput_event_gesture_get_dy_unaccelerated, + libinput_event_gesture_get_finger_count, libinput_event_gesture_get_scale, libinput_event_gesture_get_time, }, Libinput, LibinputInterface, @@ -37,9 +39,19 @@ pub struct CustomHoldEvent { pub is_cancelled: bool, } +#[derive(Debug, Deserialize, Serialize, Type)] +pub struct CustomPinchEvent { + pub stage: String, + pub fingers: i32, + pub angle_delta: f64, + pub scale: f64, + pub time: u32, +} + pub enum CustomGestureEvent { Swipe(CustomSwipeEvent), Hold(CustomHoldEvent), + Pinch(CustomPinchEvent), } struct Interface; @@ -124,6 +136,40 @@ pub fn handle_hold(hold: GestureHoldEvent, transmitter: &mpsc::Sender) { + let stage = match &pinch { + GesturePinchEvent::Begin(_) => "Begin", + GesturePinchEvent::Update(_) => "Update", + GesturePinchEvent::End(_) => "End", + _ => panic!("Unkown gesture event {:?}", pinch), + }; + + let (fingers, angle_delta, scale, time) = unsafe { + let raw_gesture_event = input::AsRaw::as_raw_mut(&pinch); + ( + libinput_event_gesture_get_finger_count(raw_gesture_event), + libinput_event_gesture_get_angle_delta(raw_gesture_event), + libinput_event_gesture_get_scale(raw_gesture_event), + libinput_event_gesture_get_time(raw_gesture_event), + ) + }; + + // only send >= 3 finger pinch gestures + if fingers < 3 { + return; + } + + let pinch = CustomPinchEvent { + stage: stage.into(), + fingers, + angle_delta, + scale, + time, + }; + + transmitter.send(CustomGestureEvent::Pinch(pinch)).unwrap(); +} + pub fn libinput_listener(transmitter: mpsc::Sender) { let mut input = Libinput::new_with_udev(Interface); @@ -153,6 +199,7 @@ pub fn libinput_listener(transmitter: mpsc::Sender) { match gesture_event { GestureEvent::Hold(hold) => handle_hold(hold, &transmitter), GestureEvent::Swipe(swipe) => handle_swipe(swipe, &transmitter), + GestureEvent::Pinch(pinch) => handle_pinch(pinch, &transmitter), _ => {} } } diff --git a/src/main.rs b/src/main.rs index 3a176e1..a0579b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,6 +16,9 @@ impl Greeter { #[dbus_interface(signal)] fn touchpad_hold(&self, event: &libinput::CustomHoldEvent) -> zbus::Result<()>; + + #[dbus_interface(signal)] + fn touchpad_pinch(&self, event: &libinput::CustomPinchEvent) -> zbus::Result<()>; } fn display_info(arguments: Vec) { @@ -88,6 +91,7 @@ fn main() { .with(path, move |iface: &Greeter| match &msg { libinput::CustomGestureEvent::Hold(hold) => iface.touchpad_hold(hold), libinput::CustomGestureEvent::Swipe(swipe) => iface.touchpad_swipe(swipe), + libinput::CustomGestureEvent::Pinch(pinch) => iface.touchpad_pinch(pinch), }) .unwrap(); msg_recv += 1; From 146768d764b6691c685da0b056227391304db9a2 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 20 Nov 2021 17:30:37 +0530 Subject: [PATCH 8/9] Update dependencies --- Cargo.lock | 154 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 6 +-- 2 files changed, 79 insertions(+), 81 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eeabd89..3aade91 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -47,15 +47,9 @@ checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" [[package]] name = "cc" -version = "1.0.69" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70cc2f62c6ce1868963827bd677764c62d07c3d9a3e1fb1177ee1a9ab199eb2" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" [[package]] name = "cfg-if" @@ -115,9 +109,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adc00f486adfc9ce99f77d717836f0c5aa84965eb0b4f051f4e83f7cab53f8b" +checksum = "a12aa0eb539080d55c3f2d45a67c3b58b6b0773c1a3ca2dfec66d58c97fd66ca" dependencies = [ "futures-channel", "futures-core", @@ -130,9 +124,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74ed2411805f6e4e3d9bc904c95d5d423b89b3b25dc0250aa74729de20629ff9" +checksum = "5da6ba8c3bb3c165d3c7319fc1cc8304facf1fb8db99c5de877183c08a273888" dependencies = [ "futures-core", "futures-sink", @@ -140,15 +134,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af51b1b4a7fdff033703db39de8802c673eb91855f2e0d47dcf3bf2c0ef01f99" +checksum = "88d1c26957f23603395cd326b0ffe64124b818f4449552f960d815cfba83a53d" [[package]] name = "futures-executor" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0d535a57b87e1ae31437b892713aee90cd2d7b0ee48727cd11fc72ef54761c" +checksum = "45025be030969d763025784f7f355043dc6bc74093e4ecc5000ca4dc50d8745c" dependencies = [ "futures-core", "futures-task", @@ -157,9 +151,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0e06c393068f3a6ef246c75cdca793d6a46347e75286933e5e75fd2fd11582" +checksum = "522de2a0fe3e380f1bc577ba0474108faf3f6b18321dbf60b3b9c39a75073377" [[package]] name = "futures-lite" @@ -178,9 +172,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54913bae956fb8df7f4dc6fc90362aa72e69148e3f39041fbe8742d21e0ac57" +checksum = "18e4a4b95cea4b4ccbcf1c5675ca7c4ee4e9e75eb79944d07defde18068f79bb" dependencies = [ "autocfg", "proc-macro-hack", @@ -191,21 +185,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f30aaa67363d119812743aa5f33c201a7a66329f97d1a887022971feea4b53" +checksum = "36ea153c13024fe480590b3e3d4cad89a0cfacecc24577b68f86c6ced9c2bc11" [[package]] name = "futures-task" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe54a98670017f3be909561f6ad13e810d9a51f3f061b902062ca3da80799f2" +checksum = "1d3d00f4eddb73e498a54394f228cd55853bdf059259e8e7bc6e69d408892e99" [[package]] name = "futures-util" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eb846bfd58e44a8481a00049e82c43e0ccb5d61f8dc071057cb19249dd4d78" +checksum = "36568465210a3a6ee45e1f165136d68671471a501e632e9a98d96872222b5481" dependencies = [ "autocfg", "futures-channel", @@ -257,18 +251,18 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee0328b1209d157ef001c94dd85b4f8f64139adb0eac2659f4b08382b2f474d" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "libc" -version = "0.2.98" +version = "0.2.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" +checksum = "fbe5e23404da5b4f555ef85ebed98fb4083e55a00c317800bc2a50ede9f3d219" [[package]] name = "libudev-sys" @@ -286,14 +280,23 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" + +[[package]] +name = "memoffset" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9" +dependencies = [ + "autocfg", +] [[package]] name = "nb-connect" @@ -307,15 +310,15 @@ dependencies = [ [[package]] name = "nix" -version = "0.17.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363" +checksum = "f5e06129fb611568ef4e868c14b326274959aa70ff7776e9d55323531c374945" dependencies = [ "bitflags", "cc", - "cfg-if 0.1.10", + "cfg-if", "libc", - "void", + "memoffset", ] [[package]] @@ -344,17 +347,17 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "12295df4f294471248581bc09bef3c38a5e46f1e36d6a37353621a0c6c357e1f" [[package]] name = "polling" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92341d779fa34ea8437ef4d82d440d5e1ce3f3ff7f824aa64424cd481f9a1f25" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "log", "wepoll-ffi", @@ -372,9 +375,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fdbd1df62156fbc5945f4762632564d7d038153091c3fcf1067f6aef7cff92" +checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" dependencies = [ "thiserror", "toml", @@ -394,18 +397,18 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.28" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ "unicode-xid", ] [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2", ] @@ -418,18 +421,18 @@ checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "f12d06de37cf59146fbdecab66aa99f9fe4f78722e3607577a5375d66bd0c913" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.130" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ "proc-macro2", "quote", @@ -449,15 +452,15 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "socket2" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" dependencies = [ "libc", "winapi", @@ -471,9 +474,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "syn" -version = "1.0.74" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" +checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" dependencies = [ "proc-macro2", "quote", @@ -482,18 +485,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93119e4feac1cbe6c798c34d3a53ea0026b0b1de6a120deef895137c0529bfe2" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.26" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -526,12 +529,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "waker-fn" version = "1.1.0" @@ -571,9 +568,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "zbus" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2326acc379a3ac4e34b794089f5bdb17086bf29a5fdf619b7b4cc772dc2e9dad" +checksum = "e5983c3d035549ab80db67c844ec83ed271f7c1f2546fd9577c594d34c1b6c85" dependencies = [ "async-io", "byteorder", @@ -594,9 +591,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a482c56029e48681b89b92b5db3c446db0915e8dd1052c0328a574eda38d5f93" +checksum = "bce54ac7b2150a2fa21ad5842a7470ce2288158d7da1f9bfda8ad455a1c59a97" dependencies = [ "proc-macro-crate 0.1.5", "proc-macro2", @@ -606,12 +603,13 @@ dependencies = [ [[package]] name = "zvariant" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa9a0fc1c0ea8400723fdaddd3b381147d50991a40da39e6ea935b7d63204722" +checksum = "e1a9373dead84d640ccf5798f2928917e6aa1ab3f130751406bb13e0a9dd9913" dependencies = [ "byteorder", "enumflags2", + "libc", "serde", "static_assertions", "zvariant_derive", @@ -619,11 +617,11 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf1d7953d902d1bad61878a7c79bd224d4a83bdfc93c84cc703ec760b8b70e9" +checksum = "46ee71e0e88747ec582d290dbe98ff7907ff28770c7a35f16da41e5e6f1f4fa3" dependencies = [ - "proc-macro-crate 1.0.0", + "proc-macro-crate 1.1.0", "proc-macro2", "quote", "syn", diff --git a/Cargo.toml b/Cargo.toml index dc388f0..e8bb2bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] input = "0.7" -libc = "0.2.98" +libc = "0.2.107" zbus = "1.9" -zvariant = "2.7.0" -serde = "1.0.126" \ No newline at end of file +zvariant = "2.9" +serde = "1.0.130" \ No newline at end of file From 1ae1e7149476e85728d9803d0c040fa07b272547 Mon Sep 17 00:00:00 2001 From: Harshad Gavali Date: Sat, 20 Nov 2021 18:13:32 +0530 Subject: [PATCH 9/9] dbus-service: Add method to get version info --- src/main.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index a0579b0..df776de 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,6 +19,11 @@ impl Greeter { #[dbus_interface(signal)] fn touchpad_pinch(&self, event: &libinput::CustomPinchEvent) -> zbus::Result<()>; + + fn get_version(&mut self) -> String { + const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); + VERSION.unwrap_or("unknown").into() + } } fn display_info(arguments: Vec) { @@ -34,7 +39,13 @@ fn display_info(arguments: Vec) { } _ => { - println!("unknown args, {:?}", arguments); + println!( + "Unknown argument: {:}\n\ + Supported arguments:\n\ + \t--version\tdisplay version information\n\ + \nRun without arguments to start dbus service", + &arguments[1 .. arguments.len()].join(" ") + ); } } }