Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Running Shell in Builder

Builder has been absolutely wonderful for a designer to dive in and fix up graphics assets for Application. It allows to easily build and test run patches before submitting a merge/pull request on apps hosted on gitlab or github. Ideally you'd press the run button and voilá.

What has been far from wonderful — doing even one line fixes for the GNOME Shell was very hard to test for anyone not building shell daily. getting the environment ready every release has been a chore. From virtual machines, jhbuild, toolbox, jhbuild in VMs to jhbuild in toolbox there was a dozen of way to fail building the latest shell.

Toolbox/Podman targets in Builder

Builder 43, impressively marathoned into perfection, features (among many other things) the ability to target Toolbox/podman containers as development environments. So I was really happy to see Bylan McCall have a nested session going on the run button.

Now I couldn't get the full detailed receipe out of him, but as they say it's easier to get the internet prove you wrong than to give you advice, here's my terrible way (with some help from the most authoritative capacities that probably don't want anything to do with this pkexec hack):

  1. Create a toolbx container and install all gnome-shell dependencies.
toolbox create shell
toolbox enter shell
sudo dnf install gnome-shell mutter ninja-build meson
sudo dnf builddep gnome-shell mutter

While at the beginning of a cycle packages cover most of the dependencies, at the later stages you'll have to build more things (Usually gsettings-desktop-schemas, libgweather, gjs, gcr and mutter). We're in a container so I just oldschool brute install to --prefix=/usr. To build mutter for example I'd

mkdir ~/Projects
cd ~/Projects
git clone https://gitlab.gnome.org/GNOME/mutter.git
cd mutter
meson --prefix=/usr build '-Dman=false'
ninja -C build
sudo ninja -C build install

So assuming we have successfuly built shell in the shell toolbox container, we'll move over to Builder.

  1. In Builder, open the project we cloned to ~/Projects/gnome-shell. Create a new configuration (Alt+,) by duplicating the Default. Change the runtime to shell (the toolbx containers are below the usual flatpak runtimes). Set the Installation Prefix to /usr. Don't forget to make it active (Make Active).

  2. Still in configuration, in the Commands section, create a new command (call it Run Nested Shell):

dbus-run-session gnome-shell --wayland --nested

At the bottom of the dialog add a Variable:

MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x1080

This will make the shell run at least in HD, rather than the super tiny default size.

  1. In the Application section, change the Run Command from Automatically Discover to our Run Nested Shell. Now we only need to do the last nasty bit to allow for the install to /usr to succeed.

  2. Open a new runtime terminal (Ctrl+Alt+T) and replace pkexec with a just-do-it script. It's a container, it's fiiiiine, chill.

cd /usr/bin
mv pkexec pkexec.orig

Now with your preferred CLI editor create the following shell script in place of pkexec:

#!/bin/bash
su -c "$*"

Set it executable with chmod +x pkexec.

Build Configurations

Now pressing the run button should build your shell, install it and run the nested session. Hopefully stylesheet patches will be less painful now, maybe?

Please do not hesistate to toot at me what the proper way is rather than installing to /usr

a silhouette of a person's head and shoulders, used as a default avatar

Running Shell in Builder

Builder has been absolutely wonderful for a designer to dive in and fix up graphics assets for Application. It allows to easily build and test run patches before submitting a merge/pull request on apps hosted on gitlab or github. Ideally you’d press the run button and voilá.

What has been far from wonderful — doing even one line fixes for the GNOME Shell was very hard to test for anyone not building shell daily. getting the environment ready every release has been a chore. From virtual machines, jhbuild, toolbox, jhbuild in VMs to jhbuild in toolbox there was a dozen of way to fail building the latest shell.

Toolbox/Podman targets in Builder

Builder 43, impressively marathoned into perfection, features (among many other things) the ability to target Toolbox/podman containers as development environments. So I was really happy to see Bylan McCall have a nested session going on the run button.

Now I couldn’t get the full detailed receipe out of him, but as they say it’s easier to get the internet prove you wrong than to give you advice, here’s my terrible way (with some help from the most authoritative capacities that probably don’t want anything to do with this pkexec hack):

1) Create a toolbx container and install all gnome-shell dependencies.

toolbox create shell
toolbox enter shell
sudo dnf install gnome-shell mutter ninja-build meson
sudo dnf builddep gnome-shell mutter

While at the beginning of a cycle packages cover most of the dependencies, at the later stages you’ll have to build more things (Usually gsettings-desktop-schemas, libgweather, gjs, gcr and mutter). We’re in a container so I just oldschool brute install to --prefix=/usr. To build mutter for example I’d

