# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 220676
# self = https://watcher.sour.is?offset=220567
# next = https://watcher.sour.is?offset=220667
# prev = https://watcher.sour.is?offset=220467
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
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 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 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 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 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. 🫤
Qwen3-Coder: Agentic Coding in the World
https://qwenlm.github.io/blog/qwen3-coder/
[47°09′14″S, 126°43′28″W] Transponder malfunction
[47°09′19″S, 126°43′27″W] Reading: 1.34 Sv
[47°09′13″S, 126°43′30″W] Raw reading: 0x68806C51, offset +/-1
yggdrasil Network <3 http://[200:6823:aabc:7629:cd2d:e9d7:cf7f:c6f8] #ygg #httpd #ergo #ipv6
@andros U2FsdGVkX1/IvWjriWZG42dQhwoouGubCVIGytDynx3GTo5H8WJH3LkzaR80PGAZHiy3OtRJaTWluQ56NE+6jQ==
🧮 USERS:1 FEEDS:2 TWTS:1410 ARCHIVED:88550 CACHE:2546 FOLLOWERS:22 FOLLOWING:14
Desktop SSH->Pinephone->here. This is crazy. Sxmo is the best UI for the Pinephone, and maybe phones in general. Insane: basically dwm on a phone with gestures and built-in yt-dlp + mpv (among others).
[47°09′12″S, 126°43′15″W] --bad checksum--
@movq 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.
How to Firefox
https://kau.sh/blog/how-to-firefox/
@movq LOL! No, I mean Wayland.
Of course, @kat! But I'll first write some instructions (hopefully this week) and then let you know. :-) Should be much easier then.
@lyse 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 …
@lyse 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 …
https://www.wsws.org/en/articles/2025/07/21/ckjv-j21.html
https://www.un.org/unispal/document/a-hrc-59-23-from-economy-of-occupation-to-economy-of-genocide-report-special-rapporteur-francesca-albanese-palestine-2025/
[47°09′29″S, 126°43′13″W] Non-significative results -- sampling finished
[47°09′44″S, 126°43′21″W] Re-taking samples
[47°09′51″S, 126°43′34″W] Taking samples
new snapshot, #openbsd works like a charm :)
new snapshot, #openbsd works like a charm :)
[47°09′52″S, 126°43′43″W] --interrupted--
🧮 USERS:1 FEEDS:2 TWTS:1409 ARCHIVED:88527 CACHE:2536 FOLLOWERS:22 FOLLOWING:14
Hi @wxcafe@wxcafe ! Is the Hackers GIF bot still running somewhere?
Hi @wxcafe@wxcafe ! Is the Hackers GIF bot still running somewhere?
Hi @wxcafe@wxcafe ! Is the Hackers GIF bot still running somewhere?
@lyse got this script anywhere cuz i would be interested 👀👀👀
@lyse got this script anywhere cuz i would be interested 👀👀👀
@lyse that's so interesting omg!!! if true i wonder why it does that.... so weird!
@lyse that's so interesting omg!!! if true i wonder why it does that.... so weird!
check my shit plis! xD https://dev1lsconf.github.io/
Hello from Romania as well
I have a Python script that transforms the original YouTube channel Atom feed into a more useful Atom feed by removing the spam description and replacing it with the video duration, filtering out videos by title, duration, etc. I just updated it to exclude the damn Shorts garbage more efficiently. Finally, YouTube updated their Atom feed generation, so that the video URL contains /short/ if it's of this useless kind. Never thought that they ever actually will improve their Atom feeds. Thank you, much appreciated!
@javivf Perfect, it's fixed! :-)
Hey @lyse thanks for noticing. I think I had a DNS record pointing to the old IPv6 host. Is the issue gone now?
The command line version is here:

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
Hi @javivf, your TLS certificate ia broken:

> certificate is valid for cluster029.hosting.ovh.net, not adn.org.es
[47°09′31″S, 126°43′12″W] Dosimeter overflow
@movq Oh boy! Fingers crossed.

