ncurses uses the XM terminfo entry to enable mouse events, but it looks like this entry does not enable motion events for most terminal emulators. Reporting motion events is supported by, say, XTerm, xiate, st, or urxvt, it just isnāt activated by XM. This makes all this dragging stuff useless.
For the moment, I edited the terminfo entry for my terminal to include motion events. That canāt be a proper solution. Iām not sure yet if Iām supposed to send the appropriate sequence manually ā¦
And the terminfo entries for tmux or screen donāt include XM at all. tmux itself supports the mouse, but Iām not sure yet how to make it pass on the events to the programs running inside of it (maybe thatās just not supported).
To make things worse, on the Linux VT (outside of X11 or Wayland), the whole thing works differently: You have to use good old gpm to get mouse events (gpm has been around forever, I already used this on SuSE Linux). ncurses does support this, but this is a build flag and Arch Linux doesnāt set this flag. So, at the moment, Iām running a custom build of ncurses as a quick hack. š And this doesnāt report motion events either! Just clicks. (I donāt know if gpm itself can report motion events, I never used the library directly.)
tl;dr: The whole thing will probably be ākeyboard firstā and then the mouse stuff is a gimmick on top. As much as Iād like to, this isnāt going to be like TUI applications on DOS. Iāll use āWindowsā for popups or a multi-window view (with the āWindowManagerā being a tiny little tiling WM).
(#q33dfjq) Most of it should work on other platforms, the bytecode VM that is. You may run into some platform quirks though that rely on syscall() ā Let me know what you run into and Iāll try to fix them nw. The problem right now is I havenāt even begun to start work on another platform/architecture yet.
(#g34eztq) @movq@www.uninformativ.de Oh, I see. Unfortunately, there seems to be no box drawing character for a corner with a diagonal line. Indeed, this is probably the best you can do.
Is the single character enough to hit it comfortably with the mouse, though? Maybe one additional to the left and above could be something to think about. Not sure. Of course this complicates it a bit more. Personally, I like fullscreen windows, so Iām definitely the wrong guy to judge this or even comment on. :-)
@bender@twtxt.net Seriously, if I ever get a CRT monitor again, I want it to be an amber one and then hook it up to some 8086. š Only problem is that this stuff is expensive as hell now ā¦
Just in case you havenāt already noticed it, the right lower corner of the window in front was not updated when it received the focus. 8-) (In tt I also render focused text input fields with a doubly lined border, where unfocused ones have a single one.)
(#javxoxa) (The background and the window shadow are not amber and it wouldnāt have looked like that on a real monitor, unless you cranked up the brightness way too high.)
My first PC had a monochrome amber screen and I just love looking at this. š
(It looks even better with redshift enabled, but I canāt screenshot that.)
Only downside is that there arenāt that many amber shades in the standard 256 color palette. Or well, maybe thatās actually a good thing, as it probably helps to keep the theme more minimal and less cluttered/noisy. š¤
(#xtkev6q) @lyse@lyse.isobeef.org Iāll let you guys know when/if itās ready to get published. š There are still rough edges and, obviously, very few widgets. Most importantly, a list view and a table widget are missing. But my vacation is over now, so things will crawl to a halt.
(#533m7aa) @prologic@twtxt.net Yep! I like that this distillation metaphor makes it explicit: You have to go ahead and actually distill something. It doesnāt happen automatically. The metaphor acknowledges that this is work that needs to be done by someone.
(#izdrxgq) @bender@twtxt.net Theyāre not completely impossible, but C makes it much easier to run into them. I think the key point is that in those āsafeā languages, buffer overflows are caught and immediately crash the program (if not handled otherwise) instead of silently corrupting memory, not being noticed right away and maybe only later crashing at a different location, where it can be very hard to find the actual root cause. This is a big improvement in my book.
Some programmers are indeed horrible. Iām guilty myself. :-)
Old software is usually small and new software is usually large. A distilled program can be old or new, but is always small, and is powerful by its choice of ideas, not its implementation size.
A distilled program has the conciseness of an initial version and the refinement of a final version.
A distilled program is a finished work, but remains hackable due to its small size, allowing it to serve as the starting point for new works.
Many people write programs, but few stick with a program long enough to distill it.
I often tried to tell people about āsimpleā or āminimalisticā software, āKISSā, stuff like that, but they never understand ā because everybody has a different idea of āsimpleā. The term āsimpleā is too abstract.
(#xtkev6q) @movq@www.uninformativ.de Yiha! Even autoscroll, very nice! The naming certainly drew inspiration from Urwid. I like it. Looking forward to eventually checking out its inner workings. :-)
(#fadfcsa) @bender@twtxt.net I also went back to my duty today and fixed a problem I created right before vanishing into the holidays. Of course, I discovered more problems while fixing the one thing. Luckily, another public holiday tomorrow. :-)
(#lzax5vq) @prologic@twtxt.net Yup, itās been a while since I played that. š Hardly rememberd it, to be honest. And apparently I did everything wrong, because that monster just came along and trashed my city, no way to stop it. š¤Ŗ
Spent most of the long weekend working on a few coding projects⦠specifically, I pushed some updates for TwtKpr to my test instance before spending some time working on the build process and demo page for my new twtxt-parsing library⦠which lead me to make some changes to my existing fluent-dom-esm library.
So, nothing actually got finished, but the incremental updates continueā¦
(#vqu5wfq) @shinyoukai@neko.laidback.moe Not using OpenBSD or httpd? Yeah. Itās been working quite well since ~2017, so, meh, too lazy to switch now. But nothing is set in stone, of course.
(#xtkev6q) And now the event loop is not a simple loop around cursesā getch() anymore but it can wait for events on any file descriptor. Hereās a simple test program that waits for connections on a TCP socket, accepts it, reads a line, sends back a line:
@movq@www.uninformativ.de I noticed that your feedās last modification timestamp was missing in my database. I cannot tell for certain, but I think it did work before. Turns out, your httpd now sends the Last-Modified with UTC instead of GMT. Current example:
Sat, 03 Jan 2026 06:50:20 UTC
Iām not a fan of this timestamp format at all, but according to the HTTP specification, HTTP-date must always use GMT for a timezone, nothing else: https://httpwg.org/specs/rfc9110.html#http.date