D7VK 2.0 released with more performance fixes for retro Direct3D games on Linux
Love your classic retro games? D7VK 2.0 is out now to bring more performance improvements for running retro Direct3D games on Linux.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/d7vk-2-0-released-with-more-performance-fixes-for-retro-direct3d-ga … ⌘ Read more
DXVK 3.0.2 brings bug fixes for Dying Light: The Beast, Halo and more on Linux / SteamOS
Direct 3D 8, 9, 10 and 11 to Vulkan layer DXVK has a new bug fix release out, sorting some issues in specific games to make gaming on Linux / SteamOS better.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/dxvk-3-0-2-brings-bug-fixes-for-dying-light-the … ⌘ Read more
Collabora announce a preview of Holo Core, an AArch64 port of Arch Linux for Steam Frame
Open source firm Collabora who work with Valve (Steam), just announced a preview of Holo Core - the aarch64 port of Arch Linux for Steam Frame.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/collabora-announce-a-preview-of-holo-co … ⌘ Read more
Bethesda roadmap: more Fallout is coming, Starfield support continues, but Elder Scrolls VI is the main priority
Bethesda Game Studios have given a rare update into their roadmap of what they’re working on, and it sounds like quite exciting news.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/beth … ⌘ Read more
DayZ Badlands gets a fresh teaser and it’s set to launch in October
Bohemia Interactive say DayZ Badlands is the largest expansion so far for the popular open-world zombie survival game.
Read the full article on GamingOnLinux. ⌘ Read more
Bandwagon is a ‘survivors-lite adventure’ that sounds wonderful from the Dome Keeper devs
Bandwagon is a bullet heaven survivors-lite (that’s a new one?) that takes the genre in a fun new direction with music and you restoring joy to the world.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/bandwagon-is-a-survivors-li … ⌘ Read more
Race down a mountain in the ridiculous looking shooter DIEATHLON
DIEATHLON is a retro-styled shooter that’s not just another boomer shooter, as you’re racing down a mountain on skis as you attempt to survive.
Read the full article on GamingOnLinux. ⌘ Read more
Valve say the Team Fortress 2 MvM update is still coming and they’re still working on it
After the usual silence we’ve come to expect from Valve on everything, they gave a short blog post on the upcoming MvM update for Team Fortress 2.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/valve-say-the-team-fortress-2-mvm-up … ⌘ Read more
The explosive isometric insurgent simulator Brigador Killers arrives in August
The first Brigador game from Stellar Jockeys was fantastic for stomping around blowing everything up - and Brigador Killers looks much bigger and better.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/the-explosive-isometric-insurgent-simulator-briga … ⌘ Read more
@david@daiwei.me Ha, I just noticed that I changed Newsboat’s defaults. Right from the factory, new items are just bold, while read ones aren’t. No different colors, white on black. Focused items are bold yellow on blue. No matter the read status. I think that’s why I started to play with the config to differentiate them. It’s been so long ago that I didn’t know anymore I even messed with that.
And yes, you’re right, the red on black is borderline readable. Also, my white on green focus is rather silly. But I’m sooo used to it, I don’t realize how bad the contrast is. To be fair, I don’t spend a lot of time in the lists. Aha, there are new articles, Enter to hit the artice view, read it, press n to immediately jump to the next unread article, rince and repeat, finally I’m back in the article list view.
Default theme, read focused:

Default theme, unread focused:

Lyse’s schlimmbesserung, read focused:

Lyse’s schlimmbesserung, unread focused:

