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:https://x.org/releases/current/doc/libX11/libX11/libX11.html#Obtaining_and_Changing_Window_Properties
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.
Diz o anúncio deste tema que qualquer música sobre "inferno, demônios, vampiros ou qualquer outra referência ao submundo" serve... Ora, em 2020 estava uma tourné anunciada com #MarilynManson e o Ozzy, que foi cancelada porque o Ozzy precisou de iniciar tratamentos, e depois houve o lockdown. Essa tourné serviria para promover o album "WE ARE CHAOS" (que nunca chegou a ser tocado ao vivo), e nele há trevas infinitas, neste "INFINITE DARKNESS"...
https://marilynmanson.bandcamp.com/track/infinite-darkness

Diz o anúncio deste tema que qualquer música sobre "inferno, demônios, vampiros ou qualquer outra referência ao submundo" serve... Ora, em 2020 estava uma tourné anunciada com #MarilynManson e o Ozzy, que foi cancelada porque o Ozzy precisou de iniciar tratamentos, e depois houve o lockdown. Essa tourné serviria para promover o album "WE ARE CHAOS" (que nunca chegou a ser tocado ao vivo), e nele há trevas infinitas, neste "INFINITE DARKNESS"...
https://marilynmanson.bandcamp.com/track/infinite-darkness

https://trytender.app/
https://www.aaedmusa.com/projects/cara
#ptpol
#ptpol
#ptpol
$ 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*.
$ 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*.
The lid and bottom came from a wardrobe back panel I got from a mate, the sides were rocket sticks in their former lives. I found some scrap of felt in our material store and some hinges laying around in the drawers of my own workshop.
Unfortunately, the table saw teared up the plywood veneer fibres badly, even though I put tape around to prevent that. This is the first time it didn't work. At. All. To cover that up, I painted the box with some decades old tinting paint (price tag says Deutsche Mark, not Euro!) from my paint cabinet. It's awesome, works absolutely perfectly and doesn't smell the slightest bit. I reckon, this caliper box is plenty good enough for occasional use at our scout material store.

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?
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?
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.
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.
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
…
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
…
https://qwenlm.github.io/blog/qwen3-coder/
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.
https://kau.sh/blog/how-to-firefox/
/short/
if it's of this useless kind. Never thought that they ever actually will improve their Atom feeds. Thank you, much appreciated!
https://github.com/villares/sketch-a-day/blob/main/admin_scripts/pngs_to_gif.py
I should add a "public domain dedication" to both scripts...
#Python #imageio #GIFAnimation
> certificate is valid for cluster029.hosting.ovh.net, not adn.org.es
That's what you get when playing with bleeding edges. :-D
Let me try to visualize it,
|
represent full images, .
just subsequent deltas:
Original start of video
↓
|......|.....|........|......|..
↑ ↑
Cut point Cut point
Resulting video:
....|.....|........|....
↑↑↑↑
This is where it freezes
Could be complete bullshit, though. Wouldn't be the first time that I'm wrong. :-)
I'm just curious, what exact command line do you use to cut the video?
- https://github.com/labwc/labwc/issues/1068
- https://github.com/labwc/labwc/pull/2933
(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.)
- https://github.com/labwc/labwc/issues/1068
- https://github.com/labwc/labwc/pull/2933
(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.)