Creating new windows that run programs in screen - gnu-screen

My .screenrc has some initialization code that opens some windows. It's neat.
What I want to do, while running screen is simply , with one command open a new screen window that is running a program.
It SHOULD be:
screen -t 'CADMIN' sudo cherokee-admin -b
This actually works, except that it also runs my .screenrc and opens up all of my
windows in a nested screen. FAIL.
I know I could use
^c ( to create a new window )
^cA ( to title it )
sudo cherokee-admin -b
and get the same effect, but I'd like to bring a little elegance to my life, which
is why I use screen and not some multi terminal thing.
Ideas?

Ok, I've got a somewhat palatable answer:
from the bugs page there is a discussion about problems using the screen -t invocation.
I've tried this and I find that screen -c /dev/null -t CADMIN sudo cherokee-admin -b actually works the way I originally thought it would. It's kind of nifty actually, -c calls nothing for the value of .screenrc, which does not open my glorious screen rig. I can live with this.

You could setup another .screenrc file that doesn't have all of the other windows in it then in your .bash_profile you could add something like:
alias scn="screen -c '.screenrc2' -t 'CADMIN' sudo cherokee-admin -b"
then all you would have to do is run $scn from the cli to open screen with the desired effect.
hope this helps
edit: Make sure you name the second .screenrc file something different (i.e. '.screenrc2')

Related

How to launch Windows Terminal with multiple commands

I've been tinkering around with Windows Terminal lately, and I love how it consolidates all of the various terminal applications into one place. However, compared to the regular WSL Bash program, there's one thing I haven't been able to make it do yet - launch and automatically run a command.
This would be really useful to me because I need to run several services in the background while I develop - Redis, Chromedriver, and Postgresql. I can currently do this by having three separate tasks in Windows Task Scheduler, it would just be nice if I could run them all in a single Terminal window, not three.
I was reading through the documentation for Windows Terminal to see if this was possible, but came up empty. Has anyone been able to come up with a solution to the above?
Thanks!
You can run them all in a single tab but you will need to use split panes or tmux. You can use the split panes solution I provided in this Stackoverflow post.
Basically you create a profile for each command you want to run via Powershells -NoExit flag to keep the window(s) open. You can then launch those commands all as split panes in a single tab through Windows Terminal (wt.exe). Then just alias that command or put it in a shortcut to reuse it. Given that you setup all the proper profiles in settings.json the final command would look something like this (run it from cmd):
wt -p "redis" ; split-pane -p "chromedriver" ; split-pane -H -p "postgresql"
Or you could create a profile in settings.json to open your split pane commands from the WT dropdown menu, which would look something like this:
{
"guid": "{b7041a85-5613-43c0-be35-92d19002404f}"
"name": "bg_procs",
"colorScheme": "One Half Dark",
"commandline": "wt -p \"redis\" ; split-pane -p \"chromedriver\" ; split-pane -H -p \"postgresql\""
},

Linux Screen tab misbehaves on WSL environment

I use Ubuntu 18.04 on a WSL system and usually log on a Linux server through ssh to get some work done. When I activate 'screen' and use the tab key to autocomplete commands, my cursor goes to the end of line, and the formatting of my entire terminal breaks from then on.
When using vim in that condition on a screen terminal, if I go to the end of file and press down on more time, it erases the last line from the terminal.
It seems a kind of misinterpretation of some terminal signal. When using Putty or any other ssh client under the same circumstances, everything works fine, so I am pretty sure it is a problem with WSL environment, specifically.
Any ideas about what is the main issue and how to solve it?
I just came across this same exact issue and it appears to be a possible bug with Windows Console and certain $TERM values.
I have this problem when $TERM is set to screen-256color. The problem went away after setting $TERM to xterm-256color in .screenrc
$ cat ~/.screenrc
term xterm-256color

GNU screen source a custom bashrc file for new windows

At the office, we have a shared user we use half the time. I'm trying to get screen to automatically load a custom bashrc file that I created for myself when using the shared user. So far I have this which works well:
alias screen='screen -d -R -S redhar -c /home/redhar/.screenrc bash -rcfile '\''/home/goldenuser/.bashrc_redhar'\'''
This works well for the very first window it creates. The problem comes when I create a new window. Is there anyway to get a newly created window to automatically use the same rcfile?
So far I have considered the following option, but I'm looking for a more streamlined solution along the lines of a missing GNU screen config option I overlooked or something. My proposed solution:
In regular .bashrc which gets loaded automatically:
if [[ $SCREENFLAG == "REDHAR" ]]
then
. /home/goldenuser/.bashrc_redhar
exit
fi
Set alias to:
alias screen='SCREENFLAG=REDHAR screen -d -R -S redhar -c /home/redhar/.screenrc bash -rcfile '\''/home/goldenuser/.bashrc_redhar'\'''
Discovered the solution is to create a file with
bash -rcfile /home/goldenuser/.bashrc_redhar
then set your shell command in .screenrc to it
shell='<path to file created above>'

How assure that gnome-terminal is displaying the correct hostname on window title?

I am looking for a solution that would update the window title to the current host.
I am usually doing ssh to different boxes and I observed that the window title in Gnome Terminal (3.0.1 from Ubuntu 11.00) is not correctly updated. Currently it displays "user#localcompure: path" - and I want to be updated after I do a ssh.
I should note that I am looking for a solution that will not require me to change settings on any machine I'm connecting to.
I'm looking to do the same here, the functionality works fine in konsole(kde's terminal app) but not from within gnome-terminal. The best solution I have found thus far is to invoke this by using a separate app with the following:
#!/bin/bash
#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1#$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
found and copied from:
https://unix.stackexchange.com/a/40337?sgp=2

Default c-shell, change to bash but allow for scp

Hi so I am trying to modify my .cshrc file to make bash my default. It is on a school account so I cannot change the main settings but can change the profile. The problem is that when I use the command:
bash
in my .cshrc it works when I am logging in just fine. But anytime I try to scp files it does not work because it launches the .cshrc and scp gets confused when it changes to the bash terminal.
Does anyone know how to get around this? Possibly launch bash in quiet mode...
In general, you shouldn't do anything that invokes an interactive application or produces visible output in your .cshrc. The problem is that .cshrc is sourced for non-interactive shells. And since your default shell is csh, you're going to have csh invoked non-interactively in a lot of cases -- as you've seen with scp.
Instead, I'd just invoke bash -- or, better, bash -l -- manually from the csh prompt. You can set up an alias like, say, alias b bash -l.
If you're going to invoke a new shell automatically on login (which is still not a good idea), put it in your .login, not your .cshrc.
This is assuming chsh doesn't work, but it should -- try it.