in ♥️ with linux

gnome

I’ve completed one month with Debian stable. It sounds dramatic, but it’s actually been a positive experience.

Switching from a rolling release like openSUSE Tumbleweed was quite a change, but I’ve really come to like the stable foundation Debian offers.

Some software is a few versions older—which isn’t a big deal—but there are also things that aren’t (or aren’t yet) available in the Debian repositories.

But for that, there’s Flatpak, which I trust more than random third-party repositories.

Right now, my only issue is that my custom-built AMD PC occasionally and very rarely freezes. I’m on the case, though, and I actually suspect it’s a third-party program that doesn’t come from the Debian repo.

On the bright side of committing to Debian for a year, I’ve now got a solid backup strategy in place with Déjà Dup, Timeshift, and Dotdrop. Thanks to that, reinstalling the system is a breeze – especially helpful since I tend to tinker more than a lot!

Since I’ve still got 11 months with Debian ahead of me, one of my current projects is learning how to create .deb packages. The Debian documentation is excellent—but also quite complex!

But my first attempt with rofi 2.0 was a success—so maybe in 11 months, I’ll have my own repo! ;)

All in all: A positive experience in the first month and a happy outlook for the next 11 months with Debian. Beyond the technical aspects, there’s also the good feeling of being on the right side.

#debian #gnome

Currently I have a lot of love for GNOME (with some extensions). Coming from a tiling manager, I now appreciate the floating system.

As a long-time macOS user, I can see what is unfortunately happening to the great mac right now. In my very personal opinion, Liquid Glass is a catastrophe.

The Mac is forgetting its roots, and those were definitely a good UI. Liquid Glass may work on the iPhone, but a desktop is something else entirely.

When I started using Linux, I spent a lot of time customising and “styling” apps: Themes, fonts, and icons. But I always ended up coming back to Adwaita as my default.

Beautiful Adwaita

Just a few example of the beautiful and simple look of Adwaita.

I cannot remember, when the Finder looked that good (must be in Leopard). I really like Nautilus.

Fun-Fact: The first version was designed by Andy Hertzfeld … so there is that old Mac spirit :)

Iotas is a simple note taking app with markdown.

That’s what a Settings-App should like:

Keyboard and mouse combination

Coming from Tiling Manager, I'm used to doing a lot with the keyboard. GNOME didn't give me (as a complete beginner) the impression that keyboard operation was a major feature. But on the contrary: it's really well integrated and really well thought out. Resizing windows with the arrow keys is more than brilliant. The same applies to moving windows.

However, I have changed all the keyboard shortcuts for myself:

SUPER + Q: Quits Application

SUPER + W: Hides Window

SUPER + E: Moves Window

SUPER + R: Resizes Window

Extensions needed

But why is GNOME only almost perfect? Well, I need to make a few adjustments for my workflow. But that's where the beauty of it comes in: GNOME has extensions. Lots of them. That's good, but it has the disadvantage that it's easy to lose track of what's good and what's bad for the system. I relied on the selection that Debian made for me. In other words, I only use extensions that are included with the distro.

Caffeine

Caffeine prevents the system from going into sleep mode.

Auto Move Window

This extension also launches programs in a specific workspace. For example, I always have all messengers in Workspace 3 and all tools in Workspace 4.

Tiling Assistant

It's not possible to do without tiling entirely. With Tiling Assistant, I basically only use the simple function that allows me to place programs next to each other. The extension can do much more, but I don't need it. I just like that all open programs are displayed as a “tiling” selection.

Appindicator

GNOME must have had a reason for not including a tray for minimized programs. Sometimes this is useful, even though I'm getting used to working without a tray. There is an extension available for the transition period.

dconf-Editor

Windows users know and hate regedit. Under GNOME, there is dconf, and comparing it to regedit is actually unfair, because dconf is great.

dconf is a low-level configuration system and settings management tool. Its main purpose is to provide a back end to GSettings on platforms that don't already have configuration storage systems.

The corresponding dconf editor is great for adjusting settings.

