Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix a crash hapenning since updating Ubuntu 18.04 #10

Open
wants to merge 22 commits into
base: master
Choose a base branch
from

Conversation

dkondor
Copy link

@dkondor dkondor commented Sep 22, 2018

Since updating my laptop to Ubuntu 18.04, easystroke keeps crashing. Running it in gdb shows that the crash happens in Stroke::drawEmpty_ (win.cc:143), because it gets called with size == 0. The size in question comes from the tray icon's size, as it is called from Win::set_icon() (win.cc:280). For some reason, icon->get_size() there returns 0 (even though there seems to be a valid tray icon). This then results in the crash later.

Simply testing if the icon's get_size() returns 0 and skipping the icon->set() call if it does seems to fix the problem for me with no other adverse effects.

RaphaelRochet and others added 16 commits January 17, 2014 18:34
Depending on which C++ standard library headers have been included there
might an abs(float) function already declared in the global namespace,
so the definition in this file conflicts with it. This cause a build
failure with GCC 7, which conforms more closely to the C++ standard with
respect to overloads of abs.

Including <cmath> and adding a using-declaration for std::abs ensures
that the standard std::abs(float) function is available. This solution
should be portable to all compilers.
switch from fork to g_spawn_async
Remove abs(float) function that clashes with std::abs(float)
Remove unnecessary requirement for device to be absolute
@revast
Copy link

revast commented Dec 2, 2018

wow, cool! thanks for working on easystroke!
indeed, I have also a problem with easystroke on ubuntu 18.04, it does not show up in XFCE-panel, only when I restart the panel. could that be related? I'll try ASAP

@ThomasSeeker
Copy link

Yes! Thank you very much for working on easystroke!

It is my absolute favourite! ... And since I heard, that it is not running on Debian Stretch any more ... I'm afraid to upgrade. I can not imagine having a system without easystroke. The KDE-Gestures are not nearly as good as easystroke.

Thanks again!

@revast
Copy link

revast commented Dec 2, 2018

hmm, looks like the package was orphaned and removed from debian which is a pity, does not even show up here: https://pkgs.org/download/easystroke other distros still have it though, it's still in ubuntu! I will try to look through the source packages the maintainers use, maybe there are more fixes the package maintainers already did.

As things look right now, somebody would need to step up and care about easystroke, its a software which has no real counterpart or replacement (on Linux), it's unique. I will try to attract some developers via reddit, let's see what happens!

edit: Jonathan Wakely jwakely@redhat.com has made some nice patches made for fedora: gcc 7 support, boost 1.66, gnome3 fix... so this looks great!

@ThomasSeeker
Copy link

Thank you revast! ... That is wonderful of you!
And yes, easystroke is absolutely unique! I searched everywhere for an alternative ... without any success.
If I can be of any help, please let me know! ... unfortunately I'm not able to code though.

@revast
Copy link

revast commented Dec 2, 2018

Me neither, I can apply patches and such, but then it ends mostly.

