Searching We Love Privacy Club

Twts matching #shell
Sort by: Newest, Oldest, Most Relevant

GNOME Mutter 51 Beta Released With Wayland Background Blur, Improved Frame Scheduling
Released overnight on Sunday were the beta versions of Mutter 51 and GNOME Shell 51. This follows GNOME 51 embarking on itsAPI/ABI freeze, feature freeze, and UI freeze a day earlier… ⌘ Read more

⤋ Read More

GNOME Working To Establish An RFC Process, Battling Sloppy AI-Generated Extensions
GNOME developers were quite busy in closing out the month of July from continued work on establishing a formal Request For Comments (RFC) process for the project to battling the continued flood of AI-generated GNOME Shell extensions… ⌘ Read more

⤋ Read More

Dunno if anyone will find this interesting… But some ~6 months or so ago I experimented briefly with creating a whole bootloader + kernel + userland – Basically an entire OS in the Mu programming language (which as you know I also designed and created) – 6 months later I’ve worked on it some more after spending the last week working on improvements to Mu itself, which is now able to compile itself with its own Mu implemented compiler and now have an os/arch backend called muos/amd64 that boots into a running shell, with a tiny little vfs, UNIX-like semantics, syscalls, read/write, etc. It works pretty nicely, and aside from a small Assembly “nucleus”, most of the Kernel and Userspace is written in Mu.

https://git.mills.io/prologic/muos

⤋ Read More

KDE Plasma 6.7 vs. GNOME Shell 50.3 vs. Xfce 4.20 On CachyOS With NVIDIA Graphics
Earlier this month I provided a look at the KDE Plasma 6.7 Wayland vs. X11 session performance for graphics/gaming on CachyOS using NVIDIA GeForce RTX 50 graphics. Since then Phoronix readers – including some premium supporters – requested seeing some additional desktops tested with the latest CachyOS packages. So here we are now with seeing how KDE Plasma 6.7 compared to the Wayland-only GNOME Shell 50.3 desktop as well as th … ⌘ Read more

⤋ Read More
In-reply-to » @prologic Hmmm, I have no idea how to solve that problem. 😅 Some jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.

@movq@www.uninformativ.de Finally, your software is just perfect and finished by now, no need to report non-existing bugs or send in code changes. :-) How many tickets and merge requests did you get before moving to your own server?

I have to admit that I use git format-patch so rarely, I always have to pull it up from my shell history. Haven’t used git send-email even once. I definitely have to look into that soon. Wanted to do that for several years. I typically upload the patch to my server and send a link via IRC.

Maybe I was just very unlucky, but my experience is that you can perfectly ignore people and their work who only do it for the “fame”. It’s almost always been from inferior quality to say the least.

⤋ Read More
In-reply-to » The original twt is unavailable. It may have been edited or deleted, or is from an unknown or muted feed.

@david@daiwei.me I had to look these up, horror isn’t my genre at all. :-D No idea what the cool kids use today, but I still have zsh as my interactive shell. For shell scripts, though, I try to stick to POSIX and only resort to bash if really needed or it would be too cumbersome.

⤋ Read More

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!

⤋ Read More

Decades-Old Bash Tricks Expose AI Coding Agents To Supply Chain Attacks
Slashdot reader wiredmikey writes: AI security researchers have uncovered a structural security flaw dubbed GuardFall that allows decades-old Bash shell tricks to bypass safeguards in most open source AI coding agents. By exploiting shell behaviors such as quote removal and variable expansion, attackers can hide malicious commands … ⌘ Read more

⤋ Read More

Arch Linux’s Archinstall 4.4 Adds Dank Material Shell + Niri Desktop Option
Ahead of the July 2026 ISO refresh for Arch Linux, a new Archinstall 4.4 release has been tagged for this text-based and very convenient installer for Arch Linux… ⌘ Read more

⤋ Read More

Experimental Code Enables Per-Monitor Backgrounds For GNOME Shell
One of the limitations of GNOME’s current multi-monitor handling is that the same background is used across the displays. For those that want to enjoy per-monitor background selection, some experimental / proof-of-concept code is now working to allow such per-monitor backgrounds to work with the modern GNOME desktop… ⌘ Read more

⤋ Read More

