11 ms·
GNU Screen 5.0 Released
- freedomben 2y agoLooks like a few QoL improvements and bug fixes. Nothing disruptive that would normally come with a major release version. Looks like you can set a password on it now, which is cool (though I personally like having linux perms govern access to my screen/tmux). Multiinput sounds interesting as well, though in the past that was a feature I thought I'd love to have, but once I had I never use. I'm glad to see Screen is still getting some love :-) I ran screen for years before finally switching to tmux around 2011, and it's impact is still heavy as my tmux config is still rocking my "make tmux controls like screen while transitioning" setup which I intended to be temporary. Ctrl+a from my cold dead fingers
- mdaniel 2y ago> Ctrl+a from my cold dead fingers As someone who uses `set -o emacs` I cannot possibly imagine pressing C-a C-a to go to the beginning of the line Also, as an iTerm2 user: the integration with tmux control mode (tmux -CC) is just amazing for the way I use tmux
- mrj 2y agoYeah maddening! But you can remap it. I use this in my .screenrc to make it C-f: escape ^Ff
- Jtsummers 2y agoC-f moves forward a character which is also useful. The easiest to type character that had the least impact I could find was to remap to C-j. Works well in both Dvorak and Qwerty layouts and that's the one emacs shortcut I use so infrequently that I can live with having to type it twice.
- qup 2y agoC-Space here
- foobarian 2y agoC-t for me
- stragulus 2y agoC-o here. And C-x or C-p on a few rare nested screens in one particular screen session that I always have open. Those are identified by differently colored tabs in the hardstatus bar which is always visible.
- PeterWhittaker 2y agoThat’s my default as well, worked great, except on a machine with shared sessions, a test driver machine where several of us will login as the same user: some of those people come from windows machines where ctrl-space gets mapped to ctrl-@, which is NUL. So we had to find another prefix for those machines; fortunately, tmux can have two. This (space->@->NUL) is mentioned in the tmux docs, tbh.
- khc 2y agoI map mine to C^] which I find to be a good balance between easy to type and not conflicting with other tools
- sam_lowry_ 2y agoTwo hands gesture? No way!
- remram 2y agoThis is actually a very handy readline shortcut to search for a character. Useful when editing long command lines. Granted, I use Ctrl-Shift-] more often (searches backwards).
- bicolao 2y agoAs someone who also uses emacs, I type C-a a so often that sometimes I do the same in emacs and it leaves an extra a. It's quite rare though.
- jbaber 2y agoAs a vim user, this was my attitude about ctrl-b ctrl-b for pgup because tmux uses that. But I got used to it. Like many a screen convert to tmux, I used to map to ctrl-a, but I found myself actually getting pinky/wrist pain from using just my left hand. As a non-emacs user, I'm not okay with that :P So ctrl-b forces me to use two hands.
- freedomben 2y agoC-a C-a definitely annoyed me at first, but I got used to it and now I don't mind it at all.
- rwmj 2y agoI remap the screen escape key to Shift-Ctrl-^: escape ^^^
- trallnag 2y agoI wonder how many people are using the default b key binding in tmux
- entropie 2y agoNo emacs user. I use p in screen and tmux as prefix key. I usually prefer tmux.
- sorrythanks 2y agoYour use of p surprises me if you don't use b for emacs reasons! How do you go up a line!?
- entropie 2y agoIam pretty sure that was a recommendation in the emacswiki to use ^P instead of ^A as prefix key (that must be 15+ years ago). I think I didnt invest to much energy to think about an alternative. I almost never use ^P in my terminal emulator, but I use ^A all the time. I usually never do heavy editing in a tmux window. Rarely I use emacs in a terminal window these days. I use tramp to remote connect and edit comfortably in my X session.
- setopt 2y agoI dropped the prefix entirely: https://github.com/jabirali/tmux-tilish https://github.com/jabirali/tmux-tilish
- 331c8c71 2y agoI do.
- vindex10 2y agoI usually use ctrl+a locally but ctrl+b remotely, so they don't clash when nested.
- lanstin 2y agoI use back-tick `. For nested, it becomes `` or ````. For twice nested and I'm writing a shell script with ` instead of $( .. ) It's ```````` (I'm an emacs user, I need all the control characters :)
- aeonik 2y agoWhy did you switch to tmux? It seems to me that screen is more ubiquitous, and has more features. Having a modem is a pretty handy thing built into it.
- Jtsummers 2y agoNot GP, but ~15 years ago tmux offered a lot better screen splitting options and a few other features that screen did not. That's why I switched. I did continue to use screen at work because it was ubiquitous, but then sysads started installing tmux as well and that was no longer an issue. screen has improved a lot since then, but it lagged behind substantially for years.
- freedomben 2y agoYes, this is exactly why I switched as well. Also a benefit was actually being able to understand and edit my conf file without having to RTFM everything. Certainly not a reason to switch by itself, but a nice plus.
- ho_schi 2y agoPeople say tmux is more powerful. Whatever that means? Screen seems to cover all my needs and it learning it is easy. I came for the tabs (windows), sessions, copy and paste - but the must have for everyone is the scrollback buffer. You need it! Especially since we can scroll one the plain terminal.
- mhitza 2y ago> People say tmux is more powerful. Whatever that means? I very rarely use screen/tmux nowadays, but as I recall tmux is a better fit for someone who wants to script their interaction. It makes it easy to send keys to other panes/windows in the session, and also to capture the content from other existing panes/windows.
- ho_schi 2y agoThanks. I don’t need that features but I see the use case for others.
- kzrdude 2y agoTruecolor finally being released is big
- thanatos519 2y agoI'm looking forward to trying this indeed. I'm wondering if the use of wcwdith() will improve my luck with using UTF-8 characters in my caption and hardstatus lines. I'd like to be using nerdfonts in there but it just makes a mess.
- kevin_thibedeau 2y agoThe entire wchar_t API is hopelessly broken. It isn't guaranteed to represent Unicode nor is it guaranteed to be UTF-32. Unicode has a large number of codepoints designated as ambiguous width. This is largely due to existing narrow text presentation symbols being gifted a wide emoji representation. Which width is the default is heavily dependent on the font(s) in use and your rendering engine. Gnome VTE has a configuration option to set the default width for ambiguous codepoints. Any program has to expect wide, narrow, or an inconsistent mixture of both if font substitutions are invoked. With no actual API to reliably discover a codepoint display width, your best option is to print some candidates and check the cursor position as a heuristic.
- int_19h 2y agoFWIW, wchar_t is guaranteed to be Unicode if __STDC_ISO_10646__ is defined, which is the case on Linux/glibc. It's too bad that other platforms are lagging behind on this - there's really no good reason to not guarantee this in 2024. Windows at least has the excuse of having wchar_t be 16-bit which they can't change for legacy compat reasons, but that doesn't explain why e.g. FreeBSD isn't there yet.
- dolmen 2y agoThis article may give you some informed answer: https://mitchellh.com/writing/grapheme-clusters-in-terminals https://mitchellh.com/writing/grapheme-clusters-in-terminals
- josephcsible 2y ago> Looks like you can set a password on it now, which is cool I wish they didn't support that. There's not actually a security boundary there since you can't just reattach to another user's session anyway, and a lot of security people make stupid rules like "if something supports a password, you always have to use one".
- lloeki 2y agoThe one thing I hate about tmux is that it leaks env vars across instances: # terminal 1, start a fresh first tmux session, which magically spawns a daemon with the same env $ env FOO=bar tmux # terminal 2, start another tmux session, which reuses the daemon's env $ tmux $ echo $FOO bar Try the same with `screen` and you're safe. This is especially annoying when you're using, say, direnv, and project-specific env vars appear magically on an unrelated subsequent session because your first `tmux` turned out to be from a direnv-enabled directory, which polluted the global environment, which in turn pollutes every subsequent session environment as long as a session (not necessarily the original one) is alive. Replace FOO with SOME_SECRET/ACCESS_KEY/TOKEN and you can actually accidentally expose/leak stuff or point to the wrong thing. The unattended workaround is to have the tmux daemon spawn at login via `start-server` + enable some tmux settings like `exit-empty` plus some I can't recall regarding environment handling, but nobody does that.
- Arnavion 2y agoYou can start the server as a user session service if you have a service manager for that, like systemd, instead of needing to do it manually. For systemd specifically, tmux also supports socket activation for the server since some time ago, so you can do that to start it on-demand.
- rauhl 2y ago> The unattended workaround is to have the tmux daemon spawn at login via `start-server` + enable some tmux settings like `exit-empty` plus some I can't recall regarding environment handling, but nobody does that. I just have my terminal emulator spin up tmux when it starts, and I start my terminal emulator from my desktop, so it always runs in a clean environment.
- deleted 2y ago[deleted]
- rauhl 2y ago> Ctrl+a from my cold dead fingers That conflicts with the standard Emacs binding to move to the beginning of the current line. Many years ago, I switched to C-z instead, on the theory that it is really easy to type C-z C-z when I really want to suspend whatever is currently running. Pity that (AFAICT) terminals have no concept of Super and Hyper (USB doesn’t know about Hyper, either, but at least X11 does).
- MaxBarraclough 2y ago> That conflicts with the standard Emacs binding to move to the beginning of the current line Also in Bash.
- porksoda 2y agoOur finger memory for ^a is now ^a-a. In all apps, everywhere. Mostly that just results in something like select-all+select-all, but occasionally it's awful
- jart 2y agotrue color support is a big deal. I've been waiting for that for years.
- jmclnx 2y agoVery nice, will need to give it a try. For my use there is no difference wuth screen vs tmux except for attaching. In rare cases I need to do odd things with screen, but that was on AIX and I think Linux. NetBSD no issues. Maybe that works better now. One thing I do like, screen is a lighter in resource usage these days.
- chasil 2y agoI notice that Screen has moved into EPEL, while tmux is in baseos for the RHEL family. Is there anything compelling in the latest release?
- ho_schi 2y agoFinally :) I’m waiting for a year that we don’t have to push Escape twice in Vim/Neovim. Some mouse emulation was catching it. https://savannah.gnu.org/bugs/?57748 https://savannah.gnu.org/bugs/?57748 https://superuser.com/questions/1675761/why-does-gnu-screen-cause-me-to-have-to-press-esc-twice-in-vim https://superuser.com/questions/1675761/why-does-gnu-screen-... I should write the developers a note with thanks :)
- kzrdude 2y agoI would advice to use tmux. It's not worth it to keep fighting with that issue. Take this from someone that used GNU Screen from ca 2002-2024. Yep, I just recently switched, because of truecolor and because of the issue you mention. Of course GNU Screen is in my heart. Where it stays.
- anthk 2y agoOn TMUX, there was a setting to avoid the lag for vis/vim.
- throw0101d 2y agoTo anyone to perhaps who has used both a lot: * Are there particular pros and cons to using screen or tmux? (I'm generally on macOS for work, but never really go into using iTerm2, so that integration isn't a big thing for me personally.) Edit: I mean why use one over the other. I generally use something on the destination host I'm SSHing to in case the network goes sideways.
- kstrauser 2y agoIn that case, try Zellij. I gave it a shot the last time it made the rounds on HN and instantly loved it. Killer feature: mouse scrolling works out of the box.
- sundarurfriend 2y agoI loved Zellij, it was the first time a terminal multiplexer felt like it added significant value without significant work from me. The only problem is that projects dealing with network stuff require aging just the way wines do. Networks are unreliable and can get into a thousand different states that are a combination of local connection issues, remote issues, input problems, etc etc. I found (when I tried it a year or two ago) that Zellij could handle a decent amount of such weird states, but not all of them. There was noticeably more "stuck" states it could get into. It was a pleasure to use in every other way, and maybe this has become much less of a problem in the intervening time. I'm pretty sure that Zellij is going to be my one true term mux for the future, just not sure that future has started yet.
- kstrauser 2y agoI've used tmux for ages and would go back if zellij ceased to exist, but I found zellij so much more discoverable. Want to do something new? Chances are there's a menu for it.
- nolist_policy 2y agoScreen can connect to serial ports. screen /dev/ttyUSB0 9600
- panki27 2y agoI used to be an avid user of screen, then later on tmux. My terminal directly launched a session upon opening. But something that was always bugging me was the "ssh unawareness" - I've always wanted to be able to do splits on the remote end, but that was simply not possible without nesting sessions. Now, I've switched my terminal to wezterm, which fills all my multiplexing needs, as it supports this exact "remote-or-local-splits" usecase (with some setup, of course).
- ur-whale 2y ago> with some setup, of course Care to share the config ? [EDIT]: and on the topic of modern terminal emulator vs screen/tmux type solutions ... there is of course some feature overlap for which modern terminal emulators are clearly better (my opinion), such as window / pane management. However, screen and tmux are simply amazing for long-term backgrounding of tasks and/or sessions. There are some "daemon"-type tasks that I almost exclusively run under screen, only moving them to a systemd-type session control system long after they've been properly debugged and tested. There are also some semi-permanently running shell sessions that keep alive with screen on remote servers to instantly recover full context of what I was doing there, sometimes weeks apart (old brains become forgetful and need crutches). Are modern term emulator like wezterm capable of pulling that off these days ?
- panki27 2y ago> Care to share the config ? My config is a little overwhelming, but you'll find your answers here: https://wezfurlong.org/wezterm/ssh.html https://wezfurlong.org/wezterm/ssh.html > Are modern term emulator like wezterm capable of pulling that off these days ? https://wezfurlong.org/wezterm/multiplexing.html https://wezfurlong.org/wezterm/multiplexing.html
- samgranieri 2y agoI started with screen and Terminal.app, then I switched to tmux and iTerm. Now i"m on wezterm and zellij. Works great! Still, I'm happy to see work on screen continuing.
- helmsb 2y agoBut the AI generated article from the front page yesterday said I shouldn’t use Screens anymore… /s
- mickeyp 2y agoScreen, tmux, et al. are great. But here's another way of approaching the same problem: Emacs can serve as a superlative terminal multiplexer if you're willing to give it a shot or if you're already an Emacs user, but do not want to use Emacs's TRAMP (remote editing) functionality: 1. Emacs can run as a server, so you can run it on your remote servers and connect to it with `emacsclient' via SSH. This has the added advantage that $EDITOR stuff will open in your active Emacs session if you want it to. 2. You can use Emacs's builtin shells or terminal emulators (and/or install vterm for a more faithful terminal emulation experience). 3. It is obviously a capable editor also, it goes without saying. 4. Windowing is better in Emacs than the other muxers, and more advanced. In terminal Emacs frames ("windows" everywhere else) serve as decent facsimiles for workspaces. 5. You can use tools like Magit for git management. ... plus all the other benefits of Emacs. I still prefer TRAMP and GUI emacs, but terminal Emacs does have its own advantages.
- xedrac 2y agoObigatory Emacs video: https://www.youtube.com/watch?v=urcL86UpqZc https://www.youtube.com/watch?v=urcL86UpqZc
- zelphirkalt 2y agoSomehow I knew what video that would be, before clicking the link.
- znpy 2y agoAll you say is true... But I still run emacs in screen :P I know I should run a single emacs instances and use projectile or whatever to switch context, but for me it's just easier to run many screen sessions (with descriptive names via `screen -S my-session-name`, attaching via `screen -r my-session-name`) and an emacs instance for each screen session. One day I'll improve my emacs-fu and I'll use a single emacs instance for everything.
- setopt 2y agoI also prefer many Emacs instances. It simplifies some things like e.g. making Emacs packages aware of Python virtual environments if you can just run a separate Emacs instance per environment, instead of stuff like direnv.el.
- neilv 2y agoMy `~/.screenrc` has a comment at the top, which says I created it on "05-May-1994" (before I switched to ISO 8601 dates). I'm no longer using `screen` on an HP 2392A dumb terminal and PP 14.4kbps modem. But `screen` is still coming in very handy, when working on servers, and for some kinds of developing&running long-running programs on the workstation laptop. It's also fun, on the occasion that you introduce `screen` or `tmux` to programmers who've been using lesser tools, and they become an instant convert. Incidentally, given how old the code is, and how there's the potential for various kinds of remote exploits via text (e.g., in SSH session, or in display of user-crafted strings in a console program), I wonder how recently someone has done a rigorous security audit of `screen`.
- ho_schi 2y agoThere are bugs. But Screen itself is running locally and per-user? I could imagine attacking from one tab (window) interacting with another tab but then the user runs already a harmful application. I worry more about everything containing Electron or similar built “web applications”.
- kzrdude 2y agoScreen has multiuser features, two people can share the same screen session
- sam_lowry_ 2y agoscreen -x
- ho_schi 2y agoThis rocks. It is a superpower and I love it :)
- thanatos519 2y agoIt's such a great feature and even has ACLs. I used to do training with this. Every student got a private username/password to connect to my laptop where their login shell connected to a specific window (to which only that user had access) in a shared screen session. They each had their own little environment to hack in. Then when we were doing exercises and people got stuck, I would put their screen up on the projector so we could discuss their code together.
- p1mrx 2y agoI wish they'd do something about https://savannah.gnu.org/bugs/?63341 https://savannah.gnu.org/bugs/?63341, where switching to "copy mode" blocks the process without warning.
- elashri 2y agoI started using tmux because 12 years ago all people said it is better than screen. I didn't use screen much myself. Sometime I read a comparison and it seems screen is good for my usage. But I didn't want to leave tmux because I wrote a wrapper around it to have more human readable syntax and it just works. And I don't want to work on modifying it for screen. I don't use most of tmux or screen functionalities anyway. Mostly it is a way of avoiding multiple ssh connections and to run things when I close the laptop.
- ffsm8 2y agoAlmost the same for me. I just switched to byobu in early 2010s instead of creating a wrapper myself. Haven't felt the need to check anything new since.
- teroshan 2y ago> Removed commands: - nethack https://www.gnu.org/software/screen/manual/html_node/Nethack.html https://www.gnu.org/software/screen/manual/html_node/Nethack... > Changes the kind of error messages used by screen. When you are familiar with the game nethack, you may enjoy the nethack-style messages which will often blur the facts a little, but are much funnier to read. Anyway, standard messages often tend to be unclear as well.
- thanatos519 2y agoWTF! That was one of my favourite features!!!!
- mistrial9 2y agohumor ? it was removed 8 years ago?
- therein 2y agoSo the latest on the stable Debian repo?
- bravetraveler 2y agoThe next Ubuntu LTS, once it hits Debian unstable/ages a little, lol. I kid - it's overstated.
- rwmj 2y agohttps://xkcd.com/1172/ https://xkcd.com/1172/
- PortableCode 2y agolooks like this command was removed in 2015, so, almost 9 years ago, and now they cleaned up the documentation https://git.savannah.gnu.org/cgit/screen.git/commit/?id=9109409b2e0dbe15df2ffa76557f7d938d37fb08 https://git.savannah.gnu.org/cgit/screen.git/commit/?id=9109...
- 2y ago
- senko 2y agoEvery other day there's an article about FOSS crisis, bubbles and unsustainability. Meanwhile there's rock solid free software, just chugging along for longer than the people writing those articles have been alive. I first started using Screen around '95, it was the nicest way to stay logged in to my ircII session while yielding the vt220 terminal to someone else for a while and going for a drink/smoke/walk. Used it ever since, from terminal multiplexing to daemonizing services at a shoestring startup. I've used just a tiny subset the features I know it has, and probably don't know of many more, but it has served me well over the years. Congrats on the release!
- qwertox 2y agoI use mintty on Windows (Cygwin) and like the standard "select with mouse does automatically copy to clipboard and rmb pastes into the terminal". My issue with screen and tmux is that they break mouse selection. All I know is that it is possible to select text and it gets copied into a buffer, but my terminal can't interact with this buffer. tmux at least does allow multiline selection with the mouse in a pane, not copying the entire line across multiple vertically split panes, but limiting itself to the active pane. Yet I then have no way to get that copied text into the OS's clipboard. And with screen, if there are multiple vertically split panes, it will select the entire text in that line, not caring about the fact that these panes have an entirely different content. It makes me feel bad about myself when I see people showing their tmux skills, because I can't use it due to my demand of easily copying into and from the native clipboard. For me screen has turned into what I use to run long-running processes, and tmux what I use to create multipane layouts which mostly serve as dashboards, showing the output of `docker log --follow` or screens of long-running processes. Both tools are really great, but I know that I'll not be able to use them properly. Multiple mintty terminals are what I have to settle with. Could it be possible to write some kind of tool which watches such a buffer and then sends it via HTTP to my machine, which then moves it into the clipboard (and the other way around)?
- tzs 2y agoI was just taking a look at screen's source to try to figure out how hard it would be add a feature I want. I want an option when using screen to talk to a serial port to reverse the order of the bits in each character. Does anyone know of any readily available serial port reader/writer for Unix and Unix-like systems that already has that? I realize it seems like a really weird thing to want. I'm going some things with a small microcontroller (ATTiny 85). It does not have a UART, so right now when when I want to use serial for debugging I just bit bang it. The MCU does have a thing they call Universal Serial Interface (USI), which provides hardware support for shifting a byte in or out over a GPIO pin timed by a clock. USI is basically building blocks in hardware for the lowest level parts of serial communication. It does the things that can be hard in software because of timing, leaving the software to deal with the higher level aspects of the protocol. I want to switch from bit banging to USI. Unfortunately when USI shifts a byte out of its send register to a pin, it shifts from the most significant bit side of the registers. UART protocol, which is what computers expect, wants the least significant bit first, so you've got to reverse the bytes before loading them into the USI's output register. (They probably made USI MSB first because the serial protocols most likely for it to be used for are I2C and SPI. I2C is MSB first. SPI can go either way but MSB first is more common). It's only a few instructions to do that swap, but MCUs can be quite constrained on space so it would be nice to not have to bother and instead do the swap on the receiving side.
- zh3 2y agoYou could look at socat to create virtual serial ports and insert your byte reversal in there. Or there are things like ttymux (of various flavours() that can probably be adapted. [0] https://stackoverflow.com/questions/52187/virtual-serial-port-for-linux [1] https://hackaday.com/2022/05/03/linux-fu-the-infinite-serial-port/