Well, reddit is a good place to poke around and attract people, there is even guys actively searching a project where they can contribute. It would definitely help if you would write something to reddit (r/linux r/opensource ..., be it an article about easystroke to praise its benefits, or a call for developers.

I have now looked into the patches arch provides, too, so it would be nice to collect these patches, sort out the dupes, and make a new pull request here for a starter. unfortunately the original author does not seem to be active any more. I will still try to contact him though.

Then, if you look around here on github, there is also some interesting stuff:

a patched, semi-maintained version (!) I think I will try to contact hThoreau first..
https://gitlab.com/hThoreau/patched_easystroke

a port to OSX:
https://github.com/mtjo/MacStroke

multi touch support:
https://github.com/aur-archive/easystroke-mt

and some more repos with fixes.

@ThomasSeeker
Copy link

Wow! Thank you once more!
The patched_easystroke of hThoreau looks very promising!
I guess, I better try this version first, before looking for help elsewhere.

I am glad, I am not the only one loving easystroke! I honestly do not understand, why not everyone is using it. The only reason I can come up with is, that most people simply don't know it and the luxury it gives you.

@revast
Copy link

revast commented Dec 2, 2018

yeah, spreading the word is definitely needed! Maybe it's also a good idea to make a video how it works (or some animated gifs), I guess most people don't get it by a mere text description.

As I said before, it would be cool to add all the patches to one place, maybe its best to make pull requests to hThoreau's repo. He only has added one patch till now btw.

Also, it would be very cool to share the configs. I use it since 10 years, so I think I know how to use it most efficiently, but maybe you or somebody else have found a better way I am not aware of? not all gestures work in practise, some are too similar etc.

easystroke

easystroke2

easystroke3

@ThomasSeeker
Copy link

ThomasSeeker commented Dec 3, 2018

You wrote: "As I said before, it would be cool to add all the patches to one place, maybe its best to make pull requests to hThoreau's repo. He only has added one patch till now btw."

I'm not familiar with this kind of stuff. Can you add all the patches to one place and make such a "pull request"? ... And would this in the end bring easystroke back into the official Debian-repos?

And hey my friend, I have good news for you! You can pimp your easystroke quite a bit further, if you want!

I realized, that it's kind of inconvenient to use something other than straight lines. For instance your "W" for the web-browser. Takes IMO to long to draw. And that’s why I use time-out-gestures, where you don't release the button at the end of the gesture (marked with an "x" in my list).

"4" and "5" is pressing the gesture-button and scrolling up and down for the system-volume.

The rest are mainly little scripts with a wmctrl in it, to bring up those windows, e.g. "wmctrl -x -R dolphin.Dolphin".

But my absolute favourites are the "minimize" and "un-minimize"-gestures. Just wipe down to minimize a window and wipe up to un-minimize, i.e. bring it back up.

The "un-maximize"-gesture is for keeping the window on the screen but maximize and un-maximize it. The xcalib-gestures are for screen-brightness up and down.

And BTW, your "copy and paste" ... With synchronized clipboards a middle click is enough for both.

screenshot_20181203_111606
screenshot_20181203_111612

@revast
Copy link

revast commented Dec 4, 2018

ok, I think you have to make some video, I don't get it how you use it ;-)

I'm not familiar with this kind of stuff. Can you add all the patches to one place and make such a "pull >request"? ... And would this in the end bring easystroke back into the official Debian-repos?

Pull requests are no rocket science, they a part of how to deal with software using git. (we are here on GIThub ;-) but this also works on gitlab) The idea of git is, that when using it, everyone has the whole code of a program as local copy. Now if you change something, and do NOT have direct access to the repository, you can make a Pull Request, and this request then shows up in the Pull Request section (in that we are writing right now, because THjaeger does not have the Issues activated) of the repository. It shows the differences between the versions as diff files (the attached files, "commits" on top), and estimates if the changes are compatible with the master version in the Repository. So if you happen to have curiosity about git and maybe patch, I would bet you'll gonna figure out this in a day.

Now about the Debian repository: that is another beast in terms of investment of time. Packages in Debian are just accepted if there is a Maintainer. This maintainer has to be registered, and go through the whole process of getting the package accepted, so no simple upload and done.. He has to deal with all the Bugs he gets reported, eventually send them upstream to the original developer, take care of maintenance about the packaging mechanism of Debian, because things change here also, get deprecated for example.. (they have rather strict rules, and use software, which controls that these rules are followed ("Debian policy, Linitian") )And you gonna have to do this for ALL supported platforms, and these are a LOT.
So the learning curve is steep there, and you will have to deal constantly with it - IF you do it yourself.

But Debian also has something like a "Waiting List" ("needs Packaging") where people can request that a software they love should be included into Debian. But this just happens if somebody or one of the Debian maintainers teams steps up and takes over the job. This "Waiting List" especially is filled with software where there is no proper Debian source packaging in place, which is NOT the case with easystroke.

So with easystroke, we could just package it up (including the patches, because Debian source packages have an mechanism for that, too), go through the registering process at Debian, and send it to review for inclusion. Not a piece of cake, but not so much work as when starting from scratch.

The documentation is also quite fractured, so the most important links would be:

Guide for Debian Maintainers
Applying to Become a Maintainer
List of Packages already being processed/having an packaging request

