StatusNotifierItem: How Standard Non-Standards Tear Linux Desktops Apart

Theoretically when you write a GUI-based application for Linux there are standards to follow, with these all neatly documented over at the Freedesktop website. However, in reality, Freedesktop is more of a loose collection of specifications, some of which are third-party specifications that have somehow become the de facto standard. One example of this is the StatusNotifierItem spec that provides a way for applications to create and manage a ‘system tray’ icon.

This feature is incredibly useful for providing a consistent way to users for quickly accessing functionality and to see application status. Unfortunately, as [Brodie Robertson] notes in a recent video, not everyone agrees with this notion. Despite that Windows since 95 as well as MacOS/OS X and others provide similar functionality, Gnome and other Linux desktop environments oppose such system tray icons (despite a popular extension), with an inevitable discussion on Reddit as a result.

Although the StatusNotifierItem specification is listed on the Freedesktop website, it’s under ‘Draft specifications’ along with another, apparently internal-but-unfinished System tray proposal. Meanwhile DEs like KDE have integrated first-party support (KStatusNotifierItem) for the specification. There’s currently an active Freedesktop Gitlab discussion on the topic, whether StatusNotifierItem should even be in the list, or become an approved specification.

With the specification mired in bureaucracy and multiple camps pushing their own idea of what ‘the Linux desktop’ should look like, it feels like a real shame that the Linux Standard Base effort died a decade ago. Users and developers just want their desktop environment to come with zero surprises, after all.

Continue reading “StatusNotifierItem: How Standard Non-Standards Tear Linux Desktops Apart”

BLDC wire winding machine

Making A Brushless DC Motor Winding Machine

Over on his YouTube channel our hacker [Yuchi] is building an STM32 BLDC motor winding machine.

This machine is for winding brushless motors because manual winding is highly labor intensive. The machine in turn is made from four brushless motors. He is using the SimpleFOC library to implement closed-loop angle control. Closed-loop torque control is also used to maintain correct wire tension.

The system is controlled by an STM32G431 microcontroller. The motor driver used is the DRV8313. There are three GBM5208 75T Gimbal motors for close-loop angle control, and one BE4108 60T Gimbal motor for torque control. The torque control motor was built with this machine! [Yuchi] says that the Gimbal motors used are designed to be smooth, precise, and powerful at low speeds.

Continue reading “Making A Brushless DC Motor Winding Machine”

The Most Trustworthy USB-C Cable Is DIY

We like USB-C here at Hackaday, but like all specifications it is up to manufacturers to follow it and sometimes… they don’t. Sick of commercial cables either don’t label their safe wattage, or straight up lie about it, [GreatScott!] decided to DIY his own ultimate USB-C-PD cable for faster charging in his latest video, which is embedded below.

It’s a very quick project that uses off-the-shelf parts from Aliexpress: the silicone-insulated cable, the USB-C plugs (one with the all-important identifier chip), and the end shells. The end result is a bit more expensive than a cable from Aliexpress, but it is a lot more trustworthy. Unlike the random cable from Aliexpress, [GreatScott!] can be sure his has enough copper in it to handle the 240W it is designed for. It should also work nicely with USB PPS, which he clued us into a while back. While [GreatScott!] was focusing here on making a power cable, he did hook up the low-speed data lines, giving him a trustworthy USB2.0 connection.

This isn’t the first time we’ve seen someone test USB gear and find it wanting, though the problem may have improved in the last few years. Nowadays it’s the data cables you cannot trust, so maybe rolling your own data cables will make a comeback. (Which would at least be less tedious than than DB-25 was back in the day. Anyone else remember doing that?) USB-C can get pretty complicated when it comes to all its data modes, but we have an explainer to get you started on that. Continue reading “The Most Trustworthy USB-C Cable Is DIY”

Dead Amstrad Becomes Something New

When you run into old hardware you cannot restore, what do you do? Toss it? Sell it for parts? If you’re [TME Retro], you hide a high-end mini PC inside an Amstrad-shaped sleeper build.

The donor  laptop is an Amstrad ALT-286 with glorious 80s styling that [TME Retro] tried to save in a previous video. Even with help from the community there was no saving this unit, so we can put away the pitchforks and torches. This restomod is perhaps the best afterlife the old Amstrad could have hoped for.

