Commit Graph

32 Commits

Author SHA1 Message Date
Ferdinand Schober
bea7d6f8a5 Allow input capture & emulation being disabled (#158)
* Input capture and emulation can now be disabled and will prompt the user to enable again.

* Improved error handling to deliver more useful error messages
2024-07-16 20:34:46 +02:00
Ferdinand Schober
b6b16063a8 Configurable emulation backend (#151) 2024-07-01 20:09:16 +02:00
Ferdinand Schober
9cbe1ed8d8 fix release bind message 2024-06-30 14:41:16 +02:00
Ferdinand Schober
3528ef4fae Configurable capture backend (#150)
capture backend can now be configured via the `capture_backend` cli argument / config entry
2024-06-29 00:10:36 +02:00
Ferdinand Schober
f7edfecba9 add tests for capture and emulation 2024-04-11 13:53:49 +02:00
Ferdinand Schober
9e56c546cd make release bind configurable (#95)
closes #85
2024-03-18 09:20:28 +01:00
Ferdinand Schober
d90eb0cd0f Activate on startup (#70)
Frontends are now properly synced among each other and on startup the correct state is reflected.

Closes #75 
Closes #68
2024-01-16 12:59:39 +01:00
Ferdinand Schober
64e3bf3ff4 release stuck keys (#53)
Keys are now released when
- A client disconnects and still has pressed keys
- A client disconnects through CTLR+ALT+SHIFT+WIN
- Lan Mouse terminates with keys still being pressed through a remote client

This is also fixes an issue caused by KDE's implementation of the remote desktop portal backend:
Keys are not correctly released when a remote desktop session is closed while keys are still pressed,
causing them to be permanently stuck until kwin is restarted.

This workaround remembers all pressed keys and releases them when lan-mouse exits or a device disconnects.

closes #15
2023-12-31 15:42:29 +01:00
Ferdinand Schober
e155819542 unix: send SIGTERM instead of killing the service (#59) 2023-12-27 19:56:43 +01:00
Ferdinand Schober
d3fed1b769 enable gtk frontend in windows (#58)
The gtk frontend can now be built in windows!
The github workflow is updated to build GTK and add it to the releases section.
2023-12-24 18:00:59 +01:00
Ferdinand Schober
cdd3a3b818 Split tasks - event loop now properly asynchronous (#57)
DNS, etc. does no longer block the event loop
2023-12-23 14:46:38 +01:00
Ferdinand Schober
f5a0ff4f3a Add a dummy backend 2023-12-17 19:33:40 +01:00
Ferdinand Schober
5a7e0cf89c formatting 2023-12-09 00:43:54 +01:00
Ferdinand Schober
56e5f7a30d Background service (#43)
better handling of background-service: lan-mouse can now be run without a gui by specifying --daemon as an argument.
Otherwise the servic will be run as a child process and correctly terminate when the window is closed / frontend exits.

Closes #38
2023-12-09 00:36:01 +01:00
Ferdinand Schober
b01f7c2793 move server to src/ 2023-12-03 22:37:41 +01:00
Ferdinand Schober
74eebc07d8 Libei support - input emulation (#33)
Add support for input emulation through libei!
2023-12-03 21:56:01 +01:00
Ferdinand Schober
be0fe9f2d9 Support event consumer on KDE! (portal backend) (#31)
* Support event consumer on KDE! (portal backend)

Support for KDE event emulation using the remote-desktop xdg-desktop-portal

* fix scrolling (TODO: smooth / kinetic scrolling)

* windows: fix compilation errors

* Update README.md
2023-10-13 13:57:33 +02:00
Ferdinand Schober
ab2514e508 Async (#30)
- manual eventloop now replaced by asycn-await using the tokio runtime
- dns no longer blocks the event loop
- simplifies logic
- makes xdg-desktop-portal easier to integrate
2023-10-11 14:52:18 +02:00
Ferdinand Schober
06725f4b14 Frontend improvement (#27)
* removed redundant dns lookups
* frontend now correctly reflects the state of the backend
* config.toml is loaded when starting gtk frontend
2023-09-25 13:03:17 +02:00
Ferdinand Schober
d042c0aa4a Libadwaita gui (#19)
Major Update: Functional GUI Frontend!
2023-09-20 15:23:33 +02:00
Ferdinand Schober
1a4d0e05be Epoll (#20)
major update:
- remove threading overhead by resorting to an event driven design with mio as a backend for epoll
- Clients can now have an arbitrary amount of ip adresses and lan-mouse will automatically choose the correct one
- -> seemless switching between ethernet and wifi
- cli frontend + frontend adapter for future frontends
2023-09-19 19:12:47 +02:00
Ferdinand Schober
57b0d898c1 better error handling for port in use (#10) 2023-06-10 16:02:24 +02:00
Ferdinand Schober
225ef818a2 Initial Hotplug support (#8)
This allows to dynamically add clients when an event is received from an unknown IP address.

The user is asked to confirm any unknown connection from new clients.

Currently the back-ends for event producing and consuming are not yet notified, so events will not be received and sent to the newly created clients.
2023-06-10 15:26:48 +02:00
Ferdinand Schober
0feb1350a9 update example config + add help message for releasing mouse (#7) 2023-04-05 08:44:17 +02:00
Ferdinand Schober
a2d2e904f8 support for cmdline args and better error handling (#4)
* support for cmdline args and better error handling

* make config.toml optional

* dont abuse panic for error handling

* update doc

* more panics removed

* more unwraps removed
2023-02-18 04:03:10 +01:00
Ferdinand Schober
4c66b37a2f enable conditional compilation for all backends
To reduce binary size one can now enable only specific backends, e.g.
wayland or x11 via cargo features

Additionally adds stubs for libei and xdg-desktop-portal backends
2023-02-17 13:06:13 +01:00
Ferdinand Schober
437a599504 formatting 2023-02-14 00:55:02 +01:00
Ferdinand Schober
00f52923b8 fix windows build 2023-02-13 16:50:11 +01:00
Ferdinand Schober
d4d8ebbaeb add session detection 2023-02-12 22:37:18 +01:00
Ferdinand Schober
70b484878e initial windows support 2023-02-12 19:04:28 +01:00
Ferdinand Schober
f545fe2686 Abstract Event Types into a general struct
Ground work for supporting different input / emulation backends
2023-02-08 00:41:25 +01:00
Ferdinand Schober
5222f54eee major refactor
every instance of lan-mouse can now simultaneously send and receive
events
2023-01-30 19:15:58 +01:00