So while this is a good idea, it's now best to get easystroke back in terms of being maintained at all, and deal with the packaging afterwards. Its good to see that on other distributions, easystroke is still included, that gives hope that we can get it into Debian as well. As I can tell for sure, unmaintained software gets removed fast from Debian, so taking care of this would be priority number one.

Next would be to make it more popular, as it seems many people do not know what it is capable of.

@ThomasSeeker
Copy link

ThomasSeeker commented Dec 4, 2018

Ok, just a quick reply regarding time-out-gestures: In the easystroke GUI you go to the "Advanced"-Tab and enable time-out-gestures. And then ... when you record a new gesture ... you draw the line with the gesture-button pressed. Only that this time you do NOT release the button at the end of the gesture, but keep it pressed down. That*s all!

The rest of your post I need to read again and try to understand.

@revast
Copy link

revast commented Dec 4, 2018

I have now written a mail to THjaeger, lets see what happens. It would be great to have all efforts bundled in one place, without forking it to another repository. Then we also would for example not have to deal with the maintainers of the distribution packages which would have to be contacted if a new maintained repository is established, and the google search also would have to link to the right repository.

What I also have recognized that there is also the old easystroke project on sourceforge, and people are still writing bug reports into the mailing list there.... what would not be the Problem in the first part, but the sourceforge page is also still #1 hit in google search... So if THjaeger answers, I would also request him to delete or update the sourceforge page to point to github...
Actually, as there are the issues closed in this repository here, the sourceforge page is the only official place now for users to report issues.... and you also did post there, which is fine. Maybe you could help out there a bit, like answering questions in General, add a comment on tickets where you feel you can do so..

By the way, the Wiki here in this Repository is editable, so if you happen to have something you would like to add, feel free to do so - for example documentation about time-out gestures! I found that user dragon788 edited the Tips and Tricks page last year.

As for my gestures, I tried to make them as obvious as possible, because they are also part of the default install of a Linux distribution I make.

@revast
Copy link

revast commented Dec 4, 2018

I'll try to put all the patches I found here, just for reference:

First, the ones from this Repository:

committed to master, not in 0.6.0 release from Mar 27, 2013 :
These are important, because, as it seems, some distributions ship the original 0.6.0 release, and NOT the latest git master.

Pull requests:
These are the ones which are in the open pull requests:

Then, the ones from the Distributions:

Distribution package status: Great overview of where easystroke is packaged:
https://pkgs.org/download/easystroke

fedora: https://src.fedoraproject.org/cgit/rpms/easystroke.git/log/

freebsd: https://svnweb.freebsd.org/ports/head/deskutils/easystroke/

arch: https://aur.archlinux.org/packages/easystroke-git/

ubuntu: https://packages.ubuntu.com/disco/easystroke

It's strange BTW that the package is maintained in Ubuntu, but TOTALLY absent in Debian, i will ask the Ubuntu maintainers about that.. maybe there is a quicker way of getting it back to Debian...

Debian easystroke related discussions:

the others from pkgs.org are just repeat.
pkgs.org is missing opensuse though:

opensuse: https://software.opensuse.org/package/easystroke
Maintainer: ecsos@opensuse.org , marius.kittler@suse.com

  • patches are in the source file
  • same in open pull request: Remove abs(float) function that clashes with std::abs(float)
  • same as FTBFS by using lambda instead of sigc::group of fedora
  • same as in Master: Fix black squares on gnome3

others:

multi touch support:

from the forks:
I have now also opened all the 42 forks available on github, and had a look for something useful.


In my quest I also found this:
https://github.com/t6/simplestroke
It is also based on easystroke, but it is a very stripped down version.

This guy has made a bridge from easystroke to osc:
https://github.com/patricksebastien/thereminacrayon

I have now also opened an issue at https://gitlab.com/hThoreau/patched_easystroke, asking for opinion, and will try to add the patches which make most sense, there.

If that does not work out, of the forks on github, https://github.com/markdstjohn/easystroke/commits/master has the most patches applied.

@revast
Copy link

revast commented Dec 5, 2018

for the non-tech savvy, here is an already built quick package from Git Master plus these patches:

