The magic of Christmas

WRITTEN_BY David REVOY - - 15 comments
🎄 New comic! "The magic of Christmas " A short tale for the holidays, I hope you'll like it! 🎁 → https://www.peppercarrot.com/en/webcomic-misc/2024-12-24_The-Magic-of-Christmas.html

When World Collides : the new and improved Pepper&Carrot website

WRITTEN_BY David REVOY - - 25 comments
As I'm writing this, I'm still trying to catch my breath after diving head-first into the rabbit hole that was my project "When Worlds Collide". It's been a month and a half of intense work, but I'm thrilled to finally share the results with you: Tadaaaa 🎉 **[www.peppercarrot.com](https://www.peppercarrot.com)** 🎉 ### The Why You see, in mid November I wanted to end the year with a big cleaning and maintenance of the website. But, as I often do, I got a bit carried away and decided to merge MiniFantasyTheater, Pepper&Carrot, and comics one-shots into a single, unified platform. It was a daunting task, but today I'm proud of what I've accomplished. ### The How The base engine of the website is still the one I wrote back in 2021, which has proven to be robust and economic. It's handled the huge waves of visitors with ease, and I'm confident it will continue to do so. To give you an idea, it is able to manage 15K daily visitors in average and spikes to 300K in days of release on a hosting that cost less than 300€/year. However, if I left the engine almost untouched, I've made significant changes to the presentation of the elements, making it easier for you to access and enjoy the content. ## New Features and Content **MiniFantasyTheater Comic Strips**: Finally hosted and translated in French. [![](data/images/blog/2024/2024-12-20_website2024_minifantasytheater.jpg)](data/images/blog/2024/2024-12-20_website2024_minifantasytheater.jpg) **Webcomic "Misc"**: Old webcomics remastered, now compatible with the translation system, transcript, etc... (A third one is coming soon) [![](data/images/blog/2024/2024-12-20_website2024_misc.jpg)](data/images/blog/2024/2024-12-20_website2024_misc.jpg) **Side by Side**: My favorite new feature, which allows you to compare the active language with English. [![](data/images/blog/2024/2024-12-20_website2024_side-by-side.jpg)](data/images/blog/2024/2024-12-20_website2024_side-by-side.jpg) **Translation Progress Indicator**: Keep track of the translation progress in the language selection panel [![](data/images/blog/2024/2024-12-20_website2024_languages.jpg)](data/images/blog/2024/2024-12-20_website2024_languages.jpg) **Related links**: A feature located at the end of the Pepper&Carrot episodes, it is mainly used to link to the related blog-post (making of, tutorials, and production reports). It also links to the Pepper&Carrot fan-comics like the "Pepper&Carrot Mini" episodes of Nartances that are answers to some episodes and also it links to the movies by the Morevna team on Peertube. [![](data/images/blog/2024/2024-12-20_website2024_related-links.jpg)](data/images/blog/2024/2024-12-20_website2024_related-links.jpg) **Restored "Philosophy" Page**: Restored from the old website, and refreshed for the future and with an open letter at the end to give update on why I'll keep "[...]to change the comic industry!" on the homepage, even a decade later. [![](data/images/blog/2024/2024-12-20_website2024_philosophy.jpg)](data/images/blog/2024/2024-12-20_website2024_philosophy.jpg) **New Cover Illustrations**: Each galleries (and homepage too) now have their own "cover". [![](data/images/blog/2024/2024-12-20_website2024_new-headers.jpg)](data/images/blog/2024/2024-12-20_website2024_new-headers.jpg) **Support Page**: A full new page with more description about all options why I have so many patronage platforms. [![](data/images/blog/2024/2024-12-20_website2024_support.jpg)](data/images/blog/2024/2024-12-20_website2024_support.jpg) **Fan-art to the top, and Cosplay!** The blog post about cosplay were buried deep into the history, so it was time to make a dedicated gallery to them, and also plug Fan Art to the top of the website. [![](data/images/blog/2024/2024-12-20_website2024_cosplay.jpg)](data/images/blog/2024/2024-12-20_website2024_cosplay.jpg) **Life Drawings** On social media, I often share my watercolors while I'm on a trip. Now, I ported all of them in the Artworks > Misc category [![](data/images/blog/2024/2024-12-20_website2024_lifedrawings.jpg)](data/images/blog/2024/2024-12-20_website2024_lifedrawings.jpg) **visible with link only** On Pepper&Carrot we have a secret area (a reference to the manga City Hunter) where contributors help me to proofread episodes. This part was rewritten from scratch, it now allows me to just switch a comic in `published=0` (visible with link only) into `1` (public). **Opengraph everywhere** That's an improvement for when you share a page on social media: the generated thumbnail preview will now show a preview of the page you share, including all galleries, artworks, etc. ## Still in Progress **Translation**: I've added so many new English text in the code! The goal was to describe everything, and be user-friendly. But all this new text is also temporarely problematic: when the website displays another language, untranslated text appears in English. So, unless someone translate the changes quickly, many visitors will experience half broken website's translation. Almost all language that had 100% translation are now back to around 70%... Sorry about that. [![](data/images/blog/2024/2024-12-20_website2024_translation.jpg)](data/images/blog/2024/2024-12-20_website2024_translation.jpg) Any help to complete the translation on our Weblate: https://weblate.framasoft.org/projects/peppercarrot/website/ is welcome (and we have a [documentation here](https://www.peppercarrot.com/fr/documentation/015_Translate_the_website.html)). ## Technical Details [![](data/images/blog/2024/2024-12-20_website2024_period-development.jpg)](data/images/blog/2024/2024-12-20_website2024_period-development.jpg) _For the one familiar with this type of graph on repositories._ * **Fully Open Source**: GPL V3+, hosted on Framagit: * **The final MR**: 62 commits ( +74852 and −26006 changes) * **Mainly PHP**: PHP and CSS/HTML5 on top, I'm keeping it simple. * **No JS**: The website can run without Javascript. * **No web framework**: Lightweight and built from scratch. * **Accessible**: Transcript available under each comic, also tested with 400% zoom. * **Responsive**: From smartphone to tablet, to smart TV... try it! * **Cached**: Average page loading under 0.003 sec server-side to serve more clients for the same hardware/resources. * **HTTPS by Default**: Because security matters. * **Designed to be Easy on Eyes**: Not a dark theme, not a bright theme, I tried to blend the two and avoid using pure white for backgrounds. [![](data/images/blog/2024/2024-12-20_website2024_mr.jpg)](data/images/blog/2024/2024-12-20_website2024_mr.jpg) _When World Collides branch, before merging!_ That's it for now. I hope you enjoy the new website, and I look forward to hearing your feedback! The website → **[www.peppercarrot.com](https://www.peppercarrot.com)**

New Comic book: La BD de l'Avent, Le Lombard publishing.

WRITTEN_BY David REVOY - - 23 comments
## A very original book A few months ago I wrote a short comic, a four-page one-shot, not about Pepper&Carrot, but about Christmas for [Le Lombard publishing](https://en.wikipedia.org/wiki/Le_Lombard). It was a great opportunity for me to work with a new team and set new standards. It was also a privilege to work for this publisher, famous in the Franco-Belgian comics world for such iconic titles as the Smurfs, Tintin, Blake and Mortimer, BlueBerry, Léonard and many others. I was also honoured to contribute to this collection of 25 short stories by many special guests, famous authors in the French and Belgian comic industry The principle of this book is original: each story comes with bound pages that are impossible to read before cutting the edge. The idea is like an "Advent calendar", but this time without little windows to reveal a present or a chocolate: you have to cut out the pages and discover a new story every day in December before Christmas. All the stories in this book are in French, for the French-speaking market and sold in bookshops. The book is already published and available. You can find it in your bookshop or read more about it on [the product page on Le Lombard's website](https://www.lelombard.com/bd/bd-de-lavent/bd-de-lavent-2024). ## CC-By and made with FLOSS As you can imagine, I've negotiated with the publisher to release my story under a [Creative Commons Attribution licence (CC-By)](https://creativecommons.org/licenses/by/4.0/deed.en), so that I can share it with you, make it part of free culture, and open it up to translation. However, we did agree on one exception to my release: it must be after the book has been released in stores, and I think it's very fair to give this first publication exclusivity to the company that fully financed the making of this story. On a technical level, I unfortunately had to do a lot of Bash scripting with CLI tools to be able to deliver a correct CMYK PDF and TIFF in their specifications (mostly based on Adobe Photoshop and Indesign), and I kept all the specifications to report to the Krita developers when the text tool refactor is ready. As it stands, the software can't deliver the format this publisher requires from the save or export menu. Still, I was happy to be able to tweak something and still be using only FLOSS (Free(libre) and Open Source) even though it might have taken me twice or more as long to make my comic as it did for other authors. A big thank you also goes to my publisher for their patience with my testing of the file formats. ## Online Soon? But where to host this comic online? That's why I'm currently refactoring the Pepper&Carrot site in a git branch called 'When-Worlds-Collide', a very complex refactor, especially on a site that has had more than 10 years of incremental changes. It's more like untying spaghetti knots to make a change at such a fundamental low level. But once done, this new structure will also be used to publish other stories on the Pepper&Carrot site, such as my MiniFantasyTheatre episodes or small one-shots like this one. And with a translation system, of course. Thanks to this improvement, I should be able to publish it on the redesigned site before the end of December. ### Video trailer (in French): [youtube]XYiMu4InMMY[/youtube]

Huion Kamvas Pro 19 - review on GNU/Linux

WRITTEN_BY David REVOY - - 11 comments
[youtube]M9VbiVJX-J4[/youtube] **Useful links**: - Review video on Youtube: https://youtu.be/M9VbiVJX-J4 - Review video on Peertube: https://peertube.touhoppai.moe/w/cBzMxbdD1J2kiRBKKShRSL - [Official store page](https://store.huion.com/products/kamvas-pro-19) - [Official product page](https://www.huion.com/products/pen_display/KamvasPro/Kamvas-Pro-19.html) **Technical:** - [udev-hid-bpf thread](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/36) - [udev-hid-bpf thread (Kdial remote)](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/35) - [libwacom PR (Kdial remote)](https://github.com/linuxwacom/libwacom/pull/827) **Special Offer/Promo code** Black Friday (Nov.21th~Dec.2nd): KamvasPro19 will have a 20% discount on Amazon and Store. - Huion Store: https://bit.ly/40J0aSv - Huion Amazon: https://amzn.to/4aCPIhE ## Update - **2025-01-03 Firmware update:** Aki-Nyan reported in the comments that newer devices have updated firmware which causes the HID fixups to fail to apply. She opened a merge-request [here](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/merge_requests/164) with a fix, but it's not yet merged in the main udev-hid-bpf project so you'll need to compile the branch to benefits of these changes. ## Intro Here is my video review of the [Huion Kamvas Pro 19](https://www.huion.com/products/pen_display/KamvasPro/Kamvas-Pro-19.html) pen display tablet. Everything about my feelings, and tests about the hardware is in the video above. This blog post here is a list of my installation method, scripts and tweaks to install the device under a GNU/Linux operating system. I spent a lot of time to do research on this unit, but at the end of the day, I'm just a tweaker: all the credits for improving the support of this tablet goes to [Joshua Goins (restrate)](https://redstrate.com/), [José Expósito](https://github.com/JoseExposito), [Benjamin Tissoires (bentiss)](https://gitlab.freedesktop.org/bentiss) and [Peter Hutterer (whot)](https://gitlab.freedesktop.org/whot) (and probably many more I forgot, sorry). ## The proprietary driver I don't use the proprietary driver provided by Huion for ethical reasons, but I know that many users will be happy to know of its existence and will probably make an exception for this binary in order to "simplify their lives". I don't blame them. Link: https://www.huion.com/download/ ## Wayland Wayland is the default session on all major GNU/Linux distributions. Unfortunately, it is currently very difficult to set up this type of tablet in Wayland. In Wayland, all this kind of input and configuration has been delegated to the desktop environment developers. So now you understand that there will never be a single Wayland method to configure a tablet under any desktop environment, but a Gnome-on-Wayland method, a KDE/Plasma-on-Wayland method, a Sway-on-Wayland method, etc. On a recent Fedora GNOME 41 Gnome or Plasma, you'll get very basic options, out-of-the-box and you might even access more thanks to CLI tools like [gsetwacom](https://github.com/linuxwacom/gsetwacom) for GNOME or [ktabletconfig](https://invent.kde.org/redstrate/ktabletconfig) for Plasma. But you might also hit a wall as soon as you'll want to configure something not exposed to the GUI or this CLI tool. Great progress is being made and if you install the latest [udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/releases) and [libwacom](https://github.com/linuxwacom/libwacom) you may soon see all the features of this tablet exposed in the system settings (even with the remote control!). However, it is not yet available via the usual packages, and it may take some time for it to spread downstream to all GNU/Linux distributions. So, it is painful to say, but in most cases your best option for Wayland now might be to use [Huion's proprietary driver](https://www.huion.com/download/) temporarily: ## X11 I'm using a [Debian 12 KDE on X11 setup](https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide). On it, I could setup the tablet correctly (almost a perfect support) with a collection of xsetwacom command-lines executed at system boot via a script. ### Remaining issues 1. The Kdial remote will be a pain to customise, but you can do it with [this method](https://www.davidrevoy.com/article989/how-to-customise-a-usb-numeric-keypad-under-gnulinux) for all keys except for the dial, but big progress and even an official support are made [on the udev-hid-bpf project](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/35) ### Fix unwanted Eraser mode on stylus By default, the second button of the stylus will simulate a stylus flip to eraser while holding it. You'll prefer a right-click to that. You'll also have no possibility to setup the extra button on the thick stylus. For that, you need to apply the rules contained in the [udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/) project. That one contains a rule to make it work again as a right-click (or any button because it will be exposed to xsetwacom for customization after that). To install it, download the [latest package of udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/releases) (packages, not source code or asset), and unpack it somewhere. Then go to the directory and execute the bash script `./install.sh`. Reboot your system. You can check if everything is correctly loaded with the CLI command line tool `tree`: ``` sudo tree /sys/fs/bpf/hid/ ``` Note: On my [GNU/Linux installation based on Debian 12 Bookworm](https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide), you'll need a newer kernel to load [BPF programs](https://lwn.net/Articles/970702/) with eBPF. To do this, I install the `curl` package and then the [Liquorix](https://liquorix.net/) kernel using the one-liner command line provided on their website. ### Setup X11 to put xsetwacom in control For that, we need the ID of the tablet first. Plug the tablet and run in a terminal: ``` lsusb ``` This command will list all usb devices connected to your computer and their ID. My line looks like that: ``` Bus 001 Device 002: ID 256c:006b HUION Huion Tablet_GT1902 ``` Copy your ID somewhere, mine here is `256c:006b`, and if we have the exact same model, your might be the same. Then change directory (cd) to the place where X11 stores its rules: ``` cd /usr/share/X11/xorg.conf.d/ ``` I'll create a new file in this directory (note it require your system root password because we are editing a system file with 'sudo'). I'm using here the text-editor "micro", but you can use your favorite. "nano" is often installed anywhere, but has less user-friendly keyboard shortcut and color syntax by default. ``` sudo micro 70-huion.conf ``` We can copy/paste the paragraph under at the end of the file; if your USB identifier differs, you'll need to adjust the line starting with MatchUSBID: ``` Section "InputClass" Identifier "Huion Kamvas Pro 19 Tablet" MatchIsTablet "on" Driver "wacom" MatchUSBID "256c:006b" MatchDevicePath "/dev/input/event*" EndSection ``` Save and then reboot your system. At this point, you should see your Huion tablet stylus listed if you write in a terminal: ``` xsetwacom --list ``` Bravo! Xsetwacom is now in charge of your tablet, and that's a good news because you can setup almost any aspect of your tablet with this CLI tool. ### Create an Xsetwacom script Don't be affraid of the word "script"; it is just a series of command written line by line on a text file so the computer will execute all of them at once. Each line will setup one aspect of your tablet. Line starting by the character # are not interpreted by your computer, so I added some notes on them to guide you in the customisation of the script. Open a non-rich text editor (eg. Micro, Kate, Geany, Gnome text also called Gedit, etc...) and copy/paste the script under, and then read it and try to customise it to your needs. On this script you'll find my own settings as an example: ``` #! /bin/bash # ------------------- # Huion Kamvas Pro 19 # ------------------- # License: CC-0/Public-Domain license # author: deevad # Tablet definition # Identifier obtained using the 'xsetwacom --list' command line # The tablet appears after creating a special rule for Xorg. # See blog post on https://www.davidrevoy.com/index.php?tag/hardware for it. tabletstylus="HUION Huion Tablet_GT1902 Pen stylus" tableteraser="HUION Huion Tablet_GT1902 Pen eraser" # Constrain the stylus to use it's own monitor # Monitor name here "HDMI-A-0" was obtained # using the 'xrandr' command-line. Your monitor's name might be different (eg. "HDMI-1", "DisplayPort-3", etc...). output="HDMI-A-0" xsetwacom --set "$tabletstylus" MapToOutput $output xsetwacom --set "$tableteraser" MapToOutput $output # Calibration (reset) # Start by reseting calibration to default area xsetwacom --set "$tabletstylus" ResetArea # Default area is '0 0 32767 32767' # You can obtain it with the command line: # xsetwacom --get "HUION Huion Tablet_GT1902 Pen stylus" Area # Calibration (set) # Calibrate your device manually with tweaking the numbers under # and then re-run the script. Add 50 here, substract 50 there, and see the effects. # (you can also use a tool like `xinput_calibrator`) # The number are set like this: "MinX" "MinY" "MaxX" "MaxY" # default: Area 0 0 32767 32767 xsetwacom --set "$tabletstylus" Area 100 120 32794 32797 xsetwacom --set "$tableteraser" Area 100 120 32794 32797 # Pressure sensitivity calibration # You can use this widget online here to create your curve # https://linuxwacom.github.io/bezier.html # The number are set like this: "X1" "Y1" "X2" "Y2" # default: PressureCurve 0 0 100 100 xsetwacom --set "$tabletstylus" PressureCurve 30 30 35 100 # Styluse's buttons: # First button on the stylus # I like to get the Control key to pick color on this one. # default: button 2 2 xsetwacom set "$tabletstylus" button 2 key Ctrl # Second button on the stylus # I leave the default right-click xsetwacom set "$tabletstylus" button 3 3 # Third button on the thick stylus # The key of your choice? "e" for eraser mode? xsetwacom set "$tabletstylus" button 8 key e # Data trimming and suppression # Better to not filter or delete any data of this device for increasing its precision # data pt.s filtered (0-100) # default is 2 xsetwacom --set "$tabletstylus" Suppress 0 # data pt.s trimmed (1-20) # default is 4 xsetwacom --set "$tabletstylus" RawSample 1 # Mapping touchscreen # This is tricky, and I had to make a workaround to capture the good ID among three identical # It re-use the $output parameter set on "Constrain the stylus to use it's own monitor" id=`xinput --list | grep -F 'HUION Huion Tablet_GT1902 ' | grep -Po '(?<=id=)dd?' | tail -2 | head -n 1` xinput map-to-output ${id} ${output} id=`xinput --list | grep -F 'HUION Huion Tablet_GT1902 ' | grep -Po '(?<=id=)dd?' | tail -1 | head -n 1` xinput map-to-output ${id} ${output} ``` Save your script under the name of your choice, I saved mine as huion_Kamvas-Pro-19.sh (using the extension .sh at the end of the file will ease identifying the file as a Bash script later). To run it, after saving the file you need to give this text file execution permission. You can do so with many desktop environment by right clicking on the file, go to the property of the files, and in a permission tab add the "execute" checkbox. Another way to do it is via command line in the same directory: ``` chmod +x huion_Kamvas-Pro-19.sh ``` Now, if you run: ``` ./huion_Kamvas-Pro-19.sh ``` The script should run and apply your preference. If your desktop environment is modern enough; you should have a way to add a script at autostart (usually in Settings > Autostart). This way, the preferences will be applied each time you start your computer. You can of course change options, and execute the script as many time you want to test and adjust. You might also create a shortcut on your main menu to execute quickly the script. ### Monitor Luminosity/Brightness and OSD Some desktop environment will propose you an icon and a slider to manage the screen luminosity. If it works this way, then you are all set. But if you can't access a simple slider, or you need all other options of this display, you can do it [via ddcutil](https://www.davidrevoy.com/article710/cintiqs-on-gnu-linux-how-to-setup-brightness-contrast-and-more): initiate modprobe and ddcutil: ``` sudo modprobe i2c-dev sudo ddcutil detect ``` In the list, the monitor will be detected as `HAT`, you can list all its options with: ``` sudo ddcutil --mfg=HAT capabilities ``` For example, if you want to reduce the brightness, first check it with: ``` sudo ddcutil --mfg=HAT getvcp 10 VCP code 0x10 (Brightness ): current value = 100, max value = 100 ``` Then you can set it to 75% or back to 100% this way: ``` sudo ddcutil --mfg=HAT setvcp 10 75 sudo ddcutil --mfg=HAT setvcp 10 100 ``` ## Conclusion: contribute? That's all, this guide can be of course continued or updated! You can send me your tips via comments, or on various Gitlab or Githubs thread mentionned in this article or via email.

XPPen Artist Pro 19 (Gen 2) - review on GNU/Linux

WRITTEN_BY David REVOY - - 11 comments
[youtube]d8Ft3b002LM[/youtube] **Video**: - Youtube: https://youtu.be/d8Ft3b002LM - Peertube: https://peertube.touhoppai.moe/w/vdjYvJUC9JQCkLeK6pVWj1 **Useful links**: - Review video on Youtube: https://youtu.be/d8Ft3b002LM - Review video on Peertube: [link] - [Official store page](https://www.xp-pen.com/store/buy/artist-pro-19-gen2.html) - [Official product page](https://www.xp-pen.com/product/artist-pro-19-gen-2.html) - [Official store: the "classic" stylus](https://www.xp-pen.com/store/buy/x3-pro-stylus.html) - [Official store: the adjustable stand](https://www.xp-pen.com/product/acs18-adjustable-stand.html) Technical: - [udev-hid-bpf thread](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/38) - [udev-hid-bpf thread(ACK05 remote)](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/32) - [ACK05 remote definition on libwacom](https://github.com/linuxwacom/libwacom/blob/master/data/xp-pen-ack05-remote.tablet) **Special Offer/Promo code** 10% additional discount for the Artist Pro 19 (Gen 2) code: DAVID10 (valid from November 15 to December 6). - FR : https://bit.ly/4fqCnva - ES : https://bit.ly/3OaWTnu - DE : https://bit.ly/4euwKuv - UK : http://bit.ly/4fInVyR - IT : https://bit.ly/3Oa2SZF - PT : https://bit.ly/40P4fo1 → Also check offers on XPpen store for the Black Friday : - the tablet: https://www.xp-pen.com/store/buy/artist-pro-19-gen2.html - the classic stylus: https://www.xp-pen.com/store/buy/x3-pro-stylus.html - the adjustable stand: https://www.xp-pen.com/product/acs18-adjustable-stand.html ## Intro Here is my video review of the [XPPen Artist Pro 19 (Gen 2)](https://www.xp-pen.com/store/buy/artist-pro-19-gen2.html) pen display tablet. Everything about my feelings, and tests about the hardware is in the video above. This blog post here is a list of my installation method, scripts and tweaks to install the device under a GNU/Linux operating system. I spent a lot of time to do research on this unit, but at the end of the day, I'm just a tweaker: all the credits for improving the support of this tablet goes to [Joshua Goins (restrate)](https://redstrate.com/), [José Expósito](https://github.com/JoseExposito), [Benjamin Tissoires (bentiss)](https://gitlab.freedesktop.org/bentiss) and [Peter Hutterer (whot)](https://gitlab.freedesktop.org/whot) (and probably many more I forgot, sorry). ## The proprietary driver I don't use the proprietary driver provided by XPpen for ethical reasons, but I know that many users will be happy to know of its existence and will probably make an exception for this binary in order to "simplify their lives". I don't blame them. Link: https://www.xp-pen.com/download ## Wayland Wayland is the default session on all major GNU/Linux distributions. Unfortunately, it is currently very difficult to set up this type of tablet in Wayland. In Wayland, all this kind of input and configuration has been delegated to the desktop environment developers. So now you understand that there will never be a single Wayland method to configure a tablet under any desktop environment, but a Gnome-on-Wayland method, a KDE/Plasma-on-Wayland method, a Sway-on-Wayland method, etc. On a recent Fedora GNOME 41 Gnome or Plasma, you'll get very basic options out-of-the-box and you might even access more thanks to CLI tools like [gsetwacom](https://github.com/linuxwacom/gsetwacom) for GNOME or [ktabletconfig](https://invent.kde.org/redstrate/ktabletconfig) for Plasma. But you might also hit a wall as soon as you'll want to configure something not exposed to the GUI or this CLI tool. Great progress is being made and if you install the latest [udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/releases) and [libwacom](https://github.com/linuxwacom/libwacom) you may soon see all the features of this tablet exposed in the system settings (even with the remote control!). However, it is not yet available via the usual packages, and it may take some time for it to spread downstream to all GNU/Linux distributions. So, it is painful to say, but in most cases your best option for Wayland now might be to use [XPpen's proprietary driver](https://www.xp-pen.com/download) temporarily: ## X11 I'm using a [Debian 12 KDE on X11 setup](https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide). On it, I could setup the tablet correctly with a collection of xsetwacom command-lines executed at system boot via a script. ### Remaining issues 1. The XPpen ACK05 remote is still a pain to customise, but big progress are made [on the udev-hid-bpf project](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/32). You can also check my workarounds and way to customise it anyway on my full [blog-post about the ACK05](https://www.davidrevoy.com/article1047/configuring-the-xppen-ack05-remote-with-only-floss-on-gnulinux-my-investigation-and-workarounds). 2. The thin stylus has a 1.5 or 2mm extra offset between the tip of the stylus and the cursor. This is because the height of the "Tilt compensation" is different on this stylus. [Work is in progress on this topic](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/38). 3. The keyboard shortcut of the scroll-wheel on the thick stylus can't be configured yet (default: Ctrl+ and Ctrl-), but it is possible to temporary deactivate it. [Work is in progress on this topic](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/38). ### Fix unwanted Eraser mode on stylus By default, the second button of the stylus will simulate a stylus flip to eraser while holding it. You'll prefer a right-click to that. For that, you need to apply the rules contained in the [udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/) project. That one contains a rule to make it work again as a right-click (or any button because it will be exposed to xsetwacom for customization after that). To install it, download the [latest package of udev-hid-bpf](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/releases) (packages, not source code or asset), and unpack it somewhere. Then go to the directory and execute the bash script `./install.sh`. Reboot your system. You can check if everything is correctly loaded with the CLI command line tool `tree`; the name of the rule is for the "16" but it works also for the "19": ``` ~ »»» sudo tree /sys/fs/bpf/hid/ [sudo] password for deevad: /sys/fs/bpf/hid/ └── 0003_28BD_096A_0010 └── 0019-XPPen__ArtistPro16Gen2_bpf ├── hid_fix_rdesc_xppen_artistpro16gen2 └── xppen_artist_pro_16_device_event ``` Note: On my [GNU/Linux installation based on Debian 12 Bookworm](https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide), you'll need a newer kernel to load [BPF programs](https://lwn.net/Articles/970702/) with eBPF. To do this, I install the `curl` package and then the [Liquorix](https://liquorix.net/) kernel using the one-liner command line provided on their website. ### Setup X11 to put xsetwacom in control For that, we need the ID of the tablet first. Plug the tablet and run in a terminal: ``` lsusb ``` This command will list all usb devices connected to your computer and their ID. My line looks like that: ``` Bus 001 Device 006: ID 28bd:096a XP-Pen Artist Pro 19(Gen2) ``` Copy your ID somewhere, mine here is `28bd:096a`, and if we have the exact same model, your might be the same. Then change directory (cd) to the place where X11 stores its rules: ``` cd /usr/share/X11/xorg.conf.d/ ``` I'll create a new file in this directory (note it require your system root password because we are editing a system file with 'sudo'). I'm using here the text-editor "micro", but you can use your favorite. "nano" is often installed anywhere, but has less user-friendly keyboard shortcut and color syntax by default. ``` sudo micro 60-xppen.conf ``` We can copy/paste the paragraph under at the end of the file; if your USB identifier differs, you'll need to adjust the line starting with MatchUSBID: ``` Section "InputClass" Identifier "XP-Pen Artist Pro 19 (Gen2) Tablet" MatchIsTablet "on" Driver "wacom" MatchUSBID "28bd:096a" MatchDevicePath "/dev/input/event*" EndSection ``` Save and then reboot your system. At this point, you should see your XPPen tablet stylus listed if you write in a terminal: ``` xsetwacom --list ``` Bravo! Xsetwacom is now in charge of your tablet, and that's a good news because you can setup almost any aspect of your tablet with this CLI tool. ### Create an Xsetwacom script Don't be affraid of the word "script"; it is just a series of command written line by line on a text file so the computer will execute all of them at once. Each line will setup one aspect of your tablet. Line starting by the character # are not interpreted by your computer, so I added some notes on them to guide you in the customisation of the script. Open a non-rich text editor (eg. Micro, Kate, Geany, Gnome text also called Gedit, etc...) and copy/paste the script under, and then read it and try to customise it to your needs. On this script you'll find my own settings as an example: ``` #! /bin/bash # --------------------------- # XP-Pen Artist Pro 19 (Gen2) # --------------------------- # License: CC-0/Public-Domain license # author: deevad # Tablet definition # Identifier obtained using the 'xsetwacom --list' command line # The tablet appears after creating a special rule for Xorg. # See blog post on https://www.davidrevoy.com/index.php?tag/hardware for it. tabletstylus="XPPen Artist Pro 19(Gen2) stylus" tableteraser="XPPen Artist Pro 19(Gen2) eraser" # Constrain the stylus to use it's own monitor # Monitor name here "HDMI-A-0" was obtained # using the 'xrandr' command-line. Your monitor's name might be different (eg. "HDMI-1", "DisplayPort-3", etc...). output="HDMI-A-0" xsetwacom --set "$tabletstylus" MapToOutput $output xsetwacom --set "$tableteraser" MapToOutput $output # Calibration (reset) # Start by reseting calibration to default area xsetwacom --set "$tabletstylus" ResetArea # Default area is '0 0 32767 32767' # You can obtain it with the command line: # xsetwacom --get "XPPen Artist Pro 19(Gen2) stylus" Area # Calibration (set) # Calibrate your device manually with tweaking the numbers under # and then re-run the script. Add 50 here, substract 50 there, and see the effects. # (you can also use a tool like `xinput_calibrator`) # The number are set like this: "MinX" "MinY" "MaxX" "MaxY" # default: Area 0 0 32767 32767 xsetwacom --set "$tabletstylus" Area 0 0 32680 32680 xsetwacom --set "$tableteraser" Area 0 0 32680 32680 # Pressure sensitivity calibration # You can use this widget online here to create your curve # https://linuxwacom.github.io/bezier.html # The number are set like this: "X1" "Y1" "X2" "Y2" # default: PressureCurve 0 0 100 100 xsetwacom --set "$tabletstylus" PressureCurve 95 90 20 100 # Styluse's buttons: # First button on the stylus # I like to get the Control key to pick color on this one. # default: button 2 2 xsetwacom --set "$tabletstylus" button 2 key Ctrl # Second button on the stylus # I leave the default right-click xsetwacom --set "$tabletstylus" button 3 3 # Data trimming and suppression # Better to not filter or delete any data of this device for increasing its precision # data pt.s filtered (0-100) # default is 2 xsetwacom --set "$tabletstylus" Suppress 0 # data pt.s trimmed (1-20) # default is 4 xsetwacom --set "$tabletstylus" RawSample 1 # Bonus: # Deactivate the scroll-wheel on stylus xinput set-prop "XPPen Artist Pro 19(Gen2) Keyboard" "Device Enabled" 0 ``` Save your script under the name of your choice, I saved mine as xppen_Artist-Pro-19-Gen2.sh (using the extension .sh at the end of the file will ease identifying the file as a Bash script later). To run it, after saving the file you need to give this text file execution permission. You can do so with many desktop environment by right clicking on the file, go to the property of the files, and in a permission tab add the "execute" checkbox. Another way to do it is via command line in the same directory: ``` chmod +x xppen_Artist-Pro-19-Gen2.sh ``` Now, if you run: ``` ./xppen_Artist-Pro-16-Gen2.sh ``` The script should run and apply your preference. If your desktop environment is modern enough; you should have a way to add a script at autostart (usually in Settings > Autostart). This way, the preferences will be applied each time you start your computer. You can of course change options, and execute the script as many time you want to test and adjust. You might also create a shortcut on your main menu to execute quickly the script. ### Monitor Luminosity/Brightness and OSD In the video, I setup my monitor "Brightness" to 75 to reduce the heat of the device, I also demo how you can hold down 'Brightness +' and press 'Power' to enter into the OSD menu. It's a very good option because I wasn't able to access this display [via ddcutil](https://www.davidrevoy.com/article710/cintiqs-on-gnu-linux-how-to-setup-brightness-contrast-and-more) ("DDC communication failed") so far. ## Conclusion: contribute? That's all, this guide can be of course continued or updated! You can send me your tips via comments, or on various Gitlab or Githubs thread mentionned in this article or via email.

An artwork for Huion

WRITTEN_BY David REVOY - - 10 comments
I’ve been working hard on my video review of the Huion Kamvas 19 Pro using only Free/Libre and Open Source Software. Can’t wait to share it with you next week! In the meantime, here’s a piece I painted with it! 🎨 [Full resolution & sources here](https://www.peppercarrot.com/en/viewer/misc__2024-11-03_for_Huion_by-David-Revoy.html) #krita

A free Krita workshop at Capitole du Libre 2024

WRITTEN_BY David REVOY - - 12 comments
✏️ Mark your calendars! In just two weeks, I’ll be offering a free Krita workshop (in French) at Capitole du Libre 2024. This session will be a perfect blend of exploring Krita’s features and sharing valuable drawing tips. I can’t wait to see you there and create together! 🎨 :krita: More info: https://cfp.capitoledulibre.org/cdl-2024/talk/KLHKLR/ https://capitoledulibre.org/

Sketchbook randomness

WRITTEN_BY David REVOY - - 21 comments
Part of my "drawing directly with a ballpoint pen" training. [![](data/images/blog/2024/2024-10-27_random-sketchbook_3_low.jpg)](data/images/blog/2024/2024-10-27_random-sketchbook_3_low.jpg) [![](data/images/blog/2024/2024-10-27_random-sketchbook_1_low.jpg)](data/images/blog/2024/2024-10-27_random-sketchbook_1_low.jpg) [![](data/images/blog/2024/2024-10-27_random-sketchbook_2_low.jpg)](data/images/blog/2024/2024-10-27_random-sketchbook_2_low.jpg) [![](data/images/blog/2024/2024-10-27_random-sketchbook_4_low.jpg)](data/images/blog/2024/2024-10-27_random-sketchbook_4_low.jpg)

Configuring the XpPen ACK05 Remote with only FLOSS on GNU/Linux: my investigation and workarounds.

WRITTEN_BY David REVOY - - 61 comments
Here is my research on how to use and configure the XPPen ACK05 Remote using only Free Libre and Open Source drivers and software under GNU/Linux. As you'll see, it's quite limited and some features just don't work. This guide will be updated as soon as I have new information on how to improve it, or as soon as new development improves support for this device. Terminology: - **ACK05** → The XPPen ACK05 Remote Controler device. - **FLOSS** → Free/Libre and Open-Source Software. Update: - **2024-10-07:** At the [request of @whot](https://fosstodon.org/@whot/113262671742914463), I released [the full hid-recorder, on the udev-hid-bpf project](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/32). - **2024-10-06:** Added the Input-Remapper method thanks to a comment by [Raghukamath](https://raghukamath.com/). ## Device presentation The ACK05, looks like a numeric keypad with a dial ring and nothing written on the keys. It comes with the "Pro (gen2)" tablet models of the XpPen brand: the Artist Pro (gen2) 14, 16 and 19 but also the [Deco Pro (gen2)](https://www.xp-pen.com/store/buy/deco-pro-gen2.html) XLW, LW and MW. Well, it sounds like XPPen just decided to make the ACK05 the default remote for all their future tablets. I got mine with my XpPen Artist 16 Pro (Gen2), which [I reviewed](https://www.davidrevoy.com/article1004/xppen-artist-pro-16-gen-2-review-on-gnulinux) last year. But you can also [buy one alone on the XpPen store](https://www.xp-pen.com/product/ack05-wireless-shortcut-remote.html) for about $50. In fact, you don't need to pair the ACK05 with a tablet to use it properly; it's a standalone device. For artists, this small keyboard gives them closer access to a number of common keyboard shortcuts. [![](data/images/blog/2024/2024-10-06_xppen-ack05-remote_02_usage_net.jpg)](data/images/blog/2024/2024-10-06_xppen-ack05-remote_02_usage_net.jpg) _Photo of the XPpen ACK05 in usage situation for me, a right handed user of the Artist 16 Pro_ ## Disassembling the ACK05 The ACK05 is also a tiny programmable keyboard in disguise, the [Official User Manual (PDF)](https://www.xp-pen.com/Uploads/images/manual/ack/en/ACK05%20User%20Manual%20(English).pdf) mention the device has a small memory to store the configuration. It also has its own microcontroller unit (MCU), an ID M52833 QIAAA0 2310AI code on it, a Nordic nRF52* family. It's a multi-protocol system-on-chip with [lots of information and specifications (PDF)](https://eu.mouser.com/c/?marcom=136815203) on the manufacturer's website. [![](data/images/blog/2024/2024-10-06_xppen-ack05-remote_05_tear-down_net.jpg)](data/images/blog/2024/2024-10-06_xppen-ack05-remote_05_tear-down_net.jpg) _Photo: tearing down the ACK05 device_ ## What works, what doesn't **USB-C cable connection → it works out-of-the-box**. For some reason, it's the only way to connect the device on GNU/Linux right now. **Bluetooth direct → it doesn't work**. I tested it on three Bluetooth-enabled GNU/Linux computers I had at home and different distros. You can turn on the device and press the middle-of-the-dial button for 6 seconds until the LED flashes quickly, but none of them will see or pair with the device. **The USB dongle → it doesn't work**. This is strange because I have never seen a mouse or keyboard with its own USB dongle have this kind of problem. **The Default Keyboard Shortcuts → it works out-of-the-box with a rather questionable layout**. On the plus side, you have the three keys Shift, Ctrl and Alt clearly side by side in the middle of the device, and underneath a space bar that is easy to reach with the thumb. Undo and redo are surprisingly FLOSS standard: Ctrl+Z for undo, and Ctrl+Shift+Z for redo. On the bad side, the ACK05 key layout under GNU/Linux will automatically load the same layout as your main keyboard layout: in my case an Azerty French keyboard. This means that the default Ctrl+Z of the ACK05 will return a Ctrl+W by default, which is dangerous because it closes the document in many applications. In addition, while shortcuts like Ctrl+O for opening files and Ctrl+N for creating new ones are standard, their non-frequent use in workflows raises questions about their necessity, since these actions are typically performed only once per artwork. **The Dial → it kinda works out-of-the-box**. The dial returns a Ctrl+ and Ctrl- action. It zooms in and out in Krita, and that's fine. However, the middle button of the dial has no effect and feels like it is disabled. **Customisation of keys → you can improve it, slightly**. And that's my transition to the next part of this article! ## Customising the keys ### The input-remapper method [Input remapper](https://github.com/sezanzeb/input-remapper) is a software that can change the behavior of almost any input device. It supports X11, Wayland, combinations, programmable macros, joysticks, wheels, triggers, buttons, mouse movements and more. In short, it maps any input to any other input. If you haven't read the [User Guide](https://github.com/sezanzeb/input-remapper/blob/HEAD/readme/usage.md), it might take you a while to understand the GUI and how to set up your first key association with a new device. But once you get started, you'll notice it can also map [macros](https://github.com/sezanzeb/input-remapper/blob/HEAD/readme/macros.md) and also mouse clicks if you ever want a key to trigger Krita's pop-up palette. A list of [examples](https://github.com/sezanzeb/input-remapper/blob/HEAD/readme/examples.md) will help you understand the endless possibilities, like setting new shortcuts when you [double-tap](https://github.com/sezanzeb/input-remapper/blob/cf01699c5fba4d24bb81cce5c2f8bf024ffee265/readme/examples.md#double-tap) a key, or assigning multimedia keys. Also, amazingly, the input remapper is able to catch the event for the middle key of the dial. It catches it for a "Ctrl+$" input, no surprise this key didn't do anything on my computer. but setting the dial with it is still very difficult: it looks like it's not capable of catching the events correctly. When tested: the keys of the dial remains not really functional. Finally, the input remapper developers made it easy to move the configuration from one machine to another by storing the preferences in JSON files that are simply stored in `$HOME/.config/input-remapper-2`. So the main drawbacks: the dial doesn't work with it and I couldn't find a macro code to switch to the next preset. So it looks like it is not possible to use multiple layout this way. [![](data/images/blog/2024/2024-10-06_xppen-ack05-remote_07_input-remapper.jpg)](data/images/blog/2024/2024-10-06_xppen-ack05-remote_07_input-remapper.jpg) _The Input-remapper interface while configuring the first top row of buttons of the ACK05_ ### The udev/hwdb.d method If you can't install or run input-remapper, your only other option is to manipulate the keystrokes of the default built-in layout directly with a udev/hwdb.d ruleset. This is far from ideal and has many limitations, but at least it succeed at customizing a part of the dial inputs. I have already [published a full tutorial](https://www.davidrevoy.com/article989/how-to-customise-a-usb-numeric-keypad-under-gnulinux) on this for USB numeric keypads. [![](data/images/blog/2024/2024-10-06_xppen-ack05-remote_10_default-shortcuts.jpg)](data/images/blog/2024/2024-10-06_xppen-ack05-remote_10_default-shortcuts.jpg) _the MSC Scan code on the default layout._ **The limitations:** You cannot change, for example, the 'Ctrl+O' (double-key) shortcut to 'M' (single-key). You can only replace one of the keys in the shortcut. For example, you can change the 'O' to a 'T', and the shortcut will become 'Ctrl+T' (transform tool in Krita). Also keep in mind that changing 'Ctrl' will affect all other shortcuts that use 'Ctrl', so it's generally not advisable to do this. With this limitation, all I can do is find a better use for the top three shortcuts. I'm going to replace them with a quick action combo in Krita to deform/scale/rotate an area: Ctrl+r (rectangular selection), Ctrl+t (transform), Enter (apply/confirm/validate). I'll also fix the bug with the French Azerty layout that prevents me from using Undo and Redo. [![](data/images/blog/2024/2024-10-06_xppen-ack05-remote_10_new-shortcuts.jpg)](data/images/blog/2024/2024-10-06_xppen-ack05-remote_10_new-shortcuts.jpg) _The MSC Scan change proposal, in green._ Follow the [my previous tutorial](https://www.davidrevoy.com/article989/how-to-customise-a-usb-numeric-keypad-under-gnulinux) for detailed steps, but in short, I create a new udev/hwdb.d rule: ``` sudo $EDITOR /etc/udev/hwdb.d/99-xppen-ack05-remote.hwdb ``` And I paste this custom code for the keys (and also my fix for the Azerty keyboard on the last line). ``` evdev:input:b0003v28BDp0202* KEYBOARD_KEY_70012=0x13 # [o] => [r] KEYBOARD_KEY_70011=0x14 # [n] => [t] KEYBOARD_KEY_7003e=0x1c # [F5] => [enter] KEYBOARD_KEY_7001d=0x11 # /! azerty french keyboard fix [z] => [w] ``` then I save and refresh systemd-hwdb and udevadm. ``` sudo systemd-hwdb update && sleep 2 && sudo udevadm trigger ``` done! ### Programing the hardware It's probably **impossible** to program the ACK05 with FLOSS. And by that I mean storing a firmware directly in the flash memory of the micro controller and reprogram the default shortcut keys at root. I spent more than a day trying and every method I tried was a dead end. Even for specialized FLOSS software in programmable keyboards like [QMK Firmware](https://qmk.fm/) it is impossible. FLOSS projects tend to flee the Nordic nRF52* family of micro controllers because all the tools available so far are proprietary. (Note: I'm not even 100% convinced that this is a feature of the product, but there is a "Save" and "Import" feature on the Windows driver, according to the documentation. It could simply be a way to save the setting that the driver will load later). ## Conclusion No wireless and a dial that does not really work (especially the middle button). Yes, it's far from what this device is capable of: being wireless and having multiple layouts. But the fact that it somehow works for its core functionality "out-of-the-box" and without anyone working on a specific driver is a kind of small miracle of ingenuity; both from XpPen and from the input-remapping team and input Linux developers. So bravo! An idea for XpPen engineers; if you want to make the next iteration better, just look at how an open source project like the [Duckypad](https://www.tindie.com/products/dekuNukem/duckypad-do-it-all-mechanical-macropad/) handles drivers and customization. In any case, a simple $15 USB numeric keypad will be of more value to your workflow under GNU/Linux [such as the one I build in my tutorial](https://www.davidrevoy.com/article989/how-to-customise-a-usb-numeric-keypad-under-gnulinux). There are many variations on this: my favorite shortcut device at the moment is a little yellow "8Bit do Zero 2" gamepad. It connects via bluetooth and has a built-in mode that turns all buttons into keyboard input (with only one key press, for video games). With a udev/hwdb.d rule it became a perfect keyboard shortcut tool while painting. Especially because I can hold it in my left hand and it follows all my positions. #### Sources - [The ACK05 Official User Manual (PDF)](https://www.xp-pen.com/Uploads/images/manual/ack/en/ACK05%20User%20Manual%20(English).pdf). - [The ACK05 on XpPen store (not affiliated](https://www.xp-pen.com/product/ack05-wireless-shortcut-remote.html) - [Screenshot on Reddit of firmware uploading on MsWin (in comments)](https://www.reddit.com/r/XPpen/comments/15sk0ov/any_way_to_use_and_customise_the_xppen_ack05). - [QMK Firmware, a FLOSS CLI app for keyboard firmware](https://qmk.fm/). - [QMK "Compatible Microcontrollers" documentation](https://docs.qmk.fm/compatible_microcontrollers). - [QMK issues mentioning nRF52 on Github](https://github.com/search?q=repo%3Aqmk%2Fqmk_firmware%20nRF52&type=issues) - [nRF52 MCU informations, specifications (PDFs)](https://eu.mouser.com/c/?marcom=136815203). - [Adafruit_nRF51822_Flasher](https://github.com/adafruit/Adafruit_nRF51822_Flasher). - [Nordic proprietary CLI tool for nRF52](https://www.nordicsemi.com/Products/Development-tools/nrf-command-line-tools/download) - [Arch Linux documentation about Scancode using Udev](https://wiki.archlinux.org/title/Map_scancodes_to_keycodes#Using_udev) - [Review of the XpPen windows proprietary driver on Parkablog](https://www.parkablogs.com/content/review-xppen-ack05-wireless-shortcut-remote) - [ACK05 hid-recorder dials and all keys: issue on the udev-hid-bpf project](https://gitlab.freedesktop.org/libevdev/udev-hid-bpf/-/issues/32)