Commit graph

50 commits

Author SHA1 Message Date
sithlord48
857326b274 refactor: rename PlatformScreen::mapClientScrollDirection -> PlatformScreen::applyClientScrollModifier
prepare for horizontal scroll support by having it handle pairs of x and y values
2026-02-06 12:51:39 +00:00
Johannes Berg
f065979b3f Fix: detect key repeat in libei input
For libei, there's no indication that a key is repeated.
However, sending repeated key down events (DKDN instead
of DKRP for the synergy protocol) can be confusing to
clients, which then causes issues like in #7971.

Detect repeated key down events in EiScreen server and
send them to the client with the repeat flag set, so in
e.g. synergy that causes the DKRP messages, to be less
confusing.

For me this fixes an issue where the synergy client is
creating a USB device, which requires repeated events
to be entirely dropped since the host OS where the USB
device is connected will do its own repeat when a key
is held down.
2026-01-30 12:19:29 +00:00
sithlord48
ecb03297fd refactor: EiScreen Sonar cleanup for new clipboard items 2025-11-20 07:57:31 -05:00
sithlord48
9960b657e3 chore: rename EiClipboard -> WaylandClipboardCollection 2025-11-20 07:57:31 -05:00
Jörg Thalheim
e55c67fa2f feat: add wayland clipboard support via wl-clipboard
this is currently based on wl-copy/wl-paste.
One could probably just implement wl-copy/wl-paste without adding much
complexity and better performance.

Co-authored-by: KoljaFrahm <GitHub.Kolja@dfgh.net>
2025-11-20 07:57:31 -05:00
sithlord48
1e672bb8a1 chore: EiScreen remove unused includes 2025-11-07 15:54:19 -05:00
sithlord48
e1fbcb379e chore: Sub classes and overloads not usings parameters of the base methods have the varible names removed 2025-10-17 09:07:21 +01:00
sithlord48
5fc00f7af4 refactor: use bool for invert scrolling 2025-09-30 06:39:54 -04:00
sithlord48
c2ee366e23 refactor: move preventsleep option into CoreArgs 2025-09-30 06:39:54 -04:00
Louis des Landes
7a2591a1fa fix: wayland sleep inhibit on client
Fixes #8827
Adds the XWindowsPowerManager to the EiScreen as, despite the name, this
works on Wayland as well.
2025-09-12 10:54:25 +01:00
sithlord48
bc63961e7e refactor: EIEventQueueBuffer remove unused screen from constructor 2025-09-05 11:52:17 +01:00
Zhuofeng Wang
927075688c fix: Pass ClientScrollDirection to EiScreen 2025-08-26 09:08:45 -04:00
sithlord48
2e193c6a78 chore: PortalInputCapture, conform to naming conventions 2025-08-11 12:58:52 -04:00
sithlord48
f95230549a chore: EiScreen: conform to nameing conventions 2025-08-11 12:58:52 -04:00
sithlord48
85d89f9846 refactor: XArch Classes => Arch Exception Classes 2025-08-11 17:14:45 +01:00
sithlord48
e4a9d1eb78 refactor: XScreen Classes => ScreenException Classes 2025-08-11 17:14:45 +01:00
Nick Bolton
9a9bd7e262 chore: Improve logging for active sides
For the longest time, this log line has bugged me:
```
active sides: e
```

It's hex, but it looks like a bug, since there's no `0x` prefix. Also, most humans can't read hex, so I added a string representation.