add-toggle-option.patch
dont-ignore-xshape-when-saving.patch
easystroke-0.6.0-gnome3-fix-desktop-file.patch
Fix build with libsigc++ 2.4+ (group was removed).patch
fixed recurring crash when trying to render 0x0 tray icon.patch
Remove abs(float) function that clashes with std::abs(float).patch
switch from fork to g_spawn_async.patch

easystroke_0.6.0-0ubuntu8_amd64.deb

for people who do not want to install packages from outside the debian packages mechanism,or people who use other distributions, I also provide the already patched sources with the used patches:
http://openartisthq.org/easystroke/patched-easystroke-master.tar.bz2

unpack.

sudo apt-get build-dep easystroke
cd easystroke
make
sudo make install 

Let me know if this works ;-)

@roooots
Copy link

roooots commented Jun 15, 2020

Hi dkondor,

please see my edit above - that's why I wrote dirty hack ;-)

I just tried again with wayland and gestures are recognized, although the displacement issue occurs there even with the original display scaling.

As far as drawing modes involving compiz are concerned, they won't work for me. Enabling dbus plugin in compiz will make compiz fail, so that's not an option. Currently the only drawing method working for me is "Default".

Cheers,
r.

@dkondor
Copy link
Author

dkondor commented Jun 19, 2020

Hi @roooots,

I've added a branch to address this:
https://github.com/dkondor/easystroke/tree/scaling_factor

Unfortunately, this only works with integer scaling factor. I haven't yet found an API that returns a fractional scaling factor (and I'm on Ubuntu 18.04 where I can only set integer factor anyway). I'll try to look into this a bit more. Also, it needs more work to handle different monitors with different scaling factors separately; currently, it uses the scaling factor of the primary screen for everything.

Nevertheless, it would be great if you could test it and report what your experience is.

Thanks for the note on Wayland -- I'll experiment with that as well :)

Regarding compiz, there are possible multiple issues with dbus and a separate issue with the annotate plugin:
https://bugs.launchpad.net/compiz/+bug/1879975
https://bugs.launchpad.net/compiz/+bug/1641944
https://bugs.launchpad.net/compiz/+bug/1878545

Some of these are fixed in the launchpad git master:
https://code.launchpad.net/~compiz-team/compiz/+git/compiz/+ref/master
and I have a yet unmerged branch with a further fix:
https://code.launchpad.net/~kondor-dani/compiz/+git/compiz/+ref/dbus-fix

I don't know when these will make into Ubuntu packages, but you can experiment with them as well :)

@dkondor
Copy link
Author

dkondor commented Jun 19, 2020

@roooots I've created a PR related to your issue:
markdstjohn#8

I suggest to continue discussion there, since we do not have an issues page for easystroke :)

@ThomasSeeker
Copy link

ThomasSeeker commented Jun 19, 2020 via email

@jschroed
Copy link

@roooots I've created a PR related to your issue:
markdstjohn#8

I suggest to continue discussion there, since we do not have an issues page for easystroke :)

Yes, thanks for continuing to work on this! I am having a "crash" problem with easystroke that causes KDE to go to the login screen. The Xorg logs don't seem to have any info. Would the patch for compiz fix this? Would someone else's github page be a better place to comment?

@dkondor
Copy link
Author

dkondor commented Jun 21, 2020

Hi @jschroed,
unfortunately, there is no proper issues page for easystroke, so I guess it's OK if you comment here -- once the issue becomes more specific, we can create a separate pull request for it :)