Linux 7.2 Improves Anonymous/Unnamed Pipe Performance For Shell Pipelines & More
Yet another performance optimization merged for the in-development Linux 7.2 kernel is improving the speed of anon_pipe_write, the kernel function used for writing data into anonymous/unnamed pipes such as when using shell pipelines or standard streams from applications… ⌘ Read more

⤋ Read More

Russian Spam and Profanities Are Now Plaguing the Arch Linux AUR
The Arch Linux User Repository “AUR” is facing another issue just days after more than 1,500 packages were found carrying malware. According to Phoronix, over 70 AUR packages have reportedly been modified to insert Russian spam and profane messages into users’ shell configuration files. From the report: Nicolas Boichat with his AI/LLM detection bot … ⌘ Read more

⤋ Read More

Every now and then, I think that I have carefully proof-read my message enough times and hit the “Add message” button in tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt’s cache. This is rather tidious:

  1. Recall the sqlitebrowser ~/.local/share/twtxt/tt2.sqlite from my shell history.
  2. Switch to the “Browse data” tab.
  3. Go to the messages table and wait a second or two until it’s loaded.
  4. Sort by the created_at column twice, so that I get descending order.
  5. Select the first message, which is typically the one in question.
  6. Find the “Remove currently selected row” button in the tool bar.
  7. Commit the changes.
  8. Close sqlitebrowser.

So, I finally implemented the removal of messages from the cache in tt. I can now hit d and confirm the removal. Bam! Should have done that ages ago!

Next up is the search, I think.

⤋ Read More

I went to check on the fireflies this season. But I didn’t see any. Instead lots of moths. At first, I thought it might have been still too light, but it was already dark enough for me to miss and destroy a snail shell. Bummer. Maybe it was too wet tonight. Although, it’s probably just another or two weeks until my glowing friends will finally show up.

In the beginning, I passed two beautiful deer on the edge of the forest. They were just ten meters away, but didn’t run off, really cool. :-) I kept on walking. Before I eventually left the woodland, a frog or toad crossed my path. It was very dark by then, though, so all I could see was a black blob.

Back in town, the street lamps on the first third were all turned off for some reason. I was already glad that I will reach home without getting blinded this time, but unfortunately, the other lamps were all operational.

⤋ Read More
In-reply-to » @lyse By the way, which site generator are you using? I kind of miss having code blocks with syntax highlighting and that generic yellow highlighting thing is pretty cool, too.

@lyse@lyse.isobeef.org Ah, I almost thought so (that you wrote it by hand), but then I looked at the source code and saw the TOC and I was like: “Naah, probably not. I would be way too lazy to do that manually.” 😅 And indeed … ha.

Oh god, yeah, that’s a lot of <span>. 🤔 Can’t really avoid that, I guess, especially if you want to do syntax highlighting of code blocks.

You wrote your own site generator, didn’t you?