mkdir ~/Projects
cd ~/Projects
git clone https://gitlab.gnome.org/GNOME/mutter.git
cd mutter
meson --prefix=/usr build '-Dman=false'
ninja -C build
sudo ninja -C build install

So assuming we have successfuly built shell in the shell toolbox container, we’ll move over to Builder.

2) In Builder, open the project we cloned to ~/Projects/gnome-shell. Create a new configuration (Alt+,) by duplicating the Default. Change the runtime to shell (the toolbx containers are below the usual flatpak runtimes). Set the Installation Prefix to /usr. Don’t forget to make it active (Make Active).

3) Still in configuration, in the Commands section, create a new command (call it Run Nested Shell):

dbus-run-session gnome-shell --wayland --nested

At the bottom of the dialog add a Variable:

MUTTER_DEBUG_DUMMY_MODE_SPECS=1920x1080

This will make the shell run at least in HD, rather than the super tiny default size.

4) In the Application section, change the Run Command from Automatically Discover to our Run Nested Shell. Now we only need to do the last nasty bit to allow for the install to /usr to succeed.

5) Open a new runtime terminal (Ctrl+Alt+T) and replace pkexec with a just-do-it script. It’s a container, it’s fiiiiine, chill.

cd /usr/bin
mv pkexec pkexec.orig

Now with your preferred CLI editor create the following shell script in place of pkexec:

#!/bin/bash
su -c "$*"

Set it executable with chmod +x pkexec.

Build Configurations

Now pressing the run button should build your shell, install it and run the nested session. Hopefully stylesheet patches will be less painful now, maybe?

Please do not hesistate to toot at me what the proper way is rather than installing to /usr

the avatar of Nathan Wolf

OPI | OBS Package Installer

A project within openSUSE that I think is absolutely fantastic is called the “openSUSE Package Installer.” This allows you to install packages from various third party vendors such as the “Packman” repository or other “community repositories” of the openSUSE Build Service. What this means is, the multi-step process of adding repositories and installing the desired […]
a silhouette of a person's head and shoulders, used as a default avatar

the avatar of openSUSE News

Release Candidate of Leap Micro Now Available

The release candidate of openSUSE’s modern lightweight host operating system Leap Micro 5.3 is now available on get.opensuse.org.

The release made NetworkManager the default network configuration tool; autoyast ensures this. Users should be aware that firewalld is only installed from the ISO if the firewall is enabled during an installation.

A new SELinux module for Cockpit provides basic functionality for users to troubleshoot configurations.

A first-boot wizard gives users an alternative to setting a password via combustion/ignition, which allows for formatting partitions, configuring users, and writing of regular files, systemd units, and more.

The RC introduces newly generated QEMU Copy On Write images for Leap Micro.

The release is based on SUSE Linux Enterprise SUSE (SLE) Micro 5.3 and is built on top of a SLE 15 Service Pack 4 update.

A known issue inherited from SLE Micro 5.3 is a missing group - rpc:rpc. There is also an error on the console while booting with SELinux enabled.

Yet this ultra-reliable, lightweight and immutable operating system can be used in decentralized computing environments, edge, embedded, and IoT deployments.

The host-OS has automated administration and patching, so auto-updating gives users a persistent bootable system for their container and virtualized workloads.

Leap Micro has a six month release cycle, so its product End of Life will end around the timeframe of a second follow-on release. Meaning that Leap Micro 5.4 would make Leap Micro 5.2 EOL, and Leap Micro 5.5 would make this Leap Micro 5.3 release EOL.* Upon the Leap 5.4 release, Leap Micro 5.2 users should upgrade to the new version or migrate to SLE Micro where users can get up to four years of support.

Users should know that zypper is not used with Leap Micro, but transactional-update is used instead. One of the packages related to Leap Micro for developers is Podman. Podman gives developers options to run their applications with Podman in production.

Leap Micro has similarities of MicroOS, but Leap Micro does not offer a graphical user interface or desktop version. However, users can use Cockpit to manager their host OS through a web browser. Leap Micro is based on SUSE Linux Enterprise and Leap rather than a variant of Tumbleweed, which MicroOS bases its release on.

Large development teams can add value to their operations by trying Leap Micro and transitioning to SUSE’s SLE Micro for extended maintenance and certification.

Developers and professionals can build and scale systems for uses in aerospace, telecommunications, automotive, defense, healthcare, hospitality, manufacturing, database, web server, robotics, blockchain and more.

Leap Micro 5.3 documentation can help users who have questions about running this modern OS release.

To download the ISO image, visit get.opensuse.org.

* This is an intended example. Version numbers somtimes change. This is providing a consecutive numbering system as an example.

the avatar of Ish Sookun

openSUSE Board Election 2022 campaign has begun