Regarding your problem, it might be a difficult one: normally, any bug in easystroke should not crash the whole desktop, so probably you are facing a bug in X or your window manager that might be triggered by easystroke. I suggest the following steps:

  1. Is your bug reproducible reliably? (I.e. is there a sequence of events that triggers it, or does it happen randomly?) If yes, it will make things much easier reporting the bug upstream (to X or KDE or compiz developers) and also to track down what exactly easystroke is doing. As a first step, please report here any more information.

  2. Are you actually running compiz? As far as I know KDE runs its own window manager (kwin) by default. (You can check by running 'system monitor' or equivalent in KDE, or running 'ps -ef | fgrep compiz' in a terminal)

  3. If yes, are you using the 'annotate' feature? Please check in easystroke's preferences ('method to show gestures'), try to select other method ('default' should be safe) and see if the crash is still occurring.

  4. Are the relevant plugins (D-Bus and Annotate) enabled in compiz? Does disabling them fix the crash (at the expense of not seeing gestures)?

  5. In any case, does switching to a different window manager fix the problem? E.g. running 'kwin --replace' or 'metacity --replace' from a terminal? (or 'compiz --replace', if the answer to #2 is no)

These steps could help isolate where the problem is. In case the crash keeps occurring regardless of window manager, it can be a bug in the X server. In this case, it might be worth reporting at the relevant page for your distribution. If it is easy to reproduce with easystroke, maybe I can help creating a simplified test case demonstrating the bug.

If the problem seems to be related to compiz, this is my experience so far with the bugs I mentioned:

  1. https://bugs.launchpad.net/compiz/+bug/1879975 -- this bug causes compiz to crash when using the D-Bus interface (required by easystroke 'Annotate' method) only if the D-Bus plugin was disabled and reenabled while running compiz. For me, this was not triggered normally, only if I disabled / enabled any plugins in CCSM. I have a proposed fix for this that has not been merged yet: https://code.launchpad.net/~kondor-dani/compiz/+git/compiz/+ref/dbus-fix

  2. https://bugs.launchpad.net/compiz/+bug/1641944 -- this bug typically causes compiz to crash when enabling / disabling plugins. It is fixed in the latest development version: https://code.launchpad.net/~compiz-team/compiz/+git/compiz/+ref/master and possibly in Ubuntu 20.10

  3. https://bugs.launchpad.net/compiz/+bug/1878545 -- this bug caused the annotate interface to not work at all, but no crashes for me. Since this involves undefined behavior, it can actually result in crashes as well. It is fixed in the development version as well.

To use any of these patches, you would need to compile compiz from the launchpad git repositories. I don't really have experience how to make a binary package out of them

There could be other problems as well. Your experience may be improved if you enable the Crash handler plugin (under 'Utility' in CCSM), that can have compiz restarted (or an alternative window manager started) if a crash happens instead of logging you out.

@jschroed
Copy link

jschroed commented Jun 21, 2020

Hi dkondor,
Thank you for your reply. I did some investigation and narrowed down the issue some.
I can reproducible reliably on 2 systems. The crash happens on KDE Neon on an HP Laptop (Intel graphics). On Arch Linux on another computer, the bug happens but the mouse cursor disappears temporarily instead of crashing.

  1. To reproduce, a multi-monitor setup is required. I have 3 monitors setup with a KDE System Tray in the top right of the center monitor. In easystroke, set right click to the 'Gesture Button'. (It can be reproduced with other buttons but is more difficult.) Right click an icon in the System Tray that produces a menu (e.g. 'Clipboard Contents' or 'Audio Volume', note: not all menus will cause the bug). Move the mouse to right until on the next monitor (crash may happen sooner) or to the left until on the previous monitor.
  2. compiz is not running
  3. 'Default' is the Method to show gestures. 'Annotate' still causes the bug (although since compiz isn’t being used, this 'Annotate' might not matter here).
  4. Not sure how to disable D-Bus and Annotate in kwin.
  5. Running 'kwin --replace' does not fix the problem. Since the crash sends the desktop back to the login screen, I am unable to run it on the session where the crash happens. On Arch Linux where instead the mouse cursor disappears, pressing the 'Gesture Button' (e.g. Right click) causes the mouse cursor to reappear.

Creating a simple test case might be the best option but there could be an Xorg fix that prevents the crash that Arch has that KDE Neon (Ubuntu based) does not have. I suspect that there is something that easystroke is doing that it’s quite right that is causing the problem. (I know there is multi-monitor issues with easystroke.)
We could see what call easystroke is making that cause the crash to happen. I can modify and build the source code since 'easystroke -vvvvv' doesn’t show the issue. Since it happens on Arch but it doesn’t crash, I can test there. I have built easystroke on KDE Neon but I should be able to setup on Arch too.

Edit: Fixed the crash in KDE NEON by installing "xserver-xorg-hwe-18.04". KDE Neon uses X.Org X Server 1.19.6 by default. With the HWE package, the version was 1.20.8 and did not crash (but still had the disappearing cursor issue). 1.20.8 is the same version I have installed in Arch Linux.

I added a bunch of printf debug statements in easystroke but couldn't find a cause. I couldn't find anything that easystroke was doing wrong. The problem happens after grabbing a button "XIGrabButton" while the active window was the System Tray and then right clicking and moving to another monitor. It seems that the XIGrabButton does a passive grab and waits for state changes to be reported. The crash then happens while waiting for things to change (e.g. button press or window change). The glitch/crash could just be a bug with the X.Org XIGrabButton function.

I'm open for suggestions for investigating but it's less of an issue since it's not crashing. More logging/debugging with easystroke and X.Org could be done. Otherwise, a simpler executable could be created that causes the issue and reported to X.Org. Bisecting X.Org might be difficult but reviewing the release notes again might reveal something. (I may spend less time on this now that it's just a glitch instead of a crash.)

