https://github.com/pmiddend/article-workflows
Musings on UI, UX, power users, workflows
https://github.com/pmiddend/article-workflows
article human-computer-interaction org-mode ux
Last synced: about 2 months ago
JSON representation
Musings on UI, UX, power users, workflows
- Host: GitHub
- URL: https://github.com/pmiddend/article-workflows
- Owner: pmiddend
- Created: 2019-12-24T16:30:24.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-12-24T18:31:42.000Z (over 5 years ago)
- Last Synced: 2025-03-15T00:51:34.748Z (2 months ago)
- Topics: article, human-computer-interaction, org-mode, ux
- Homepage:
- Size: 408 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.org
Awesome Lists containing this project
README
* Musings on UIs, familiarity, powerusers and workflows
** What’s this?It’s a WIP article about different topics that bother me. Please be patient.
** Introduction
I’m a person that’s who’s never quite…content. Even if I’m productive, organized, and satisfied, I’m still not satisfied. There could be some program, method, or place where I’m /even more/ productive and organized. So on a very regular basis, I’m checking out /new stuff/. This has led me to some discoveries and insights, which I’m sharing in this article.It was originally going to just be about Window Managers, but, being the mathematician that I am, I decided to abstract away from that at least a little bit. Bear with me.
** Windows
Let me start with an introduction to what the hell I’m talking about, for /everybody/, not just the hard-core terminal-everything geeks: Graphical user interfaces (GUIs) are based on the concept of a /window/[fn:1]. An application can open zero one or more windows to display stuff to the user. Notepad on Windows, for example, displays one main window to show what you’re editing, and possibly other windows for things like “Save file” dialogs.
In fact, let’s stick with Notepad for a minute longer. If you’re using Microsoft Windows right now, go on, fire up Notepad (if not, /imagine/ you do). Done? Okay, do it again. And again. What do you see? Probably something like this:
#+DOWNLOADED: file:///run/user/1000/qutebrowser-PLhxGI/cascade_screenshot.png @ 2019-12-24 17:40:19
#+CAPTION: Cascading windows, fun!
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_17-40-19_cascade_screenshot.png]]Let’s figure how we got here. The first Notepad was started and it created a new window, somewhere “in the middle” of the screen. The next Notepad you ran also created a window, and decided to arrange itself so it doesn’t completely obscure the previous Notepad. And so on, giving us this nice cascading effect.
You can imagine that this cascading effect isn’t something built into Notepad. Other applications behave just the same. It’s more a “whole of Microsoft Windows” thing than a Notepad thing. In fact, when an application creates a window, it doesn’t have to decide /where/ or even /how big/ that window should be. It can just…not care, and the operating system (OS) will deliver something. Even if the application /wishes/ for a window with a specific size or position, the operating system can /still/ be mean and give it /something else/!
The lesson here is: *creating and managing windows ultimately isn’t controlled by the application but by the operating system*. Now, an operating system does a lot of things. Managing devices, saving power on battery, decoding network packages. None of these are the topic of this article. To simplify things in our heads, let’s imagine a /separate/ system whose only responsibility is to manage windows. And let’s call it the Window Manager, or WM for short.
#+DOWNLOADED: screenshot @ 2019-12-24 18:22:46
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_18-22-46_screenshot.png]]This separate system runs in the background and receives /requests/ by applications. Like “Hey, I’d like a window that’s 300x200 pixels, place it wherever you have space left.”, or “You know that window called ‘print dialog’ I created like, 5 minutes ago? I’m done with that, close it please.”. It also receives requests from other sources, like “The mouse wants to drag this window around - move it!” or “Monitor 2 was just unplugged”.
** Why Linux exists — Legos
There’s lots of window managers around. Let me break the numbers down a bit, categorizing by operating system:
| Operating System | Number of WMs available |
|------------------+-------------------------|
| Windows | 1 |
| Mac OS | 1 |
| Linux | a gazillion |
| Android | 1, probably? |
| OSX | 1, probably? |Okay, so that’s a bit surprising, isn’t it? There seem to be basically one for every operating system, except Linux. How come?
Well, the thing about Linux is, you can’t have just “Linux” installed. I mean, you could. And all your devices, mouse, keyboard, screen, would still work. But there would be no way to use them. That’s because Linux is really just a bunch of drivers, sitting there, getting input from the outside world, being ready for some applications to process that input. However, no applications, no fun.
#+DOWNLOADED: file:///run/user/1000/qutebrowser-DzDfdd/4tRfG.png @ 2019-12-24 18:32:30
#+CAPTION: Raw, uncooked Linux
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_18-32-30_4tRfG.png]]That’s why every Linux system is like that crate of Legos you had when you were a kid. You get it out, and /ex nihilo/, you build something. A skyscraper, a space station, a piece of toast. The sky’s the limit.
#+DOWNLOADED: file:///run/user/1000/qutebrowser-DzDfdd/really-big-box-legos-including_1_ea68a8106a039133b6bcff71b0879cfc.jpg @ 2019-12-24 18:33:21
#+CAPTION: Childhood memories
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_18-33-21_really-big-box-legos-including_1_ea68a8106a039133b6bcff71b0879cfc.jpg]]And just like with Legos, you aren’t really /productive/ with them. You just experiment, and from time to time, you build cool stuff out of the components and the experience you have amassed.
So, on top of this bare Linux thingy, people built software to draw pretty pixels with. And later on, they added the ability to run more than one application at the same time. Then, the Linux guys figured they might adopt this concept of “windows” to visualize all the pixely applications running at the same time.
But they were still Lego guys, so they made the system managing these windows (the WM) a Lego block they could swap out and experiment with. One of the first WMs on Linux was “twm”, and it’s still around. Enabling it and starting some applications, this is how it looked:
#+DOWNLOADED: file:///run/user/1000/qutebrowser-prebub/Twm_en.png @ 2019-12-24 18:40:54
#+CAPTION: The glory of twm — notice the eye cancer inducing background!
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_18-40-54_Twm_en.png]]It definitely has this “eighties” feel to it. And you can see that a Linux system can look quite different than a Windows or MacOS system (notice the lack of a Start Bar or Dock).
[fn:1] Yes, Xorg might call windows something different, and emacs, too, but I think everybody gets and knows that word.
** The Hierarchy of Window Managers
The question that’s probably on your mind right now is: what’s out there? I mean, what differentiates these gazillion WMs from another?
Broadly speaking, there’s two general types of Window Managers, *Tiling* and *Non Tiling*. Tiling Window Managers also loosely break down into *Manually Tiling* and *Automatic Tiling*.
#+DOWNLOADED: screenshot @ 2019-12-24 18:47:59
[[file:Musings_on_UIs,_familiarity,_powerusers_and_workflows/2019-12-24_18-47-59_screenshot.png]]** TODO Explain Tiling
** TODO Explain Manual Tiling (i3)
** TODO Explain Autotiling (bspwm or xmonad)
** TODO Explain why people go through all this
** TODO Explain people switching to Linux or OSX