The candidates list for this year's openSUSE Board Election is as follows:

openSUSE members can also ask questions to the candidates on the project mailing list. Vojtěch Zeisek asked the candidates about their plans and what they want to achieve with the project.

Douglas had an interesting answer. He stated that he would like to see that the openSUSE Project adopts the blockchain technology. He cited the election as an example where a smart contract could facilitate the task of running elections and maintaining an updated members list based on whether members' tokens have been used in (x) number of years.

He also mentioned NFT as something that could be explored to create a sort of badge system like the Fedora project has and member contributions could be rewarded with NFTs.

On the question about what he wishes to do, he answered that he would focus on getting the project either becoming a Foundation or transition to a decentralised autonomous organisation. Discussions about creating an openSUSE Foundation started in 2019 but it hasn't progressed much since.

I will write more about the candidates Q&A with members as they happen. If you would like to ask a question or follow the discussions, then feel free to subscribe to the project's mailing list.

the avatar of openSUSE News

openSUSE site Aligns with Upstream Documentation

The history of documentation as it relates to operating systems and software development has a rich history that expands decades.

The founding of manual pages, or manpages for short, were a way to onboard new technology users at a time when household computers were nonexistent.

To gain knowledge of programs, standards, abstract concepts and conventions, a person needed computer access and to enter the man command to display documentation in a green text encoding standard about the computer program on the system.

Times and technology have changed, but the purpose of manpage hasn’t.

Users no longer need to install a package on their system to access a program’s documentation thanks to the openSUSE Project’s repository of manual pages at manpages.opensuse.org.

There are a couple of different ways to use the manpages repository. People can browse the repository index, which features thousands of packages (curently 111,387), enter the package in the search or enter the /name of the package in the URL.

The manpages repository follow upstream manual pages in openSUSE Factory and translations are based on these upstream translation efforts for each software package.

Service for manpages.opensuse.org will improve and updates to each of the packages manpage will happen as new packages enter openSUSE Factory.

A link will soon be displayed on the project’s portal to all of openSUSE websites, user groups, social media accounts and more.

the avatar of openSUSE News

a silhouette of a person's head and shoulders, used as a default avatar

openSUSE Tumbleweed – Review of the week 2022/44

Dear Tumbleweed users and hackers,

Despite the week being one hour shorter (as a reminder: Europe switched from summer time to winter time on Oct 30), the maintainers and contributors went beyond and still delivered 7 snapshots (1028…1103). The staging projects have been nicely balanced and performance seems good. Unless the requests cause breakages, they are still going through the process rather quickly.

The 7 snapshots brought you updates in these area:

  • Mozilla Firefox 106.0.2 & 106.0.3 & Thunderbird 102.4.1
  • gpgme 1.18.0
  • Linux kernel 6.0.5 & 6.0.6
  • Python 3.10.8
  • Sudo 1.9.12
  • KDE Plasma 5.26.2
  • strace 6.0
  • btrfsprogs 6.0
  • GNOME 43.1 (gnome-shell, mutter and gnome-desktop did not get an update in this release, which is why gnome-control-center still reports 43.0)
  • openssl 1.1.1s & openssl 3.0.7

A lot of requests have been submitted in the last days and the staging projects are busy building and testing those changes. The most relevant are:

  • KDE Applications 22.08.3
  • CMake 3.24.2
  • Qt 5.15.7
  • Libvirt 8.9.0
  • SQLite 3.39.4
  • Linux kernel 6.0.7
  • GNU Make 4.4
  • git 2.38.1: breaks python-GitPython
  • icu 72.1: breaks nodejs18/nodejs19 (and a chain behind this)
  • suse-module-tools 16.0.24: breaks virtualbox and vmdk (and potentially more kmp builds)

the avatar of openSUSE News

LLVM, sudo, Plasma update in Tumbleweed

This week’s openSUSE Tumbleweed snapshots continued to roll forward and update more than 150 software packages.

Besides updates for LLVM, sudo and KDE’s Plasma, packages like systemd, curl, strace and tracker also gained software updates.

An update of gnome-terminal 3.46.3 arrived in snapshot 20221101. The package updated translations, put to use a new icon and removed XML namespaces. Other GNOME packages updated in the snapshot like document viewer evince 43.1. The document viewer fixes a crash and avoids a rendering issue. An update of glib2 2.74.1 had a patch that reverts the handling of collisions between standard input/output file descriptors and newly created ones, which solves the password and secrets storer gnome-keyring-daemon from eating 100 percent CPU. The building blocks package for libraries and applications written in C also fixes regression with int64, which is used to represent 64-bit signed integers; the package also fixes various build failures in different situations. Terminal Emulators vte 0.70.1 implemented the clipboard for GTK4, added a define for Apple’s darwin and fixed a filter for unwanted environment variables. Macedonian translations were added with an update to yast2-trans. A few other packages were updated in the snapshot.