SteamVR Beta gets a big update ahead of the Steam Frame release
Valve released SteamVR Beta version 2.17.4 which brings more Steam features into the VR environment, as they continue preparing for the Steam Frame release.
Read the full article on GamingOnLinux. ⌘ Read more
Minecraft 26.3 Snapshot 4 brings SDL3, and prefers Wayland on Linux
Minecraft is set for another big update with a fresh Minecraft 26.3 Snapshot 4 ready for testing, and overall it’s quite a big technical upgrade.
Read the full article on GamingOnLinux. ⌘ Read more
@david@daiwei.me Not sure if you only mean the code segments or in general. In theory, a general darker text color for read messages would probably work. The thing is that regular white on black is quite standard. In Newsboat, new articles are red (I opted for yellow here) and read ones white. I found that useful and kinda copied it for tt.
Jagex Launcher Linux Beta released for Old School Runescape
Jagex today announced the official release of the Jagex Launcher Linux Beta, making it hopefully simpler and easier to get into Old School Runescape.
Read the full article on GamingOnLinux. ⌘ Read more
Game on the go with the new Humble Handhelds Bundle
Want some more games for your Steam Deck, Legion Go or whatever other device you have? The newly launched Humble Handhelds Bundle might save the day.
Read the full article on GamingOnLinux. ⌘ Read more
Proton Experimental brings fixes for Diablo IV, Marvel Rivals, RPGMaker Engine games
Valve launched the latest update to Proton Experimental to bring more fixes for running Windows games on SteamOS / Linux including Steam Deck and Steam Machine.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/proton-experimental-brings-fixes … ⌘ Read more
Impressive grand-scale RTS game Beyond All Reason gets a major engine upgrade with ARM64 support
Beyond All Reason is a seriously impressive grand-scale open source RTS game that just got a big engine upgrade that brings ARM64 support.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/impressive-grand-scale-rts-g … ⌘ Read more
Just thought it an interesting Hacker News article that caught my eye 👁️
Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.
I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tview’s established pattern. You’ve got an InputHandler(), that is implemented using WrapInputHandler(…). It typically then directly implements the switching logic depending on the key press. Something like this:
func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// WrapInputHandler allows for intercepting key events with SetInputCapture(…)
// from the outside for customization. This handles the default key bindings.
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
w.scrollUp()
return // we already handled the event, stop processing
case 'j':
w.scrollDown()
return
}
}
}
// We didn't handle the key event. Maybe the parent
// widget knows what to do with it.
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
})
}
From the outside, you can intercept and either stop or continue the widget’s original key handling with a potentially rewritten key event using SetInputCapture(…):
w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
switch event.Key() {
case tcell.KeyUp:
// Rewrite the event, so the "cursor up" key is an alias
// for the vim key binding "k", that is handled by the
// wrapped input handler above. (I know, I know, this is a
// completely unrealistic example, why would anyone use
// cursor keys when there are vim key bindings available?!)
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'q':
app.Stop()
// we already handled the event, do not pass it
// to the wrapped input handler above
return nil
case 'r':
toggleMessageReadStatus()
return nil
}
}
}
// we didn't handle the event, pass it to the wrapped
// input handler above
return event
}
Since they all expect a single key, I’ve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it can’t transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widget’s KeyBindings instance, but not pretty. You always have to keep this in mind.
With the KeyBindings, it will look like that:
type Widget struct {
parent tview.Primitive
// make it available to children or the outside either by
// direct field access or by providing a getter method
KeyBindings *bind.KeyBindings
}
func NewWidget() *Widget {
w := &Widget{KeyBindings: &bind.KeyBindings{}}
w.KeyBindings. // default key bindings
Bind0(bind.KeySequence('k', w.scrollUp).
Bind0(bind.KeySequence('j', w.scrollDown)
return w
}
func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
// also note the missing support for focus transfer at the moment
event = w.KeyBindings.Capture(event)
if event == nil {
return
}
if handler := w.parent.InputHandler(); handler != nil {
handler(event, setFocus)
}
}
}
And then from the outside, or in a child widget:
w := NewWidget()
w.KeyBindings. // additional or customized key bindings
Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind0(bind.KeySequence('r'), toggleMessageReadStatus)
When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:
textView := tview.NewTextView().
SetWordWrap(true).
SetText("…")
SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
Bind0(bind.KeySequence('q'), app.Stop).
Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
}).
Capture)
I need to sleep on this some more.
Also, writing very long messages like this one is really not all that fun in tt’s editor. I should absolutely provide a way to shell out to vim.
(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, that’s a big win!) Good night!
EchoStar’s US Satellite Pay-TV Provider Dish DBS Files for Bankruptcy
EchoStar’s satellite pay-TV unit Dish DBS has filed for Chapter 11 bankruptcy
protection, reports Reuters. The move also applies to its wireless subsidiaries, according to the article, and “facilitates the wind-down of Dish Wireless’s 5G network operations following an unexpected delay in a spectrum license sale to AT&T… unde … ⌘ Read more
I just read @kat@yarn.girlonthemoon.xyz’s blog post over here:
https://bubblegum.girlonthemoon.xyz/articles/learning-to-code-like-it-s-the-90s
Jesus, it must be so overwhelming for young people to get started with programming.
When I started programming, there was the built-in ROM BASIC of that PC and probably a bit of BASIC on a floppy, and that was it. Nowadays? Millions of libraries and frameworks and languages and what not – and, much worse, there’s the expectation that you need to make something fancy. When I started, printing something and understanding IF was good enough.
RISC-V RVV Vector Performance Benchmarks With The SpacemiT K3 SoC
Since May we have been benchmarking the SpacemiT K3 RISC-V SoC as one of the first to market RISC-V chips supporting the RVA23 profile. The SpacemiT K3 has shown how far RISC-V performance has come in the past half decade and one of the promising elements of this modern RISC-V SoC with its X100/A100 cores is supporting the RISC-V Vector Extension “RVV” 1.0. In this article are some initial benchmarks looking specifically at the RISC-V RVV 1.0 … ⌘ Read more
@movq@www.uninformativ.de I see. I just use CDATA (and still have the XHTML trailing slash for <img … />). But of course, it also has its drawbacks: https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss I might just move away from it.
Everything is a web service these days. :-/
@movq@www.uninformativ.de Yes, that’s what I was thinking, too. For a moment, I wanted to suggest to use <ol> instead of <ul> to fix that. However, that’s only gonna work for the first level, but subsections then miss their parent level.
And it turns out that I was wrong. At least sort of. There are some CSS tricks to fix it: https://stackoverflow.com/a/26243681 Of course, with text or retro browsers, this is not gonna fly.
I also came across this interesting article. I just skimmed it and it’s about real tables of contents with page numbers, so not what you have in mind, but cool nevertheless: https://css-tricks.com/a-perfect-table-of-contents-with-html-css/
@movq@www.uninformativ.de I reckon section numbers are not really needed for articles. But if you number them, the anchors should probably not contain the section number, just the title. Especially for articles that may receive updates.
It’s probably another story for specifications. They’re kinda fixed and thus I found it useful in the past to include the section numbers in the anchors, so they show up in URLs when linking to specific sections. W3C RFCs only include the numbering in the anchors. This makes URLs fairly short, but it would be also nice to directly see what kind of section that URL actually links to.
@prologic@twtxt.net That’s how I read that, too. :-D Unfortunately, all listed articles stop at only 30% maximum. Scam!!
zlib-rs 0.6.4 Released With Fix For Intel Raptor Lake Crash, SIMD Optimizations
As a follow-up to last week’s article around Firefox leveraging zlib-rs and some nice upstream improvements to this Rust-based Zlib implementation, the zlib-rs 0.6.4 release is now available to ship all of these latest enhancements… ⌘ Read more
@movq@www.uninformativ.de Yeah, that would also be fine with me. I certainly do like the “arbitrary” in your comment.
While writing the article, I also thought about something like that:
date := time.Date(2026, 6, 19,
17, 0, 0, 0, time.UTC)
Or possibly:
date := time.Date(
2026, 6, 19,
17, 0, 0, 0, time.UTC,
)
But it’s four lines for a damn timestamp. I also contemplated whether a comment acting as a separator is all that’s needed:
date := time.Date(2026, 6, 19, /**/ 17, 0, 0, 0, time.UTC)
I might like that the most. Not entirely sure yet. It kinda feels like a hack, but still a little elegant. Add your comment on top and we’re golden. Maybe?
I deliberately excluded them as this only distracted from the points I wanted to make. And I also realized that this example was just not ideal at all. Perhaps I should add them nevertheless?
If I ever invented a programming language, a much more human readable timestamp representation of some sort, RFC 3339 or very close to that would be part of that language. Something along the lines of /pattern/ for regexes in certain languages.
In the light of current events, I will first consult my pillow and only then write an article about readable code.
Are Many College Students Losing the Ability to Read?
Futurism reports:
in a new essay for The Chronicle Higher Education, university-level literature and writing instructor Tyler Jagt recalls how not a single one of his students could get through an assigned 20-page article, something that he had read “without complaint” as an undergraduate a decade ago.
One student confessed that the reason they didn’t finish was that … ⌘ Read more
@movq@www.uninformativ.de You may want to include another antipattern to avoid in your article:
- bump $same_dependency from 1.0.0 to 1.0.1
- bump $same_dependency from 1.0.1 to 1.0.2
- bump $same_dependency from 1.0.2 to 1.1.0
- bump $same_dependency from 1.1.0 to 1.2.0
57-годишен загина при катастрофа на пътя между Гоце Делчев и село Долно Дряново
Инцидентът е станал малко след 18.00 часа. 57-годишен мъж е управлявал лек автомобил, но поради здравословен проблем е загубил контрол над превозното средство, навлязъл е в лентата за насрещно движение и се е … ⌘ Read more
Швейцария чака подвизи на световното от Жоан Мазамби - сина на африканските “Ромео и Жулиета”
Ето защо … ⌘ Read more
Намериха изчезналия лекоатлет Живко Виденов
По-рано днес сестрата на Виденов - Диана Тодорова, написа във фейсбук профила си, че брат й е в неизвестност от четвъртък ⌘ Read more
Монтираха соларна пейка за зареждане на телефони в центъра на Чипровци
Пейката дава възможност за зареждане на мобилни телефони от нея.
„С тази придобивка добавяме нов модерен щрих в сърцето на града ни. Елате, тествайте ⌘ Read more
Дара пее на “София прайд” (Видео, снимки)
Дара изпя хита си “Бягаш ли от мен” на сцената в Княжеската градина.
В концерта участва и певицата Мила Роберт.
Събитието започна в 14 часа и ще продължи до 21 часа. Под мотото “Различно си приличаме”, тазгодишната кампания на “София прайд” акцентира върху ⌘ Read more
Константин Проданов: Още в деня, в който земеделци се оплакаха, че веригите ги натискат, се задействахме
Катастрофа спря движението по пътя Казанлък - Габрово край град Шипка
Трафикът се пренасочва по обходен маршрут през гр. Шипка. Шофьорите да се движат с повишено внимание и съобразена скорост. Преминаването се регулира от “Пътна ⌘ Read more
Иван Христанов: Горските първи разкриха нарушенията в Баба Алино още през 2023 г.
Преизбраха Виктор Орбан за лидер на унгарската партия ФИДЕС
Орбан, който бе единственият кандидат, бе избран от делегатите за мандат от една година по време на тайно гласуване ⌘ Read more
Княгиня Калина, облечена с цветовете на българското знаме, е на “Шествие за семейството” (Снимки)
Калина е облечена в цветовете на българския трибагреник - бяло, зелено, червено. Заедно с мъжа ѝ бяха на вечерня с молебен за семейството отслужена от Негово Светейшеств … ⌘ Read more
Размерът няма значение - осемте “джуджета” на световното
Сесар Янис (Панама) - 160 см
Най-ниският играч е дясно крило. Със сигурност няма да е титуляр.
Звездният му миг бе на Копа Америка през 2024 … ⌘ Read more
Намериха труп край базата на Иран на световното
Автомобилът е бил на паркинг на супермаркет срещу тренировъчната база на отбора.
Прокуратурата на Тихуана отбеляза, че тялото на мъжа е било увито в черна торба и поставено в багажника ⌘ Read more
Проф. Константинов: Според проучванията до момента, Йотова ще стигне до балотаж
Вицешампионът “Нефтохимик” взе нов разпределител
От състава на вицешампионите и носители на купата на България остават ⌘ Read more
Ердоган обяви инвестиции за $10 млрд. в AI
Съгласно плана Турция ще мобилизира най-малко 10 милиарда долара, предимно от частния сектор, за инвестиции в центрове за данни, облачни услуги и инфраструктура за изкуствен интелект ⌘ Read more
Зукърбърг признава за грешки в подхода на „Мета“ към AI
Вътрешно писмо, с което Ройтерс се е запознала, показва, че Зукърбърг е коментирал предизвикателствата около бързот … ⌘ Read more
Започна легендарното състезание „24 часа на Льо Ман”
Румен Петков: Кандев трябва да каже кой го е карал да мълчи