An example: As already described, I like certain apps to be launched on specific workspaces. I have also gotten used to keyboard shortcuts for launching and focusing on programs (thanks to using Sway or Niri).

GNOME can handle shortcuts, but focusing would only be possible via an extension. One trick, however, is to use the new slots in the Dash (dock). These can be accessed via shortcut.

In dconf-editor, I can easily assign shortcuts to these nine locations.

Conclusion

After a month of intensive use, I think I'll stick with GNOME for a while longer. It's just fun and ... almost … beautiful.

It's kind of like a new macOS (in terms of the UI) for me.

#gnome

I switched from openSUSE to Debian stable a week ago. As great as Debian is, it unfortunately has the disadvantage that I could no longer use Niri. That left SwayWM or GNOME.

After a few days, I realised that I don't really need a tiling window manager, I just like working with workspaces.

So the choice fell on GNOME, which I have grown to like very much and, above all, which looks really good. I never warmed to KDE, but everyone has their own preferences.

Since I only learned programming with Turbo Pascal and DBase, the AI had to help out a bit.

I would be delighted if some experts would take a look at the scripts. In my opinion, what the AI has written looks good, but perhaps it could be even better with a real brain.

Files:

You can find all scripts of the following instructions on Codeberg in my dotfiles.

Problem 1: Start apps on a certain workspace

GNOME has workspaces, but I missed being able to start a programme on a workspace with a keyboard shortcut. For example, Tuba (Mastodon) is always on workspace two.

Unfortunately, GNOME does not offer this by default.

Solution 1: Extensions, bash and keybindings

Update: 21.09.2025

I changed everything to a combination of the Auto Move Extension and changing the shortcuts of the dash app via dconf.

For an example:

In the extension I assigned Tuba to Workspace 2 and changed the shortcut of application 4 in the dash to SUPER+SHIFT+T.

Now every time I press SUPER+SHIFT+T either Tuba starts or the app is focused on workspace 2.

Problem 2: Sync Settings

I use two computers: a desktop on my desk and a Framework 12 laptop. GNOME stores its settings in dconf. So I needed a tool that would export certain settings (e.g., keyboard shortcuts), push them to git, and import them back onto the other computer.

Solution 2: Export dconf and sync over git

The AI also helped after I spent a long time explaining what I needed.

#!/bin/bash
set -euo pipefail

# ---------- CONFIG ----------
GITHUB="$HOME/.dotdrop"			
REMOTE="$GITHUB/dotfiles/Gnome"	
mkdir -p "$REMOTE"

DCONFPATHS=(
  "/org/gnome/desktop/wm/keybindings/"
  "/org/gnome/mutter/keybindings/"
  "/org/gnome/settings-daemon/plugins/media-keys/"
  "/org/gnome/shell/"
)
# ----------------------------

# Build readable path list
PATH_LIST=""
for p in "${DCONFPATHS[@]}"; do PATH_LIST+="$p"$'\n'; done

# ---------- ACTION HANDLERS ----------
action_export() {
  cd "$GITHUB"
  git pull --ff-only || { echo "Git pull failed – aborting." >&2; exit 1; }

  for path in "${DCONFPATHS[@]}"; do
    filename=$(echo "$path" | tr '/' '_').conf
    dconf dump "$path" > "$REMOTE/$filename"
  done
  echo "Exported to $REMOTE"

  # exportierte Dateien committen
  git add "$REMOTE/*"
  git commit -m "Export GNOME shortcuts $(date +%F-%T)"
  git push
}

action_import() {
  cd "$GITHUB"
  git pull --ff-only || { echo "Git pull failed – aborting." >&2; exit 1; }

  for path in "${DCONFPATHS[@]}"; do
    filename=$(echo "$path" | tr '/' '_').conf
    file="$REMOTE/$filename"
    [[ -f "$file" ]] && dconf load "$path" < "$file" || echo "File not found: $file" >&2
  done
  echo "Imported from $REMOTE"
}

action_open() {
  echo "Storage location: $REMOTE"
  xdg-open "$REMOTE" || true
}

