Forcing terminal theme based on environment variable - linux

I have a setup on my ubuntu where I can setup different environments for different purposes, essentially ending up having a bunch of ~/.bash_env_... in my home directory.
Example:
~/.bash_env_1
~/.bash_env_2
~/.bash_env_3
~/.bash_env_4
I already set the terminal prompt to tell me which environment I am at.
Is it possible to also force the terminal to change theme depending on the env?
E.g. when I run source ~/.bash_env_1 I would like the terminal where I run this to change to "some theme", essentially changing the whole palette.
I could not find anything about this specific topic, any ideas?
Thanks in advance!

Related

Is there a way to change settings (e.g. color scheme) in a running tmux session triggered by a certain shell command (e.g. ssh)?

I just found out about the possibility of hooks in tmux. Since I'm still very new to the command line (and therefore not used to (say need time to) read through all relevant parts of a manpage) I just quickly wanted to ask here, if it is possible to use bash commands to trigger (e.g. when I use ssh, I want to change the color of my status bar). (Although I fear it is not possible).
If not, what could be a way to achieve what I want? Can I make an alias for the command in question and 'reload' a different .tmux.conf file (in a current session)?
Thanks for your help!
Edit:
For example:
I have two versions of a program where I source different environmental variables via aliases (say progVersionA and progVersionB).
When I have a tmux session running, I would like the current 'sourced' environment shown in the status bar (say "progVersionA"). And as soon as I switch to the other program the status bar should read "progVersionB". So, what I want is, that the status bar changes as soon as I run the alias progVersionB.

Is there any way I can change only a specific directory color in linux?

I only need to set a color that will only effect a particular directory not globally.
If you are using Bash in a terminal that supports colors and would like to change the default color for text output to the terminal (not specifically the output of ls) while inside this directory, there is one thing you could do.
The PROMPT_COMMAND variable can be set to execute a command just before printing the prompt. You could use that to check for the current directory and change the terminal color (for instance by assigning the PS1 variable with a prompt that contains non-displayable special codes for selecting a color or echoing said special codes).
PROMPT_COMMAND is documented in the Bash manual: https://www.gnu.org/software/bash/manual/bashref.html
As for how to assign colors, you should look that up if interested.
This solution may not be what you are looking for, will probably have side effects, and generally speaking, I am not sure it will be that useful changing terminal colors depending on the current directory. The usual solution is to have a prompt that shows the current directory path (or at least the last portion of the path).
I use something similar to the above to change text color depending on which machine I am executing Bash on, as I use ssh a lot from one machine to another over several terminal windows, and color (on a black background) is a good way to remember what machine any given window is connected to.

What does `setenv DISPLAY name:1001.0` mean in Linux?

I'm doing some work using Linux server, after I log on to the server,the tutorial says:
If you need to run any program which will open a window, like xterm, from these servers, you need to set display first.
To do that, I need to execute setenv DISPLAY name:portnum.What does this command really do?If I don't execute this command,what will happen?And what is xterm?
setenv is specific and peculiar to csh and derivatives. The modern portable syntax is
DISPLAY=:0.0
though if your shell is csh or tcsh, this will not work, and you do need setenv after all.
Depending on the use case, you may need to export DISPLAY as well.
Environment variables are a simple way to pass configuration information between programs. The DISPLAY variable indicates to graphical programs on which screen or graphical terminal to display their GUI.
For X Window System, it is a server/client architecture, usually, server side is called display, the tutorials means you should launch server side and specify launch parameter for server side.
read here for more details.
Xterm is just a terminal. And setenv, is used to set Environment variables, which are basically variables used to define the behavior of the terminal. For example, you have the variable PATH, which is used by the terminal to find the path where to execute binaries. Because if you type the command "ls", your terminal has to go into the "env", look for the variable "PATH", and use the value stored in this variable "PATH" to find the path of the ls binary. But I don't know if it's necessary in your situation, could you give more details about the context?

Clean any output of a linux console

I have a linux installation without X. When I launch a third-part application (i.e. gstreamer) it draws on a portion of the screen, let the users see through the external areas.
I want to "clear" the console so it appears black. Of course the clear command won't work because you still see the prompt.
Might you recommend any way to achieve this?
The environment variable which contains the output displayed by the prompt is named PS1. You can empty this variable when needed.
Don't forget to keep a 'backup' of the value in order to be able to set it back to its old value

Duplicate keyboard typing to another terminal

I have laptop-desktop setup at home and I have successfully cloned my Archlinux installation from one to another. However, I would like to avoid having to {install all new software, edit settings, update} twice, so I was wondering if it'd be possible to log over ssh from laptop to desktop, do something in terminal and have linux copy everything I type into second terminal with ssh logged in?
Thanks for ideas!
You could type the commands into one terminal then edit ~/.bash_history and save the commands into a script. Copy the script onto the machine with the second terminal and execute it. The advantage of this is now you have a script that saved your setup so you can reuse it whenever you need to.
You can use clusterssh, which duplicates your typed input across multiple systems. It is designed for situations in which the exact same tasks, such as software installation or configuration commands, are needed to be performed exactly the same on multiple systems. See http://sourceforge.net/projects/clusterssh/. Also, the KDE Konsole terminal has similar functionality.

Resources