@dkondor
Copy link
Author

dkondor commented Jul 5, 2020

Hi,
thank you for the detailed explanation. Just to confirm, on Arch Linux, are you using KDE as well?

I'm on Ubuntu 18.04 with the HWE Xorg (1.20.8) and GNOME, and don't see any of the problems so far. I remember other, completely unrelated cases of the mouse cursor disappearing randomly, so there could be some general issue in the X server regarding mouse and grabs.

I would say, we might regard the crash as an Xorg bug that was fixed in the latest version. For the disappearing cursor, it would be great to investigate if this is an issue in easystroke or in the X server or with KDE. I'll install the KDE packages and experiment when I have a bit more time.

Based on what you say, in the disappearing mouse case, could it be that easystroke starts a grab and then does not "ungrab" properly? At least for me, the normal behavior seems to be that easystroke hides the cursor during drawing the gestures and it reappears only after that.

@jschroed
Copy link

jschroed commented Jul 7, 2020

Hi,
thank you for the detailed explanation. Just to confirm, on Arch Linux, are you using KDE as well?

Yes. KDE on Arch Linux as well. (I have only tested on KDE installs.)

Based on what you say, in the disappearing mouse case, could it be that easystroke starts a grab and then does not "ungrab" properly? At least for me, the normal behavior seems to be that easystroke hides the cursor during drawing the gestures and it reappears only after that.

It seems to me that the passive grab that easystroke is valid. It is as if easystroke sends a request to Xorg to "let me watch the mouse cursor". It is while in this state that the mouse cursor disappears (or Xorg crashes in earlier versions). There does not seem to be anything actively going on with easystroke while in this state.

Another thing that we could try is to recreate the issue with a new program. Like you suggested earlier, a simple program that calls the grab function might worth investigating.

@ThomasSeeker
Copy link

ThomasSeeker commented Jul 7, 2020 via email

@roooots
Copy link

roooots commented Jul 27, 2020

It seems to me that the passive grab that easystroke is valid. It is as if easystroke sends a request to Xorg to "let me watch the mouse cursor". It is while in this state that the mouse cursor disappears (or Xorg crashes in earlier versions). There does not seem to be anything actively going on with easystroke while in this state.

Another thing that we could try is to recreate the issue with a new program. Like you suggested earlier, a simple program that calls the grab function might worth investigating.

Some observations regarding the disappearing-mousepointer-issue.

I am using the right mouse button for initiating gestures and I am seeing the same behaviour of the mouse pointer disappearing if I use the right mouse button to open context menus of applications. However, not all applications are affected, which could give an indication for further debugging. The bug occurs with nautilus and caja (the latter is handling my desktop); it won't occur if I right-click on the contents (!) of a document openend in libreoffice, a text file opened in pluma or the contents of a mate-terminal, but it will occur if I right-click on the menu bar of these three applications.

The pointer usually won't disappear instantly, but after what I measured to be roughly 2-3s. Rarely, the pointer does in fact disappear almost instantly, while in other rare cases it will disappear after roughly 5-7s.

