10 ms·
Getting started with Tmux
- tjoff 8y agoOne issue I have with tmux is that you can't resize the window to the current device. The developers seems to be very adament that it isn't implemented. Currently tmux will adapt the size to the smallest (on each axis) client. This doesn't work well with persistent connections from a phone and PC since they typically have quite different window sizes. In screen I hit ctrl-a + F to resize to current client and I miss it every time I use tmux. Unfortunately I still prefer tmux, worth trying out if you haven't!
- gryfft 8y agoMaybe I'm not understanding, but if you attach to a tmux session with the -d flag, it will detach the session from any other clients and resize it to the window you're using.
- tjoff 8y agoYes, and maybe that is the reasonable thing to do, but I don't want to detach.
- another-cuppa 8y agoI'm curious about your setup and why you wouldn't want to detach smaller screens.
- tjoff 8y agoI don't want to detach my desktop just because I want to check current status on my phone. Maybe I have two sessions on two computers and I, temporarily for a few commands, want to go fullscreen. With tmux I have to detach the other client(s), go fullscreen, and when done I have to reattach the client(s). This for something that takes a command to adapt and again recover in screen. It is just an inconvenience, nothing huge, but big enough to obstruct my flow.
- aryamaan 8y agoCurious. What do you do with tmux on phone?
- tjoff 8y agoAnything I do on my desktop that the mobile keyboard allows for (conveniently), I attach to the same sessions. But the most common one is IRC. And for that I still use screen just because of this issue (I always have IRC attached on several clients).
- marcosdumay 8y agoWhen an application queries the screen size from ncurses or some other lib, what value do you expect it to get? I don't think it's a reasonable requirement.
- tjoff 8y agoI'm very happy with screens implementation. It will stick to the size of the first client and you override it at will in any other client or if you want to update the size (maybe you changed the size of the window).
- marcosdumay 8y agoOh, that's reasonable. Sorry.
- yjftsjthsd-h 8y agoWhat should happen for the smaller client then? Just show a cropped part?
- tjoff 8y agoYes, anchored to the left-bottom. Still very usable for light work in many cases and you can follow along. And if it isn't a quick ctrl-a + F and you are all set.
- philsnow 8y agoThis still hasn't been fixed? I checked out tmux 7 or 8 years ago and this was the pain point that tipped the scale from "it's just as good as Screen and it doesn't have all the hardware terminal emulation code I will never use" to "it breaks a workflow for me, I'll check it out later".
- kurtisc 8y agoThis also prevents one session over multiple displays with different orientations/resolutions.
- epberry 8y agoMy tmux conf: https://github.com/EverettBerry/dotfiles/blob/master/ubuntu/.tmux.conf https://github.com/EverettBerry/dotfiles/blob/master/ubuntu/... I especially like prefix + & to kill the whole window, prefix + , to rename window, and prefix + ":break-pane" to split the current pane into a new window.
- testACCT321 8y agoThis is one of the best test comments ever. Its bigly.
- hardwaresofton 8y agotmux was an absolutely game changer for me. At first I thought I was fine just being really comfortable with shortcuts and splitting commands with my favorite terminal emulators but tmux along with tmux plugins ecosystem[0] is really a world of difference, and much better. I haven't gone so far as to change my default shell to tmux in the terminal emulator I use, for the sole reason that I imagine that I just don't need tmux every single time. In reality, 99% of the time the first thing I do when I restart my computer and open a terminal and run `tmux`, and start setting up my workspaces based on what I've been doing, naming windows, etc. The top two features I use every day: - keyboard-only selection + cut & paste between panes (yes, piping to xclip is good, but it's nice when you can just enter the right tmux mode, use emacs/vim keybindings to go up and copy out some text) - easy/instant resizing and organizing of panes - naming/breaking/moving/combining panes, to focus my efforts (something as simple as naming a window appropriately focuses my efforts inside that window) An example of this is working with tools like `kubectl` that generate randomly named components that I have to list out @ the command line and do operations on, most of the time when I watch people deal with this in talks, they have to go and double-click-select or type things out. [0]: https://github.com/tmux-plugins https://github.com/tmux-plugins
- tjr225 8y agoIt's definitely a tool that, once you get used to using it, it is hard to imagine not using it.
- positr0n 8y ago> first thing I do .... and start setting up my workspaces based on what I've been doing There are plugins for that! tmux-resurrec will restore your sessions on reboot, including directories and env vars. It can use vim and emacs sessions to restore your editors too. And you can also tell it other custom "safe" commands it is allowed to restore, which I use for stuff like repls.
- hardwaresofton 8y agooh yeah, I know! I tried using it but it was pretty buggy last time I tried (this was ~1/2 years ago), so I stopped using it. I'm sure it's better now, but I don't keep that much stuff around so I don't think I'm too inefficient in not using it
- loranbriggs 8y agoI find both tmux and Gnu Screen difficult to config (haven't taken the time to learn) but I love the concept of them so I use Byobu (http://byobu.co/ http://byobu.co/) on top of tmux/screen to set common configuration for you. Byobu really lowers the amount of config and barrier to entry because Byobu uses common hotkeys. For example F2 for new window.
- marcosdumay 8y agoI never saw the need to configure tmux. I have tried to configure bash for better use it (including launching it automatically) but then gave up due to not enough gain. But I never saw a need to configure tmux itself. I can't say the same about screen. At a minimum, there's an inherent incompatibility between it and emacs.
- CamTin 8y agoHere's my entire .screenrc: -------------------------------------------------------------------------------- ## Control-^ (usually Control-Shift-6) is traditionally the only key chord not used by emacs escape ^^^^ ## disable all the 1970s era "flow control" operations so I can actually use emacs defflow off -------------------------------------------------------------------------------- The first line sets the prefix key to C-M-6 which is not used by emacs. The second turns off the "ctl-f" flow control stuff so emacs gets that chord. I then use emacs itself for all "window" management and terminal multiplexing.
- barrkel 8y agoEmacs works perfectly well for me inside screen, but not inside tmux. In tmux, many of the extended keys aren't quite right. I run urxvt. I also have custom fixes for rxvt that I've built up over the years, both a custom terminfo file, and fixes for emacs' terminal mapping. I'm willing to bet your "inherent incompatibility" is a terminfo or similar terminal code interpretation problem.
- arminiusreturns 8y agoI also run screen emacs and urxvt. For what it's worth I choose screen over tmux mostly because I've worked fairly hard at keeping most of my stack gpl.
- gryfft 8y agoI like to be able to attach to my customary sessions quickly, or reinstantiate them quickly in case of reboot etc. I use something like the following in my .bashrc: alias f='tmux attach -dt f || tmux new-session -s f' That way I can recreate or attach to my usual session(s) without even taking my hands off home row.
- cik 8y agoTmux is another one of those tools whose siren call I'd avoided for a good decade, continuing to rely on GNU Screen. Then, for the last time I reconnected to a split screen and screen lost my splits and tabs - it was enough for me. Two years ago I finally changed over and I haven't looked back. At this point, when I encounter something where I only have screen I'm rather annoyed by it - and I've set my tmux key mapping to basically mimic what I've been using screen for the last 20 years. For me, tmux replaced every single feature that I used in screen. On the other hand, I'd be genuinely happy if it existed on the older OSes I randomly have to frequent, even if it's understandably impossible.
- another-cuppa 8y agoIs tmux actually more reliable in this respect or have you just been lucky so far? I had a screen session running for three years with no problems.
- cik 8y agoFair question. My environments are different now, so I have no need to have a session last that long. My longest screen session, like yours was years. My current longest tmux session goes back to April 23 2018. Admittedly, I'd hope to argue that if I keep sessions open that long I'm the problem.
- blunte 8y agoI have a tmux session that's been running for almost a year with no problems. I don't know how long it will run, but perfect performance for almost a year is good enough for me. My session has 8 tabs, and one of the tabs (my primary) has 14 sub windows (frames?) showing all kinds of good busy information.
- branchless 8y agoI too resisted, screen was great. But it had some pitfalls. I tried tmux, by the end of the day I was sold. Never restarted screen again. Tmux is an improved, more coherent screen.
- lkbm 8y ago
- HelloFellowDevs 8y agoWow conveniently enough I've been trying to get started on a Tmux & Vim environment and I've been running into walls on Tmux related guides.
- atrudeau 8y agoOne feature that I really like on my Mac was iTerm2's persistence (tabs and outputs preserved across reboots). This is particularly important where I live because we have frequent electric outages. I now have something on Tmux with https://github.com/tmux-plugins/tmux-continuum https://github.com/tmux-plugins/tmux-continuum . That's one of the best things about Tmux: there's generally a way to get it to do what you need it to do. Or something close enough.
- mark_l_watson 8y agoCool I didn’t know ITerm2 was persistent across reboots. I like it because it supports inline matplotlib plots both locally and remote SSH connections.
- farresito 8y agoMy biggest complain about tmux is a change they made a few months ago, where they decided to show all the windows by default instead of only showing those in the current session. Even if you filter the sessions to show only those in the current session, it's still not the same way it used to be. For that reason, I have stuck with an older version. \rant
- 0xmohit 8y agoSome more resources for learning more about tmux: - The Tao of tmux [0] - A minimalist guide to tmux [1] - Benefits of using tmux [2] - tmux shortcuts & cheatsheet [3] [0] https://leanpub.com/the-tao-of-tmux/read https://leanpub.com/the-tao-of-tmux/read [1] https://medium.com/actualize-network/a-minimalist-guide-to-tmux-13675fb160fa https://medium.com/actualize-network/a-minimalist-guide-to-t... [2] https://blog.bugsnag.com/benefits-of-using-tmux/ https://blog.bugsnag.com/benefits-of-using-tmux/ [3] https://gist.github.com/MohamedAlaa/2961058 https://gist.github.com/MohamedAlaa/2961058
- nemild 8y agoI really liked the Tao of TMUX. I also made a very succinct cheatsheet for tmux (along with a list of all the other key CLI commands for full stack engs): https://github.com/nemild/cli_for_full_stack#user-content-tmux-terminal-multiplexer https://github.com/nemild/cli_for_full_stack#user-content-tm...
- Insanity 8y agoI only started using tmux like half a year ago, and now it is the first thing I start when opening my terminal. Really improves development with cli tools.
- sigjuice 8y agoMy favorite feature is the mouse support, which makes the window names in the status bar clickable, even while logged on remotely.
- aydio 8y agoTo those who use a tiling window manager: how do you incorporate tmux in your workflow? Since I've mainly used tmux to show multiple terminal sessions at once, I found it to be redundant in a tiling wm environment. But I'm sure I'm missing out on other features that my wm cannot provide.
- another-cuppa 8y agoI use a tiling WM and I use screen solely for the detaching functionality. It means I can restart X without restarting things like irssi.
- xfer 8y agoI only use screen/tmux when connecting to a server to preserve compile sessions/outputs.
- BooneJS 8y agoI use a macOS laptop with iTerm2 to connect to a remote tmux server running on Linux, and the iTerm2-tmux integration [0] is pretty great if you like multiple panes per window. I don’t have to mess with mouse mode for straightforward pane resizing, buffer scrolling, or copy/paste text in the buffer. I recommend taking a look if you’re typing on a Mac. [0]: https://www.iterm2.com/documentation-tmux-integration.html https://www.iterm2.com/documentation-tmux-integration.html
- therealmarv 8y agoI never learned the "real" tmux and always using `tmux -CC` and `tmux -CC attach` on a iterm. Anything else you do differently in your workflow?
- Zaheer 8y agoUse it with autossh for automatically reconnecting during computer standby / internet drops. I used to use Mosh + TMux for super durable connections and that worked beautifully. Unfortunately Mosh doesn't play well with ITerm's native integration so you can achieve a poor man's Mosh by using http://www.harding.motd.ca/autossh/ http://www.harding.motd.ca/autossh/. All-together it looks something like this: Open iTerm. autossh -t myRemoteHost "tmux -CC -A"
- JepZ 8y ago> You can detach from the Tmux session and return to your normal shell by typing: > Ctrl+a d Looks like someone uses 'Ctrl+a' as his personal prefix and forgot to replace it in that part of the blog post ;-) Background: I use 'Ctrl+a' myself (and hate it that tmux uses Ctrl+b by default).
- spatulon 8y agoThe trouble is that I use both the Ctrl-a (increment number under cursor) and Ctrl-b (scroll up) shortcuts in Vim pretty frequently. It gets annoying to remember to have to double-press that shortcut if and only if I happen to be using Vim inside Tmux.
- secabeen 8y agoYep. Ctrl-a has been move-cursor-to-beginning-of-line forever. It was too bad that screen selected it at the beginning.
- vhodges 8y agoI rebound prefix to control-\ for this reason. Yeah, it's two handed but seems to have a nice rhythm to it for me (caps lock is control).
- tym0 8y agoMight want to try Crtl-space
- flukus 8y agoI set mine to Ctrl-Space, but the most frequently used commands are bound to alt+something so I can keep some consistency between tmux on windows at work and i3 at home. The gneral theme of bindings is Ctrl for apps, Alt for the WM, Windows key for the OS, this works well even when the WM and the OS are the same.
- samgranieri 8y agoI've been using tmux and vim since 2012 and haven't looked back. it's wonderful!
- aap_ 8y agoI'm using tmux myself for persistent shells on remote machines (mostly irc), but not much otherwise. Lots of people and guides make it sound like it's also very useful when you're working locally. Can someone enlighten me what tmux can do for you in this case that people are so excited about it?
- iamdave 8y agoFor me: Panes. It's all about the panes.
- ssijak 8y agoI used it locally on a project where I really needed 5-7 shells opened in specific folders and some of them running specific things. Tmux made it easy.
- zerotolerance 8y agoScripted sessions are pretty neat and having a consistent cross-platform interface is nice. But it depends on how much time you spend in the shell and how much you're willing to deal with OS native keyboard shortcuts. I've also been known to abuse tmux during demos, keeping pinned info in a small pane and working in others.
- mark_l_watson 8y agoThat was a really good write up on tmux. I have used tmux for years but use it simply, every few months looking up something on DuckDuckGo as needed.
- bovine3dom 8y agoMy favourite little tmux trick is in ~/.tmux.conf: `bind r attach-session -c "#{pane_current_path}"` All the terminals I open start a new tmux session (left as an exercise to the reader). I change directory to whatever project I'm working on, hit `C-b r` and from then on all panes and and windows in that session will start in the correct directory. Saves me a lot of cd'ing.
- cryptonector 8y agoI use the following for cd bookmarking: https://raw.githubusercontent.com/jakobi/script-archive/master/cli.shell.functions/dir.shell/cd.nico_cd_for_bash_and_ksh.func https://raw.githubusercontent.com/jakobi/script-archive/mast... http://cryptonector.com/2007/04/c-shell-pushdpopd-on-steroids-as-korn-shell-functions/ http://cryptonector.com/2007/04/c-shell-pushdpopd-on-steroid...
- 3PS 8y agoOhhh, thank you! One of my biggest annoyances so far was exactly this - every time I split off a new pane, I'd have to cd back to wherever I was working.
- kmundnic 8y agoThis can be done too in MacOS by configuring iTerm2 to open a new pane in the same directory and using tmux integration. Cool part is you don't have to learn the tmux commands, but you can use the iTerm2 commands to split panes, among other things. Edit: Added MacOs
- wocram 8y agoIf you want the directory to come from your current pane instead of the current session, it's a little easier: bind '"' split-window -v -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" https://github.com/mfarrugi/.dots/blob/master/tmux/.tmux.conf#L24-L25 https://github.com/mfarrugi/.dots/blob/master/tmux/.tmux.con...
- Crash0v3rid3 8y agoIs it possible to have tmux allow mouse scroll in your active window? I always have to press CTRL+B to enable it which is such a pain. This is the only thing that slows me down when using tmux.
- BlackLotus89 8y ago> set -g mouse on I think in older versions it was called mouse-mode,
- BlackLotus89 8y agoI must admit I'm a screen guy. I feel not at home when I find a system without screen and I miss the "killer feature" of connecting to any tty at any baud rate screen /dev/ttyUSB0 9600 in tmux. But recently I tried to switch to tmux and found a few useful configurations. 1) I have alacritty as a terminal so no scrollback and no tabs (yeah there is a scrollback branch, but why duplicate functionality?) So my default setup right now is that alacritty (I use i3 so alacritty is bound to meta+enter) opens with this line (this way only one terminal can be opened and has always the same state) tmux attach -d -t alacritty || tmux new -s alacritty So I got scrollback and tabs. Also I added bind-key -n C-t new-window bind-key -n C-PPage previous-window bind-key -n C-NPage next-window to the config so I can use it like any normal terminal with ctrl+t (new tab) and ctrl + pgup/down to switch between them. In theory I could even add shift with (C-S-t), but this somehow doesn't work for me and I found conflicting information on it and some outdated infos so I just stopped looking. The second configuration that I like to use is what everybody uses 2) unbind C-b set-option -g prefix C-a bind-key C-a send-prefix to change the prefix to the sane ctrl+a screen default. Also setting colors is a must for neomutt and co set -g default-terminal "tmux-256color" I'm still experimenting with configs for my desktops and servers, but I'm feeling a bit more at home with tmux right now. Oh and for anyone who doesn't know of byobu check it out http://byobu.co/ http://byobu.co/ it's a wrapper around screen and/or tmux and is easy for beginners and a nice change for everybody else.
- deft 8y agoI do the same thing to auto open tmux and block any new windows from being created. If there is one, it instead opens a new tab when I run my hotkey (ctrl+alt+t). I have shift+arrows to switch between panes, and ctrl+a C to create them.
- kurtisc 8y agoI assume people change it from ^B so it still works in vim and less - that's why I changed it - so I find the popular ^A prefix particularly baffling, given how useful it is with programs that use readline i.e. every shell.
- flossyspeaker 8y ago
- noobermin 8y agoMinor mistake, for detach, it's ctrl-b d by default, not ctrl-a d which is screen's shortcut.
- Twirrim 8y agoMight as well take the chance to ask here: Is there a way to get the count of total tmux sessions being run on any machine, for all users? I can do "tmux ls" but that only returns for the current user.
- ericnyamu 8y agoDonot forget this nice config for tmux https://github.com/gpakosz/.tmux https://github.com/gpakosz/.tmux
- cryptonector 8y agoI do things like: - nest tmuxes (up to three levels, with different prefix keys for each level) - one tmux session per workspace (git clone, whatever) - cscope on window zero of any workspace session - use a CSCOPE_EDITOR that starts $EDITOR in a new, appropriately named tmux window in the same session, and returns control to cscope - script the setup of my main session
- punnerud 8y ago«tmux a -t 0» > «tmux attach-session -t 0»
- dnhz 8y agoWhat's everyone's preferred tmux prefix key? I use Ctrl-J. So many C-* keys interfere with Emacs / readline.
- gsteinb88 8y agoC-o for me, for exactly the same reason
- philsnow 8y agoI have a nested setup with a "meta" screen session with escape key ^Z, which holds named "project" screen sessions with escape key ^O. I background tasks in the shell seldom enough (because I'm always in screen) that I don't regret ^Z being slightly less convenient. ^O is a fairly unknown but very useful insert-mode binding in vim, but I use emacs these days so I don't notice it being escaped. Before I used separate escape keys, it was maddening trying to remember how many times to hit ^A to send commands to which nested session.
- dnhz 8y agoC-o is moderately useful in emacs to move your current line down while the cursor stays on the newly created line.
- kurtisc 8y agoC-Space so my thumbs (and ears) feel important.
- rabidrat 8y agoBacktick! I came up with it on my own, but a few months ago I did some analysis of tmux.conf files on github (via the GCP public db) and it turns out that it's the 3rd most common prefix (after Ctrl+A and Ctrl+Space).
- fernandotakai 8y agoc-x for me. with control on caps, it feels quite comfortable.
- blunte 8y agoI probably know about 5% of tmux, but I freaking love it. I've had a tmux session with 12 sub-windows running on a server for 300 days. I connect to it daily, from different machines. It works. It does everything. I have no desktop application that performs at this level. So my hat's off to the tmux developers. Like many other great open source tools, it's a critical part of my toolset.
- hyperpallium 8y agoIn tmux, is there a way to make the logical screen larger than the physical screen - so you can (1) scroll around to see the whole screen, and (2) view different parts of the logical screen in different terminals? Useful for mobile devices with small screens.