the slug zone

update tab
decoration tab
logo bar
menumenu

what the hell was i doing in here. jesus christ. javascript is horrifying. i wish i ever had memories of Doing Website.

anyway hi everybody. sorry i'm dead to the world. turning on the computer and going on the internet sucks so lately i turn on the computer and do anything else at all.

recently this includes trying to get my tablet, which is an xp-pen artist 12 gen 2 to work on either of the two wayland compositors that i don't either hate with my life or hates me with it's life. or hyprland which is totally cool and good but for one it doesn't work with my display manager of choice and also i'm not fuckin down to be using software developed by somebody of "let's redo this whole thing" age. idk anything about vaxry but i know he's young and i know i'm way too annoying to be redoing configs. all that aside check out mwc which is my actual favourite and is just some czech guy's personal project. i can't draw on there though because both gimp (which is not a war crime anymore but still not favourable for drawing in the first place) and krita don't have native wayland anything yet and he decided to eschew xwayland entirely. sorry if you don't know anything about linux and i'm fucking talking in tongues here.

labwc, which is a fairly successful attempt at translating openbox to wayland, has graphics tablet support built-in. this is pretty common these days. unfortunately, this is not meaningful in my case. the embedded tablet support that the wayland protocol offers is primarily (but not totally! we'll get there.) to people whose tablets have a kernel driver. mine doesn't and you know what? thank fucking god because i use the optional pen with an eraser which is my greatest point of contention with tablet drivers in general right now. it works with the company-provided driver, which i will be polite and not speak ill of because they provide a linux driver at all which is exceedingly rare. it could be complete trash garbage and it would still be better than decades of companies railroading you into using windows. it is good that it exists regardless of whether or not i personally have a few problems with it.

company driver is a gui guy and not in any way a daemon. company driver does not play very nicely with wayland. fuck me running. but the cool thing is that i have found that wayland stuff is nearly universally backwards-compatible, so if i found a solution, i could also bring the solution back to bspwm my beloved.

i have tried osu! player fan favourite opentabletdriver countless times over the past two years and it works fine with the default pen. i'm not a big fan of the configurator half of the project but like.. fucking whatever wah wah finicky overly-preferential baby here. that's not why i'm bringing it up though. i'm bringing it up because DO NOT run that shit! if you use the eraser pen! do not!. the eraser pen causes something in there, and i cannot even imagine what produces this behaviour or what could go wrong with the logic in there that could cause this, to send you to the eternal click zone. specifically in the absence of expected pressure readings it starts interpreting a completely unrelated value as being the pressure value. pen in proximity once? left mouse button held ad aeternum. if you don't know about this ahead of time you're probably going to try clicking an actual button or something instead of killing it. maybe you didn't come equipped with any means to kill it without a gui button. well fuck.

at some point in this journey after losing a fighting battle with the de facto omnitablet utility, i made a definition for this thing for libwacom. this didn't do anything but it's kind of nice to be able to roll up to da term like ayo libwacom can you list-local-devices for me :) and it's like sure buddy i got just the thing. useless behaviour. also constructed some needlessly comprehensive hwdb hacks which to be completely fair worked pretty well apart from not being able to provide any kind of hover support. this was at the very least the point where libinput stopped believing that my tablet was just like, a really incredibly shitty touch screen.

i decided i was not going to mess with kernel modules. it's not that i don't love performing alterations that will come back to ruin my life later, it's the life-ruining part that i want to minimise. and thus, i continue to leave my kernel the fuck alone. this left me with a single non-gui option left.

userspace-tablet-driver-daemon is another program made by A Guy. i prefer those in general anyway but i had never fully adopted this one because i am insanely lazy and did not want to figure out why i couldn't run the gui component. we're really scraping the bottom of the documentation barrel on this one, which is fine if you're like me, and is also a massive barrier if you're also like me in a completely different way. i have no problems reading source codes. i have immense problems reading at all. in any case, the readme on the github there says "you can edit the json directly", which is not true, and given that i was being a chucklefuck about the configurator, i was unwilling to suffer the consequences of my own hubris (default tablet pad buttons). there was also still the issue of the eraser pen, which at least doesn't cause any particularly devastating issues but also doesn't do anything at all. bro is just sitting there. standing? idfk

once i finally rolled my sleeves up and said "okay, i am figuring out why i cannot run this FUCKING CONFIGURATOR". java is fairly universal and i never expected to have this kind of problem with a java application ever. i ended up feeling very stupid because five seconds into edit source code and chill i notice that it asks specifically for java 17. this is normal with java so i don't think too much about it. i, and this is critical, recompile it with an environment variable set to point to the java 17 jdk. i do not set it in any way that matters. it is temporary. the compilation is done and so is jdk 17. it doesn't throw the kotlin error it threw before, but it also doesn't run. i think about it. i think about java 17. i am thinking with my brain. "is this a runtime requirement?". always has been. i set my system default java to java 17 and it runs without any complaints. i steep in my own stupidity for a little too long before moving on to my next point of contention. giant enemy pen.

as is typical, the default pen works perfectly fine out of the box. i had all of my ducks in a row at this point and also had been beating my head against the onslaught of problems for longer than most people can stand. i am, fortunately or unfortunately, a very brave and patient explorer. so instead of accepting the ease and joy (and hardware longevity!) of eraserlessness, i ran libinput debug-tablet and the problem is somehow stupider than i will ever be, which is really impressive on the heels of the java 17 debacle.

the eraser pen sends a different pressure signal. the eraser pen sends the pressure signals that the default one should have the entire time. mr. daemon had to add a pressure offset for this tablet, which fixes the default pen, but the eraser pen starts at zero and ends at 8191. i will complain about the single pressure level scam later, right now i'm complaining about why the fuck would that ever be. why the actual fuck would that ever be. i hate this device. it's pretty good and i like to draw with it but holy fuck i hate this device.

i removed the pressure offset in the source code. i recompiled the daemon. it works flawlessly. it works so well that i become persistently retroactively angry about that entire process. i am still angry now. hence why i am writing about it at all. i am so fucking mad dude. maybe i wouldn't even be mad if not for the opentabletdriver issue, maybe at some point this thing will get official kernel-level support and i will become stuck in a way that i cannot even disentangle myself from. i don't know. but i know that i had a series of horrendous problems and now i have zero problems.

anyway welcome to the beautiful world of using unsupported devices with gnu/linux i promise it's usually not this hellish but, as with my ongoing pipewire gripewire and becoming the world's latest screensaver adopter last year, it can be really fucking annoying if you are not a completely average developer. use an older wacom tablet and a normal-fi speaker hooked into your system in a normal way and everything will be fine. do not create a panoramic 6 channel sound system made of multiple monitor speakers and a normal speaker, this scares the pipewire. live in peace.