call_end

    • chevron_right

      Adrien Plazas: Mushroom Gardiane Recipe

      news.movim.eu / PlanetGnome • 17 March, 2023 • 3 minutes

    Gardiane is a traditional recipe from Camargue, this vegan variant replaces streaked bull meat by mushrooms. I tried it with seitan too but it ends up a bit too soggy and mushy to my liking, especially after some time in the fridge. This vegan variant also has the advantage of requiring virtually no set up — in the original recipe you have to marinate the meat for 24–48 hours — and of taking less time to cook, as you only need 1–2 hours instead of 2–4 hours.

    Regarding olives, the most traditional would be black Picholines, though I prefer to use black Lucques. Please please please do not use greek style olives as they contain way too much salt, they would spoil the gardiane. I strongly recommend using olives with stones as it helps keeping them in good shape while everything cooks, and removing the stones with your mouth is part of the experience, like cherry stones in clafoutis.

    For 6–8 servings.

    Ingredients

    • 2 kg of large white or brown common mushrooms
    • 200 g of firm tofu
    • 200 g of smoked firm tofu
    • 500 g of black olives, preferably stoned Picholines or Lucques
    • 2 large yellow onions
    • 75 cl of red wine, preferably Côte du Rhône or Languedoc
    • 6 garlic cloves
    • ⅓ tsp of ground cloves
    • 2 tsp of thyme
    • 2 tsp of rosemary
    • 2 large bay leaves
    • a bit of ground black pepper
    • 1 tsp of salt
    • 3 tbsp of starch or flower
    • 500 g long grain white rice, preferably Camargue
    • some olive oil
    • some water
    ingredients.jpg

    This day I couldn’t find Picholines or Lucques, and I forgot to invite the tofu to the familly photo

    Instructions

    • Remove the stems from the mushrooms. Remove dirty bits from the stems.
    • Peel the mushroom caps, this will help the wine soak in.
    • Cut the caps into 3–4 cm wide pieces, in pratice that means you don’t cut the small ones, you cut the medium-sized ones in two, and you cut the larger ones in three or four.
    • Wash the caps and stems in a salad spinner.
    peeled-mushrooms.jpg

    The mushrooms, peeled, cut and washed

    • Cut the tofu in 2 cm long and 5 mm thick batonnets.
    cut-smoked-tofu.jpg

    The cut smoked tofu

    • Peel the onions. Cut the onions in 8–10 vertically.
    • Peel the garlic cloves. Mince the garlic cloves.
    • If the olives come in water, remove the water.
    • Put a large pot on medium heat.
    • In the pot, put a bit of olive oil and lightly brown the onions with the garlic, the thyme and the rosemary. Reserve.
    browned-onions.jpg

    The browned onions

    • In the pot, put a bit of olive oil and lightly brown the tofu. Reserve.
    browned-tofu.jpg

    The browned tofu

    • In the pot, put a bit of olive oil and lightly brown the mushrooms. Do it in several batches so they don’t cook too much in their own water, the goal is to get somw brown bits.
    browned-mushrooms.jpg

    A batch of browned mushrooms, these cooked in their own water a bit too much, but it’s fine as they still have some brown bits

    • Remove the pot from the fire, and pour everything in it but the starch or flour, the black pepper and the rice. This means you add the wine, the mushrooms, the onions, the tofu, the olives, the bay leaves, the ground cloves, and the salt.
    • Add water in the pot until everything is covered.
    ready-to-cook.jpg

    The pot is filled with all the ingredients, the gardiane is ready to be cooked

    • Cover the pot, put it on medium-low heat and let it cook for 2 hours.
    • While the gardiane cooks, prepare and cook the rice.
    • Remove the pot from the stove.
    • Put some sauce from the gardiane in a glass with the starch or flour. Mix them with a spoon and put the liquid back in the pot.
    • Add the black pepper in the pot and stir, the starch or flour will very lightly thicken the sauce.
    a-plate.jpg

    A served plate

    • Serve the gardiane either aside the rice or on top of it, as you prefer. Serve with another bottle of a similar wine.
    selfie-with-tobias-bernard.jpg

    This recipe is approved by Tobias Bernard

    • wifi_tethering open_in_new

      This post is public

      adrienplazas.com /blog/2023/03/18/mushroom-vegan-gardiane-recipe.html

    • chevron_right

      Alexander Mikhaylenko: Libadwaita 1.3

      news.movim.eu / PlanetGnome • 17 March, 2023 • 5 minutes

    Another cycle, another release. Let’s take a look at what’s new.

    Banners

    Screenshot of AdwBanner

    AdwBanner is a brand new widget that replaces GtkInfoBar .

    Jamie started implementing it before 1.2 was released, but we were already in the API freeze so it was delayed to this cycle instead.

    While it looks more or less the same as GtkInfoBar , it’s not a direct replacement. AdwBanner has a title and optionally one button. That’s it. It does not have a close button, it cannot have multiple buttons or arbitrary children. In exchange, it’s easier to use, behaves consistently and has an adaptive layout:

    Wide screenshot of AdwBanner. The button is on the right, the title is centered.

    Medium-width screenshot of AdwBanner. The button is on the right, the title is left-aligned as it wouldn't fit centered.

    Narrow screenshot of AdwBanner. The title is center-aligned, the button is centered below it.

    Like GtkInfoBar , AdwBanner has a built-in revealer and can be shown and hidden with an animation.

    There are situations where it cannot be used, but in most of those cases GtkInfobar was already the wrong choice and they should be redesigned. For example, Epiphany was using them for the “save password” prompt, and is using a popover for that now.

    Tab Overview

    A work-in-progress grid-based tab overview A work-in-progress carousel-based tab overview

    AdwTabOverview is a new tab overview widget for AdwTabView that finally makes it possible to use tabs on mobile devices without implementing a mobile switcher manually.

    Back when I wrote HdyTabView , I mentioned a tab overview widget in the works, and even had demo screenshots . Of course, basically everything from that demo got rewritten since then, and the carousel for narrow mode got scrapped completely, but now we’re getting into The Ship of Theseus territory.

    This required a pretty big rework of AdwTabView to allow tabs to have thumbnails when they are not visible, and in particular it does not use a GtkStack internally anymore.

    By default the selected tab has a live thumbnail and other thumbnails are static, but apps can opt into using live thumbnails for specific pages. They can also control the thumbnail alignment in case the thumbnail gets clipped. Thumbnails themselves are currently not public, but it might be interesting to use them for e.g. tooltips at some point.

    Overview is not currently used very widely – it’s available in Console, and there is a merge request adding it to Epiphany, but I didn’t have the energy to finish the latter this cycle.

    Tab Button

    Screenshot of AdwTabButton. It's showing two tab buttons. One displays 3 open tabs, the other one 15 and has an attention indicator

    AdwTabButton is much less interesting, it’s just a button that shows the number of open tabs in a given AdwTabView . It’s intended to be used as the button that opens the tab overview on mobile devices.

    Unlike tab overview, this widget is more or less a direct port of what Epiphany has been using since 3.34. It does have one new feature though – it can display an indicator if a tab needs attention.

    Accessibility

    You might have noticed that widgets like AdwViewStack , AdwTabView or AdwEntryRow were not accessible in libadwaita 1.2.x. The reason for that is that GTK didn’t provide public API to make that possible. While GtkAccessible existed, it wasn’t possible to implement it outside GTK itself.

    This cycle, Lukáš Tyrychtr has implemented the missing pieces, as well as fixed a few other issues. And so libadwaita widgets are now properly accessible.

    Animation Additions

    One of AdwAnimation features is that it automatically follows the system setting for disabling animations. While this is the expected behavior in most cases, there are a few where it gets in the way instead.

    One of these cases is in apps where the animations are the app’s primary content, such as Elastic , and so I added a property that allows a specific animation to ignore the setting.

    The animation in the demo is now using it as well, for the same reason as Elastic, and in the future it will allow us to have working spinners while animations are disabled system-wide as well.

    A screenshot of an animation graph from Elastic

    Elastic also draws an animation graph before running the actual animation, and while for timed animations it’s relatively easy since easing functions are available through the public API , it wasn’t possible for spring animations. It is now, via calculate_value() and calculate_velocity() .

    All of this uncovered a few bugs with spring animations – for example, the velocity was completely wrong for overdamped springs, and Manuel Genovés fixed them.

    Unrelated to the above, a common complaint about AdwPropertyAnimationTarget was that it prints a critical if the object containing the property it’s animating is finalized before the target. While it was easy to avoid in C, it was nearly impossible from bindings. And so we don’t print that critical anymore.

    Other Changes

    • Christopher Davis added a way to make AdwActionRow subtitle selectable .
    • Matt Jakeman added title-lines and subtitle-lines properties to AdwExpanderRow , matching AdwActionRow .
    • AdwEntryRow now has a grab_focus_without_selecting() method, matching GtkEntry .
    • The API to set an icon on AdwActionRow and AdwExpanderRow are now deprecated, since they were mostly unused. Apps that need icons can add a GtkImage as a prefix widget instead.
    • AdwMessageDialog now has the async choose() method, matching the new GTK dialogs like GtkAlertDialog . The response signal is still there and is not deprecated, but in some cases the new method may be more convenient, particularly from bindings:

      [GtkCallback]
      private async void clicked_cb () {
          var dialog = new Adw.MessageDialog (
              this,
              "Replace File?",
              "A file named “example.png” already exists. Do you want to replace it?"
          );
      
          dialog.add_response ("cancel", "_Cancel");
          dialog.add_response ("replace", "_Replace");
      
          dialog.set_response_appearance (
              "replace",
              DESTRUCTIVE
          );
      
          var response = yield dialog.choose (null);
      
          if (response == "replace") {
              // handle replacing
          }
      }
      
    • Corey Berla added missing drag-n-drop related API to AdwTabBar to make it work properly in Nautilus.
    • Since GTK now allows to change texture filtering, AdwAvatar properly scales custom images, so they don’t appear pixelated when downscaled or blurry when upscaled. This only works if the custom image is a GdkTexture – if your app is using a different GdkPaintable , you will need to do the equivalent change yourself.
    • Jason Francis implemented dark style and high contrast support when running on Windows.
    • Selected items in lists and grids are now using accent color instead of grey, same as Nautilus in 43. Sidebars and menus still look the same as before.

    New Dependencies

    The accessibility additions, scaled texture render nodes in AdwAvatar , as well as mask render nodes (that I didn’t mention because it’s an internal change) and deprecation fixes mean that libadwaita 1.3 requires GTK 4.10 instead of 4.6.


    As always, thanks to all the contributors, and thanks to my employer, Purism, for letting me work on libadwaita and GTK to make this release happen.

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /alexm/2023/03/17/libadwaita-1-3/

    • chevron_right

      Sam Thursfield: Status update 17/03/2023

      news.movim.eu / PlanetGnome • 17 March, 2023

    Hello from my parents place, sitting on the border of Wales & England, listening to this excellent Victor Rice album , thinking of this time last year when I actually got to watch him play at Freedom Sounds Festival, which was one of my first adventures of the post-lockdown 2020s.

    I have many distractions at the moment, many being work/life admin but here are some of the more interesting ones:

    • Playing in a new band in Santiago – Killo Karallo – recording some initial music which is to come out next week
    • Preparing new Vladimir Chicken music, also cooked and ready for release in April
    • Figuring out how we can grow the GNOME OpenQA tests while keeping them fun to work with. Here’s an experimental commandline tool which might help with that.
    • Learning about marketing, analytics, and search engine optimization.
    • Trying out the new LLaMA language model and generally trying to keep up with the ongoing revolution in content generation technology.

    Also I got to see snow real for the first time in a few years! Thanks Buxton!



    • chevron_right

      Jussi Pakkanen: The PDF text model is quite nice, actually

      news.movim.eu / PlanetGnome • 16 March, 2023 • 1 minute

    As was discussed earlier, the way PDF handles fonts and glyphs is arcane and tedious . It takes a lot of boilerplate and hitting your shins against sharp stones to get working. However once you do and can turn to the higher level text functionality, things become a lot nicer. (Right-to-left, vertical and calligraphic scripts might be more difficult, but I don't know any of those.)

    The PDF text drawing model provides a fairly wide selection of text operations.

    If you, for example, want to produce a paragraph of justified text, first you need to calculate how the text should be split in lines and the additional word and character scaling parameters needed. Then the text can be rendered with the following pseudocode:

    • Create a text object with the correct font and position.
    • Set spacing values for the current line.
    • Output the current line of text (add kerning manually if it is in a format Freetype does not handle)
    • Repeat the above two steps until the paragraph is done
    • Close the text object
    This shifts the burden of having to compute each letter's exact location from you to the PDF renderer. If you need more precision than this, then you need to dig out Harfbuzz, and draw the glyphs one by one to precomputed coordinates.

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/the-pdf-text-model-is-quite-nice.html

    • chevron_right

      Felipe Borges: Register for Linux App Summit 2023!

      news.movim.eu / PlanetGnome • 16 March, 2023

    LAS 2023 is happening next month and registrations are open !

    You can  check the schedule in https://conf.linuxappsummit.org/event/5/timetable/#20230422

    We are excited to have you visiting us in Brno, Czech Republic . The conference starts on Friday, April 21st, with a pre-registration social event. Saturday and Sunday are full of interesting talks, panels, workshops, and more!

    • wifi_tethering open_in_new

      This post is public

      feborg.es /register-for-linux-app-summit-2023/

    • chevron_right

      Martín Abente Lahaye: Portfolio 0.9.15

      news.movim.eu / PlanetGnome • 15 March, 2023 • 1 minute

    After a long hiatus, a new release of Portfolio is out 📱 🤓 . This new release comes with important bug fixes, small-detail additions and a few visual improvements.

    In terms of visuals, by popular demand, the most notable change is the use of regular icons for the files browser view. It should be easier now to quickly catch what each file is about. Thanks to @AngelTomkins for the initial implementation, @Exalm for helping with the reviews, and to the GNOME design team for such lovely new icons.

    Another addition is support for system-wide style management. This is specially useful now that desktops like GNOME provide quick toggle buttons to switch between dark and light modes. Thanks to @pabloyoyoista for the initial implementation.

    One small-detail change to the properties view is the addition of file permissions.  Plus, the properties view was broken down into three different sections to reduce the visual load, and labels can now be selected which is useful for copying locations or ellipsized values.

    Moving on to bug fixes, two important changes landed. The first one solves an issue which prevented opening files with special characters 🤦 . Thanks to @jwaataja for detecting and fixing this issue. The second one solves an issue with Portfolio not properly detecting mount points under some specific conditions. Thanks to mo2mo for reaching out and sharing his system details, so I could figure this out.

    Last but never least, many thanks to @carlosgonz0 , @Vistaus , @rffontenelle , @AsciiWolf , and @eson57 for keeping translations up to date, and  to @rene-coty for the new French translation.

    flathub-badge-en-e1614625122207.png

    • wifi_tethering open_in_new

      This post is public

      blogs.gnome.org /tchx84/2023/03/15/portfolio-0-9-15/

    • chevron_right

      Jussi Pakkanen: First A4PDF release, version 0.1.0 "embarrasment"

      news.movim.eu / PlanetGnome • 12 March, 2023

    The time has come to make the first technical preview release of A4PDF, nicknamed embarrasment . The name stems from this statement .

    If you're not embarrassed by the first version of your product, you've launched too late.

    It does not do much yet, but the basics are there to draw shapes, text and images using a plain C API:

    A pkg-config file is also provided. There is also a Python wrapper to run scripts like these:

    Distro packaging

    People should probably not do any distro packaging yet, as the library is neither ABI nor even API stable. However if someone wants to build deb packages, the source portion of Debian control file would look something like this:

    Source: a4pdf
    Maintainer: Bob McBob <bob@example.org>
    Section: misc
    Priority: optional
    Standards-Version: 3.9.2
    Build-Depends: debhelper (>= 10),
    liblcms2-dev,
    libpng-dev,
    libjpeg-dev,
    libgtk-4-dev,
    libfmt-dev,
    libfreetype-dev,
    meson,
    python3-pil,
    fonts-noto-core,
    ghostscript

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/first-a4pdf-release-version-010.html

    • chevron_right

      Michael Meeks: 2023-03-11 Saturday

      news.movim.eu / PlanetGnome • 11 March, 2023

    • Up lateish, J. to AllSaints, provided on-hand debugging advice for N. much of the day.
    • Tried to get memory trimming patch pushed; fell over amusing CI fails due to day-of-week dependent code in unit test at the weekend issue up-stream. Makes a pleasant change from random breakage introduced by me . Always bad when you have no recollection of writing the code , but the style shows it must have been you.
    • wifi_tethering open_in_new

      This post is public

      meeksfamily.uk /~michael/blog/2023-03-11.html

    • chevron_right

      Jussi Pakkanen: My book is finally available for purchase

      news.movim.eu / PlanetGnome • 11 March, 2023 • 2 minutes

    A major difference between software and book projects is that the latter have a point when they can be considered complete and finished. For my debut novel, that time has come.

    The text block has been created with a "mini-LaTeX" DTP program that I wrote basically from scratch. This caused "fun" things to happen. For example I got an email from the printing house some four days before the unveiling event that the book contains words that were not hyphenated according to recommended style guides. I was aware of said style guides, had added handling for those and even had unit tests to ensure that they work. And yet in production they did not work. This lead to a very stressful debugging session where you know that the only person in the world that can fix it is you, and that there is a very strict and personal deadline.

    The actual PDF generation was done with Cairo and Pango. Surprisingly there were zero issues with them, the printer accepted them just fine and the printout looks great. The cover was made with Scribus and it did have several issues none of which had anything to do with Scribus itself, just that doing a full color managed print job is to this day a bit tricky. did have to postprocess Cairo's output with Ghostscript because Cairo only produces PDFs in the RGB colorspace whereas printers require grayscale PDFs.

    The "back blurb"

    Humanity has managed to create the technology needed for interstellar travel and civilizations from outer space have invited them to visit. The people of Earth immediately begin work on creating a space ship suitable for the journey, with stylish appearance being their number one priority. Eventually the ship gets under way commandeered by an egomaniacal captain and staffed by a nerve wrecked crew. What they don't know is who they are actually going to meet, what they should do once they get there and why the ships has an ice rink.

    [Name of book would go here, but I could not come up with a proper translation as the original is a pun] mixes classical space sci-fi, scientifically accurate technology and dark comedy into a hypergolic stew, whose blast wave nothing can survive intact — not even space sex.

    Where to get it?

    Every now and then people ask me how they could support Meson financially. Buying this book is by far the best way to do that at the current time. Yes, it is in Finnish, so most people reading this blog post can't comprehend it, but reading it is optional, you can just buy it to keep on your coffee table for maximal hipster street cred. :)

    Finnish people who prefer getting their books via libraries can request it via online forms such as this one .

    • wifi_tethering open_in_new

      This post is public

      nibblestew.blogspot.com /2023/03/my-book-is-finally-available-for.html