That's what you get when playing with bleeding edges. :-D
@kat I have absolutely no idea, but I wouldn't be surprised if it uses the closest full image after your cut point and not the one before. Hence, the deltas between the two full images have nothing to really refer to. So, the video player just shows the first full image it finds and "freezes" the image until the video stream actually hits it.

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?
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:

- 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.)
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:

- 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.)
[47°09′30″S, 126°43′19″W] Dosimeter fixed
@birb@birb https://www.jornalmapa.pt/rss
@birb@birb https://www.jornalmapa.pt/rss
@birb@birb https://www.jornalmapa.pt/rss
@kat why does ffmpeg always freeze the video in the first five seconds after a cut lmfao
@kat why does ffmpeg always freeze the video in the first five seconds after a cut lmfao
can you imagine being this cunty
can you imagine being this cunty
@kat not k-pop but i will share one. look at my girl dambara ruru
@kat not k-pop but i will share one. look at my girl dambara ruru
we need more k-pop stans on here i swear that is the key to making this network even more alive. bring in the fan cams❗❗❗❗❗❗❗
we need more k-pop stans on here i swear that is the key to making this network even more alive. bring in the fan cams❗❗❗❗❗❗❗
i should work on my PHP project again just so i have an excuse to use htmx
i should work on my PHP project again just so i have an excuse to use htmx
[47°09′10″S, 126°43′25″W] Resetting dosimeter
@lyse yeah same YAML over XML forever bc at least one is more readable lmfao!! doesn't forgive YAML's crimes though... cursed formats
@lyse yeah same YAML over XML forever bc at least one is more readable lmfao!! doesn't forgive YAML's crimes though... cursed formats
@lyse yesss it's not my idea but it's sooo fun here ngl like i should use it more!!
@lyse yesss it's not my idea but it's sooo fun here ngl like i should use it more!!
New day and new workout done! Today was full body HIIT, lower body and some abs, for a total of 40 minutes. I am very happy that I did it!
New day and new workout done! Today was full body HIIT, lower body and some abs, for a total of 40 minutes. I am very happy that I did it!
#MaradoWeekly #WeeklyPlant Week 29 Pumpkin flower
#MaradoWeekly #WeeklyPlant Week 29 Pumpkin flower
#MaradoWeekly #WeeklyPlant Week 29 Pumpkin flower
The warning is: your browser is suspiciously anonymous. And my ip from Telekom Munich.
Telekom GmbH Munich
Sorry shibboleths.org! I get a warning with my ip, even when I use lynx with a german IP from
[47°09′42″S, 126°43′32″W] Dosimeter malfunction
Well that was a short night 😴 and it seems like the thunderstorm dropped a few degrees but the humidity is still awful.
[47°09′59″S, 126°43′41″W] Raw reading: 0x687DC951, offset +/-4
I have this very simple #Python script that uses #imageio to convert all PNG files on a folder into a #GIFAnimation, and this is a #FreeSimpleGUI version of it (I usually run a command line version).

As I usually run #gifsicle on the command line after creating a GIF, I decided to update it to add #pygifsicle to do it for me and save a step.

https://github.com/villares/sketch-a-day/blob/main/admin_scripts/make-gif.py Screen capture of a GUI dialog window for a Python script that converts PNG files into a GIF animations.
@andros U2FsdGVkX18OJn7xiR0qMjt0uTC36g1p6MSB4dCk+VjX21yCyr7GljdgHac40SfeW51AJf1/+jri4wAq9TLNDw==
🧮 USERS:1 FEEDS:2 TWTS:1408 ARCHIVED:88520 CACHE:2530 FOLLOWERS:22 FOLLOWING:14
A 12 years old tablet is slow but works fine;
A 12 years old tablet without software updates is almost useless.
A 12 years old tablet is slow but works fine;
A 12 years old tablet without software updates is almost useless.
A 12 years old tablet is slow but works fine;
A 12 years old tablet without software updates is almost useless.
Portanto o #SIRESP continua a dar problemas - e a #AD já é outra vez #Governo.

