@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. š„“
š§® USERS:1 FEEDS:2 TWTS:1412 ARCHIVED:88575 CACHE:2569 FOLLOWERS:22 FOLLOWING:14
@movq@www.uninformativ.de According to this screenshot, KDE still shows good old application icons: https://upload.wikimedia.org/wikipedia/commons/9/94/KDE_Plasma_5.21_Breeze_Twilight_screenshot.png
And GNOME used to have them, too: https://upload.wikimedia.org/wikipedia/commons/9/9f/Gnome-2-22_%284%29.png
I like the looks of your window manager. Thatās using Wayland, right? The only thing on this screenshot to critique is all that wasted space of the windows not making use of the full screen!!!1 At least the file browser. 8-)
This drives me nuts when my workmates share their screens. I really donāt get it how people can work like that. You canāt even read the whole line in the IDE or log viewer with all the expanded side bars. And then thereās 200 pixels on the left and another 300 pixels on the right where the desktop wallpaper shows. Gnaa! Thereās the other extreme end when somebody shares their ultra wide screen and I just have a āregularishā 16:10 monitor and donāt see shit, because itās resized way too tiny to fit my width. Good times. :-D
Sorry for going off on a tangent here. :-) Back to your WM: It has the right mix of being subtle and still similar to motif. Probably close to the older Windowses. My memory doesnāt serve me well, but I think they actually got it fairly good in my opinion. Your purple active window title looks killer. It just fits so well. This brown one (https://www.uninformativ.de/blog/postings/2025-07-22/0/leafpads.png) gives me also classic vibes. Awww. We ran some similar brownish color scheme (donāt recall its name) on Win95 or Win98 for some time on the family computer. I remember other people visting us not liking these colors. :-D
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.
š§® USERS:1 FEEDS:2 TWTS:1411 ARCHIVED:88563 CACHE:2558 FOLLOWERS:22 FOLLOWING:14
@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.
@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.
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 ā¦
š§® USERS:1 FEEDS:2 TWTS:1410 ARCHIVED:88550 CACHE:2546 FOLLOWERS:22 FOLLOWING:14
@movq@www.uninformativ.de I fully agree with you on https://www.uninformativ.de/blog/postings/2025-07-22/0/POSTING-en.html!
Although, in the first screenshot, the window title background is much darker in the new version than the old one!1!1 :-P Kidding aside, the contrast in the old one is still better.
Also, note the missing underlines for the Alt hotkeys now. I just think that the underline in the old one is too thick.
š§® USERS:1 FEEDS:2 TWTS:1409 ARCHIVED:88527 CACHE:2536 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1408 ARCHIVED:88520 CACHE:2530 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1407 ARCHIVED:88509 CACHE:2521 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1406 ARCHIVED:88503 CACHE:2547 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1405 ARCHIVED:88497 CACHE:2550 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1404 ARCHIVED:88485 CACHE:2544 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1403 ARCHIVED:88482 CACHE:2542 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1402 ARCHIVED:88477 CACHE:2562 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1401 ARCHIVED:88472 CACHE:2558 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1400 ARCHIVED:88470 CACHE:2557 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1399 ARCHIVED:88461 CACHE:2553 FOLLOWERS:22 FOLLOWING:14
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.
Spare a thought for this gopher gopher://sdf.org/1/users/xiled/phlog/2025/20250710_occupied
š§® USERS:1 FEEDS:2 TWTS:1398 ARCHIVED:88454 CACHE:2548 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1397 ARCHIVED:88446 CACHE:2562 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1396 ARCHIVED:88443 CACHE:2565 FOLLOWERS:22 FOLLOWING:14
@movq@www.uninformativ.de Yeah, itās a shitshow. MS overconfirms all my prejudices constantly.
Ignoring e-mail after lunch works great, though. :-)
Our timetracking is offline for over a week because of reasons. The responsible bunglers are falling by the skin of their teeth: https://lyse.isobeef.org/tmp/timetracking.png
- The error message neither includes the timeframe nor a link to an announcement article.
- The HTML page needs to download JS in order to display the fucking error message.
- Proper HTTP status codes are clearly only for big losers.
- Despite being down, heaps of resources are still fetched.
I find it really fascinating how one can screw up on so many levels. This is developed inhouse, Iām just so glad that weāre not a software engineering company. Oh wait. How embarrassing.
š§® USERS:1 FEEDS:2 TWTS:1395 ARCHIVED:88418 CACHE:2541 FOLLOWERS:22 FOLLOWING:14
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)
š§® USERS:1 FEEDS:2 TWTS:1394 ARCHIVED:88409 CACHE:2543 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1393 ARCHIVED:88408 CACHE:2543 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1392 ARCHIVED:88401 CACHE:2539 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1391 ARCHIVED:88396 CACHE:2535 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1390 ARCHIVED:87839 CACHE:2584 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1389 ARCHIVED:87827 CACHE:2584 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1388 ARCHIVED:87820 CACHE:2603 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1387 ARCHIVED:87814 CACHE:2599 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1386 ARCHIVED:87795 CACHE:2602 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1385 ARCHIVED:87790 CACHE:2604 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1384 ARCHIVED:87784 CACHE:2673 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1383 ARCHIVED:87781 CACHE:2688 FOLLOWERS:22 FOLLOWING:14
Weāre entering the ātoo hot to thinkā-season in 3, 2, 1 ⦠and weāre live!
š§® USERS:1 FEEDS:2 TWTS:1382 ARCHIVED:87766 CACHE:2684 FOLLOWERS:22 FOLLOWING:14
I did a ālectureā/āworkshopā about this at work today. 16-bit DOS, real mode. š¾ Pretty cool and the audience (devs and sysadmins) seemed quite interested. š„³
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. š„³ Itās very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
š§® USERS:1 FEEDS:2 TWTS:1381 ARCHIVED:87759 CACHE:2692 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1380 ARCHIVED:87754 CACHE:2699 FOLLOWERS:22 FOLLOWING:14
š§® USERS:1 FEEDS:2 TWTS:1379 ARCHIVED:87753 CACHE:2701 FOLLOWERS:22 FOLLOWING:14
On my blog: Free Culture Book Club ā First Woman ā Dream to Reality https://john.colagioia.net/blog/2025/06/21/first-woman-1.html #freeculture #bookclub
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereās no ābestā 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnāt write
- Donāt use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donāt ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youāre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed ā but this doesnāt āaddā to the program. Donāt use āsoftware is never doneā as an excuse to keep adding and adding stuff to your code.
š§® USERS:1 FEEDS:2 TWTS:1378 ARCHIVED:87729 CACHE:2694 FOLLOWERS:22 FOLLOWING:14