Okay, often times, these βemployer gimmicksβ are just silly, but this one did make me laugh:
@lyse@lyse.isobeef.org Oh dear. π So glad that WfH is a thing now. Imagine how utterly annoying it would be if they expected you to still come in despite this β¦
Another wave of tens of thousands of hints by the same bot on the same file:
https://movq.de/v/61f8d39d2f/s.png
Thereβs probably a simple explanation for this: Maybe this bot was written with βAIβ and itβs simply complete garbage.
This isnβt a serious threat for my low-profile website β yet. Canβt wait for this to get worse β¦
This genre is great for background music: https://www.youtube.com/watch?v=nβSX54AUZU
@eric@itsericwoodward.com I guess it is. π
@bender@twtxt.net curl -s gopher://β¦
does that for you.
Whatβs Missing from βRetroβ: gopher://midnight.pub/0/posts/2679
Hard to believe that this song is from 1985:
@prologic@twtxt.net They would know how to do that, but the issue was anything else, like switching workspaces or opening a terminal window or any window at all. π
We did an experiment at work today: Do I even need to lock my laptop when Iβm gone or is nobody able to use it anyway?
It went as expected. π€£
@prologic@twtxt.net Iβm so tired of this. (Thatβs the goal. They want to wear people down.)
@kat@yarn.girlonthemoon.xyz If youβre willing to ignore that itβs proprietary software, then Windows used to be pretty good. Like, 25 years ago. After Windows 2000 (or maybe XP) it went downhill fast. Kind of makes me sad, actually. π
apt
manpage of Ubuntu recently, which, for some reason, uses blue text in one place:
Ah, so apparently they donβt like writing manpages anymore and instead use XML:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.8.xml
And then they use XSLT on top and what not:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/manpage-style.xsl.cmake.in
Itβs not even explicitly blue:
https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.ent?ref_type=heads#L17
Abstractions upon abstractions upon abstractions.
@kat@yarn.girlonthemoon.xyz Oh no. π¨ Backups! We need more backups!
You can explicitly use colors in manpages. I saw this in the apt
manpage of Ubuntu recently, which, for some reason, uses blue text in one place:
https://movq.de/v/de5ab72016/s.png
Makes little sense to me. Iβm glad that most manpages donβt do this. I wouldnβt want unicorn vomit all over the place.
Using colors can be done using the low level commands \m
and \M
:
.TH foo_program 3
\m[blue]I'm blue\m[], da ba dee.
\m[red]\M[yellow]I'm red on yellow.\m[]\M[]
This is quite horrible.
Spiders are the only web developers that enjoy finding bugs.
@eldersnake@we.loveprivacy.club Yeah, itβs really the last thing we need. Iβd love to see X11 getting more attention β but not like this β¦
In case you were blissfully unaware: https://utcc.utoronto.ca/~cks/space/blog/unix/XLibreIsExplicitlyPolitical
@bender@twtxt.net This should be a core feature, no configuration required. π€
@kat@yarn.girlonthemoon.xyz On the one hand, all these programs have a very long history and the technology behind manpages is actually very powerful β you can use it to write books:
https://www.troff.org/pubs.html
I have two books from that list, for example βThe UNIX programming environmentβ:
https://movq.de/v/c3dab75c97/upe.jpg
Itβs a bit older, of course, but it looks and feels like a normal book, and it uses the same tech as manpages β which I think is really cool. π
Itβs comparable to LaTeX (just harder/different to use) but much faster than LaTeX. You can also do stuff like render manpages as a PDF (man -Tpdf cp >cp.pdf
) or as an HTML file (man -Thtml cp >cp.html
). I think I once made slides for a talk this way.
On the other hand, traditional manpages (i.e., ones that are not written in mandoc) do not use semantic markup. They literally say, βthis text is bold, that text over here is italicsβ, and so on.
So when you run man foo
, it has no other choice but to show it in black, white, bold, underline β showing it in color would be wrong, because thatβs not what the source code of that manpage says.
Colorizing them is a hack, to be honest. Youβre not meant to do this. (The devs actually broke this by accident recently. They themselves arenβt really aware that people use colors.)
If mandoc and semantic markup was more commonly used, I think it would be easier to convince the devs to add proper customizable colors.
(Just for fun, SuSE Linux 6.4 from ~25 years ago: https://movq.de/v/dc62d0256c/s.png )
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz Colorized manpages have been a thing for a very long time:
https://movq.de/v/81219d7f7a/s.png
Problem is, hardly anybody knows this, because you configure this by β¦ drumroll β¦ overwriting TERMCAP entries of less
in your ~/.bashrc
:
export LESS_TERMCAP_md=$'\e[38;5;3m' # Bold⨠export LESS_TERMCAP_me=$'\e[0m' # End Bold
export LESS_TERMCAP_us=$'\e[4;38;5;6m' # Underline⨠export LESS_TERMCAP_ue=$'\e[0m' # End Underline
export GROFF_NO_SGR=1 # Needed since groff 1.23
Speaking of manpages:
βMan pages are great, man readers are the problemβ
https://whynothugo.nl/journal/2025/04/09/man-pages-are-great-man-readers-are-the-problem/
mandoc is nicer to read/write than the man
macro package and, most importantly, itβs semantic markup.
HTML output is a bit broken in GNU groff, though (OpenBSD on the left, GNU on the right):
https://movq.de/v/f1898e648f/s.png
π€
Still, Iβm inclined to convert my manpages to mandoc.
@kat@yarn.girlonthemoon.xyz I still havenβt tried it. π€ Some day, perhaps β¦
@kiwu@twtxt.net Hello. π
In 1996, they came up with the X11 βSECURITYβ extension:
https://www.reddit.com/r/linux/comments/4w548u/what_is_up_with_the_x11_security_extension/
This is what could have (eventually) solved the security issues that weβre currently seeing with X11. Those issues are cited as one of the reasons for switching to Wayland.
That extension never took off. The person on reddit wonders why β I think itβs simple: Containers and sandboxes werenβt a thing in 1996. It hardly mattered if X11 was βinsecureβ. If you could run an X11 client, you probably already had access to the machine and could just do all kinds of other nasty things.
Today, sandboxing is a thing. Today, this matters.
Iβve heard so many times that βX11 is beyond fixable, itβs hopeless.β I donβt believe that. I believe that these problems are solveable with X11 and some devs have said βyeah, we could have kept working on itβ. Itβs that people donβt want to do it:
Why not extend the X server?
Because for the first time we have a realistic chance of not having to do that.
https://wayland.freedesktop.org/faq.html
Iβm not in a position to judge the devs. Maybe the X.Org code really is so bad that you want to run away, screaming in horror. I donβt know.
But all this was a choice. I donβt buy the argument that we never would have gotten rid of things like core fonts.
All the toolkits and programs had to be ported to Wayland. A huge, still unfinished effort. If that was an acceptable thing to do, then it would have been acceptable to make an βX12β that keeps all the good things about X11, remains compatible where feasible, eliminates the problems, and requires some clients to be adjusted. (You could have still made βX11X12β like βXWaylandβ for actual legacy programs.)
I wasnβt really aware until recently that programs canβt choose their own windowβs position on Wayland. This is very weird to me, because this was not an issue on X11 to begin with: X11 programs can request a certain position and size, but the X11 WM ultimately decides if that request is being honored or not. And users can configure that.
But apparently, this whole thing is a heated debate in the Wayland world. π€
βWayland Will Never Be Ready For Every X.Org Userβ
This is just the universe telling me to reduce my screen time.
@lyse@lyse.isobeef.org To be fair, I did first notice this a while ago. But no monitor I ever had showed burn-ins like this (be it TFT or CRT), so I didnβt know that I should have sent it back. And then it got worse over time and now I see ghost images after 20-30 minutes. :(
@kat@yarn.girlonthemoon.xyz Ooooooohhhhh, nice π²
Really, it wonβt be long until I give the world the finger and move everything behind Gopher or Gemini. Itβll be a while until the bots find me there.
@prologic@twtxt.net Iβd expect a custom build like that to cost at least 50β000β¬ here in Europe. Used campers with 100β000 - 200β000 km already on their clock are 20-40kβ¬, apparently. π
gcr
thing running with debug logs enabled that print stuff like βsending secret exchange: β¦β? Is this healthy?)
@lyse@lyse.isobeef.org Looks like it. π€ Didnβt dig deeper into this, just uninstalled it. π₯΄
@lyse@lyse.isobeef.org 4 years. π«€
Do I buy a new monitor or do I live with the burn-ins all the time? Itβs getting annoying. When I edit images in GIMP, I have to double check if something is a pixel or a burn-in.
@prologic@twtxt.net If anything looks expensive, then itβs that. π
Stuff that nobody needs:
systemctl uses ANSI escape codes to underline text (\e[4m
) and then it also uses special escape codes β that Wikipedia classifies as βnot in the standardβ, but I havenβt looked it up β to change the color of the underline. That color change is barely noticeable in the first place.
Some terminals donβt support this and now my systemctl output is blinking because of that.
(Now why is that GNOME gcr
thing running with debug logs enabled that print stuff like βsending secret exchange: β¦β? Is this healthy?)
You know youβre getting old when thereβs quite a few scripts in your ~/bin
that you use daily, but you havenβt edited them once in well over 10 years β¦
@lyse@lyse.isobeef.org βAdvancedβ, well, probably more βmatureβ. There arenβt a ton of crazy features and that icon thing is the largest code addition in the last 10 years. %)
Speaking of OS/2 β¦ I just realized that Windows 3.x didnβt have icons, either. If Iβm not mistaken, this only got added in Windows 95. In other words, OS/2 had this feature before Windows did, because at least OS/2 2.1 from 1993 had icons. Who would have thunk.
(Now I kind of want to know which system really introduced this feature.)
@kat@yarn.girlonthemoon.xyz dmenu is such a great tool. So simple, yet so versatile.
@lyse@lyse.isobeef.org Oh, huh, maybe it was just my GNOME 2 themes back then that didnβt show the icon. π€
I like the looks of your window manager. Thatβs using Wayland, right?
Oh, no. Itβs still X11. All my recent Wayland comments resulted from me trying to switch, but I think itβs still too early. Being unable to use QEMU (because it canβt capture the mouse pointer) is a pretty big blocker for me. This is completely broken, it just happens to be unnoticeable with modern guest OSes, so itβs probably not a priority for devs.
(Not to mention that I would have to fork and substantially extend dwl in order to βreplicateβ my X11 WM. And then, after having done that, Iβd have to follow upstream Wayland development, for which I donβt have the resources. Things would need to slow down before I can do that.)
all that wasted space of the windows not making use of the full screen!!!1
Heh. Iβve been using tiling WMs for ~15 years now, so itβs actually kind of refreshing to see something different for a change. π
Probably close to the older Windowses.
That particular theme is a ripoff of OS/2 Warp 3: https://movq.de/v/6c2a948882/s.png π
We ran some similar brownish color scheme (donβt recall its name) on Win95 or Win98
Oh god. Yeah, I wasnβt a fan of those, either. π₯΄
@lyse@lyse.isobeef.org True, at least old versions of KDE had icons:
https://movq.de/v/0e4af6fea1/s.png
GNOME, on the other hand, didnβt, at least to my old screenshots from 2007:
https://www.uninformativ.de/desktop/2007%2D05%2D25%2D%2Dgnome2%2Dlaptop.png
I switched to Linux in 2007 and no window manager I used since then had icons, apparently. Crazy. An icon-less existence for 18 years. (But yeah, everything is keyboard-driven here as well and there are no buttons here, either.)
Anyway, my draft is making progress:
https://movq.de/v/5b7767f245/s.png
I do like this look. π
Hereβs an example of X11/Xlib being old and archaic.
X11 knows the data type βcardinalβ. For example, the window property _NET_WM_ICON
(which holds image data for icons) is an array of βcardinalβ. I am already not really familiar with that word and Iβm assuming that it comes from mathematics:
https://en.wikipedia.org/wiki/Cardinal_number
(It could also be a bird, but probably not: https://en.wikipedia.org/wiki/Cardinalidae)
We would probably call this an βintegerβ today.
EWMH says that icons are arrays of cardinals and that theyβre 32-bit numbers:
https://specifications.freedesktop.org/wm-spec/latest-single/#id-1.6.13
So itβs something like 0x11223344
with 0x11
being the alpha channel, 0x22
is red, and so on.
You would assume that, when you retrieve such an array from the X11 server, youβd get an array of uint32_t
, right?
Nope.
Xlib is so old, they use char
for 8-bit stuff, short int
for 16-bit, and long int
for 32-bit:
That is congruent with the general C data types, so it does make sense:
https://en.wikipedia.org/wiki/C_data_types
Now the funny thing is, on modern x86_64
, the type long int
is actually 64 bits wide.
The result is that every pixel in a Pixmap, for example, is twice as large in memory as it would need to be. Just because Xlib uses long int
, because uint32_t
didnβt exist, yet.
And this is something that I wouldnβt know how to fix without breaking clients.
@lyse@lyse.isobeef.org So it might just be what the youngsters call a βskill issueβ? π
@lyse@lyse.isobeef.org They are optional dependencies and listed as such:
$ pacman -Qi pinentry
Name : pinentry
Version : 1.3.1-5
Description : Collection of simple PIN or passphrase entry dialogs which
utilize the Assuan protocol
Optional Deps : gcr: GNOME backend [installed]
gtk3: GTK backend [installed]
qt5-x11extras: Qt5 backend [installed]
kwayland5: Qt5 backend
kguiaddons: Qt6 backend
kwindowsystem: Qt6 backend
And itβs probably a good thing that theyβre optional. I wouldnβt want to have all that installed all the time.
I was drafting support for showing βapplication iconsβ in my window manager, i.e. the Firefox icon in the titlebar:
https://movq.de/v/0034cc1384/s.png
Then I realized: Wait a minute, lots of applications donβt set an icon? And lots of other window managers donβt show these icons, either? Openbox, pekwm, Xfce, fvwm, no icons.
Looks like macOS doesnβt show them, either?!
Has this grown out of fashion? Is this purely a Windows / OS/2 thing?
@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz I spent so much time in the past figuring out if something is a dict or a list in YAML, for example.
What are the types in this example?
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
size: 8
price: 133.7
quantity: 1
items
is a dict containing β¦ a list of two other dicts? Right?
It is quite hard for me to grasp the structure of YAML docs. π’
The big advantage of YAML (and JSON and TOML) is that itβs much easier to write code for those formats, than it is with XML. json.loads()
and youβre done.
/short/
if it's of this useless kind. Never thought that they ever actually will improve their Atom feeds. Thank you, much appreciated!
@lyse@lyse.isobeef.org I might need that script as well. ππ
Only figured this out yesterday:
pinentry
, which is used to safely enter a password on Linux, has several frontends. Thereβs a GTK one, a Qt one, even an ncurses one, and so on.
GnuPG also uses pinentry
. And you can configure your frontend of choice here in gpg-agent.conf
.
But what happens when you donβt configure it? Whatβs the default?
Turns out, pinentry
is a shellscript wrapper and itβs not even that long. Here it is in full:
#!/bin/bash
# Run user-defined and site-defined pre-exec hooks.
[[ -r "${XDG_CONFIG_HOME:-$HOME/.config}"/pinentry/preexec ]] && \
. "${XDG_CONFIG_HOME:-$HOME/.config}"/pinentry/preexec
[[ -r /etc/pinentry/preexec ]] && . /etc/pinentry/preexec
# Guess preferred backend based on environment.
backends=(curses tty)
if [[ -n "$DISPLAY" || -n "$WAYLAND_DISPLAY" ]]; then
case "$XDG_CURRENT_DESKTOP" in
KDE|LXQT|LXQt)
backends=(qt qt5 gnome3 gtk curses tty)
;;
*)
backends=(gnome3 gtk qt qt5 curses tty)
;;
esac
fi
for backend in "${backends[@]}"
do
lddout=$(ldd "/usr/bin/pinentry-$backend" 2>/dev/null) || continue
[[ "$lddout" == *'not found'* ]] && continue
exec "/usr/bin/pinentry-$backend" "$@"
done
exit 1
Preexec, okay, then some auto-detection to use a toolkit matching your desktop environment β¦
β¦ and then it invokes ldd
? To find out if all the required libraries are installed for the auto-detected frontend?
Oof. I was sitting here wondering why it would use pinentry-gtk
on one machine and pinentry-gnome3
on another, when both machines had the exact same configs. Yeah, but different libraries were installed. One machine was missing gcr
, which is needed for pinentry-gnome3
, so that machine (and that one alone) spawned pinentry-gtk
β¦
@lyse@lyse.isobeef.org The cynic in me says: βItβs not bleeding edge, itβs from 2008!β Thatβs not fair, though, looks like the issue only arose in libinput in 2019. And maybe these weird mice are super rare. Dunno.
@lyse@lyse.isobeef.org The underlines are a bit much, yes. It appears to be related to my font (Helvetica) β¦ Maybe they do some Unicode trickery these days, I donβt know. π«€
@lyse@lyse.isobeef.org Whatβs bleeding edge? The mouse? Yeah, maybe. π I didnβt buy that on purpose and didnβt even know hi-res mouse wheels were a thing β¦
Since Wayland compositors handle input devices on a lower level than X11 window managers, every compositor has to figure out on their own what a βmouse wheel clickβ is:
(I think βWayland compositorβ is a misnomer. They are full-blown display servers that also do compositing, plus Wayland window management, plus X11 window management.)
One can only hope that all this eventually gets moved into the wlroots library. (Iβm not sure if thatβs possible, nor if people would want that.)
I wore a Kubernetes shirt, in public, by accident, and now I feel dirty and ashamed. π’
@kat@yarn.girlonthemoon.xyz I kind of like XML because itβs mostly well-defined and easy for humans to read (unlike YAML, which is a complete mess, imho) β¦ and at the same time, it can get complicated really fast. π«€ But at least itβs plain-text β thatβs the important part in this case. π
Xfce does one thing very right: It stores its settings in plain-text XML files. This allows me to easily read, track, and maybe even distribute these settings to other machines.
(Unlike GNOMEβs dconf, which uses some binary file format. Fun fact: The older and now deprecated gconf also used XML files.)
Nuke it from orbit: https://www.aaron.ai/
Nooooooooooooooooooooooooooooooooooooooooooooooooooooooo, the doctors have started using AI voice agents and they understand jack shit. πππ
@lyse@lyse.isobeef.org Hm, I donβt think so, the requested page was a Linux-specific post. π€ I sometimes wonder if privacy-oriented browsers might do this on purpose, to create garbage data? π€ No idea.
@lyse@lyse.isobeef.org I honestly wish I could do more than just sit here and wait. Itβs just a matter of time until they remove X.Org from the repos. π«€ But I really canβt dedicate so much time to this β¦
I give up.
Letβs try again next year. I donβt have the stamina. Death by a thousand paper cuts.
Canβt set up a meaningful taskbar: https://github.com/labwc/labwc/discussions/2924 (This is not a labwc issue, itβs a generic issue in the broader Wayland ecosystem.)
HTTP referrers are quite broken, arenβt they?
Because of that recent storm on my blog, I had a peek at them. Thereβs a lot of garbage in there. For example, https://docs.freebsd.org/en/books/handbook/disks-virtual.html is supposed to refer to one of my blog posts β¦
Whatβs going on here?
@bender@twtxt.net Even I donβt believe in that anymore. :β(
@lyse@lyse.isobeef.org Donβt remind me about Morse. I really wanted to learn that and tried so for quite a while, but no success. π’
@aelaraji@aelaraji.com And I read the following funny response to that:
Bluesky: Users verify their age by adding a payment method or uploading a photo ID.
Mastodon: Users verify their age by posting pictures of the vintage computer equipment in their homes.
https://beige.party/@maxleibman/114848276288629121
π
AI this, AI that.
Tech is no longer interesting. I need to find a new field.
(β¦ maybe followed by βtmux Thursdayβ to cool down β¦)
Thinking about doing βWayland Wednesdayβ. Only use Wayland every Wednesday. Collect bugs, report bugs, fix bugs.
@lyse@lyse.isobeef.org 06.jpg is quite funny. Block the road for 30 minutes! %)
@bender@twtxt.net Hm, it is now. π€ I should have made a screenshot when I first saw it.
setpriv
on Linux supports Landlock.
@prologic@twtxt.net Yeah, itβs not a strong sandbox in jennyβs case, it could still read my SSH private key (in case of an exploit of some sort). But I still like it.
I think my main takeaway is this: Knowing that technologies like Landlock/pledge/unveil exist and knowing that they are very easy to use, will probably nudge me into writing software differently in the future.
jenny was never meant to be sandboxed, so it canβt make great use of it. Future software might be different.
(And this is finally a strong argument for static linking.)
Looks like hereβs something wrong with Markdown parsing. π€ The original twt looks like this:
>This extension was turned off because it is no longer supported
Thanks Google.
This browser was uninstalled because it absolutely sucks!
So only the first line should be a quote.
setpriv
on Linux supports Landlock.
Landlock is still young and a bit unpolished, but itβs slowly getting more popular. π₯³
setpriv
on Linux supports Landlock.
Another example:
$ setpriv \
--landlock-access fs \
--landlock-rule path-beneath:execute,read-file:/bin/ls-static \
--landlock-rule path-beneath:read-dir:/tmp \
/bin/ls-static /tmp/tmp/xorg.atom
The first argument --landlock-access fs
says that nothing is allowed.
--landlock-rule path-beneath:execute,read-file:/bin/ls-static
says that reading and executing that file is allowed. Itβs a statically linked ls
program (not GNU ls).
--landlock-rule path-beneath:read-dir:/tmp
says that reading the /tmp
directory and everything below it is allowed.
The output of the ls-static
program is this line:
βrwβrββrββββx 3000 200 07-12 09:19 22'491 β /tmp/tmp/xorg.atom
It was able to read the directory, see the file, do stat()
on it and everything, the little x
indicates that getting xattrs also worked.
3000
and 200
are user name and group name β they are shown as numeric, because the program does not have access to /etc/passwd
and /etc/group
.
Adding --landlock-rule path-beneath:read-file:/etc/passwd
, for example, allows resolving users and yields this:
βrwβrββrββββx cathy 200 07-12 09:19 22'491 β /tmp/tmp/xorg.atom
PSA: setpriv
on Linux supports Landlock.
If this twt goes through, then restricting the filesystem so that jenny can only write to ~/Mail/twt
, ~/www/twtxt.txt
, ~/.jenny-cache
, and /tmp
works.
st tries not to redraw immediately after new data arrives:
https://git.suckless.org/st/file/x.c.html#l1984
The exact timings are configurable.
This is the PR that changed the timing in VTE recently (2023):
https://gitlab.gnome.org/GNOME/vte/-/issues/2678
There is a long discussion. Itβs not a trivial problem, especially not in the context of GTK and multiple competing terminal widgets. st dodges all these issues (for various reasons).
Something happened with the frame rate of terminal emulators lately. It looks like thereβs a trend to run at a high framerate now? Iβm not sure exactly. This can be seen in VTE-based terminals like my xiate or XTerm on Wayland. foot and st, on the other hand, are fine.
My shell prompt and cursor look like this:
$ β
When I keep Enter pressed, I expect to see several lines like so:
$
$
$
$
$
$
$ β
With the affected terminal emulators, the lines actually show up in the following sequence. First, we have the original line:
$ β
Pressing Enter yields this as the next frame:
$
β
And then eventually this:
$
$ β
In other words, you can see the cursor jumping around very quickly, all the time.
Another example: Vim actually shows which key you just pressed in the bottom right corner. Keeping j
pressed to scroll through a file means I get to see a j
flashing rapidly now.
(I have no idea yet, why exactly XTerm in X11 is fine but flickering in Wayland.)
The WM_CLASS
Property is used on X11 to assign rules to certain windows, e.g. βthis is a GIMP window, it should appear on workspace number 16.β It consists of two fields, name
and class
.
Wayland (or rather, the XDG shell protocol β core Wayland knows nothing about this) only has a single field called app_id
.
When you run X11 programs under Wayland, you use XWayland, which is baked into most compositors. Then you have to deal with all three fields.
Some compositors map name
to app_id
, others map class
to app_id
, and even others directly expose the original name
and class
.
Apparently, there is no consensus.
Yeah, little fellow. I also just want to walk away. https://movq.de/v/bef8c35f01/ach.mp4
βπ«©β is my new favorite emoji.
@lyse@lyse.isobeef.org Yeah, if thereβs no stable API, then itβs not a lot of fun β¦ Bah. :|
β¦ but you canβt set SDL_VIDEODRIVER=wayland
globally, because that breaks Wine again β¦
β¦ okay, the SDL backend works if you also set SDL_VIDEODRIVER=wayland
.
@lyse@lyse.isobeef.org dmenu is a great example.
There have been several attempts at porting dmenu from X11 to Wayland. Well, not exactly βportingβ it, more like rewriting it from scratch. Turns out: Itβs not that easy.
dmenu is super fast and reliable. None of the Wayland rewrites are (at least none of the popular ones that I know of). They are either bloated and/or slow.
It takes a lot of discipline and restraint to write simple software and not blow up the codebase. This is much harder than people think. Itβs a form of art, really.
@lyse@lyse.isobeef.org I do my timetracking in a little Python script, locally. Every now and then, I push the data to our actual service. Problem solved β but itβs a completely unpopular approach, they all want to use the web site. I donβt get it. Then, of course, when itβs down, shit hits the fan. (Luckily, our timetracking software is neither developed nor run by us anymore. Itβs a silly cloud service, but the upside is that Iβm not responsible anymore. π€·)
Some of our oldschool devs tried to roll out local timetracking once, about 15 years ago. I donβt remember anymore why they failed β¦
This is developed inhouse, Iβm just so glad that weβre not a software engineering company. Oh wait. How embarrassing.
Oh to be anonymous on the internet. That must be nice. π
β¦ but the SDL backend is broken as well, albeit differently β¦
β¦ which is probably a GTK bug.
QEMU on Wayland unusable, because it canβt grab the mouse β¦ Iβll add it to my TODO list and investigate/report it eventually.
@prologic@twtxt.net Yeah, this really could use a proper definition or a βmanifestβ. π Many of these ideas are not very wide spread. And I havenβt come across similar projects in all these years.
Letβs take the farbfeld image format as an example again. I think this captures the βspiritβ quite well, because this isnβt even about code.
This is the entire farbfeld spec:
farbfeld is a lossless image format which is easy to parse, pipe and compress. It has the following format:
ββββββββββ€ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bytes β Description β
β βββββββββͺββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β 8 β "farbfeld" magic value β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (width) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β 4 β 32-Bit BE unsigned integer (height) β
ββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ’
β [2222] β 4x16-Bit BE unsigned integers [RGBA] / pixel, row-major β
ββββββββββ§ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
The RGB-data should be sRGB for best interoperability and not alpha-premultiplied.
(Now, I donβt know if your screen reader can work with this. Let me know if it doesnβt.)
I think these are some of the properties worth mentioning:
- The spec is extremely short. You can read this in under a minute and fully understand it. That alone is gold.
- There are no βknobsβ: Itβs just a single version, itβs not like thereβs also an 8-bit color depth version and one for 16-bit and one for extra large images and one that supports layers and so on. This makes it much easier to implement a fully compliant program.
- Despite being so simple, itβs useful. Iβve used it in various programs, like my window manager, my status bars, some toy programs like βtuxeyesβ (an Xeyes variant), or Advent of Code.
- The format does not include compression because it doesnβt need to. Just use something like bzip2 to get file sizes similar to PNG.
- It doesnβt cover every use case under the sun, but it does cover the most important ones (imho). They have discussed using something other than RGBA and decided itβs not worth the trouble.
- They refrained from adding extra baggage like metadata. It would have needlessly complicated things.
@prologic@twtxt.net Hm, I wouldnβt say that. Go code could fall into that category as well.
Maybe this topic could use a blog post / article, that explains what itβs about. Iβm finding it hard to really define what βsuckless-like softwareβ is. π€ (Their own philosophy focuses too much on elitism, if you ask me.)
@prologic@twtxt.net Ah, Iβm referring to software thatβs similar to that of suckless.org: Small, minimal codebases, small tools, but still useful. dmenu is probably the best example and also farbfeld.
Hereβs the author of Anubis talking about some of their experiences:
https://xeiaso.net/blog/why-i-use-suckless-tools-2020-06-05/
(You can skip the long config and keybinds part.)
The lack of suckless-like simple, hackable software these days is appalling.
The Linux installation on my main PC turned 14 today:
$ head -n 1 /var/log/pacman.log
[2011-07-07 11:19] installed filesystem (2011.04-1)
@eldersnake@we.loveprivacy.club This wasnβt always the case, though. Quake3, Quake4, Unreal Tournament 99 and 2004 are examples of games that used to run very well as native Linux games. But that was 20+ years ago β¦
@lyse@lyse.isobeef.org (Itβs either that, or the fact that itβs womenβs football and βnobody wants to see that anywayβ.)