I've had semi-transparent terminal windows going on many years now. I keep them 80% opaque in the foreground, and drop it down to 75% opaque for inactive windows. I also apply a nice blur effect to the background (with the active window having a higher blur amount). It's really nice; lets me see what's behind the window, without detracting from the readability of the terminal itself.
Transparency without blur might be problematic though.
Blur is absolutely the key to transparency. I've found it's a balance: you can go for less blur, but you have to make the window more opaque. With more blur you can go more transparent with the same amount of readability/non-distraction.
I use transparency on terminals since I use X. Its not to bad if i dont have it, but on a tiling wm its the only way to see whats your background image ;)
Yeah, its useless. But a bit of candy is not to bad.
I have a large screen. With a semi transparent terminal I get the impression that my brain is better able to re-scan the screen for the content I was looking for. Especially if I have a vim session with several columns.
When I first saw them I thought transparent terminal windows were the coolest thing. Then I tried to use one...
So, as other commenters have pointed out, using blur and/or 80% opacity helps with this. One thing I haven't seen (with this terminal or any other) is to actually outline each character in black (assuming white on black color scheme). That would give some much needed contrast, while still allowing areas with no text to be visible without much or any blurring and perhaps not needing the opacity set so high.
I allow slight transparency through terminal windows, perhaps 10%. This allows me to see motion in background windows, which is useful for keeping track of processes like lengthy compiles.
Because backgrounds (or movies) like the ones shown in the video make the terminal text completely unreadable and reading the text on a terminal is kind of the whole point of it.
Edit: That sounded a little more negative than I meant it. I'm actually a fan of transparent or backgrounds, but I think they need a lot of tint/blur to them or they become distracting and/or make the text unreadable. This was evident in the video where I couldn't read a lot of the grey text once the background picts were enabled.
Though the use case for video still eludes me. :-)
I used to care a lot about tabs and pane splitting in the terminal emulator. Then I discovered terminal multiplexers: screen, then tmux. Now I don't want those features in the terminal emulator anymore, as they overlap and even conflict with the terminal multiplexer.
I still like tabs. I'm often logged into multiple remote machines where, for me, a terminal emulator's tab represents a unique SSH connection and that tab then has tmux running on the remote machine.
Otherwise, I'd be running tmux on my local machine, then want to run tmux on a remote machine, and nesting terminal multiplexers is not good.
Nesting terminal multiplexers is very good, I do it for exactly the use case you mentioned. Escaping your escape key is easy, with a little practice you won't even realize you're doing it.
I have a shell function called 'go' that creates a new screen and labels it, connects to the remote host via SSH, and then recreates or re-attaches to the remote scren as appropriate. My top level screen session currently has 8 remote hosts I'm logged into, each running their own nested screen sessions.
My go() function also reads my ~/.ssh/config file to grab all my host aliases so I can tab complete to them. Note, I'm a Perl programmer, and rarely write shell scripts, so this function may be kinda ugly.
go()
{
local OPTIND OPTARG
local SCREENCMD="screen -dRR"
while getopts "xn" flag; do
case "$flag" in
x) SCREENCMD="screen -xRR"; shift;;
n) SCREENCMD=""; shift;;
esac
done
if [ "$#" == "0" ]; then
echo "Need someplace to go."
return 1;
fi
while (( "$#" )); do
screen -t $1 ssh -tq $1 $SCREENCMD
shift
done
}
_go_show()
{
local curr opts
cur="${COMP_WORDS[COMP_CWORD]}"
opts=$(grep 'Host ' ~/.ssh/config | cut -d' ' -f2)
COMPREPLY=( $(compgen -W "${opts}" ${cur}) )
}
complete -F _go_show go
You should know that the bash-completion package in Debian and kin does tab-expansion of ssh hosts in known_hosts and config. Also handles the --argument switches for just about all common utilities.
It kind of sucks if you accidentally use a hardstatusline in both the nesting and the nested muxes, and it slightly sucks if you use the same escape key for both/all levels of nesting.
I have been using a nested screen setup for ~3 years at home and it's great. My outer screen uses ^Z as its escape key (I ^Z very few commands) and the inner ones use ^O.
It works wonderfully, and I never have a problem remembering which screen has what because of the different escape keys. It's sort of like the finger memory that you develop if you use multiple workspaces (esp in a WM that supports tagging windows) and always keep the same things on the same workspaces.
I use job control pretty often, so ^Z is out for me. I use ^O as my screen escape key, which back in the way old days used to flush output, which was extremely handy at 300 baud.
As long as you keep a proper frame of reference, you'll be fine (I disable tmux's status bar on nested tmux sessions though). You can use C-a a, or something similar to send a C-a to the nested session, although it can be a little annoying.
I think that's a big differentiator in people's CLI preferences. When I see prompts that don't include $HOSTNAME, and people eschewing tabs for multiplexing in all cases I just assume they rarely manage remote machines.
perhaps it's not that they don't manage remote machines, just that they do it differently to you.. nested tmux with $HOSTNAME/$IP in the hardstatus make this very easy imo, tells you where you are whilst also allowing you to keep a minimal prompt.. as i find long prompts can be incredibly annoying
also, using ^a^a to send commands to the nested tmux isn't so bad.. but to get to the third one down you need to use ^a^a^a^a as you need to send a ^a^a to the second one in..
for the fourth nest you need 8 ^a's, but again, it's a bit like code indentation, if you're 4 tmuxes deep, then there's a good chance you're doing it wrong
but still, it's nice to be able to do it if necessary
If you're just using Tmux as a way to split/tab your terminals you're missing out on a ton of its functionality.
For example it also allows you to detach/reattach your running session, which is invaluable if you're working remotely, and especially if you have a flaky connection. I've used it in several instances where there is more than one person handling DB upgrades and the like. You can have several panes/tabs open, vim with upgrade notes, and everyone connecting and working as needed. It beats the crap out of constant copying/pasting pieces of code and terminals on some IM program to make sure everyone sees what you're seeing.
I usually also end up running it locally and bypassing the terminal emulator and WM's multiplexing abilities, but it's more out of a desire to use the same tool whether I'm running locally or on some remote box. If you don't need the latter, it's a bit harder to justify using it, even though it still has some advantages, like generally being more scriptable.
> it also allows you to detach/reattach your running session
I use dtach(1) for this. I'm sure tmux is far more powerful, but dtach is much simpler and does all I need at this point. It's still less than a year since I learned Vim, so I'm taking a break from learning arcane programs with a zillion options for a while :P
locally, I find the tmux buffer system (just like in vim) to be very useful for pasting text around the place, also, the newer versions have :choose-tree, which is well worth a look, using ^a s gives you a list of open sessions, from which you can choose what you were working on, and if you give your sessions sensible names (based on the starting directory for example) then you can switch between projects/jobs incredibly easily..
also, running tmux locally has the advantage that if you need to leave the office or go somewhere, you can still reattach to your work machine and pick up from where you left off.. so, in a sense, everything is remote
I gave up on urxvtcd when I realized that a single crash brings down all your terminals. Nowadays I use stock xterm, since while I was dallying with urxvt, xterm got the one feature I cared about from urxvt, which was URGENT-on-bell.
I'm not sure how to port color/font config from my urxvt config to xterm. Googling only seems to tell me to how to change background/foreground, not the individual colours.
Also, Is there any reason not to use just urxvt (without the client/daemon setup)? I've never had a crash that has brought down all of my clients, however.
There is no reason not to use urxvt in the normal mode, as it behaves just like xterm would (not exactly of course, but one crashing won't lose all of them).
no, no reason not to use plain urxvt without the client/daemon bit.
at the time, I think I was on some kind of network where urxvt's terminfo wasn't likely to be installed anywhere. I know I could install it everywhere in ~/.terminfo or whatever, but it was a pain to get to a new host and realize that I hadn't set it up. I went back to xterm.
Terminal multiplexers (screen/tmux/dtach) and native terminal emulators each provide unique features, so for me the best is a combination of both!
If you use a mac, I encourage you to try iTerm2/tmux-git. The combination allows you to reconnect to a remote tmux session and get a window with all of your tabs for that server. You'll never need to know the tmux commands again. You'll just use your native commands to switch tabs, search the history, see the list of open tabs, open new tabs, etc. This is the killer setup.
Sadly this still leaves you with a rather crippled subset of the real thing. I.e. "copy mode" instead of proper scrolling, no native text selection, and very noticeable latency and glitches.
It's the price you pay for emulating a 35 years old piece of hardware[1] inside an emulator of the same...
On a random note, why do all unix applications (generalising I know) seem to default to a super-minimal set of options? Surely the kind of people who get annoyed by mouse integration (and you can just ignore it) are the kind of people who can find out how to turn it on, whereas those of us who are using tmux for the first time want all the nice options turned on by default?
If everyone listened to the nastiest comments on reddit, nothing would ever happen. For anything you can imagine, there is some group who will delight in shooting it down.
I say this as someone who reads reddit quite a bit.
Can't use XFT fonts. Doesn't set 256 colors properly. The blinking cursor is retarded and seemingly cannot be disabled. Those are kind of dealbreakers for me.
On the plus side, it feels really snappy. Impressive speed indeed.
I want so badly for the XFT thing to not be a problem. All my favorite terms benefit from using the old font system instead, but there just aren't any good fonts I can use.
I do like some of the classic monospace fonts like 6x13, but my monitor resolution is just too high for that.
I try terminus every now and again, but I always have trouble installing my own fonts (timeshare, not my box) and terminus isn't nice enough to motivate me to struggle through.
as someone who uses several (SEVERAL) xterms on the same screen and focus-follow-mouse, my best bet to see where my words will go when i type is to notice which screen has the blinking green cursor instead of the static white one.
that one would help a lot.
(i used to have a very visible window manager active border and shadows, and also lower the opacity of the non-focused ones... but gnome 3 designers in all their wisdom decided i didn't need all that)
I do that with XFCE. Active window gets a bright title bar and borders with dark text, inactive windows get dark title bars with light text and thinner borders. High contrast in both cases, but easy to differentiate.
Themes like that are very easy to change to suit yourself.
I know, i did that on every window manager since Irix.
But gnome3...
I'm only using it because I'm stubborn. And because i maintain one somewhat popular gui app and i want to test it where i know none of other contributors are testing
I really, really like terminology (as i like Enlightenment), but i am waiting until it supports Tabs, the only thing missing for me.
As to all the "uhh, i don't want additional stuff" comments: There is no reason a terminal emulator can look nice as long as it doesn't distract. And so far, terminology does a really good job! And good, does it look sexy.. ;)
Keep up the development of terminology, one user here for sure! ;)
If you had watched the screencast, you'd have seen that a tab-like feature was in the works, that allows you to multiplex terminals inside Terminology.
To counter all the neutral to negative feedback, I want to chime in and say I was very impressed. The execution speed with the aesthetics excite me. The gazillon-terminal-window- opens junkie in me always looking for a better terminal emulator -- especially with reasonable Unicode support. Keep up it the great work EFL team!
Terminology still has problems compared to SecureCRT or rxvt-unicode. I have been trying it on and off, as recently as this morning from the latest builds on ppa hannes-janetzek/svn-enlightenment, and if you fill the screen with text, it frequently does the wrong thing with the scrollback buffer, but as far as advanced terminals go, there's nothing for competition with Terminology.
For the neatest demo of what you might want to do, download the development version of Elive -- there is a demonstration showing how the terminal can have a transparent video (or is it rendered EFL/OpenGL?) as a background.
The terminal shows promise, and I don't think I've filed a bug that hasn't been corrected and closed, so if anyone with more expertise can replicate problems as I've described, maybe you should do that.
Please open bug reports on http://trac.enlightenment.org/e/newticket or at least explain your issues here so I know what to fix. Also check in the TODO file if it's not already listed.
I'm currently working on text reflow when resizing terminology.
Text reflow accurately characterizes the issues I would think you'd be working on, to fix what I've seen.
I just fired up a virtualbox. All you have to do to see the misbehavior is run 'ps wuax' in a regular 80x24 terminology and then go to fullscreen. Your cursor winds up in the middle of the screen, above some of the text that used to show before the cursor, and before the cursor is a big empty space or certainly nothing sensible.
I just confirmed that my build from 3/20 has the problem, and a newer build on 3/25 has the same issue.
I will file a ticket if you can't reproduce right away, and gladly help out!
You might get this error when your EFL stack needs upgrading. Did you use the PPA? What version of Ubuntu are you on?
For me, I wasn't able to finish apt-get upgrade without uninstalling an old libefl and all of its dependencies (some libraries that have been since merged into libefl I think), then installing again.
I had theefl-trunk installed before, but ppa-purge didn't remove everything, i suppose.
Went through libe* libraries and purged whatever came from e17. Installed again.. working now, woohooo!
This is one thing I myself was considering writing, as there is no reason why today's terminal emulators, which I spend most of my time on my machine, shouldn't be able to also display media. This will team up with ranger very nicely for the ultimate terminal-foo!
On the other hand, I couldn’t help thinking, while watching the video, why should my terminal load web pages and images?
I’ve done the same thing both in Linux and now on OS X, by using various 'open' commands or – on OS X – 'qlmanage -p', which opens a QuickLook window for a file, just like the video is showing, but it’s system wide and not in my terminal.
And this is not a “OS X had this before” post, it’s just that the feature seems more fit to an external program to me. I’m trying not to type unix philosophy here, but it’s going right against it.
Thumbnails for filelists seems somewhat useful. And another use for inline image display is that you could be modifying the image and then scroll back and forth to see the results and intermediates.
I'm confused. What does 'cat myimage.jpg do'? You can easily display images using other programs. The terminal is for things that can be easily manipulated.
Given that you can communicate two ways with terminals using escape codes, you might be able to run your remote shell with something like
tyserver bash
and tyserver could then say replace escape-w-h-path with an escape-w-h-file-descriptor-n which would then allow the remote side to async query for the contents of fd-n with an escape-read-fd-n-bytes while you continue to interact with the terminal.
For me the point in using a terminal emulator over the GUI shell is that I don't have to move my right hand from the keyboard on to the mouse. This (Terminology) seems cool but all the extra features have to be accessible with obvious and non-obscure keyboard shortcuts. That would make it a very considerable choice as a main operating shell
My feeling was the exact opposite. I have long been dreaming of rich media - especially video - playing within my terminal without having to awkwardly set screen splitting and resizing VLC to minimum.
A warning: apparently tycat will bypass pulseaudio sound settings and play things at the loudest possible volume. Make sure your /hardware/ volume controls are set sufficiently low before testing...
Also, it doesn't remember volume settings, so if you Ctrl-L to clear the screen and then scroll up to the audio element in the scrollback buffer, it will start playing at full volume again x_x
It looks cool and all, but I just want a Linux term than can log all output a file so I have a record of what I did. There doesn't seem to be any decent ones out there.
you use the /usr/bin/script program to record a transcript of a session. no term emulators that i know of provide this kind of feature natively though.
Having script run in your shell when it starts breaks X login sessions. Most terms do this actually, just no on Linux ironically. e.g. iTerm2, Terminal.app, Putty.
I wasn't able to. After a bit of hunting I realized the missing packages were on their site. Some of those make just failed, and on others it would appear as though make install went through but were not afaict installed. I gave up.
That should bring you into configure. This still fails for me, but at least then one can see what needs to be installed or updated in order to satisfy configure.
As raylu says, zsh has that feature. Prezto (https://github.com/sorin-ionescu/prezto) makes it relatively easy to get started with zsh. Install it, enable any extra modules you want to load in .zpreztorc inside the “zstyle ':prezto:load' pmodule \” command, then update your .zshrc with your existing customizations from .bashrc and .bash_profile.
And in case you're on a systems without such fancy shells as described in the other answers, the command "apropos [keywords]" will give a list of matching man pages.
Really happy the Enlightenment project is still making cool stuff.
Remember completely wiping my computer as a teenager trying to get Enlightenment running on it. After a good 12 hours or so I got booted into it… then I learned what the term "winmodem" meant