• 0 Posts
  • 145 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle






  • Gnome-flashback by default is an old-school Gnome DE (Desktop Environment) that comes with a simple, conventional WM but allows you to swap in any WM you like while it operates in the background. Mainstream Gnome Shell DE is inextricably tied to its WM so you can’t swap into that. So with Gnome-flashback you can swap in i3 and get a curated Gnome DE with your own (i3) WM.

    It means you don’t have to reinvent everything that makes a DE just to use i3 WM. You get things like the Gnome settings GUI including monitor configuration and restoration on hotplug; clipboard manager; theming; audio/brightness hotkeys just work; USB drives automount, and more. Lots of convenience and utility you want and need but otherwise have to identify, install, configure and set up manually. Without using an already curated DE you have to reinvent one, or at least reinvent the parts of one you can’t live without.

    Gnome-flashback is not the only DE that allows swapping in a different WM. My own experience has found it a bit of a PITA every time I try to use it on an OS with an updated Gnome version, requiring poking around, searching and debugging. Sadly, there seem to be limited options for low effort, well polished, curated i3/sway DE.


  • I like to use i3 in a desktop environment so I don’t have to reinvent the wheel of sundry support details like hotkeys and monitor behavior, automounting USB drives.

    I’ve used gnome flashback with i3, just like regolith, and decided to try using regolith to get the full curated environment but I found their obfuscation of what’s going on impossible to deal with. Just working out how to change configuration was a huge pain in the ass and had to be done the regolith way.

    But every new OS release with a new version of flashback etc. doesn’t seem to work right, so I am contemplating giving up and just going direct window manager and accumulating all those sundry details of a DE manually.




  • Hilarious to have to look this low for it, but who want to stand up and declare themselves mainstream.

    Polished, reliable, and solid, and snaps are not a big deal or an insidious evil, and neither is Canonical. They make missteps for sure. But with containers etc stability is more important than immediate updates and it’s excellent about kernel updates for new hardware. It’s slick Debian, and if the fuckery ever gets real switching to Debian is easy.


  • I’m still on i3 as it’s been convenient, but this:

    this has all become very specialized over the past decade

    resonates. I keep incrementally adding personal tweaks and hotkeys to my setup, and I have all my dotfiles in a repo so it’s persistent across installations.

    One example was I made my headphone button pause/play videos with i3’s config:

    bindsym XF86AudioPlay exec playerctl play-pause
    

    But then I adopted a script to toggle mic mute on work Zoom meetings, so I combined it with the above - if I’m in a meeting it toggles mute, otherwise it play-pauses any current video. The script, for now:

    #!/bin/bash
    #
    # Handler script for hitting mute on the headphone.
    #
    
    CURRENT_WINDOW=$(xdotool getwindowfocus)
    
    # convoluted command to find the intersection of two searches
    ZOOM_WINDOW=$(comm -12 \
      <(xdotool search --name  'Meeting' | sort) \
      <(xdotool search --class 'zoom'    | sort))
    
    if [[ -n "$ZOOM_WINDOW" ]]; then
        # if zoom is active, toggle mic mute
        xdotool windowactivate --sync ${ZOOM_WINDOW}
        xdotool key --clearmodifiers "alt+a"
        xdotool windowactivate --sync ${CURRENT_WINDOW}
    else
        # otherwise do play/pause
        playerctl play-pause # will fail if no player found
    fi
    

    and of course I altered the i3 config to launch that script rather than playerctl directly.

    [EDIT: Updated script as Zoom updated its window identities]





  • I naively thought it I may as well take a job using Go, as learning a new language is broadening, and some people like it, so lets find out first hand… I knew it was a questionable choice, looking at how Go adoption tailed off a while ago.

    Turns out I hate Go. Sure it’s better than C but that’s a very low bar, and C was never a good alternative choice for the use cases I’m encountering. I’m probably suffering from a codebase of bad Go, but holy shit it’s painful. So much silent propagation of errors up the stack so you never know where the origin of the error was. So very much boilerplate to expand simple activities into long unreadable functions. Various Go problems I’ve hit can be ameliorated if you “don’t do it like that”, but in the real world people “do it like that” all the time.

    I’m really starting to feel like there are a lot of people in the company I’ve joined who like to keep their world obtuse and convoluted for job security.