spoiler

made you look

  • 0 Posts
  • 72 Comments
Joined 1 year ago
cake
Cake day: July 27th, 2024

help-circle
  • They’re called “selections”, the main ones being PRIMARY and CLIPBOARD, and it’s effectively a form of IPC mediated by X. When you select something, that goes into the PRIMARY selection, while when you copy something, it goes into both PRIMARY and CLIPBOARD.

    The problem is that “middle mouse click” isn’t actually paste, it’s “insert primary selection”. As long as they’re in sync you won’t notice any issue (Ctrl+V and MMB will both insert the same content), as soon as they’re out of sync you’re suddenly exposed to an implementation detail of the X11 protocol.

    And it’s easy to go out of sync, simply copy something and then select unrelated text, now Ctrl+V and MMB will output different things. It can be useful, e.g. if you’re having to copy a bunch of different pieces of text from one window to another, you can simply select and MMB, no keyboard needed, but it’s not intuitive IMO, and conflicts with modern usage of the middle mouse button (Get it wrong when trying to open a link in a new tab and you’ll dump whatever text you last selected into the site instantly)

    Also, these selections aren’t a thing under Wayland, it’s been re-implemented as a normal paste operation there. The question is actually whether the middle mouse button should be treated like any other mouse button or have this special behaviour by default. My vote is to expose it via the mouse settings applet and leave it up to users, like any other special mouse button.


  • Rust has no stable inter-module ABI, so everything has to be statically linked together. And because of how “viral” the GPL/LGPL are a single dependency with that license turns the entire project into a GPL licenced one.

    So the community mostly picks permissive licenses that don’t do that, and that inertia ends up applying to the binaries as well for no real good reason. Especially when there’s options like e.g. MPL.






  • A lot of this is also a post-hoc justification, UNIX didn’t get shared libraries until some point in the 80s (Can’t find an exact year), so before that your options were to either statically compile the needed functionality into your program or keep it as an entirely separate program and call out to that.

    It’s a perfect mix, in a time where enterprise storage was measured in single digit megabytes, and the only efficient way to created shared functionality was via separate programs, and you’ve got an OS that happens to have “easily pass data between programs” as a core paradigm.

    And now people invoke it to attack an init program for also monitoring the programs it starts and not just spawning them.