Onde é que está o plano para resolver isto de uma vez por todas?

https://www.rtp.pt/noticias/pais/resolvida-avaria-do-siresp-no-codu-norte-sindicato_n1670432

#ptpol
Portanto o #SIRESP continua a dar problemas - e a #AD já é outra vez #Governo.

Onde é que está o plano para resolver isto de uma vez por todas?

https://www.rtp.pt/noticias/pais/resolvida-avaria-do-siresp-no-codu-norte-sindicato_n1670432

#ptpol
Portanto o #SIRESP continua a dar problemas - e a #AD já é outra vez #Governo.

Onde é que está o plano para resolver isto de uma vez por todas?

https://www.rtp.pt/noticias/pais/resolvida-avaria-do-siresp-no-codu-norte-sindicato_n1670432

#ptpol
@kat Yup, can't complain! :-)
@kat Nice use of dmenu.
[47°09′33″S, 126°43′43″W] Raw reading: 0x687D3CB2, offset +/-3
@movq @kat Any text format beats a binary configuration format. However, YAML and XML are both terrible choices in my opinion. I'd prefer YAML over XML if I had to.
https://en.wikipedia.org/wiki/Dorodango
https://en.wikipedia.org/wiki/Dorodango
Passatempo ideal para vindas à praia em que temos de fazer babysitting: dorodango de areia Esfera de areia segurada por uma mão numa praia
Passatempo ideal para vindas à praia em que temos de fazer babysitting: dorodango de areia Esfera de areia segurada por uma mão numa praia
Maybe someone can explain this to me.

An #EU citizen trying to access Facebook today faces the following choices (see screenshots).

In there, they say that they are asking this again to comply with #EU rules, and yet the question - and the options to choose from - are the same they had in the past.

So, hm, how does this make them comply with something they weren't complying before? What's the detail I'm missing?

#Meta #Facebook #GDPR The first screenshot, "review whether we can process your data for ads", says that "as part of laws in your region, we'll need you to revisit your ads choice." ![The second screenshot is the choice between two options: "subscribe to use without ads" (from €7.99/month) or "Use free of charge with ads" (which they say is "Your current experience")](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/886/621/505/787/642/original/4ae0c30d23f08c9d.jpg)
Maybe someone can explain this to me.

An #EU citizen trying to access Facebook today faces the following choices (see screenshots).

In there, they say that they are asking this again to comply with #EU rules, and yet the question - and the options to choose from - are the same they had in the past.

So, hm, how does this make them comply with something they weren't complying before? What's the detail I'm missing?

#Meta #Facebook #GDPR The first screenshot, "review whether we can process your data for ads", says that "as part of laws in your region, we'll need you to revisit your ads choice." ![The second screenshot is the choice between two options: "subscribe to use without ads" (from €7.99/month) or "Use free of charge with ads" (which they say is "Your current experience")](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/886/621/505/787/642/original/4ae0c30d23f08c9d.jpg)
Maybe someone can explain this to me.

An #EU citizen trying to access Facebook today faces the following choices (see screenshots).

In there, they say that they are asking this again to comply with #EU rules, and yet the question - and the options to choose from - are the same they had in the past.

So, hm, how does this make them comply with something they weren't complying before? What's the detail I'm missing?

#Meta #Facebook #GDPR The first screenshot, "review whether we can process your data for ads", says that "as part of laws in your region, we'll need you to revisit your ads choice." ![The second screenshot is the choice between two options: "subscribe to use without ads" (from €7.99/month) or "Use free of charge with ads" (which they say is "Your current experience")](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/886/621/505/787/642/original/4ae0c30d23f08c9d.jpg)
[47°09′09″S, 126°43′14″W] Reading: 0.13000 PPM