easystroke
easystroke copied to clipboard
fix a crash hapenning since updating Ubuntu 18.04
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.
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
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!
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 [email protected] has made some nice patches made for fedora: gcc 7 support, boost 1.66, gnome3 fix... so this looks great!
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.
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.
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.
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.
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.
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.
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.
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.
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.
- Make buttons and scroll work properly with 'send'
- Reinstate signal handlers that got lost in the gtk3 transition
- Remove unused fields
- Fix black squares on gnome3
- Update to c++11
- Create easystroke.appdata.xml
- Fix crash when click [Preferences]-[Behavior]-[Additional Buttons]-([Edit] or [Remove]) without selecting a button.
- fix-crash-when-click-edit-extra-without-selecting-a-button: .
Pull requests:
These are the ones which are in the open pull requests:
- French translation update
-
switch from fork to g_spawn_async This one looks very important:
This fixes a serious bug that can lead to system instability. Without this patch, if a 'Command' action is commonly used, it will lead to so many zombie processes that the OS will be unable to launch additional processes.
- Remove abs(float) function that clashes with std::abs(float)
- Remove requirement for current device to be in absolute mode, this will allow mtrack to be used with easystroke Xorg Multitouch Trackpad Driver: https://github.com/BlueDragonX/xf86-input-mtrack
- fix build failed in libsignc++ version 2.5.1 or newer
- Increase required scores
- same as fix build failed in libsignc++ version 2.5.1 or newer: minor fixes to make Easystroke compile on Ubuntu 18.04
- fixed recurring crash when trying to render 0x0 tray icon
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/
- Maintainer: Jonathan Wakely [email protected]
- patches:
- easystroke-0.6.0-gnome3-fix-desktop-file
- same as in master: fix black squares issue on gnome 3 Fix black squares on gnome3
- same as in master: Update to c++11 same as open pull request: fix build failed in libsignc++ version 2.5.1 or newer FTBFS by using lambda instead of sigc::group:
- bug reports: https://bugzilla.redhat.com/buglist.cgi?component=easystroke&product=Fedora
freebsd: https://svnweb.freebsd.org/ports/head/deskutils/easystroke/
- Maintainer: Tobik (email not found yet)
- patches (not reviewed yet):
- https://svnweb.freebsd.org/ports/head/deskutils/easystroke/files/patch-Makefile?view=log
- same as in open pull request fix build failed in libsignc++ version 2.5.1 or newer Fix build with libsigc++ 2.4+ (group was removed, also 2 ;
- same as in open pull request Remove abs(float) function that clashes with std::abs(float) During the exp-run in bug 208158...
- same as in open pull request fix build failed in libsignc++ version 2.5.1 or newer Fix build with libsigc++ 2.4+ (group was removed,
arch: https://aur.archlinux.org/packages/easystroke-git/
- Maintainer: AppleBloom [email protected]
- patches:
- same as Remove abs(float) function that clashes with std::abs(float) abs.patch -
- add-toggle-option.patch adds a actvation/deactivation toggle when right-clicking the tray icon
- dont-ignore-xshape-when-saving.patch
ubuntu: https://packages.ubuntu.com/disco/easystroke
-
Maintainers: Matthias Klose [email protected], Dimitri John Ledkov [email protected]
-
the patches are in http://archive.ubuntu.com/ubuntu/pool/universe/e/easystroke/easystroke_0.6.0-0ubuntu12.debian.tar.xz
- same as Remove abs(float) function that clashes with std::abs(float)
- same as fix FTBFS by using lambda instead of sigc::group of fedora
-
bug reports from interest (filed in 2017-18):
- Xorg crashes, possibly easystrokerelated
- settings migration fails
- drawing the stroke for a gesture creates black tiles on screen, looks like fix black squares issue on gnome 3 fixes this?
- Changing 'method to show gestures' to Xshape does not persist, looks like dont-ignore-xshape-when-saving.patch fixes this?
- Easystroke leaving zombies behind this one is fixed in Master branch here, but apparently not in the Package in Ubuntu, as this is based on the 0.6.0 Release, and it looks like it does not have the fixes/changes which were committed afterwards.
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:
- http://forums.debian.net/viewtopic.php?t=126009
- https://debianforum.de/forum/viewtopic.php?t=166004
- there, https://wiki.debian.org/CreatePackageFromPPA is mentioned...
- I have looked through the RFP's, seems like nobody has yet requested that easystroke should be added to Debian to date...
the others from pkgs.org are just repeat. pkgs.org is missing opensuse though:
opensuse: https://software.opensuse.org/package/easystroke
Maintainer: [email protected] , [email protected]
- 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:
from the forks: I have now also opened all the 42 forks available on github, and had a look for something useful.
- Init trace type with TraceShape when got TraceDefault , this just a simple solution for Deepin.
- Add a duplicate action button, you can duplicate a action and move it to another app now!
- FIXED: cellrenderertextish.c
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.
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 ;-)
@ThomasSeeker :
- I added the relevant information to the wiki pages here, answered Ubuntu bug reports, made some posts on sourceforge General discussion forum as well as bug tracker.
- As of the repositories which could carry on, I contacted the https://gitlab.com/hThoreau/patched_easystroke one (no answer yet) and https://github.com/markdstjohn/easystroke/commits/master (have written right now)
- As documentation seems to be outdated, and the WIKI is open, it woud be great if you could contribute there, and please try out my build ;-)
Revast, I looked for a way to contact you in privat, but couldn't find one ... So I write it here: Would you be willing to have a phone call with me and explain a few things to me around the subject? Because I'm a bit lost.
@Revast, thanks for taking the time to try to get this organized. I think it'd be great if we could designate some repository as the new blessed master, since the original one is dead. It'd be fine with me for us to use my fork if we think that's best.
fyi: simplestroke doesn't want to compile.
@ThomasSeeker sure, no problem. I prefer email, though (romplox klammeraffe gMx at). In terms of being confused: I know that what I wrote its too much information to digest. But bear in mind, there is definitely always somebody needed which does things like documentation, translation, testing, bug reports... etc in a software project, so there are so many things where you contribute! As I said above, documentation is outdated (even the Wiki says so!), would be very nice from you if you could a bit care about this part! And, of course, spreading the word, making tutorials about easystroke! This is just as important as having it maintained, the more people can be dragged towards it, the more the chances rise that it stays at least maintained, eventually gets new features!
@markdstjohn: cool thanks! As we have the infrastructure of easystroke parted between sourceforge and github right now, I wonder what's best for continuing... opening issues on your branch, porting wiki over, and still posting to sourceforge forum and watching bug tickets there for now? I do not know if request for ownership or deletion of the project is possible on sourceforge...
@heynnema : that does not wonder me, the guy wrote simplestroke for freebsd in the first place ;-)
I downloaded @revast .deb and tar.gz source code files. I extracted and compiled the source, but when I try and run ./easystroke, or try and start it via the .desktop file, nothing happens. What am I doing wrong?
I have now made an AppImage (on ubuntu 18.04, so older distributions are probably not working for now)
@heynnema, try the AppImage please. This includes all the dependencies easystroke needs to run, and is should hopefully also run on your system.
@revast how do I use an AppImage on Ubuntu 18.10?
I even tried creating a .desktop file for it. No joy. It gives the same error message as before... "There was an error launching the application".
[Desktop Entry] Encoding=UTF-8 Name=EasyStroke Comment=EasyStroke, a mouse gesture program. Exec=/home/username/Applications/EasyStroke/easystroke-0.6.0-1ubuntu12-x86_64.AppImage Type=Application Icon=/home/username/Applications/EasyStroke/easystroke.svg Categories=Utilities;
@revast how do I use an AppImage on Ubuntu 18.10?
googling " appimage ubuntu " helps ;-)
starting it from terminal would lead to a more useable error message... open terminal:
cd /path/to/where/appimage/is
./easystroke-0.6.0-1ubuntu12-x86_64.AppImage
@revast thanks for your help.
I did make the file executable. Here's what I get when I try to run it:
$ ./easystroke-0.6.0-1ubuntu12-x86_64.AppImage Segmentation fault (core dumped)
sorry to hear that. Then you will have to compile it yourself for now, which is also quite easy and described here
a bit shorter:
sudo apt-get build-dep easystroke
wget http://openartisthq.org/easystroke/patched-easystroke-master.tar.bz2
tar xvjf patched-easystroke-master.tar.bz2
cd patched-easystroke-master/easystroke
make
then run it with
./easystroke
I am running Ubuntu 18.10 and have had issues with xorg crashing since 18.04. I have attempted to install the patched version of Easystroke using all of the methods mentioned above, but when I run it, nothing works. I've reinstalled the original package in the software centre, but it still won't work, so something got screwed up. Does anyone have any idea how I could fix this? Thank you!
@DarylO71 : no clue what's going on based on your description only.
- please provide at least commandline output (easystroke -v), there should be some sort of error message
- move the $HOME/.easystroke settings folder, then try to start easystroke again - maybe settings have gone corrupted somehow
As this is the second report of problems in 18.10, I am gonna set up a VM and see for my self if I can reproduce this.
ok, I have now tried on 18.10.
- easystroke from repository works as expected.
- because that's gnome here in 18.10, and gnome does not support tray icons any more, you will have to use
easystroke show
on commandline to get the easystroke settings dialog. I will make a .desktop launcher for this and include it into the debian package I made, called easystroke settings, which can then be launched easily - the debian package I made from 18.04 works, provided you install libboost-serialization1.65.1 from bionic first.
- the AppImage indeed segfaults, have to look into this.
"easystroke -v" doesn't produce any error message. I've started the gui manually and have confirmed that it is running; it just doesn't work. By the way, I do notice that it's running as root. Is that normal?
- there is no need to run easystroke under root, and if you start it in a normal terminal window as you normal user (or without sudo...), I do not see how it could be run as root...
- by default, easystroke maps the "second" mousebutton, which is the middle mouse button actually, so if you want to have it work with the right mousebutton, you have to change that in preferences to "mousebutton 3" accordingly. Try changing this, maybe this is why it would not seem to work
- as I also have now Ubuntu 18.10 in a vm, I can confirm that easystroke works flawlessly for me. if it still does not work, I can provide my configuation for a starter
I had easystroke set as an autostart program. My preferences are the same as they were when it was working. I can't remember if it had been running as root before. How do I go about reversing whatever I did to set it as root? Is it possible that is why it is not working anymore? I have already tried uninstalling it and then reinstalling it from the software centre, and that did not help.
well, when the application itself works, it is the settings which you have to reset then.
-
when it is started from autostart, look in the $HOME/.config/autostart folder, that holds the autostart items (special .desktop files) for your user, if any. Global autostart items are in /etc/xdg/autostart
-
I would also recommend to rename your settings folder to e.g. $HOME/.easystroke.bak
-
If you want to be absolutely sure that nothing else from an older install of easystroke is disturbing your setup:
sudo updatedb; locate easystroke
(mlocate is in default install on 18.10 it seems) -
here a Gif that it is working on my machine: