Hacker News new | ask | show | jobs
by kristopolous 501 days ago
pushd/popd are over 40 years old btw. Used to use them in the 90s. I decided invisible states requiring working memory create a cognitive split encouraging user error because you have to maintain the focus of the task and the invisible parts of the tool you're using to do the task.

Well ok, Jef Raskin decided that and I happen to agree with him.

My extension is "anything that requires traversing either taxonomies or invisible geometries is too much to ask." So for instance, tmux splits previous-pane and previous-window into two things so the "last thing I was looking at" now asks you to consider whether that was in a pane or a window[1] ... as if you had taken the time to diligently organize it (traversing taxonomy). Xorg's split of the clipboard into CLIPBOARD, PRIMARY, SECONDARY, CUT_BUFFER0-9 and every program having a different opinion on how to copy and paste into them is another one. And then tools like tmux have their own and tools like vim and emacs have their own. So vim, inside of tmux, inside of ssh, inside of some terminal ... right. [2]

Similarly, the multi-dimensionality of many tiled window managers (where you have up, down, left, right, tab left, tab right, workspace (up/down/left/right) etc ...) is like navigating via hypercube.

It's way too complicated to keep a mental model of and leads to lots of errors. I still use one because there's no other reasonable way to leverage the multi-tasking abilities of modern machines but it leads a lot to be desired. My user error rate is probably over 80%.

I'm sure some geniuses can do it but most people cannot.

[1] I have a fix!

Add this to .tmux.conf

    set -g focus-events on
    bind-key l run-shell "$HOME/bin/tmux-last switch"
    set-hook -g pane-focus-out "run-shell 'tmux set-option @out #{pane_id}"
    set-hook -g pane-focus-in "run-shell '$HOME/bin/tmux-last in #{pane_id} #{@out}"
Where tmux-last is https://9ol.es/tmp/tmux-last

[2] If you are a traditionalist using xterm or some derivative, this block taken from my .Xresources should be enlightening

    *VT100*translations:    #override \n\
    ~Shift~Ctrl<Btn2Up>: insert-selection(PRIMARY, CUT_BUFFER0) \n\
    Shift~Ctrl<Btn2Up>: insert-selection(CLIPBOARD, CUT_BUFFER1) \n\
    Ctrl Shift <Key>V:  insert-selection(CLIPBOARD, CUT_BUFFER1) \n\
    Ctrl <Key>V:  insert-selection(PRIMARY, CUT_BUFFER0) \n\
    ~Shift     <BtnUp> : select-end(PRIMARY, CUT_BUFFER0) \n\
    Shift     <BtnUp> : select-end(CLIPBOARD, CUT_BUFFER1) \n\
It's still strait jacket drooling insanity, but at least it's a little less.

Probably the actual fix in X would be to somehow route all clipboards through DBus so then the user AND the application can have their own opinions and not have to have a bunch of accommodations for each other.