With my testing, it will only reappear if:

  1. i press the left mouse button or
  2. switch to another compiz viewport, which I configured to happen via edge flipping, or
  3. press the right mouse button again and move the pointer around on the same viewport.

As with disappearing, reappearing does not happen instantly but after roughly 1s after one of the above triggers has activated.

I've discovered something even more interesting, which is reproducible: On an empty (that is, free of windows) desktop, open a mate-terminal and execute

xdotool mousemove x y click 3

where x and y are screen coordinates on the desktop of a point outside the current terminal, that is, on the "bare" desktop without any additional windows and "3" is button no. three, that is my right mouse button. What happens is: The mouse pointer jumps to the set location and the right-click menu pops up. A first, the tip of the mouse pointer is situated a few pixels below and right of the top left corner of the right-click menu. After roughly 2-3s (with that same exceptions as described above) and without any further user action, the pointer will jump a few pixels so that the tip is now located exactly at the top left corner of the right-click menu. However, although easystroke is running, the pointer won't disappear! I currently don't have any idea how that relates to the bug we're discussing here, but the similarities in terms of delay are obvious.

By the way: the bug occurs no matter what "Method to show gestures" I am using, so using dkondor's patched compiz and setting easystroke to use compiz' annotate etc. doesn't make any difference. It won't occur when using the middle mouse button for gesture drawing.

Maybe my observations will spur some ideas how this can be debugged...

Cheers,
r.

@roooots
Copy link

roooots commented Aug 2, 2020

Hi all,

here's an important update on the disappearing-mousepointer-issue: At least with my setup it appears to be specific to Radeon/AMD GPU and corresponding drivers. I did not encounter this issue when using the IGP of my Intel CPUs during the last years. Yesterday, I switched from an AMD to a NVidia GPU and the issue does not appear anymore.

It would be great if those affected by the bug would give a short feedback on what GPU & drivers they are using.

So maybe next steps would be trying to figure out to what extent the Radeon driver itself affects this issue. That is, if there is any difference between using the mesa vs. the proprietary AMD driver and if driver versions do have an effect. I also suspect this issue to be X-specific, so it would be helpful if anyone would give a quick test with wayland a go.

@jschroed: Did you check Xorg.0.log for any meaningful warnings or errors that might give a hint on possible conflicts?

Cheers,
r.

@jschroed
Copy link

jschroed commented Aug 5, 2020

It would be great if those affected by the bug would give a short feedback on what GPU & drivers they are using.

Good thinking. I have AMD on my desktop machine with Arch. It's a really old unsupported card. (I have an Nvidia card and a newer AMD card that I could try but I probably won't get around to it.) I believe it is using Mesa since from what I've heard the proprietary drivers have been discontinued.
My laptop has Intel graphics so this was leading me to believe that it wasn't an AMD issue. Could be mesa related though if it doesn't affect Nvidia drivers.
Desktop (Arch):

lspci | grep VGA
VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Barts PRO [Radeon HD 6850]
glxinfo | grep -i vendor
client glx vendor string: Mesa Project and SGI
    Vendor: X.Org (0x1002)
OpenGL vendor string: X.Org

Laptop (KDE Neon):

lspci | grep VGA
VGA compatible controller: Intel Corporation Device 3ea0 (rev 02)
glxinfo | grep -i vendor
client glx vendor string: Mesa Project and SGI
    Vendor: Intel Open Source Technology Center (0x8086)
OpenGL vendor string: Intel Open Source Technology Center

@jschroed: Did you check Xorg.0.log for any meaningful warnings or errors that might give a hint on possible conflicts?

Yes, I checked the Xorg.0.log but there wasn't anything in there that seemed related to the crash. There wasn't anything around the time of the crash either. I didn't check the log extensively but I didn't see anything when I did look.

@haarp
Copy link

haarp commented Aug 19, 2021

@ivan

Ubuntu 18.10 has xorg-server_1.20.3, which should have that modesetting fix included.

Also, for anyone who experiences the rare (but quick) Xorg crash that happens immediately when starting a stroke, once every few thousand strokes: does ludiosarchive/easystroke@63b13f4 fix it?

It's awkward to keep the cursor visible during the stroke, but if the fix works, it's better than crashing.

