| ▲ | godelski 6 days ago |
| So many people miss the point of tmux. The only reason to still use tmux (or screen) is because you use remote sessions. All modern terminal emulators are already capable of doing tabs and panes (okay, maybe not sessions, but some can locally). If you're using tmux for this reason, stop. Go pick up a modern terminal like ghostty, Alacritty, or WezTerm. But why tmux still exists today is because people are working on computers they aren't sitting in front of. Because I don't want to have to be running nohup or detaching, moving to the background, and resetting the session so error messages don't appear in my active instance. Hell, technically I can do this with vim and get something pretty similar to tmux by using the terminal. But that's a pain. Tmux is for *terminals* |
|
| ▲ | osmsucks 6 days ago | parent | next [-] |
| I would mostly agree, but I like that I can use tmux locally and remotely and thus have the same interface wherever I do my work (and regardless of what terminal I use). Then, there's the fact that some terminals capture too many keybindings and get in the way of some terminal code editors I'd like to use (e.g. recently I was again trying to use flow <https://github.com/neurocyte/flow> and its next-tab and previous-tab shortcuts clash with Ghostty's). If I had a terminal that 1) was nothing but a black box with the capability to display Unicode font glyphs and ligatures correctly, 2) works under Wayland, and 3) captures as few keybindings as possible, I'd use it locally with tmux and live happy. |
| |
| ▲ | godelski 6 days ago | parent [-] | | > I like that I can use tmux locally and remotely and thus have the same interface wherever I do my work
The reason I don't do this (even though a trivial config could make this possible) is I want more indications that I'm remote vs local. I'll even change the remote status bar (sometimes theme) so there's more visual indication (an icon helps, but it quickly becomes invisible, just like the hostname). To be clear, I don't have a pattern for every machine, just 2: local vs remote. Everything remote starts with my tmux binding (<C-b> sucks and requires an absurd hand movement, so I use <C-s> because who freezes these days?). With this I still keep all my muscle memory but have a clear signal of "remote vs local" and prevents silly mistakes. > (e.g. recently I was again trying to use flow <https://github.com/neurocyte/flow> and its next-tab and previous-tab shortcuts clash with Ghostty's)
I don't think I understand this example. There's only so many keybindings and clashes aren't uncommon. There's only 45 control commands (without shift or f-keys) and less than half are convenient due to reach (<C-6> sucks!). Even fewer when you start thinking about "sane defaults" and unfortunately those are biased by the past, so collisions become more likely.Like I use vim so frequently hit <C-w> while typing and when I'm not on mac I kill browser tabs (probably for the best lol). But the benefit of all CLI programs is the config. There's no "one-size-fits-all" solution, so having configuration is the next best thing. > If I had a terminal that
I'm not sure what emulator doesn't meet these goals. Foot is a barebones solution, so that might be good for you. But if the issue is clashing with keybindings then that's an unavoidable problem, though luckily solvable. At least the emulators tend to provide better flexibility in this respect than most programs do. | | |
| ▲ | osmsucks 6 days ago | parent | next [-] | | > I don't think I understand this example. There's only so many keybindings and clashes aren't uncommon. That's precisely my point! Many terminals these days try to do too much and by default end up capturing keybindings that I want to use for something else. The terminal should allow me to do that something else, not get in the way. A simple terminal wouldn't get in my way and I could insert tmux in the more complex scenarios (even for local sessions). I know I can reconfigure most terminals, but not everything is configurable, plus everyone knows the best tools are the ones that don't require to be reconfigured to be great. :) Thankfully my main editor is Helix and by default it doesn't clash with anything because it's a modal editor where commands are regular keystrokes and not key combinations. > Foot is a barebones solution, so that might be good for you I'm aware of foot, and it works fine, but it doesn't correctly display the fancy icons used by foot (and other programs). For a visual comparison, here's foot on the left, Ghostty on the right: <https://v1.imgpaste.net/images/public/21baee04-b4a5-4693-8a8...> | | |
| ▲ | skydhash 6 days ago | parent | next [-] | | > I'm aware of foot, and it works fine, but it doesn't correctly display the fancy icons used by foot (and other programs). These are icon glyphes. You have to set the font setting for the terminal to have them. By default, foot uses whatever you set for the monospace family (you can use the command `fc-match monospace` to find out which font). You may want to use a Nerd Font instead. [0]: https://www.nerdfonts.com/ | | |
| ▲ | osmsucks 5 days ago | parent | next [-] | | Yep, and that's all configuration I'd rather not have to spend time on. I was giving the Ghostty example to show how one of them Just Works™. (But the project goals might just be different, I'm not here to discredit Foot which is a really good terminal emulator.) | | |
| ▲ | osmsucks 5 days ago | parent [-] | | In defense of Foot, I installed the corresponding Nerd Font and it worked with no extra configuration at all. Well done! |
| |
| ▲ | godelski 5 days ago | parent | prev [-] | | I think they are caught off-guard by the fact that (IIRC) ghostty and kitty (and wez?) come bundled with (or load) nerdfonts by default. Also good command to know `fc-list`. It'll list the fonts on your system (you may want to pipe it into a pager: `fc-list | less`). There's a few fc- commands that deal with fonts for anyone facing these types of issues. |
| |
| ▲ | godelski 6 days ago | parent | prev [-] | | > The terminal should allow me to do that something else, not get in the way.
What terminal gets in the way? If there's a clash you do a remap.I mean I really don't understand. Do you expect the terminal developer to know all the keybindings you currently use and will use in the future? That's a really big ask! Or are you asking that the terminal comes with no keybindings? I can understand that one, but I think it is not going to be popular. For most people that means more configuration. You can disable anything you don't like. > Thankfully my main editor is Helix
FWIW I don't have clashes with vim despite vim having both of those > I'm aware of foot
What font is foot using? It's been awhile, but I don't remember having this issue with foot. But IIRC on foot, and some other terminals, they don't know to use a nerd font by default or maybe just fail to find or prioritize. | | |
| ▲ | em-bee 6 days ago | parent [-] | | Do you expect the terminal developer to know all the keybindings you currently use i expect terminal developers to keep keybindings to a minimum. come to think of it, i can't think if a single keybinding that i need from a gui terminal. the only keybindings i need from a terminal are those for tmux, so if a terminal replaces tmux (like wezterm is able to) then those are ok, but otherwise when i run tmux in a gnome terminal then there isn't a single key binding that i need for gnome, except possibly copy and paste. | | |
| ▲ | osmsucks 5 days ago | parent | next [-] | | Precisely this. With OSC-52 you don't even need copy/paste keybindings under tmux. | | |
| ▲ | em-bee 5 days ago | parent [-] | | sadly, i haven't been able to get this to work. whenever i turn mouse support on in tmux or in vim, copy-paste stops working completely. it works within tmux, but i can't copy anything from the terminal to other windows. i tried this with gnome terminal and wezterm. i could not find any setting in gnome terminal to change that. (wezterm i still need to check if there is a configurable option to turn this on). also, very annoyingly, when i select something in tmux, the selection doesn't stay highlighted. i find that a serious issue that makes tmux selection annoying. another problem: clicking on urls to open them, which is a terminal feature, stops working too. |
| |
| ▲ | godelski 6 days ago | parent | prev [-] | | > i expect terminal developers to keep keybindings to a minimum.
This seems to be one of the goals of ghostty. I don't think keybinding for moving tabs/splits is excessive (as a default). I'd expect every emulator to come with defaults for those. > there isn't a single key binding that i need for gnome, except possibly copy and paste.
You don't use new tab? New window? You physically click the tab to move tabs?I mean I'm not trying to harp on your preferences, but I think you have unreasonable asks. I haven't used an emulator where you cannot change or remove those keybindings, so I think that solves your asks. But I think your asks are unreasonable because they don't match the requests of the majority of users. You're totally right that "sane defaults" are not going to be "sane" for everyone. But why isn't that fine? I mean that's why we have configs, right? So that we can make them our own? "Sane defaults" are just an attempt to minimize configuration by trying to match average demand, not try to match every person. I mean we all have dotfiles, right? I'm just really lost in what you're asking for. You're asking that *defaults* match *your* needs, right? Because it sounds like you're upset that keybindings exist so... disable them? Is there something you can't disable? I'm really lost here... | | |
| ▲ | em-bee 5 days ago | parent [-] | | I don't think keybinding for moving tabs/splits is excessive agreed. You don't use new tab? New window? You physically click the tab to move tabs? in gnome terminal i don't use tabs at all. i use tmux for that. gnome has a number of keybindings, most of which start with shift-control, which is a rare combination not used elsewhere. in tmux all bindings start with a leader which is configurable, making it easy to stay away from other key combinations. wezterm can do that too. i am not the person you are originally responding to. i am happy if all keybindings can be changed with a single setting. i don't know if gnome terminal can do that, but it appears that gnome does exactly what we ask for: choose keybindings that don't get in the way. |
|
|
|
| |
| ▲ | exq 5 days ago | parent | prev [-] | | >want more indications that I'm remote vs local. This may be of use to you or someone else reading the thread. You can set your bash prompt to show user@host when connected via SSH: if [ -n "$SSH_CONNECTION" ]; then
export PS1="\u@h:\w$ "
fi
|
|
|
|
| ▲ | apazzolini 6 days ago | parent | prev | next [-] |
| > The only reason to still use tmux (or screen) is because you use remote sessions Do you think it's possible that someone might have a different workflow from you and tmux fits their use case in a way you haven't thought of? |
| |
| ▲ | godelski 6 days ago | parent [-] | | Yes, of course. What I'm trying to communicate is that if you're just doing things locally you can get all the benefits (sin sessions) from modern terminal emulators. Most people are using panes and tabs but switching to another terminal emulator will get you these and much more. If you're using the default terminal emulator, you should probably switch (you're installing a program anyways, right?). That said, I still use tmux. Almost every day in fact. Because all my work is being done on a machine I'm not sitting in front of. This even includes at home. My main desktop is connected to a TV for videogames and movies. When I want to do work on it there's no difference if I'm sitting in front of my laptop or it other than it sitting in my livingroom keeps it cooler and gives it better air flow. Edit: Locally: my terminal emulator (ghostty) can do everything tmux can. I can do sessions (windows), panes, tabs, and all that. But with ghostty I also get images, a lower memory footprint (than stock emulator), lower CPU usage (than stock emulator), ligatures, and everything else. It is strictly better. But I can't do {widows,panes,tabs} with remote connections. Hence, tmux. Which in that case, I will frequently give up capabilities (like images) for that. | | |
| ▲ | newlisp 6 days ago | parent [-] | | You don't mention the persistence of tmux sessions, which I find very useful for local development. Does ghostty have a client-server architecture too? | | |
| ▲ | godelski 6 days ago | parent [-] | | You mean like `window-save-state`[0]? (Windows and sessions are the same thing) You don't need a server to handle this feature. Using a non-server solution even allows restoring after power cycles! [0] https://ghostty.org/docs/config/reference#window-save-state | | |
| ▲ | newlisp 6 days ago | parent [-] | | I mean having long processes(batch jobs, backups, compiling, etc...) or even your opened terminal apps like your code editor or claude code don't get interrupted/killed if you accidentally close your terminal, or you terminal/desktop environment crashes/freezes. While essential for doing dev on remote servers IMO cause of "networks", is useful for local stuff too. | | |
| ▲ | godelski 5 days ago | parent [-] | | Tmux is going to solve some problems that your standard emulator won't solve. I agree. BUT
1) I'm unconvinced the things it solves that emulators don't do are common situations
2) tmux isn't "free". There are trade-offs that you have to make for tmux.
There's definitely edge cases where I do run tmux locally, but I find them rare and there's usually another solution (and I definitely do a lot more "weird things" than the average user will, so I run into more "edge cases").But most users are turning to tmux for the {tabs,panes} feature (and then using sessions like anyone would use a window). > interrupted/killed if you accidentally close your terminal
Sure, I get you, but I'm also not sure what tmux is doing for you in most cases. I'll give you that it's easier to kill your terminal pane than it is to kill the tmux server, but it is still easy to kill a pane or tab in tmux. I think there's better defenses here to prevent those mistakes. I mean you can just put a window in a different workspace and get very similar defenses as to what tmux is giving you. You're right, that isn't a reliable defense, but that's true about tmux here too.If you have a process running that needs to stay alive for long periods of time then does it need to be running interactively? It is pretty rare that long running processes need be running interactively. Not rare in the sense that an average user is going to do this infrequently, but rare in the sense of few users are going to do this infrequently. - You can always throw running jobs into the background by doing: <C-z> (suspend), `bg` (resumes program in background), and `detach` (so the process is not attached to the current terminal instance).
- If you're launching a job consider using `&`
- Remember, you can always reattach to a running process too. If you still have the terminal open it is trivial with `fg`. If you don't, then you can still attach with strace or gdb, but you'll probably need `sudo` and this isn't exactly trivial.
- If you know your job needs to be interacted with then there's better ways to handle that communication like by setting up a pipe. But that requires forethought.
- or the best option is to actually run it as a service since you'll get a lot more benefits and flexibility through that. It's pretty quick to turn anything into a systemd job.
- You can interact with systemd jobs if you set them up that way. Lots of fancy options here from ttys, pipe, sockets, or containerizations.
- systemd-nspawn or systemd-vmspawn. Containers are honestly the best option for long running but interactive jobs.
--- Aside ---
Batch jobs:
script and should run in the background. Are your batched jobs not scripted? Just copy paste your loop into a file and add the header. I typically add a few more lines for logging and stuff but yeah. I mean if I want that output I usually want that output longer than my session will be alive, so logs. That way they also are organized.
Backups:
unless you're doing a quick rsync then this really should be automated. A service is the solution. If you find yourself needing/wanting to manually run, you can also just call the systemd job. But yeah, if I have a one-time big sync, I'll pull up tmux (or caffeine). But that's different than always running in tmux.
Compiling:
I'll be honest, locally I rarely have long compiles (or anything over a few minutes). Anything that is long and repeated should be incrementally compiled. I mean this is a much more robust strategy anyways and in a long compile there's a lot of potential disruptions that are far more likely than me closing my terminal window. But in those rare instances I usually throw the process into the background (or start with `&`) or will turn on caffeine or whatever to keep my machine awake.
--- /Aside ---
> or you terminal/desktop environment crashes/freezes
This seems like a more complicated issue. Depends on the crash, right? But how often are you crashing? If frequently enough that you're going to default to running in tmux then I think you have bigger problems. Honestly, I don't think I can remember a time where only my DM or terminal crashed and the whole system didn't go down. Well... DM on a boot, but that's not the situation we're discussing. Maybe if I did something stupid like try to mess with the DM while the DM is running, but... I mean... tmux isn't going to fix the root problem... IDK if it will fix any problem there...I'm not sure how often ghostty calls the window-save-state command but it looks like you should be able to call this frequently, though I haven't tried it and I'll give you this one because this definitely requires more work. Though ghostty will survive a reboot and you need a plugin for that with tmux. But either way, this is related to the lesson of backup often. Or commit frequently. > While essential for doing dev on remote servers IMO cause of "networks"
If we're talking about remote, well that's why I use tmux every day. I didn't say there's no point to tmux, just that the vast majority of things it does *locally* can be accomplished without it.I'm 100% supportive of tmux with remote connections. If you're having that spotty connection then I think the better solution is using something like mosh or the best option is configuring better timeouts in ssh{,d}_config. Look at `TCPKeepAlive`, `ServerAliveInterval`, ServerAliveCountMax` (s/Server/Client/g for sshd_config) | | |
| ▲ | arp242 5 days ago | parent [-] | | I cannot phantom why anyone would write lengthy walls of text trying to convince people "no askhually, your workflow is invalid and theres a better way!11" after they've told you very directly and clearly several times that this works well for them. People have different preferences. People are telling you that this works well for them. They don't really don't need to be condescendingly "educated". Learn to listen. |
|
|
|
|
|
|
|
| ▲ | quesera 6 days ago | parent | prev | next [-] |
| Using tmux locally lets me use a single interface and interaction model for multiple sessions, regardless of whether they are local, remote, or a mix of both. |
| |
| ▲ | kombine 6 days ago | parent | next [-] | | I always find it annoying to manage nested tmux sessions so I usually use Kitty's keyboard driven tab management and tmux for server side sessions. | | |
| ▲ | quesera 6 days ago | parent | next [-] | | I have a status line indicator to show whether tmux is in Control mode. So, even when nested, it's always clear what will happen. One nested session (two total) is manageable. Adding another gets annoying, but the need is rare. | | |
| ▲ | braincat31415 5 days ago | parent | next [-] | | This is what I do for nested sessions: bind -n S-up \
set -g status-bg white \; \
set -g prefix None
bind -n S-down \
set -g prefix C-a \; \
set -g status-bg green
Press Shift-ArrowUp, and all control will be passed to the nested session. | | |
| ▲ | quesera 5 days ago | parent [-] | | Ah, that's smart, thank you! Looks like it would work especially well for multiple levels of nesting. |
| |
| ▲ | godelski 6 days ago | parent | prev [-] | | I've also tried the status line indicator but it's difficult to balance between being too visible and invisible. So just leads to doing the right commands on the wrong session. Though I find any nested session is rarely needed. I mean locally, a session is a window so I do that. | | |
| ▲ | quesera 6 days ago | parent [-] | | I haven't had a problem with indicator visibility, but I remember spending some time getting it to a place that worked for me. Here's what I use: set -g status-left "#{?client_prefix,#[bg=colour76]^,#[bg=colour235]_} [#S]"
set -g status-right ' | #[fg=colour76]#h#[fg=default] %H%M%Z'
Right side included just for completeness. The conditional colour setting was the useful part, IIRC. | | |
| ▲ | godelski 6 days ago | parent [-] | | I don't mean rendering of an icon so much as I mean that humans become blind to persistent things (and frequent things). Losing glasses on your head kinda thing. I don't find a mirror as helpful as having a fixed location to put my glasses when I'm done with them. Same strategy But yeah, when I didn't have splits and things in my emulator I used something like you did. Make a remote section visually distinct. To a lot of extent I still do, just this isn't necessary through tmux anymore |
|
|
| |
| ▲ | EPendragon 6 days ago | parent | prev [-] | | It is interesting to see that you use tmux and Kitty together. Is it faster or more convenient than using just one tool? |
| |
| ▲ | godelski 6 days ago | parent | prev [-] | | I'm not quite sure I understand your pattern. Can you explain it more so I can better understand? Maybe I'm missing something and I'm always looking to improve my workflow. Locally, I don't get the point. I can do tabs and splits. A session? That's another window. I can also hide that and use keyboard shortcuts to navigate towards it. Am I missing a local benefit? The session is the thing I use, and I do use tmux every day, but I exclusively use it when in ssh as on a local machine I have everything I need. You mention the hybrid, but isn't the point that the connection is ephemeral? We don't exactly want to keep it alive unless we are actively using the connection, right? This is what I'm not understanding about your mixed scenario. What is the difference between what you do and me just opening another pane in ghostty and doing the ssh there. I can't detach from ghostty, but I can save the window state (or move to a different window in a different workspace or just cycle through windows like I would a session) so when I quit it it resumes, but honestly, I rarely quit it. Keeping a remote connection alive while there's no active usage seems like a waste and it's just going to disconnect when I walk away from my machine anyways. So what is the difference? I do find sessions tend to get unruley easily, and more easily than windows just do to being hidden another level deeper. It's not too bad when single user, but I'd still suggest organizing tabs over multiple sessions, in most cases. That's because it is easy to just leave something like an editor open and accidentally overwrite files. Someone just logs back in after awhile and types :x into vim (or :x!) without thinking. It's also just too easy to let sessions stale. I haven't worked with a single person (myself included) who did not have a tmux session that was inactive for at least a month more than their last login time. (Better than all the hanging VSCode sessions though) That's like people using srun to run slurm jobs instead of submitting a batch job into the queue. That's totally fine to do when you're sitting in front of the sim but if you walk away and the code errors or just ends before your session ends then you're just hogging a machine that could be used (there wasn't even a benefit to this either!). Locally, it's pretty much the same thing except locally I can do all my tabs and splits and sessions without tmux. |
|
|
| ▲ | urquhartfe 6 days ago | parent | prev | next [-] |
| > okay, maybe not sessions Okay, but sessions are one of the best things about tmux. Sessions aside, in my opinion tmux's flow is just better than terminal emulators I've tried. It slots into my brain in a way no terminal emulator's tabbing support ever has, and I have never found a terminal emulator who supported keybindings in such a sophisticated and seamless manner as tmux does. I also concur with other commenters, who mention that having uniform multiplexing of shell windows between local and remote environments is super useful for muscle memory. |
| |
| ▲ | godelski 6 days ago | parent | next [-] | | > Okay, but sessions are one of the best things about tmux.
Locally or remotely? Remotely I fully agree. But remotely I can't open a new window and my machine doesn't have different workspaces. > Sessions aside
I'm curious about this actually. The opposite has been true in my experience. What keybindings are you missing? I can keybind essentially any script I want or any set of keystrokes. > uniform multiplexing of shell windows between local and remote environments is super useful for muscle memory.
I actually have the opposite experience. I mean I can bind ghostty splits to be identical to my tmux bindings, that's not an issue and trivial to merge. But I keep them separate because it contextualizes if I'm "here" or "there". Similarly I ensure that remote sessions have a different PS1 line so there are visual indications of where I am other than one small icon. Without this I find that it is easy to forget which machine I'm in. Had too many problems where I was running commands on one machine thinking I was in another. | |
| ▲ | accrual 6 days ago | parent | prev | next [-] | | > having uniform multiplexing of shell windows between local and remote environments is super useful for muscle memory. Yep, this is why I use the same .tmux.conf on my servers and my local machines. I don't have to care about my terminal emulator - I might be using a fully featured Windows Terminal or iTerm, or I might be using xterm or st on some spartan system. My navigation works the same everywhere. | | |
| ▲ | godelski 6 days ago | parent [-] | | > My navigation works the same everywhere.
Is this really a requirement of tmux though? I have essentially this. Essentially, because I purposefully change my prefix for my emulator to remind me if I'm local or remote (tmux), but other than that it is fairly uniform. |
| |
| ▲ | EPendragon 6 days ago | parent | prev [-] | | Keybindings and uniform experience across machines is what does it for me. |
|
|
| ▲ | EPendragon 6 days ago | parent | prev | next [-] |
| For me tmux ended up being the solution for my dev needs. With a little bit of time, I learnt the ropes and became more or less productive with the default setup. Afterwards, I made it my own. Like you mention, tmux sessions was one of the biggest features that I enjoyed about this tool: it does the job and does it well. Aside from that I love that I can use Vim-bindings with it, that it feels very similar to Neovim for me, so using them together is a no-brainer. Learning a couple of specific keyboard shortcuts is all it takes to make me productive. I haven't needed to use a remote session yet like you note. While working with tmux locally I have learnt about all of these other features that I will definitely be looking forward to using once the opportunity arises. I don't doubt that tools like ghostty, Alacritty, or WezTerm are great. I have heard lots about the first two. And I do intend to check them out. What would you say is your favorite terminal and why as it relates to local development experience use? Are there features that these tools have that tmux lacks? |
| |
| ▲ | godelski 6 days ago | parent [-] | | > What would you say is your favorite terminal
So far, ghostty. I do also like Alacritty and WezTerm, and think kitty is overhyped (and Warp is a privacy nightmare). A thing I really like about ghostty is it is incredibly easy to maintain. By far my smallest config file. Basically my theme and a few custom bindings. To be honest, there isn't a huge difference between all of them, with some being better at one thing than another, but I think ghostty gets things good all around.Btw, vim bindings should already be available in your emulator, without the need for tmux. You can set bash to use them (set -o vi) but I suggest migrating to zsh if you like using the cli. I'll also give you one fun command most people don't know. While holding control, press x then e (if you are already using zsh you might need to add `zle -N edit-command-line` to your rc file but <C-x><C-e> needs no config in bash). I guess I should also mention that in vim you can open a terminal (:help term) > why as it relates to local development experience use?
All these emulators can do, locally, everything tmux can do and more. You just have to remember that a session is the same thing as a window. All these emulators have tabs and splits. So there is no real advantage to tmux. > Are there features that these tools have that tmux lacks?
First off, switch because your emulator is probably more resource intensive. It may also be missing modern features like being able to view images (see sixel, chafa, or the kitty graphics protocol), ligatures, and a lot of other features.Second, tmux lacks many of these modern features. Doing a passthrough can help but dealing with images is not a great experience. I have found no configuration where I can reliably view images and never have been able to produce images of the same quality. I always drop out of my session if I am entering a file browser like yazi or fzf (I'll use fzf but it limits the capabilities of previewing). | | |
| ▲ | grep_name 6 days ago | parent | next [-] | | I feel compelled to reply, because a lot of this contradicts my experience. I use wezterm + tmux on linux, iterm + tmux on mac. (Already an advantage there, tbh) > vim bindings should already be available in your emulator, without the need for tmux They may mean things like the vim-tmux navigator plugin, which makes it so if you hit e.g. the left-most window in vim and hit your go-left keybinding, it will go one tmux pane to the left. It's pretty crazy how seamless it is, and it's made possible by the fact that you can query tmux outside of the process and run commands on your running sessions, which I'm not sure you can do with any of the standalone terminals? Tmux also doesn't prevent you from using c-x e. I'm aware of the vim terminal, but I'm very picky about my multiplexing and have not been satisfied by any built-in terminal in any editor. > You just have to remember that a session is the same thing as a window. A session is certainly NOT a window. It is a buffer. There is a difference, and that difference matters and comes with advantages that are separate from the advantages of windows. > First off, switch because your emulator is probably more resource intensive I'm not entirely sure if this is true, but it's utterly uncompelling to me. Holding my binding for 'switch window' will switch through n windows faster than I can mentally digest, and the lag is lighter than any gui app I've used. > It may also be missing modern features like being able to view images (see sixel, chafa, or the kitty graphics protocol), ligatures, and a lot of other features I'm not sure why you'd assume this? My setup (wezterm or iterm + tmux + fira code) indeed has ligatures and sharp image viewing passed through the multiplexer > Second, tmux lacks many of these modern features. Doing a passthrough can help but dealing with images is not a great experience. I have found no configuration where I can reliably view images and never have been able to produce images of the same quality. I always drop out of my session if I am entering a file browser like yazi or fzf Yazi is exactly what I use, and it works great with iTerm + tmux or wezterm + tmux. I really don't want my terminal to do that much for me to be honest. I change terminals every couple years, and it's nice to not have to fuss around with them whenever that happens. I haven't changed my tmux config in about 15 years | |
| ▲ | EPendragon 6 days ago | parent | prev [-] | | Appreciate the detailed answer! I will need to take a look at different terminals to see if there is any other one that can better fit my needs. I prefer the idea of having one tool to manage everything: from local flow to remote sessions. And I usually do not view images in the terminal. But I'm willing to put them to the test and see if I like one of those more. | | |
| ▲ | godelski 6 days ago | parent [-] | | > I prefer the idea of having one tool to manage everything: from local flow to remote sessions.
This is still achieved. But as outlined here and elsewhere, a single extra keypress is not so much a hindrance as it is a reminder of be being local vs remote.I'll add that your muscle memory will adapt to whatever pretty quickly. Like I was switching between a mac and a linux machine with a keyboard frequently and it only took a week to forget where my pinky needed to go to hit ctrl. Same is true even if your bindings for whatever are not identical local or remote (though mine are very similar, just differing in the prefix). So I'd say when testing things make sure you include a burn-in time, otherwise any change is going to make all other options feel worse. > I usually do not view images in the terminal.
I work in computer vision (ML) so this is a very useful feature. But given that essentially everything else is the same, things don't really feel that different when remote vs local. Just a little purposeful visual indication and a different prefix (which is on purpose). |
|
|
|
|
| ▲ | Zizizizz 6 days ago | parent | prev | next [-] |
| I use ghostty and native splits, however there is no way to move a pane to a new tab. Which you can do in tmux very easily. That's one thing I wish it could do. |
| |
| ▲ | godelski 6 days ago | parent [-] | | While this doesn't address that issue you can move a tab to a new window (session) as well as merge. I do wish this feature existed, but I use it so rarely that honestly I don't notice. Rarely are more than one pane essential in a given tab, so usually I solve this by cleanup. But yeah, I will acknowledge that limit. |
|
|
| ▲ | kriops 6 days ago | parent | prev [-] |
| I love Alacritty, but it does not have tabs. You need to use, e.g., tmux for that. ZelliJ if you want the fully oxidized experience. |