The new major version of the diagnostic, debugging and instructional userspace package strace was made available in the 20221031 snapshot. The 6.0 version updates the decoding of setns system call, which allows for the calling thread to move into different namespaces, and updates the lists of ioctl commands related to Linux Kernel 6.0. The package update of timezone 2022f will let people reading this Tumbleweed blog know that Mexico no longer observes daylight savings except near the US border. Chihuahua moves to year-round time, but it’s unclear if that is for the state or the city. The timezone update changes the time for Fiji as it also no longer observes daylight savings. The few Python Package Index and RubyGems packages were updated in the snapshot as well.

Snapshot 20221030 was more of a RubyGems snapshot that anything else although it had two PyPI updates; python-zope.interface 5.5.0 and python-colorama 0.4.6. Some RubyGems like rubygem-openid_connect added two-way authentication mTLS access token capabilities in the 2.2.0 update. An update of rubygem-pg 1.4.4 reverted a change to let libpq do the host iteration while ensuring the parameter [connect_timeout](https://github.com/ged/ruby-pg/pull/485) is still respected. RubyGems application dependencies package rubygem-bundler fixes a User Interface issue when bundler duplicated gems; this was done by deduplicating the list. One of the few non-RubyGems packages to update in the snapshot was to the application and emulator filter luit 0221028, which updated a configuration script to work around regressions in grep 3.8.

Plasma 5.26.2 was updated in snapshot 20221029. KDE’s software center Discover makes sure to look up the correct resource for Flatpak and now shows the beta information for apps on the backend. Window manager and Wayland compositor KWin replaced some manual pointer conversions with calls and fixed a potential race condition when the text input state changes and when focus changes happen at the same time. Fixes to dragging desktop components were made with the plasma-desktop update and the package fixed font size changes when migrating from Plasma 5.25. A minor update of llvm15 15.0.3 adds a patch to fix the lowering of non-canonical vector comparisons on ARMv7. An updated of decoder mpg123 1.31.0 fixed an interaction of pause (looping) with buffer, adding a --pauseloop to set the loop interval. The package also added interruption handling to fix a bug for certain Advanced Linux Sound Architecture setups. Several other packages were updated in the snapshot.

Browser Mozilla Firefox 106.0.2 fixed a handful of bugs in snapshot 20221028. One of those fixes notifications in the sub-panel settings and another fixes the browser from freezing on some sites. The update of sudo 1.9.12 was extensive. It fixed a bug when logging the commands exit status in intercept mode. It also fixed a bug that prevented event log data from being sent to the log server when I/O logging is not enabled. Tracker and tracker-miners both updated to version 3.4.1. The searching and indexing functionality packages both had fixes for memory leaks. The latter improved performance lookups and provided new handling of syscalls. An update of the mobile remote terminal application mosh 1.4.0 added true color support and syslog logging of connections. The libstorage-ng 4.5.48 update set used feature flags and an update of Plymouth fixed some plugins and dropped a few patches. Linux kernel-source 6.0.5 update provides support GNU Compiler Collection 12.1 and newer compilers, and it had a firmware change that doesn’t free memory if an Advanced Configuration and Power Interface table is loaded successfully. Python updated in the snapshot; a fix for multiplying a list by an integer to detect an integer overflow when a new allocated length is close to the maximum size was made with the python310 3.10.8 update. Many other packages were updated in the snapshot including yast2-firstboot 4.5.5 and yast2-packager 4.5.6.

The 20221027 snapshot that came shortly after publishing last week’s blog had an enormous amount of updated packages. Three Common Vulnerabilities and Exposures were fixed with the curl 7.86.0 update; Daniel Stenberg provided a video from Oct. 26 providing feature changes and discussing pending removals that will be coming in the future. ImageMagick 7.1.0.51 added a private Application Programming Interface to go through a linked list without using semaphores. Advanced Linux Sound Architecture 1.2.8 added a keyring and added support for pause/resume and for an ID3v2 tag skip. An update of systemd 251.7 added support for QR code encoding library libqrencode 3.0, and it reverted a system time set back that introduced regressions that affected many users. LibreOffice 7.4.2.3 fixed a bug where queries don’t show any content when executed directly through the Graphical User Interface. The yast2 4.5.18 update improved logging in the product control module and uses the new log.group call to group logs for each workflow step. Other packages to update in the snapshot were GTK4, dbus-1 1.14.4, mtools 4.0.42, webkit2gtk3 2.38.1 and several more.

The continuous streak of Tumbleweed snapshots stands at 21.