After almost 2 months of thinking that removing the XFixesHideCursor/XFixesShowCursor calls fixed the rare crash, I just saw a Xorg/NVIDIA session crash after releasing a stroke. There may be two different crashes.

With this patch applied, I also very rarely (once every few months) encounter gesture-related crashes. I couldn't tell if it was at the start or end of a stroke. I think it even was just a regular click of the gesture button.

Either way, it doesn't seem to be fully fixed just yet.

@haarp
Copy link

haarp commented Sep 2, 2021

Right, just had another X crash. It happened at the end of a stroke.

@jytou
Copy link

jytou commented Sep 17, 2021

Hi all,
I've also been using Easystroke for a number of years, and it does make life much easier for me... except when it crashes X. :P Because of this, I try to limit my usage of Easystroke, but even then I generally get a crash every 2 weeks. The problem is that it seems to be very random, so extremely hard to reproduce. :(

@xstable
Copy link

xstable commented Nov 22, 2021

I really wonder why not anybody take over this project?! As it's ISC Licensed, it should be no problem.
We -as active user of easystroke - only should vote, which repository-fork will get the next stable and then go on with development... what you guy's think about this?

I really love easystroke and use it since years now... would be a pitty to have such a cool piece of software abandoned.

@roooots
Copy link

roooots commented Nov 22, 2021

I absolutely agree and because my coding skills are very limited, I would be willing to contribute via a donation aimed at providing sufficient supplies of coffee, beer and chocolate. I'm serious about that!

@ThomasSeeker
Copy link

ThomasSeeker commented Nov 22, 2021 via email

@xstable
Copy link

xstable commented Nov 25, 2021

In my opinion "https://github.com/berkeleybross/easy-gesture" seems to be still pretty active with a fork of easystroke.
So I'll give it a try what he had made. If it's nearly similar to easy-gesture, I would prefer that all people still using easystroke switch to @berkeleybross repository.
This way easystroke can Rest In Peace, and other users wo come here are not confused why all the PR are pretty new while the last commit was 2014.

@jorxster
Copy link

EasyStroke makes my life so much easier, at work and at home. I love setting up keyboard shortcuts so my hand never has to leave the pen (tablet).
I just installed it through the PopOS store, on PopOS 21.04, and it's working out of the box, so fingers crossed it continues to.
At work, I run it on Ubuntu 18.04

@mingti
Copy link

mingti commented May 26, 2022

After the "easystroke-git" in AUR triggers a successful action, it will cause the meta key in KDE to fail. You must click the trigger button again. I use manjaro and plasma 5.24.5 I can't fix it. I hope these feedback can help you

aur中的easystroke-git在触发成功一次动作后,会导致KDE 中的meta键失效,必须再次点击一下触发键,我使用的是manjaro 和Plasma 5.24.5.我没有能力修复它,希望这些反馈能帮到你们.

@revast
Copy link

revast commented Jun 6, 2022

After the "easystroke-git" in AUR triggers a successful action, it will cause the meta key in KDE to fail. You must click the trigger button again. I use manjaro and plasma 5.24.5 I can't fix it. I hope these feedback can help you

maybe try https://github.com/berkeleybross/easy-gesture, its an actively maintained fork. If you encounter the bug too, raise an Issue there.

@MRWITEK MRWITEK mentioned this pull request Jun 18, 2022
@dkondor
Copy link
Author

dkondor commented Dec 31, 2023

FYI I've created binary packages for Ubuntu with the patches that work reliably for me:
https://launchpad.net/~kondor-dani/+archive/ubuntu/ppa-easystroke

@mingti
Copy link

mingti commented Dec 31, 2023

我已经收到啦!http://shop108536602.taobao.com/shop/view_shop.htm?spm=a1z0e.1.10010.4.jV1nnz&v=1

你在干什么?? 瞎回复啥呢? 账号被盗了?

1 similar comment
@mingti
Copy link

mingti commented Dec 31, 2023

我已经收到啦!http://shop108536602.taobao.com/shop/view_shop.htm?spm=a1z0e.1.10010.4.jV1nnz&v=1

你在干什么?? 瞎回复啥呢? 账号被盗了?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.