# ---------- CLI ENTRY ----------
case "${1:-}" in
  export)  action_export ;;
  import)  action_import ;;
  open)    action_open ;;
  *)       echo "Usage: $0 {export|import|open}" >&2; exit 1 ;;
esac

In my case, I export to the .dotdrop directory and sync this with Codeberg via git. Since I also use the dotdrop tool, this directory was the obvious choice.

Problem 3: Power-Screen

I was used to using wlogout in niri or swaywm. Of course, in GNOME wlogout works too, but it didn't really function properly. For example, there is no transparent background.

Solution 3: Simple Python Script

After a long dialogue, the AI created a simple Python script that uses images from the Papyrus icon set.

Set as a shortcut to SUPER+SHIFT+E... Works.

#!/usr/bin/env python3
# coded with the help of AI

import gi, subprocess, os
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gdk, GdkPixbuf

ICON_DIR = "/usr/share/icons/Papirus-Dark/24x24@2x/actions"

class PowerPanel(Gtk.Application):
    def __init__(self):
        super().__init__(application_id='org.nasendackel.Powerpanel')
        self.win   = None
        self.cmds  = {
            'system-suspend.svg':     'systemctl suspend',
            'system-shutdown.svg':    'systemctl poweroff',
            'system-reboot.svg':      'systemctl reboot',
            'system-lock-screen.svg': 'dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock',
            'system-log-out.svg':   'gnome-session-quit --no-prompt'
        }

    def do_activate(self):
        self.win = Gtk.ApplicationWindow(application=self)
        self.win.set_default_size(530, 120)
        self.win.set_resizable(False)
        self.win.set_decorated(False)

        esc = Gtk.EventControllerKey()
        esc.connect('key-pressed', self.on_esc)
        self.win.add_controller(esc)

        css = Gtk.CssProvider()
        css.load_from_data(b'''
        window { background: transparent; }
        button {
            background: #1a1a1a;
            border: none;
            outline: none;
            border-radius:12px;
            border:1px solid #fff;
            }
        button:focus { background: #A51D2D; }
        ''')
        display = Gdk.Display.get_default()
        Gtk.StyleContext.add_provider_for_display(
            display, css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

        box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=20)
        for name in ['system-suspend.svg','system-shutdown.svg','system-reboot.svg',
                     'system-lock-screen.svg','system-log-out.svg']:
            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
                        os.path.join(ICON_DIR, name), 120, 120, True)
            texture = Gdk.Texture.new_for_pixbuf(pixbuf)
            picture = Gtk.Picture.new_for_paintable(texture)
            picture.set_can_shrink(True)
            btn = Gtk.Button()
            btn.set_child(picture)
            btn.set_size_request(120,80)
            btn.connect('clicked', self.on_clicked, self.cmds[name])
            box.append(btn)
        self.win.set_child(box)
        self.win.present()

    def on_esc(self, ctrl, keyval, keycode, state):
        if keyval == Gdk.KEY_Escape:
            self.quit()
            return Gdk.EVENT_STOP
        return Gdk.EVENT_PROPAGATE

    def on_clicked(self, btn, cmd):
        subprocess.Popen(cmd, shell=True)
        self.quit()

if __name__ == '__main__':
    PowerPanel().run()

#gnome

After experiencing some issues with openSUSE tumbleweed and only being able to install Niri with a minor fix, I realized that rolling releases are not for me. At present, Niri is still not fixed in openSUSE (as of September 13, 2025, 28 days ago), and the current release has not yet appeared in openSUSE.

My solution to this problem doesn't make any sense at all, but it makes me very happy at the moment: Debian 13 and GNOME.

Right now, I'm looking for stability, and what could be better than Debian? Plus, we've hit the sweet spot with Debian 13 just coming out. So don't ask me in six months if I'm still this happy.

What's so great about Debian? It runs without any problems, whether on my desktop or my Framework 12. All codecs are included, and all my apps are there too (otherwise there's Flathub)...

But why Gnome and no more Tiling Window Manager? I can't say exactly, and I'm not completely done with keyboard shortcuts yet. But you can also configure a lot of stuff in GNOME

More on that later, for sure.

#debian #gnome