In parts. I write everything in Markdown (it’s online, even: https://movq.de/blog/postings/2026-05-29/0/POSTING-en.md), plus a few Vim shortcuts (to generate thumbnails, for example), and then python-markdown renders it: https://pypi.org/project/Markdown/ This process is wrapped in a shell script, like “re-render every page if the .md file is newer than the .html file” and that’s mostly it. And the Atom feed generator is completely custom. 🤔

⤋ Read More

Avengers: Doomsday Will Give Paul Rudd’s Ant-Man a Shocking Role
Paul Rudd’s Ant-Man is shifting from comedic relief to a surprising role in Avengers: Doomsday. Rudd will reprise the role of Scott Lang three years after he was last seen in Ant-Man and the Wasp: Quantumania. At the end of that film, Lang was shell-shocked by the impending arrival of the Council of Kangs. The […]

The post [Avengers: Doomsday Will Give Paul Rudd’s Ant-Man a Shocking Role](htt … ⌘ Read more

⤋ Read More

Mir 2.27 Released With More Wayland Rust Code
Canonical today released Mir 2.27 as the latest version of this set of compositor libraries for easily building Wayland-based shells on Linux and fitting into the Ubuntu Linux paradigm… ⌘ Read more

⤋ Read More

Brush v0.4 Released As “Significant” Release For This Rust-Based Shell
Brush v0.4 debuted today for this “Bourne Rusty Shell” as a Bash/POSIX-compatible shell written in the Rust programming language… ⌘ Read more

⤋ Read More

GNOME Fixes Screencasting Issue With H.264 Recordings Being ~18x Larger Than VP8
A fix today for GNOME Shell’s screen casting/recording service was merged after it was reported that H.264 recordings using the Video Acceleration API (VA-API) are around 18x larger than they should be like when using the VP8 software fallback… ⌘ Read more

⤋ Read More

Mir 2.26 Begins Working On Rust-Based Input Platform
Canonical today released Mir 2.26 as the newest feature release for this compositor for building Wayland-based shells. Notable with Mir 2.26 is a Rust-based input platform is in development as part of their broader effort for bringing Rust code into Mir… ⌘ Read more

⤋ Read More

MacOS 26.4 Adds Warnings For ClickFix Attacks to Its Terminal App
An anonymous Slashdot reader writes: ClickFix attacks are ramping up. These attacks have users copy and paste a string to something that can execute a command line — like the Windows Run dialog, or a shell prompt.

But MacRumors reports that macOS 26.4 Tahoe (updated earlier this week) introduces a new feature to its Terminal app where it will … ⌘ Read more

⤋ Read More

GNOME Shell & Mutter 50 Beta Releases Bring Stable VRR, Improved Frame Scheduling
Ahead of the imminent GNOME 50 beta release, the GNOME Shell and Mutter components have declared their “50.beta” releases to ship the latest bug fixes, memory leak fixes, and some last minute improvements ahead of the stable release in March… ⌘ Read more

⤋ Read More

Phosh Mobile Phone UI Making Progress On GTK4 Port
Evangelos Ribeiro Tzaras presented today at FOSDEM on the latest work around Phosh, the mobile phone user interface / Wayland shell project for mobile Linux environments. Phosh has been making steady progress and has more features out on the horizon… ⌘ Read more

⤋ Read More

GNOME 50 Finally Lands Improved Discrete GPU Detection
The upcoming release of GNOME 50 to be found in the likes of Ubuntu 26.04 LTS and Fedora Workstation 44 will feature improved discrete GPU detection within the GNOME Shell. This effort has been two years coming and finally merged this week… ⌘ Read more

⤋ Read More

Apple Developing AI Wearable Pin
According to a report by The Information (paywalled), Apple is reportedly developing an AirTag-sized, camera-equipped AI wearable pin that could arrive as early as 2027.

“Apple’s pin, which is a thin, flat, circular disc with an aluminum-and-glass shell, features two cameras – a standard lens and a wide-angle lens – on its front face, designed to capture photos and videos of the user’s surroundings,” repor … ⌘ Read more

⤋ Read More

GNOME 50 Will Make Sure You Don’t Use Your Computer Past Your Bedtime
As part of the GNOME Foundation funded Digital Wellbeing project, the GNOME Shell for GNOME 50 has merged options to prevent unlocking the desktop session past their bed time. The intent here is on rounding out GNOME’s parental controls functionality… ⌘ Read more

⤋ Read More

GNOME Mutter 50 Alpha Released With X11 Backend Removed
In preparing for the GNOME 50 Alpha release, the “50.alpha” tags just occurred for the Mutter compositor and GNOME Shell. Most notable with GNOME Mutter 50 Alpha is the X11 back-end indeed being removed to focus exclusively on the Wayland session… ⌘ Read more

⤋ Read More

Okay, I had heard of “River” before but I was not aware of this:

https://codeberg.org/river/river

River defers all window management policy to a separate window manager implementing the river-window-management-v1 protocol. This includes window position/size, pointer/keyboard bindings, focus management, window decorations, desktop shell graphics, and more.

This sounds promising and it follows the old X11 model. River does all the nasty Wayland work and I can make just the WM? 🤔🤯

⤋ Read More

Study Casts Doubt on Potential For Life on Jupiter’s Moon Europa
Jupiter’s moon Europa is on the short list of places in our solar system seen as promising in the search for life beyond Earth, with a large subsurface ocean thought to be hidden under an outer shell of ice. But new research is raising questions about whether Europa in fact has what it takes for habitability. Reuters: The study assessed the pot … ⌘ Read more

⤋ Read More

SpaceX Lowering Orbits of 4,400 Starlink Satellites for Safety’s Sake
“Starlink is beginning a significant reconfiguration of its satellite constellation focused on increasing space safety,” announced Michael Nicolls, Starlink’s vice president of engineering:

“We are lowering all Starlink satellites orbiting at ~550 km to ~480 km (~4400 satellites) over the course of 2026. The shell lowering is being tig … ⌘ Read more

⤋ Read More

Fish 4.3 Brings Scripting & Interactivity Improvements, Enhanced Terminal Support
Fish 4.3 is out today as the newest update to this user-friendly command line shell. Fish 4.0 released at the beginning of this year in porting the codebase from C++ to Rust and now before closing out 2025 they have out Fish 4.3… ⌘ Read more

⤋ Read More

Senators Count the Shady Ways Data Centers Pass Energy Costs On To Americans
U.S. senators are probing whether Big Tech data centers are driving up local electricity bills by socializing grid upgrade costs onto residents. Some of the tactics they’re using include NDAs, shell companies, and lobbying. Ars Technica reports: In letters (PDF) to seven AI firms, Senators Elizabeth Warren (D-Mass.), Ch … ⌘ Read more

⤋ Read More


                     ```-/oshdmNMNdhyo+:-`
y/s+:-``    `.-:+oydNMMMMNhs/-``
-m+NMMMMMMMMMMMMMMMMMMMNdhmNMMMmdhs+/-`
 -m+NMMMMMMMMMMMMMMMMMMMMmy+:`
  -N/dMMMMMMMMMMMMMMMds:`
   -N/hMMMMMMMMMmho:`
    -N/-:/++/:.`
     :M+
      :Mo
       :Ms
        :Ms
         :Ms
          :Ms
           :Ms
            :Ms
             :Ms
              :Ms

shinyoukai@madoka-usb-mk2
-------------------------
OS: NetBSD 10.1 amd64
Host: Exomate X352 (MP PV)
Kernel: NetBSD 10.1
Uptime: 8 hours, 46 mins
Packages: 172 (pkgsrc)
Shell: sh
Display (CPT1BBD): 1024x600 @ 60 Hz in 10"
Terminal: vim
CPU: Intel(R) Atom(TM) N450 (2) @ 1.67 GHz
GPU 1: Intel Device A011 (VGA compatible)
GPU 2: Intel Device A012
Memory: 761.14 MiB / 955.69 MiB (80%)
Swap: Disabled
Disk (/): 5.20 GiB / 26.84 GiB (19%) - ffs
Local IP (iwn0): (classified information)
Battery: 28% [Charging, AC Connected]
Locale: C.UTF-8

⤋ Read More

New Rule Forbids GNOME Shell Extensions Made Using AI-Generated Code
An anonymous reader shared this report from Phoronix:

Due to the growing number of GNOME Shell extensions looking to appear on extensions.gnome.org that were generated using AI, it’s now prohibited. The new rule in their guidelines note that AI-generated code will be explicitly rejected:

“Extensions must not be AI-generated

While it i … ⌘ Read more

⤋ Read More

New Rule Forbids GNOME Shell Extensions Made Using AI Generated Code
The GNOME.org Extensions hosting for GNOME Shell extensions will no longer accept new contributions with AI-generated code. A new rule has been added to their review guidelines to forbid AI-generated code… ⌘ Read more

⤋ Read More

Hundreds of unexploded bombs are found every year. Here’s what to do if you see one
The Australian Defence Force’s bomb disposal squad responds to about 500 unexploded ordnance incidents a year, with many of the devices washing up on beaches. ⌘ Read more

⤋ Read More

GNOME Gains New Clipboard Manager Option With “Copyous”
For those looking to improve their clipboard management experience on the GNOME desktop, Copyous is a new GNOME Shell extension serving as a new clipboard manager… ⌘ Read more

⤋ Read More

R1 Neo leverages GPS & compact rugged design for Meshtastic networks
The R1 Neo is a compact, water-resistant Meshtastic device for off-grid communication and navigation. Developed by Muzi, it features an aircraft-grade aluminum base with a carbon-fiber PETG shell, offering a 16% reduction in size compared to the previous R1. The enclosure includes O-ring and compression gaskets, an IP68-rated USB-C port, and a battery capable of […] ⌘ Read more

⤋ Read More

If you could redesign Linux userland from scratch, what would you do differently?
If we kept Linux the kernel exactly as it is today, but redesigned everything in userland from scratch (the init system, the filesystem hierarchy, the shell, libc, packaging, configuration, dbus, polkit, PAM, etc.), what would you do differently, and why? ⌘ Read more

⤋ Read More