I do that, not in a real "tiling window manager" but something very close: openbox, set to show no titlebars, and using shortcuts to title the windows to precise positions. I have 3 position: most of my screen on the left, a small vertical slice on the right, a smaller chunk underneath. If I want a titlebar for some application, I have a shortcut that will give the window a titlebar, and then I can move it around with the mouse if I want to. So I get the best of both worlds.
Surprise - I don't run tmux. It is simpler to have several roxterm, in these position, with various tabs open. When I work remotely, I use screen on the remote host, but that's all.
To give you an idea of my shortcuts, in a real life scenario ; my caps lock is remapped to control or escape with xcape:
- esc: pop a new roxterm and from wherever I am, bring me to the terminal desktop
- f9: resize this roxterm to the left part of the screen
- esc: pop another roxterm, focus it
- ctrl-f9: resize it to the right vertical slice of the screen
- f4: switch to the browser desktop
- f12: put by browser in full screen, to check some reference without distraction
- f5: switch back to the terminals desktop
- alt-tab: switch to the roxterm that's currently on the right
- f12: make this roxterm full screen to do something without distraction for a while
- f12: demaximize and put back this roxterm where it was
- f9: now move this roxterm to the left, over the other one
- alt-tab: move to the other roxterm that was on the left
- ctrl-f9: put this roxterm in the vertical slice position on the right
- ctrl-space: make this roxterm sticky, showing on all desktop
- f4: move back to the internet desktop to check more documentation
- f9: resize the browser to be on the left part of the screen, so that I can see both the browser and the roxterm
- f5: move back to the terminal desktop. The space occupied by the browser will be replaced by the roxterm I left there, on the left
- alt-tab: move focus to this roxterm
- ctrl-t: open a new tab in this roxterm
- ctrl-v : paste some stuff from the internet browser
(etc..)
I have accomplished all that with about 20 keystrokes, from muscle memory. When I connect my extra wide screen, f10 and f11 have similar windows resizing function as f9 do on the laptop screen. f1 to f8 take me to desktop dedicated to some use or another (f7 is the windows desktop, with visual studio, f6 is the rstudio desktop, etc)
One think I positively hated until recently: copy and paste. Muscle memory means ctrl-shift-c in one application and ctrl-c in another didn't work. So in the terminal, I remapped the sigint signals to ctrl-x with stty. Hitting ctrl-x is just as convenient as ctrl-c and now I can copy paste as needed. ctrl-v to enter verbatim sequences is done with ctrl-q, just like in vim. so ctrl-c and ctrl-v work everywhere.
When I catch myself wanting to use the x copy paste buffer, the middle click is not so hard: on a thinkpad keyboard, it is right below the space key. But I just prefer ctrl-v. The luxury of having 2 independant copy-paste buffers is appreciable for some tasks however :)
Anyway, sorry for the long reply. I just don't have a lot of opportunities to talk about my setup. I am some kind of an optimization freak, I know it. But I don't want an interface to bother me. I have been using that for the last 3 or 4 years after giving up on OSX, and it has one great quality: I don't have to think about it. It just work the way I want. YMMV of course.
I use Openbox with some keybindings I picked up from ArchBang a while back, documented here [1].
tmux really comes into its own when you combine it with Vim and FZF [2]. I was initially hesitant to try tmux, but once I themed my tmux.conf and nailed down the keybindings, it became indispensable to me. I now use tmux as a basic organizational tool, and I always have at least one tmux session running on my desktop.
I have Ctrl+A+S bound to split the tmux screen horizontally, and Ctrl+A+A to toggle maximizing the tmux pane. Shift-DownArrow opens up a new tmux window to the right of the current one. Shift-LeftArrow and Shift-RightArrow move left and right between the tmux windows. I wanted it to be reminiscent of URxvt tabs.
Another one of my favorite bindings works as follows: visually highlight a line in Vim, then hit <leader>tj, which sends the highlighted line of code to an open terminal in a split tmux window below. Very useful for REPLs. You can also open Vim in the lower split terminal and use the same keybinding to send text directly from one Vim instance to another. It uses vim-tbone [3] and some custom bindings from @junegunn.
Very interesting. I love vim, and find the screen/vim mix a little unpleasant. A few years ago I looked at tmux and concluded I did't really need it because screen already did everything I needed.
Can you tell me more about that? The only thing I hate with gnu screen is the space wasted on the bottom bar, and the need to have commands in backticks otherwise
Would yo suggest some good resource to theme tmux?
(I use the thinkpad dedicated previous and next button, right above the left and right arrow keys to move between tabs in all tabbed applications. A pleasure to use. With shift, then change me to the previous/next desktop. With control, they move the currently focused window to the previous or next desktop, and change focus to that desktop too)
> I see you seem to be passing some info from vim to tmux right bottom bar, the utf8 the encoding. In vim, I usually show my offset in the file there.
The bottom bar is rendered by Vim with lightline [1]. The top bar is my tmux statusline, which I created by lightly customizing the output of tmuxline.vim [2].
I made my tmux.conf by customizing what I found on github, in particular @junegunn's dotfiles [3].
Not ideal, but the best solution I've found so far for moving text between the command line and other applications in urxvt is setting Bash to vi mode and then using visual mode for yanking/putting. I have Vim as my $EDITOR, which is opened when entering visual mode (I believe opening the editor is default Bash behavior). Vim is set to use the system clipboard ("set clipboard=unnamedplus" in the .vimrc) so from there I can bus text to/from other applications.
Then remap copy to ctrl-c, and paste to ctrl-v, and ctrl-x will work like your old ctrl-c, while ctrl-q will work like your old ctrl-v. remapping is easy with roxterm. I suppose xterm and urxvt can do the same.
If you like to remove part of words in bash, the following can be helpful too:
"\C-s": backward-kill-word
"\C-g": kill-word
"\C-w": unix-word-rubout
Kill word vs word-rubout is a matter of taste, and which separators are in your filenames.
Surprise - I don't run tmux. It is simpler to have several roxterm, in these position, with various tabs open. When I work remotely, I use screen on the remote host, but that's all.
To give you an idea of my shortcuts, in a real life scenario ; my caps lock is remapped to control or escape with xcape:
- esc: pop a new roxterm and from wherever I am, bring me to the terminal desktop
- f9: resize this roxterm to the left part of the screen
- esc: pop another roxterm, focus it
- ctrl-f9: resize it to the right vertical slice of the screen
- f4: switch to the browser desktop
- f12: put by browser in full screen, to check some reference without distraction
- f5: switch back to the terminals desktop
- alt-tab: switch to the roxterm that's currently on the right
- f12: make this roxterm full screen to do something without distraction for a while
- f12: demaximize and put back this roxterm where it was
- f9: now move this roxterm to the left, over the other one
- alt-tab: move to the other roxterm that was on the left
- ctrl-f9: put this roxterm in the vertical slice position on the right
- ctrl-space: make this roxterm sticky, showing on all desktop
- f4: move back to the internet desktop to check more documentation
- f9: resize the browser to be on the left part of the screen, so that I can see both the browser and the roxterm
- f5: move back to the terminal desktop. The space occupied by the browser will be replaced by the roxterm I left there, on the left
- alt-tab: move focus to this roxterm
- ctrl-t: open a new tab in this roxterm
- ctrl-v : paste some stuff from the internet browser
(etc..)
I have accomplished all that with about 20 keystrokes, from muscle memory. When I connect my extra wide screen, f10 and f11 have similar windows resizing function as f9 do on the laptop screen. f1 to f8 take me to desktop dedicated to some use or another (f7 is the windows desktop, with visual studio, f6 is the rstudio desktop, etc)
One think I positively hated until recently: copy and paste. Muscle memory means ctrl-shift-c in one application and ctrl-c in another didn't work. So in the terminal, I remapped the sigint signals to ctrl-x with stty. Hitting ctrl-x is just as convenient as ctrl-c and now I can copy paste as needed. ctrl-v to enter verbatim sequences is done with ctrl-q, just like in vim. so ctrl-c and ctrl-v work everywhere.
When I catch myself wanting to use the x copy paste buffer, the middle click is not so hard: on a thinkpad keyboard, it is right below the space key. But I just prefer ctrl-v. The luxury of having 2 independant copy-paste buffers is appreciable for some tasks however :)
Anyway, sorry for the long reply. I just don't have a lot of opportunities to talk about my setup. I am some kind of an optimization freak, I know it. But I don't want an interface to bother me. I have been using that for the last 3 or 4 years after giving up on OSX, and it has one great quality: I don't have to think about it. It just work the way I want. YMMV of course.