rbreaves / kinto

Mac-style shortcut keys for Linux & Windows.
http://kinto.sh
GNU General Public License v2.0
4.47k stars 214 forks source link

Kinto fails on 32-bit MX Linux (with or without systemd) #206

Closed RedBearAK closed 4 years ago

RedBearAK commented 4 years ago

Describe the bug Tried to setup Kinto on a very old (2002-ish Pentium 4, 2.4GHz with 1GB RAM) laptop that I have running 32-bit MX Linux 19.2 (latest release of MX as of a few days ago). There are systemd and non-systemd variants of the kernel. I've tried both. I've tried the xkeysnail and the x11 version if the Kinto setup. No matter what options I choose Kinto doesn't seem to be doing any keyboard or shortcut remapping.

I used "tee" to output the text of my attempts to install both with and without systemd on the same computer. See the two text files below. There are errors during setup in both cases.

kinto_output_systemd.txt kinto_output.txt

Install Type: Bare Metal Distro: MX Linux 19.2 DE: XFCE, IceWM Branch: master

[ Editing to add solution found in this thread: ]

Somehow pip3 fails to install three necessary python3 packages (needed for compiling xkeysnail during install?). To bypass on MX Linux until the bug is resolved, run this command before running ./setup.py:

sudo apt install python3-setuptools python3-wheel python3-dev

(Turns out python3-dev is needed on a new MX Linux install.)

RedBearAK commented 4 years ago

Visudo and sudo both complain about a syntax error after inserting the line containing "+SI:localuser:root" in limitedadmins. With the first xhost line alone, the xkeysnail service crashes, and even after applying the xhost fix after logging in to IceWM I now have to manually restart the service to get it to come back up.

It's not being specific about the syntax error so I have no idea how to get past that. Tried putting backslashes in front of the plus and colons, of course that didn't work.

RedBearAK commented 4 years ago

After some googling I was able to get the "+SI:localuser:root" line to be accepted by escaping just the colon characters, not the plus.

Has not solved the problem. Still need to run xhost manually after logging into IceWM.

That's the limit of what I can think of to try, again.

RedBearAK commented 4 years ago

I would have loved to help test with other DE/WMs like i3, Openbox, Fluxbox, FLWM, LXDE/LXQt, etc. But I've tried all the ones I could think of that this machine would be capable of running without barfing from lack of RAM, and they were pretty much all broken on this distro. Like, blank screens, generic menus that don't really work, no apparent way to even log out, and so on. Besides the default XFCE desktop, IceWM is the only other desktop that has worked worth a darn on this distro for me. I know this kind of thing often happens when you fail to install the correct metapackage that configures everything for the platform, but I can't find any more "meta" packages for any of these DE/WMs.

I actually used IceWM as my default WM on a distro called LibraNet back around 1999, so it's a bit nostalgic too. So glad I was able to get Kinto working on it.

rbreaves commented 4 years ago

If something could recognize the "Xlib.error.ConnectionClosedError" and then restart the xkeysnail.service, maybe this could be fixed. Or would that still crash unless I manually ran xhost?

That is a bit of an issue tbh. Try replacing this in the xkeysnail.service file

ExecStart=/usr/bin/sudo /bin/bash -c '{experimental-caret}{homedir}/.config/kinto/xkeystart.sh /tmp/kinto/xkeysnail/kinto.py'

with

ExecStart=xkeysnail ~/.config/kinto/kinto.py'

Although you may need to run which xkeysnail and provide the full path and also expand ~ to your actual home directory. It may make systemd handle errors better than it running in that bash shell wrapper.

RedBearAK commented 4 years ago

This works only if both the xkeysnail path and the path to kinto.py are fully expanded. However I still have to run xhost after logging in before Kinto will start working. So, no change really.

rbreaves commented 4 years ago

This works only if both the xkeysnail path and the path to kinto.py are fully expanded. However I still have to run xhost after logging in before Kinto will start working. So, no change really.

Systemd service files do allow for you delay to be added if you want to try adding that. I had a delay at one time, but I thought the necessity of that had gone away fully.

RedBearAK commented 4 years ago

There seem to be various ways of doing a delay with a systemd service. What would be your suggested method? How were you doing it before?

Although I don't see how adding any delay would do anything to address the issue of the service having the Xlib.error.ConnectionClosedError and subsequently crashing if restarted before I manually run the xhost command.

rbreaves commented 4 years ago

Easiest way is probably something like ExecStartPre=/bin/sleep 30; {rest of execstartpre here}

I used the timer service method for xkb keyswap & you could probably make the timer a user level systemd service that starts up the system level xkeysnail service, too much to type how. Install gitk & search timer or look for timer in the source code for xkb or keyswap.service may still use it.

RedBearAK commented 4 years ago

Installed MX 64-bit AHS on a new AMD Ryzen system and discovered that evdev will fail to compile with a missing "Python.h" file unless you also install python3-dev. Updated the solution in the first comment. So MX needs all these packages installed to successfully compile and install Kinto:

python3-wheel python3-setuptools python3-dev

Maybe it worked on the other MX system after I removed the python3-dev package because I just used "remove" instead of "purge".