New version:
```
[2025-08-06T11:56:00] DEBUG: active sides: LRT (0x0e)
```
2025-08-06 08:38:00 -04:00
sithlord48
f51abad8cc feat: Wayland, only set a side to a border if if has a neighboring screen
move protocolTypes Direction enum to new base/DirectionTypes
use the direction info when calling
fixes #8572
fixes #8452
fixes #8605
fixes #8005
2025-07-14 10:31:50 +01:00
sithlord48
969b642e0b refactor: EiScreen sonar adjustments 2025-06-20 12:41:34 +01:00
sithlord48
a89f3b6892 refactor: conform EiScreen to code standards
fixes #8700
2025-06-20 12:41:34 +01:00
sithlord48
b8124107aa refactor: conform EiKeyState to coding standards 2025-06-20 12:41:34 +01:00
sithlord48
3a35b183d3 refactor: use std::function for Event callback
based on 6d347337c3
2025-06-18 13:17:16 +01:00
sithlord48
c15214aee7 refactor: use std::scoped_lock inplace of std::lock_guard 2025-06-17 10:23:42 +01:00
sithlord48
fe12972e83 chore: use const pointer / ref where possible 2025-05-22 20:46:41 +01:00
sithlord48
3cf0fb89ef chore: add comment to empty methods 2025-05-20 16:20:07 +01:00
sithlord48
52b0c1f061 chore: use auto or (const auto) where possible 2025-05-20 16:20:07 +01:00
sithlord48
c224cd4661 chore: declare const methods recommened by sonar 2025-05-20 16:20:07 +01:00
sithlord48
635962618f chore: define only one variable per line 2025-05-20 16:20:07 +01:00
sithlord48
0ff72441e6 chore: use c++17 style if,switch init-initilizer where possible
chore: correct spelling of "colon" in NetworkAddresses variables
chore: correct some multi line defines near needed init-initilizers
2025-05-20 16:20:07 +01:00
sithlord48
55a7fa3266 Port simplified EventTypes from 8b23570379 2025-05-05 17:17:01 -04:00
Dustin Kaiser
2192636d2b fix(wayland): release portal input capture when EI_EVENT_DISCONNECT is encountered, refactoring
Fixes #8005.
2025-05-01 12:35:00 +01:00
Dustin Kaiser
6194868e89 chore(wayland): add debug logline in EiScreen::handle_portal_session_closed 2025-05-01 12:35:00 +01:00
sithlord48
3dfa3d5069 chore: EiScreen, use auto where possible 2025-04-28 13:50:43 +01:00
sithlord48
fde880fb6f chore: add default case for EI_EVENT handling 2025-04-07 11:23:28 +01:00
sithlord48
3c86d9dc83 chore: rename lib/common/constants.h.in => lib/common/Constants.h.in 2025-03-20 13:06:45 +00:00
Nick Bolton
24d1d4e620 refactor: Simplify lock_guard usage by removing explicit mutex type 2025-03-12 12:18:32 -04:00
sithlord48
7f6caec162 chore: reset screen xywh on update_shape
based on https://github.com/input-leap/input-leap/pull/2167
2025-01-28 11:33:55 +00:00
sithlord48
1085df54ed refactor: Reuse compliance
build files and documentation: MIT
  images / sources: GPL-2.0-only
  breeze icons: LGPL-2.0-only
  Microsoft MSM file, vc redist license
2025-01-27 17:05:47 -05:00
Nick Bolton
6eec07b6dc refactor: Use correct log level for failure messages
This change may help us turn up some everyday problems in the field that get missed due to not using debug log level.

This could also make the log a bit noisier, so at a later date we may need to downgrade anything that is not actually a failure/warning.
2025-01-21 16:46:34 -05:00
sithlord48
3991e0c1a1 refactor: use std::string in place of String
basedon: https://github.com/debauchee/barrier/pull/709
2025-01-08 00:11:34 +00:00
sithlord48
13b58f2f7a fix: 8017, move wayland error to debug context 2024-12-28 20:46:51 +00:00
sithlord48
46a6f74fb7 build: rm DESKFLOW_APP_ID define 2024-11-15 12:20:17 +00:00
sithlord48
7b7ff81a9f build: Require libei and libportal from the system on linux
Removing remaining meson parts
2024-10-22 09:42:32 -04:00
sithlord48
9b9ecb0d05 chore: Adjust Clang-format linter rules
120 Column Lines
 Block Indent for Bracket Align
 Custom Line Break Rules
 No Single Line Functions
2024-10-17 21:38:29 +01:00
Nick Bolton
6bb1bcad8c chore!: Relocate commercial code downstream 2024-10-01 14:39:05 +01:00
pika
835dc4ec25 fix: gate leave() with canLeave(), allowing cleanup 2024-09-18 16:30:15 -04:00
Chris Rizzitello
ed1217e9cc
Use Deskflow Name (#7519)
* Use Deskflow Name

* Remove business-oriented options from issue templates

* Remove business-oriented workflow

* Bump version to 3.0.0 (to avoid confusion with previously used version numbers 1.x & 2.x)

* Update readme to reflect new project name and goals

* Found some more "synergy" to rename

* Rename `synlib` to `app`

* Rename `syntool` to `deskflow-legacy`

* Rename `synwinhk` to `dfwhook`

* Rename dirs from synergy to deskflow

* Rename more "Synergy" files

* Rename app bundle ID

* Fixed copyright typo

* Rename only title in serial key dialog (to be moved downstream later)

* Preserve original serial key window for moving downstream

* Restore dialogs ready for moving downstream

* Rename `QDeskflowApplication` to `DeskflowApplication` (the Q is confusing)

* Restore Volker's original project name

* Fixed mimetype

* Fixed weird grammar

* Fixed (more) weird grammar

* Broken link, restoring (but we should move all links out of source)

* Broken link, restoring (but we should move all links out of source)

* Add write permission to valgrind-analysis.yml

* Restore AUR conflicts

* Apply Clang format

* Update ChangeLog

* Back out version change

---------

Co-authored-by: Nick Bolton <nick@symless.com>
2024-09-17 20:00:25 +01:00
Nick Bolton
74c0deed3f
Move some EI server log messages to higher log levels (#7497) 2024-09-09 13:33:57 +01:00
Nick Bolton
8beeaf4276
Add warnings for missing Wayland libs and features (#7492)
* Add warnings for libei and libportal

* Add warning about experimental Wayland support

* Update ChangeLog

* Move GUI res files to root res dir

* Fixed crazy qrc shenanigans

* Move Wayland warning logic, add tests, improve core retry

* Also install py modules with pip since meson can be in venv

* Throw error when no libei

* Add warnings when no libportal

* Allow failure then success to show related to Wayland (for switching modes)

* Fixed formatting

* Fixed includes

* Simplify warning message

* Add log hint

* Show warning when error already shown

* Only check for Wayland if X or libei

* Add error message when quitting dur to remote desktop error

* Improve consistency of portal log lines
2024-09-09 11:18:17 +01:00
Nick Bolton
4e844bf307
Wayland support (port Red Hat libei and libportal impl) (#7449)
* Add libei and libportal

* Port libei and libportal code by Peter Hutterer and Olivier Fourdan

* Add Peter Hutterer and Olivier Fourdan to important devs list

* Improve error handling for libei and libportal builds

* Checkout libportal  tags/0.7.1

* Hack out the gi-docgen clone

* Remove new submodules in favor of using ExternalProject_Add

* Remove submodule dirs

* Use ExternalProject_Add instead of submodules

* Fixed namespace

* Hack to work around type libportal causing type conflicts

* Add log helper functions

* Use original log functions

* Switch to FetchContent, use libportal a1530a9 (unreleased) and use camelCase member names for consistency

* Restore a few events (much more work required)

* Add TODOs for supporting multiple lib versions

* Revert "Switch to FetchContent, use libportal a1530a9 (unreleased) and use camelCase member names for consistency"

This reverts commit 610cebb5b6a08282eee68f4424fcdbe9eaab4bf9.

* Simplify cmake config by removing builds for libei and libportal (will do this in `install_deps.py` instead)

* Remove submodules

* Remove .gitmodules

* Use meson to build subprojects

* Update copyright with Peter Hutterer's guidance

* Use meson for installing deps

* Fixed typo in tag name

* Remove submodules

* Remove old submodules

* Fixed libei name

* Defaults for pugixml and gtest depending on whether source exists in subprojects

* Ignore some subproject dirs

* Make deps OS-specific

* Move python deps to pyproject

* Only compile and install on Linux with Meson

* Revert "Move python deps to pyproject"

This reverts commit 92c8a287b8376a4d166058c85f1d6081f6fdb423.

* Add ninja to brewfile

* Add python3-attr

* Restore original coverage config

* Add ninja for meson

* Include meson in same try-except

* Fixed ninja dep name

* Move libs to correct oS

* Fixed include for wintoast

* Disable docs for libportal

* More options for libei and libportal

* Fixed option for libei

* Use ninja directly to install

* Revert "Use ninja directly to install"

This reverts commit c926d78ba483406a55acd10fb157c39e13f90b71.

* Meson install verbose

* Prints stdout/stderr

* Remove `from None`

* Remove submodules that somehow crept back in?!

* Prepend sudo if exists

* Add libei deps for all distros

* Fixed Fedora package name

* Add more deps for other distros

* Add more libs (including pugixml)

* Fix lib name

* Drop -u from pacman

* Add vala to rhel

* Make libportal optional

* Make portal link optional

* Remove example code

* Always use system pugixml

* Disable interactive apt through install_deps.py

* Revert "Disable interactive apt through install_deps.py"

This reverts commit 5bbc8fd689182447c79b81db16c961b98361a292.

* Set DEBIAN_FRONTEND in workflows

* Set DEBIAN_FRONTEND in CodeQL workflow

* Add gtest dep

* Add bundled libei dep

* Add libei dep to Arch

* Use `googletest` on openSUSE

* Add gmock dep

* Remove gtest dep from openSUSE

* Add libei on Fedora

* Bundle libei for older Linux distros

* Disable libei dep for RPM

* Also bundle symlink to .so

* Use ${CMAKE_INSTALL_LIBDIR}

* Rename libei to fix openSUSE

* List installed files

* Add libei-devel to openSUSE

* Add googletest-devel to openSUSE

* Remove manual deps (probably resolved automatically)

* Remove googletest from openSUSE (doesn't provide google mock)

* Only add Portal* if libportal found

* WIP - Partial work on using old events system :'(

* Add deps install commands for subprojects

* Solved more compile issues related to events system, threads, etc

* Fixed bad config for adding x, ei, portal sources

* Remove redundant deps

* Remove (another) redundant dep

* Fixed pacman command

* Add Ubuntu and Linux Mint libei deps

* Fixed Ubuntu and Linux Mint libei deps aliases

* Only iterate subprojects if not None

* Add rhel, rocky, and alma for libei

* Make rhel-like deps same as fedora again

* Build libportal on rhel-like

* Re-enable meson rhel-like for libportal

* Remove dbus-python

* Make libportal optional (for rhel-like)

* Handle ei event queue results

* Re-introduce libportal

* Print libei and libportal versions

* Add ei/portal args and client screen

* Switch --use args to --no

* Don't build libei/libportal on older distros as it's pointless

* Make libei and libportal optional

* Add Debian 13 runner

* Make some packages optional

* Remove subprojects

* Improve comment

* Add comment for libportal

* Improve comment

* Add Debian 13 runner

* Make optional... optional

* Change continuation stripper to remove newline and continuation char

* Make command strip more uniform

* Fixed help var syntax

* Fixed libei linking

* Ensure `kHelpNoWayland` is always defined

* Improve help message

* Fixed Debian 13 runner name

* Include sstream and use const var

* Update ChangeLog

* Remove Wayland block

* Return new timer

* Make tray icon logging verbose

* Fixed arg parser for wayland args

* Fixed init of EI screen

* Fixed lint issues

* Update README to indicate Wayland support in GNOME 46

* Add missing word

* Fixed comment positions

* Automate CI env

* Tone down debug log messages

* Add missing comma

* Remove redundant log line
2024-08-30 15:53:25 +01:00