• chevron_right

      Christian Hergert: Builder of Things

      news.movim.eu / PlanetGnome · 01:32 · 3 minutes

    Sometimes I build stuff other than software and this is a post about that.

    My wife and I had to postpone our honeymoon for a couple years due to COVID. Last spring we were able to take a trip to Thailand and really enjoyed it. So much so that when we got back we had a desire recreate that sort of relaxed urban yet tropical feel we enjoyed so much in various cities.

    We don’t have a lot of extra space at our house but we did have some in the back which was vacated by recently fell Elm which were diseased.

    I’m not one to shy away from projects I’ve never done before so why not build a deck and pergola to fill out that space for entertaining and hacking?

    The first step was to even the grade. When we bought the house it was already sloped but the grinding of Elm tree trunks added another layer on top of that.

    That is a lot of work but to make something 8’×20′ we need to clear a lot more than this. Only to be made worse by root after root of dead Elm tree remnants. Pick axe and sweat.

    That’s more like it.

    We don’t have much of a frost line here so you don’t need to do the whole concrete-pylon thing for the deck and integrated pergola. But what we do need to do is ensure that we have a retaining wall to keep wet ground from touching the cedar for the deck.

    The 2×4 cedar topper is mostly just there to match what will be the cedar floor of the deck.

    A bunch of gravel of various grades under the cinders create something stable that drains water beneath the cedar 4×4 which will be our columns.

    This is built as two 8’×10′ sections which are connected. That makes the math much easier in my head but also easier to source good wood. Above you see the rim and floor joists for the first side with the blocking yet to be done.

    I lucked out that the cedar supplier gave me 12′ 4×4s instead of the requested 10′. That gave me 2′ extra to use when framing without having to first get the whole 10′ columns leveled. Later one we’ll take them out one-by-one and replace them with the columns.

    Now we have the columns in place and the whole thing leveled. Blocking has started and will get completed before adding the floor boards. I ended up using screws at an angle from the rounded corners of the ceder floor boards using “camo hidden fasteners”. After seeing how they handled the winter that was definitely the right decision.

    Thankfully I had help from my wife and emeritus GNOMie Cosimo with all this.

    Now we have all the floor boards on. The cedar appearance board is tacked on the edge of the rim joist to hide the pressure treated lumber. The beams have been connected at the top of the columns. The start of a privacy wall is in place to see how it will fit together. Next up, all those rafters which I used some simple angle cuts and a multi-tool to extract pockets to interference-fit over the beams.

    Lastly my wife did her design magic after gathering all the outdoor furniture together.

    This year I have jasmine and honeysuckle doing it’s thing to hopefully start getting some of this pergola covered with leaves and flowers by summer. I also extended the privacy wall a bit more since this picture to have a lattice for the vines to climb.

    That’s it!

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /chergert/2024/04/19/builder-of-things/

    • chevron_right

      Peter Hutterer: udev-hid-bpf: quickstart tooling to fix your HID devices with eBPF

      news.movim.eu / PlanetGnome · Yesterday - 04:17 · 4 minutes

    For the last few months, Benjamin Tissoires and I have been working on and polishing a little tool called udev-hid-bpf [1]. This is the scaffolding required quickly and easily write, test and eventually fix your HID input devices (mouse, keyboard, etc.) via a BPF program instead of a full-blown custom kernel driver or a semi-full-blown kernel patch. To understand how it works, you need to know two things: HID and BPF [2].

    Why BPF for HID?

    HID is the Human Interface Device standard and the most common way input devices communicate with the host (HID over USB, HID over Bluetooth, etc.). It has two core components: the "report descriptor" and "reports", both of which are byte arrays. The report descriptor is a fixed burnt-in-ROM byte array that (in rather convoluted terms) tells us what we'll find in the reports. Things like "bits 16 through to 24 is the delta x coordinate" or "bit 5 is the binary button state for button 3 in degrees celcius". The reports themselves are sent at (usually) regular intervals and contain the data in the described format, as the devices perceives reality. If you're interested in more details, see Understanding HID report descriptors .

    BPF or more correctly eBPF is a Linux kernel technology to write programs in a subset of C, compile it and load it into the kernel. The magic thing here is that the kernel will verify it , so once loaded, the program is "safe". And because it's safe it can be run in kernel space which means it's fast. eBPF was originally written for network packet filters but as of kernel v6.3 and thanks to Benjamin, we have BPF in the HID subsystem. HID actually lends itself really well to BPF because, well, we have a byte array and to fix our devices we need to do complicated things like "toggle that bit to zero" or "swap those two values".

    If we want to fix our devices we usually need to do one of two things: fix the report descriptor to enable/disable/change some of the values the device pretends to support. For example, we can say we support 5 buttons instead of the supposed 8. Or we need to fix the report by e.g. inverting the y value for the device. This can be done in a custom kernel driver but a HID BPF program is quite a lot more convenient.

    HID-BPF programs

    For illustration purposes, here's the example program to flip the y coordinate. HID BPF programs are usually device specific, we need to know that the e.g. the y coordinate is 16 bits and sits in bytes 3 and 4 (little endian):

    SEC("fmod_ret/hid_bpf_device_event")
    int BPF_PROG(hid_y_event, struct hid_bpf_ctx *hctx)
    {
    	s16 y;
    	__u8 *data = hid_bpf_get_data(hctx, 0 /* offset */, 9 /* size */);
    
    	if (!data)
    		return 0; /* EPERM check */
    
    	y = data[3] | (data[4] << 8);
    	y = -y;
    
    	data[3] = y & 0xFF;
    	data[4] = (y >> 8) & 0xFF;
    
    	return 0;
    }
      
    That's it. HID-BPF is invoked before the kernel handles the HID report/report descriptor so to the kernel the modified report looks as if it came from the device.

    As said above, this is device specific because where the coordinates is in the report depends on the device (the report descriptor will tell us). In this example we want to ensure the BPF program is only loaded for our device (vid/pid of 04d9/a09f), and for extra safety we also double-check that the report descriptor matches.

    // The bpf.o will only be loaded for devices in this list
    HID_BPF_CONFIG(
    	HID_DEVICE(BUS_USB, HID_GROUP_GENERIC, 0x04D9, 0xA09F)
    );
    
    SEC("syscall")
    int probe(struct hid_bpf_probe_args *ctx)
    {
    	/*
    	* The device exports 3 interfaces.
    	* The mouse interface has a report descriptor of length 71.
    	* So if report descriptor size is not 71, mark as -EINVAL
    	*/
    	ctx->retval = ctx->rdesc_size != 71;
    	if (ctx->retval)
    		ctx->retval = -EINVAL;
    
    	return 0;
    }
    
    Obviously the check in probe() can be as complicated as you want.

    This is pretty much it, the full working program only has a few extra includes and boilerplate. So it mostly comes down to compiling and running it, and this is where udev-hid-bpf comes in.

    udev-hid-bpf as loader

    udev-hid-bpf is a tool to make the development and testing of HID BPF programs simple, and collect HID BPF programs. You basically run meson compile and meson install and voila, whatever BPF program applies to your devices will be auto-loaded next time you plug those in. If you just want to test a single bpf.o file you can udev-hid-bpf install /path/to/foo.bpf.o and it will install the required udev rule for it to get loaded whenever the device is plugged in. If you don't know how to compile, you can grab a tarball from our CI and test the pre-compiled bpf.o. Hooray, even simpler.

    udev-hid-bpf is written in Rust but you don't need to know Rust, it's just the scaffolding. The BPF programs are all in C. Rust just gives us a relatively easy way to provide a static binary that will work on most tester's machines.

    The documentation for udev-hid-bpf is here . So if you have a device that needs a hardware quirk or just has an annoying behaviour that you always wanted to fix, well, now's the time. Fixing your device has never been easier! [3].

    [1] Yes, the name is meh but you're welcome to come up with a better one and go back in time to suggest it a few months ago.
    [2] Because I'm lazy the terms eBPF and BPF will be used interchangeably in this article. Because the difference doesn't really matter in this context, it's all eBPF anyway but nobody has the time to type that extra "e".
    [3] Citation needed

    • wifi_tethering open_in_new

      This post is public

      who-t.blogspot.com /2024/04/udev-hid-bpf-quickstart-tooling-to-fix.html

    • chevron_right

      Matthias Clasen: Graphics offload revisited

      news.movim.eu / PlanetGnome · 2 days ago - 17:39 · 2 minutes

    We first introduced support for dmabufs and graphics offload last fall, and it is included in GTK 4.14. Since then, some improvements have happened, so it is time for an update.

    Improvements down the stack

    The GStreamer 1.24 release has improved support for explicit modifiers, and the GStreamer media backend in GTK has been updated to request dmabufs from GStreamer.

    Another thing that happens on the GStreamer side is that dmabufs sometimes come with padding: in that case GStreamer will give us a buffer with a viewport and expect us to only show that part of the buffer. This is sometimes necessary to accommodate stride and size requirements of hardware decoders.

    GTK 4.14 supports this when offloading, and only shows the part of the dmabuf indicated by the viewport.

    Improvements inside GTK

    We’ve merged new GSK renderers for GTK 4.14. The new renderers support dmabufs in the same way as the old gl renderer. In addition, the new Vulkan renderer produces dmabufs when rendering to a texture.

    In GTK 4.16, the GtkGLArea widget will also provide dmabuf textures if it can, so you can put it in a GtkGraphicsOffload widget to send its output directly to the compositor.

    You can see this in action in the shadertoy demo in gtk4-demo in git main.

    Shadertoy demo with golden outline around offloaded graphics

    Improved compositor interaction

    One nice thing about graphics offload is that the compositor may be able to pass the dmabuf to the KMS apis of the kernel without any extra copies or compositing. This is known as direct scanout and it helps reduce power consumption since large parts of the GPU aren’t used.

    The compositor can only do this if the dmabuf is attached to a fullscreen surface and has the right dimensions to cover it fully. If it does not cover it fully, the compositor needs some assurance that it is ok to leave the outside parts black.

    One way for clients to provide that assurance is to attach a specially constructed black buffer to a surface below the one that has the dmabuf attached. GSK will do this now if it finds black color node in the rendernode tree, and the GtkGraphicsOffload widget will put that color there if you set the “black-background” property. This should greatly increase the chances that you can enjoy the benefits of direct scanout when playing fullscreen video.

    Developer trying to make sense of graphics offload Offloaded content with fullscreen black background

    In implementing this for GTK 4.16, we found some issues with mutter’s support for single-pixel buffers, but these have been fixed quickly.

    To see graphics offload and direct scanout in action in a GTK4 video player, you can try the Light Video Player .

    If you want to find out if graphics offload works on your system or debug why it doesn’t, this recent post by Benjamin is very helpful.

    Summary

    GTK 4 continues to improve for efficient video playback and drives improvements in this area up and down the stack.

    A big thank you for pushing all of this forward goes to Robert Mader. ❤

    • wifi_tethering open_in_new

      This post is public

      blog.gtk.org /2024/04/17/graphics-offload-revisited/

    • chevron_right

      Jussi Pakkanen: CapyPDF 0.10.0 is ou

      news.movim.eu / PlanetGnome · 2 days ago - 16:04

    Perhaps the most interesting feature is that this new version reduces the number of external dependencies by almost 15%. More specifically the number of deps went from 7 to 6. This is due to Apple Clang finally shipping with std::format support so fmt::format could be removed. The actual change was pretty much a search & replace from fmt::format to std::format . Nice.

    Other features include:

    • L*a*b* color support in paint operations
    • Reworked raster image APIs
    • Kerned text support
    • Support for all PDF/X versions, not just 3
    • Better outline support

    But, most importantly, there are now stickers:

    Sadly you can't actually buy them anywhere, they can only be obtained by meeting me in person and asking for one.

    • chevron_right

      Sam Thursfield: Status update, 17/04/2024

      news.movim.eu / PlanetGnome · 2 days ago - 13:41 · 4 minutes

    In which I meet QA testers, bang my head against the GNOME OS initial setup process, and travel overland from Scotland to Spain in 48 hours.

    Linux QA meetup

    Several companies and communities work on QA testing for Linux distros, and we mostly don’t talk to each other. GUADEC 2023 was a rare occasion where several of us were physically collocated for a short time, and a few folk proposed a “GNOME + openQA hackfest” to try and consolidate what we’re all working on.

    Over time, we realized ongoing lines of communication are more useful than an expensive one-off meetup, and the idea turned into a recurring monthly call. This month we finally held the first call. In terms of connecting different teams it was a success – we had folk from Canonical/Ubuntu, Codethink, Debian, GNOME, Red Hat/Fedora and SUSE, and there are some additional people already interested in the next one. Everyone who attended this round is using openQA and we will to use the openqa:opensuse.org chat to organise future events – but the call is not specific to openQA, nor to GNOME: anything Linux-related and QA-related is in scope.

    If you want to be involved in the next one, make sure you’re in the openQA chat room, or follow this thread on GNOME Discourse . The schedule is documented here and the next call should be 08:00UTC on Thursday 2nd May.

    GNOME OS tests

    On the topic of QA, the testsuite for GNOME OS is feeling pretty unloved at the moment. Tests still don’t pass reliably and haven’t done for months. Besides the existing issue with initial setup where GNOME Shell doesn’t start , there is a new regression that breaks the systemd user session and causes missing sound devices . Investigating these issues is a slow and boring process which you can read about in great detail on the linked issues.

    Fun fact: most of GNOME OS works fine without a systemd user session – there is still a D-Bus session bus after all; systemd user sessions are quite new and we still (mostly) support non-systemd setups.

    One thing is clear, we still need a lot of work on tooling and docs around GNOME OS and the tests, if we hope to get more people involved. I’m trying my best in the odd hours I have available, greatly helped by Valentin David and other folk in the #GNOME OS channel, but it still feels like wading through treacle.

    We particularly could do with documentation on how the early boot and initial setup process is intended to work – its very hard to visualize just from looking at systemd unit files. Or maybe systemd itself can generate a graph of what should be happening.

    Magic in the ssam_openqa tool

    Debugging OS boot failures isn’t my favourite thing. I just want reliable tests. Writing support tooling in Rust is fun though, and it feels like magic to be able to control and debug VMs from a simple CLI tool, and play with them over VNC while the test suite runs.

    Using a VNC connection to run shell commands is annoying at times: it’s a terminal in a desktop in a VNC viewer, with plenty of rendering glitches, and no copy/paste integration with the host. I recently noticed that while openQA tests are running, a virtio terminal is exposed on the host as a pair of in/out FIFOs, and you can control this terminal using cat and echo . This feels like actual magic.

    I added a new option to ssam_openqa , available whenever the test runner is paused, to open a terminal connection to this virtio console, and now I can debug directly from the terminal on my host. I learned a few things about line buffering and terminal control codes along the way. (I didn’t get ANSI control codes like cursor movement to work, yet – not sure if my code is sending them wrong, or some TERM config is needed on the VM side. – but with backspace, tab and enter working it’s already fairly usable).

    Here’s a quick demo of the feature:

    Available in the 1.2.0-rc1 release. Happy debugging!

    Cross country travel

    Most of this month I was on holiday. If you’re a fan of overland travel, how about this: Aberdeen to Santiago in 48 hours; via night train to Crewe, camper van to Plymouth, ferry to Santander and then more driving across to Galicia. A fun trip, although I got pretty seasick on the boat until I’d had a good nights sleep. (This wasn’t a particularly low-carbon trip though despite going overland, as the train, ferry and van are all powered by big diesel engines.)

    And now back to regular work – “Moving files from one machine to another using Python and YAML”, etc.

    • chevron_right

      Benjamin Otte: Making GTK graphics offloading work

      news.movim.eu / PlanetGnome · 5 days ago - 16:37 · 3 minutes

    (I need to put that somewhere because people ask about it and having a little post to explain it is nice.)

    What’s it about?
    GTK recently introduced the ability to offload graphics rendering , but it needs rather recent everything to work well for offloading video decoding.

    So, what do you need to make sure this works?

    First, you of course need a video to test. On a modern desktop computer, you want a 4k 60fps video or better to have something that pushes your CPU to the limits so you know when it doesn’t work. Of course, the recommendation has to be Big Buck Bunny at the highest of qualities – be aware that the most excellent 4000×2250 @ 60fps encoding is 850MB. On my Intel TigerLake, that occasionally drops frames when I play that with software decoding, and I can definitely hear the fan turn on.
    When selecting a video file, keep in mind that the format matters.

    Second, you need hardware decoding. That is provided by libva and can be queried using the vainfo tool (which comes in the `libva-utils` package in Fedora). If that prints a long list of formats (it’s about 40 for me), you’re good. If it doesn’t, you’ll need to go hunt for the drivers – due to the patent madness surrounding video formats that may be more complicated than you wish. For example, on my Intel laptop on Fedora, I need the intel-media-driver package which is hidden in the nonfree RPMFusion repository .
    If you look at the list from vainfo , the format names give some hints – usually VP9 and MPEG2 exist. H264 and HEVC aka H265 are the patent madness, and recent GPUs can sometimes do AV1. The Big Buck Bunny video from above is H264, so if you’re following along, make sure that works.

    Now you need a working video player. I’ll be using gtk4-demo (which is in the gtk4-devel-tools package, but you already have that installed of course) and its video player example because I know it works there. A shoutout goes out to livi which was the first non-demo video player to have a release that supports graphics offloading. You need GTK 4.14 and GStreamer 1.24 for this to work. At the time of writing, this is only available in Fedora rawhide, but hopefully Fedora 40 will gain the packages soon.

    If you installed new packages above, now is a good time to check if GStreamer picked up all the hardware decoders. gst-inspect-1.0 va will list all the elements with libva support. If it didn’t pick up decoders for all the formats it should have (there should be a vah264dec listed for H264 if you want to decode the video above), then the easiest way to get them is to delete GStreamer’s registry cache in ~/.cache/gstreamer-1.0 .

    If you want to make sure GStreamer does the right thing, you can run the video player with GST_DEBUG=GST_ELEMENT_FACTORY:4 . It will print out debug messages about all the elements it is creating for playback. If that includes a line for an element from the previous list (like `vah264dec` in our example) things are working. If it picks something else (like `avdec_h264` or `openh264dec`) then they are not.

    Finally you need a compositor that supports YUV formats. Most compositors do – gnome-shell does since version 45 for example – but checking can’t hurt: If wayland-info (in the wayland-utils package in Fedora) lists the NV12 format, you’re good.

    And now everything works.
    If you have a 2nd monitor you can marvel at what goes on behind the scenes by running the video player with GDK_DEBUG=dmabuf,offload and GTK will tell you what it does for every frame, and you can see it dynamically switching between offloading or not as you fullscreen (or not), click on the controls (or not) and so on. Or you could have used it previously to see why things didn’t work.
    You can also look at the top and gputop variant of your choice and you will see that the video player takes a bit of CPU to drive the video decoding engine and inform the compositor about new frames and the compositor takes a bit of CPU telling the 3D engine to composite things and send them to the monitor. With the video above it’s around 10% on my laptop for the CPU usage each and about 20% GPU usage.

    And before anyone starts complaining that this is way too complicated: If you read carefully, all of this should work out of the box in the near future. This post just lists the tools to troubleshoot what went wrong while developing a fast video player.

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /otte/2024/04/14/making-gtk-graphics-offloading-work/

    • chevron_right

      Miguel de Icaza: 23 Apr 2024

      news.movim.eu / PlanetGnome · 6 days ago - 23:00 · 2 minutes

    Embeddable Game Engine

    SwiftGodot%20Header.png Many years ago, when working at Xamarin, where we were building cross-platform libraries for mobile developers, we wanted to offer both 2D and 3D gaming capabilities for our users in the form of adding 2D or 3D content to their mobile applications.

    For 2D, we contributed and developed assorted Cocos2D-inspired libraries.

    For 3D, the situation was more complex. We funded a few over the years, and we contributed to others over the years, but nothing panned out (the history of this is worth a dedicated post).

    Around 2013, we looked around, and there were two contenders at the time, one was an embeddable engine with many cute features but not great UI support called Urho, and the other one was a Godot , which had a great IDE, but did not support being embedded.

    I reached out to Juan at the time to discuss whether Godot could be turned into such engine. While I tend to take copious notes of all my meetings, those notes sadly were gone as part of the Microsoft acquisition, but from what I can remember Juan told me, "Godot is not what you are looking for" in two dimensions, there were no immediate plans to turn it into an embeddable library, and it was not as advanced as Urho, so he recommended that I go with Urho.

    We invested heavily in binding Urho and created UrhoSharp that would go into becoming a great 3D library for our C# users and worked not only on every desktop and mobile platform, but we did a ton of work to make it great for AR and VR headsets. Sadly, Microsoft's management left UrhoSharp to die.

    Then, the maintainer of Urho stepped down, and Godot became one of the most popular open-source projects in the world.

    Last year, @Faolan-Rad contributed a patch to Godot to turn it into a library that could be embedded into applications. I used this library to build SwiftGodotKit and have been very happy with it ever since - allowing people to embed Godot content into their application.

    However, the patch had severe limitations; it could only ever run one Godot game as an embedded system and could not do much more. The folks at Smirk Software wanted to take this further. They wanted to host independent Godot scenes in their app and have more control over those so they could sprinkle Godot content at their heart's content on their mobile app.

    They funded some initial work to do this and hired Gergely Kis's company to do this work.

    Gergely demoed this work at GodotCon last year. I came back very excited from GodotCon and I decided to turn my prototype Godot on iPad into a complete product. One of the features that I needed was the ability to embed chunks of Godot in discrete components in my iPad UI, so we worked with Gergely to productize and polish this patch for general consumption.

    Now, there is a complete patch under review to allow people to embed arbitrary Godot scenes into their apps. For SwiftUI users, this means that you can embed a Godot scene into a View and display and control it at will.

    Hopefully, the team will accept this change into Godot, and once this is done, I will update SwiftGodotKit to get these new capabilities to Swift users (bindings for other platforms and languages are left as an exercise to the reader).

    It only took a decade after talking to Juan, but I am back firmly in Godot land.

    • wifi_tethering open_in_new

      This post is public

      tirania.org /blog/archive/2024/Apr-23.html

    • chevron_right

      Felix Häcker: #143 Circle Updates

      news.movim.eu / PlanetGnome · Friday, 12 April - 00:00 · 3 minutes

    Update on what happened across the GNOME project in the week from April 05 to April 12.

    GNOME Core Apps and Libraries

    GLib

    The low-level core library that forms the basis for projects such as GTK and GNOME.

    Philip Withnall announces

    After a lot of preparation, GLib has finally achieved an OpenSSF Best Practices ‘passing’ badge, which certifies that it follows a number of development and security best practices — see https://www.bestpractices.dev/en/projects/6011

    GNOME Circle Apps and Libraries

    Fragments

    Easy to use BitTorrent client.

    Felix reports

    It has finally happened! The long awaited major update of Fragments is now available, which includes many exciting new features.

    The most important addition is support for torrent files. It is now possible to select the files you want to download from a torrent. The files can be searched and sorted, individual files can be opened directly from Fragments.

    Further new features:

    • Added torrents can now be searched
    • In addition to magnet links, *.torrent links in the clipboard are now also recognized
    • Prevent system from going to sleep when torrents are active
    • New torrents can be added via drag and drop
    • Automatic trashing of *.torrent files after adding them
    • Stop downloads when a metered network gets detected

    Improvements:

    • When controlling remote sessions, the local Transmission daemon no longer gets started
    • Torrents are automatically restarted if an incorrect location has been fixed
    • Torrents can now also be added via CLI
    • Clipboard toast notification is no longer displayed multiple times
    • Reduced CPU/resource consumption through adaptive polling interval
    • Improved accessibility of the user interface
    • Modernized user interface through the use of new Adwaita widgets
    • Update from Transmission 3.0.5 to 4.0.5

    More information can be found in the announcement blog post .

    Pika Backup

    Keep your data safe.

    Fina reports

    Pika Backup 0.7.2 was released. It fixes a crash on the schedule page. It also resolves an issue with pre- and post-backup scripts being unable to send desktop notifications.

    We have already made lots of progress towards 0.8 which will focus on code maintainability and UI refinements. You can support Pika’s development on Open Collective .

    Blanket

    Improve focus and increase your productivity by listening to different sounds.

    Rafael Mardojai CM announces

    Blanket 0.7.0 has been released and is available on Flathub .

    This new release features a redesigned user interface and uses the latest GNOME design patterns.

    Other changes include:

    • Inhibit suspension when playing
    • Pause playback if the system enters power saver mode
    • MPRIS: Implement Play, Pause and Stop methods in addition to PlayPause
    • MPRIS: Implement Next and Prev methods for navigating presets
    • Updated Pink Noise sample
    • Changed train sound
    • Added preference to always start on pause

    Third Party Projects

    Krafting announces

    Hello! This week I released SemantiK . It’s a word-game where you need to find a secret word, similar to Cémantix or Semantle. The default language model is in French, but you can use and import your own !

    It is available on Flathub

    xjuan says

    New Cambalache stable version released! The app ui is now made with Cambablache and Gtk 4! Read more about v 0.90.0 at https://blogs.gnome.org/xjuan/2024/04/06/cambalache-0-90-0-released/

    alextee announces

    The GTK4/libadwaita-based digital audio workstation Zrythm has released its last beta version v1.0.0-beta.6.7.32 in preparation for a release candidate!

    More info on our website . Zrythm is also available on Flathub

    Phosh

    A pure wayland shell for mobile devices.

    Guido reports

    Phosh 0.38.0 is out:

    Phosh now handles devices with rounded display corners better and supports count and progress indicators in lock screen launcher entries. On the compositor side we now handle always-on-top and move-to-corner keybindings and the on screen keyboard squeekboard got a whole bunch of layout improvements.

    There’s more. Check the full details here

    Events

    mwu reports

    TWIG-Bot We are ramping up for GUADEC 2024 and sponsorships are still available. We made it easier this year and put the different opportunities online! Click here for more info: https://events.gnome.org/event/209/registrations/212/

    That’s all for this week!

    See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects!

    • chevron_right

      Christian Hergert: Refreshed Search

      news.movim.eu / PlanetGnome · Wednesday, 10 April - 04:50

    Builder got a refreshed search popover. It’s not even a GtkPopover anymore and instead uses AdwDialog .

    You can use some of the typical “prefixes” to filter search results or do nothing and get everything mixed together.

    A screenshot of the search popover displaying a list of filters such as @ to display symbols or ~ to filter only filenames.

    For example, prefix the search with @ to limit the results to indexed symbol names. Quick preview is still presented side-by-side.

    A popover is displayed filtering results to symbols using the @ prefix.

    You can also search for documentation now if jumping to the search panel is too much work. Just prefix with ? and you’re ready to go.

    The search popover displaying a list of documentation options from DexFuture.

    Sometimes it can be handy to run various build actions using the search popover as well. Many of the menu items are searchable. Just prefix the search query with > .

    The search popover showing a number of menu items and their action description along with associated keyboard shortcuts.

    Enjoy!

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /chergert/2024/04/10/refreshed-search/