Skip Navigation

  • Yep, I'm finding about half of my Reddit usage satisfied. I've got all the technical talk I want, but no gaming or writing communities.

  • I look forward to the day that Synapse is deprecated in favor of Dendrite or Conduit.

  • I'm pretty sure both are possible in xkb. But you'll have to learn how to get a custom xkb_keymap into your DE of choice. I only learned enough to do one mapping:

     
        
    xkb_keymap {
    	xkb_keycodes  { include "evdev+aliases(qwerty)" };
    	xkb_types     { include "complete" };
    	xkb_compat    { include "complete" };
    	xkb_symbols   {
    		include "pc+us+inet(evdev)"
    		key  {
    			type= "TWO_LEVEL",
    			symbols[Group1] = [  Multi_key,                Caps_Lock ],
    			actions[Group1] = [ NoAction(), LockMods(modifiers=Lock) ]
    		};
    		key  {[ Escape ]};
    	};
    	xkb_geometry  { include "pc(pc105)" };
    };
    
    
      

    This remaps Capslock to Escape, Escape to Compose, and Shift+Escape to Capslock. Not what you want, but hopefully this will give you a starting point to playing/breaking xkb.

    Another benefit of doing this with xkb: it's now a separate codebase from X.org, and is used in every Wayland compositor I know of.

  • My Linux review: 10/10, would recommend, but would not install for someone and let them use it for the next 5 years.

  • I learned Fish by helping someone else in a chat. There's a lot of cool things, and I think it's an excellent shell. Fish is an excellent choice for a shell.

    Zsh is a much more featureful language (with globbing/subscript/PE flags, native floating point arithmetic, the whole man zshmodules), which doesn't necessarily make it a better shell. But I like those features, and I find it to be a natural choice to write more complex programs which normally would be a code smell for Bash.

    The plugin ecosystem for is much larger than Fish's as well.

  • Excuse me, OCI container, we're a runtime-agnostic family here.

  • With embedded terminal escapes? True evil indeed.

  • "Always configuring" isn't what Arch requires. It requires you to be tolerant of every so often dealing with a bug or two. Currently, the Arch-packaged version of Waybar has a regression which prints fractional seconds when using %T or %S specifiers. A tad annoying, and I could fix it by switching to waybar-git, where it's been patched. But that hasn't hit my threshold of annoyance, as I bounce between Sway and KDE.

    The grub issue was a bigger deal, and while I knew how to resolve it (liveboot → lsblk and fdisk -l got me all the info I needed, then cryptsetup, mount -o subvol=@, arch-chroot, grub-install) the EOS blog had a nice guide.


    But the reason why I chose it? Firewalld and Pipewire by default, customizable welcome app, and pretty simple otherwise.

    NixOS will probably fully convert me in a year or two, but I've greatly enjoyed my time on Endeavour.

  • If this becomes a Wayland protocol, then I'd love to see other desktops adopt it as well.

    I could see a few classic TWMs use those hints, or at least expose them for users to script functionality.

  • Middle is Matrix and ActivityPub, right is Session, SimpleX, and Nostr

  • I was going to say "At least I can click 'Continue reading' and it actually goes away immediately" but actually, no. This is still enshittification, I've just gotten used to shittier versions of it.

  • This is disgusting.

    It's perfect!

  • I keep my phone on vibrate, because that subtle noise and motion is just enough to tell me that the button was actually pressed.

    But if the default sounds aren't at that level of subtly, I don't want them either.

  • Nice work! I would have done some things differently, but this is very readable.

    Two recommendations for reading the file:

    • Use the (z) and (Q) flags so that instead of using tabs to separate the targets, simply quoting each argument works.
    • Instead of two independent lists, use an associative array with map[$link]=$target. Then you can check for duplicate links while reading the list.

     sh
        
    linksfile=$1
    
    typeset -gA linkmap
    
    while read -r line
    do
    	# -- fields
    	fields=(${(Q)${(z)line}})
    	# -- link
    	link=${(e)~fields[1]}
    	# -- target
    	target=${(e)~fields[2]}
    	# -- check if we've already seen this link
    	if (( $+linkmap[$link] )); then
    		echo "'$link' targets both '$linkmap[$link]' and '$target', aborting"
    		exit 1
    	fi
    	if [ -z "$target" ] || [ -z "$link" ]; then
    		echo "Empty link or target provided, skipping"
    		continue
    	fi
    	linkmap[$link]=$target
    done < $linksfile
    
      

    Then later, you can iterate over each key-value pair:

     sh
        
    for link target in "${(@kv)linkmap}"; do
    	...
    done
      
  • That it does, thank you! The highlighted +X indicator is appreciated as well.