At first [TME Retro] was going to try and fit an iPad Pro screen, but it turned out those don’t have the driver-board ecosystem the smaller iPads do, so he went with a non-retina LCD panel from Amazon instead. Shoving an LCD where an LCD used to live and sticking an expensive mini-PC inside a bulky 80s case is not the most inspiring of hacks, but that’s not all [TME Retro] did.

Continue reading “Dead Amstrad Becomes Something New”

Illustrated Kristina with an IBM Model M keyboard floating between her hands.

Keebin’ With Kristina: The One With The Gaming Typewriter

Can you teach an old typewriter new tricks? You can, at least if you’re [maniek-86]. And a word to all you typewriter fanatics out there — this Optima SP 26 was beyond repair, lacking several internal parts.

A sleek typewriter with a monitor and a mouse.
Image by [maniek-86] via reddit
But the fully available keyboard was a great start for a gaming typewriter. So [maniek-86] crammed in some parts that were just laying around unused, starting with a micro-ATX motherboard.

But let’s talk about the keyboard. It has a standard matrix, which [maniek-86] hooked up to an Arduino Lenoardo. Although the keyboard has a Polish layout, [maniek-86] remapped it to English-US layout.

As you’ll see in the photos of the internals, this whole operation required careful Tetris-ing of the components to avoid overheating and ensure the cover could go back on.

The graphics were a bit of a challenge, since the motherboard had no PCI-E x16 slot. To address this, [maniek-86] used a riser cable, probably connected to a PCI-E x1 slot with an adapter, in order to use an NVIDIA GT 635 GPU. It can’t run AAA games at 4k, but you can bet that it’ll play Minecraft, Fortnite, or Dota 2 just fine.

Continue reading “Keebin’ With Kristina: The One With The Gaming Typewriter”

A DIY Version Of The Franck-Hertz Experiment

The Franck–Hertz experiment was a pioneering physics observation announced in 1914 which explained that energy came in “packets” which we call “quanta”, marking the beginning of quantum physics. Recently, [Markus Bindhammer] wrote in to let us know he had redone the experiment for himself.

In the original experiment a mercury vacuum tube was used, but in his recreation of the experiment [Markus] uses a cheaper argon tube. He still gets the result he is looking for though, which is quite remarkable. If you watch the video you will see the current readings clump around specific voltage levels. These voltage levels indicate that energy is quantized, which was a revolutionary idea at the time. If you’re interested in how contemporary physics regards, particles, waves, and quanta, check out this excellent presentation: But What Actually Is a Particle? How Quantum Fields Shape Reality.

Before closing we have to say that the quality of [Markus]’s build was exceptional. He made a permanent enclosure for his power supplies, made custom PCBs, used ferrule crimps for all his wire interconnects, included multiple power switches and dials, professionally labeled and insulated everything, and even went to the trouble of painting the box! Truly a first class build. One thing that surprised us though was his use of rivets where we would almost certainly have used bolts or screws… talk about confidence in your workmanship!

If you’re interested in quantum physics it is certainly a topic we have covered here at Hackaday. Check out Quantum Mechanics And Negative Time With Photon-Atom Interactions or Shedding Light On Quantum Measurement With Calcite.

Continue reading “A DIY Version Of The Franck-Hertz Experiment”

A Gentle Introduction To Ncurses For The Terminally Impatient

Considered by many to be just a dull output for sequential text, the command-line terminal is a veritable canvas to the creative software developer. With the cursor as the brush, entire graphical user interfaces can be constructed, or even a basic text-based dashboard on which values can be updated without redrawing the entire screen over and over, or opting for a much heavier solution like a GUI.

Ncurses is one of the most well-known and rather portable Terminal User Interface (TUI) libraries using that such cursor control, and more, can be achieved in a fairly painless manner. That said, for anyone coming from a graphical user interface framework, the concepts and terminology with ncurses and similar can be confusingly different yet overlapping, so that getting started can be somewhat harrowing.

In this article we’ll take a look at ncurses’ history, how to set it up and how to use it with C and C++, and many more languages supported via bindings.

Continue reading “A Gentle Introduction To Ncurses For The Terminally Impatient”