108 lines
3.9 KiB
Text
108 lines
3.9 KiB
Text
# Cygwin-specific notes for screen
|
|
|
|
screen has been reported to work well inside the following terminals in Cygwin:
|
|
|
|
* mintty
|
|
* rxvt
|
|
* xterm
|
|
|
|
If you use screen in a DOS console, you will be able to detach sessions, but
|
|
reattaching to them later is likely to fail. Then you'll have to use `screen
|
|
-wipe` to clear out your old unusable sessions, and you may have to manually
|
|
kill their child processes.
|
|
|
|
screen may or may not work well with other terminals in Cygwin. Please post
|
|
test reports to the Cygwin mailing list.
|
|
|
|
## Color support
|
|
|
|
screen version 5 now includes both truecolor (24-bit) and 256-color terminal
|
|
support. To determine how many colors your terminal can display now, run
|
|
|
|
/usr/share/screen/colortest.sh
|
|
|
|
Instructions at the bottom of the output will help you to determine how many
|
|
colors your terminal supports. If you want to get more colors, read on.
|
|
|
|
### Truecolor
|
|
|
|
To use truecolor, set
|
|
|
|
truecolor on
|
|
|
|
in your ~/.screenrc. (This option is undocumented as of screen version 5.0.1.)
|
|
Then kill your screen session (`C-A \`) and start a new one. According to
|
|
https://github.com/termstandard/colors, you may also need to set one of the
|
|
following in your shell environment:
|
|
|
|
COLORTERM=truecolor
|
|
COLORTERM=24
|
|
|
|
### 256-color
|
|
|
|
If truecolor support won't work for you, to get 256-color support you may need
|
|
to set your terminal type to a 256-color variant, both outside and inside of
|
|
screen. A simple way to do this is by invoking screen as e.g.
|
|
|
|
TERM=xterm-256color screen -T screen-256color
|
|
|
|
The correct value of TERM depends on your terminal type, and is believed to be
|
|
well described by
|
|
|
|
case $TERM in
|
|
xterm) TERM=xterm-256color ;; # for xterm, PuTTY, MinTTY
|
|
rxvt) TERM=rxvt-256color ;; # for rxvt
|
|
cygwin) ;; # DOS terminal - fewer than 16 colors are supported
|
|
esac
|
|
|
|
However as of screen version 5, I now get better results by leaving TERM and
|
|
term unset. The best way to find out is just to try it.
|
|
|
|
You might be able to set the above permanently in your environment, i.e. by
|
|
putting it into your .bashrc file, without any ill effects. If you know of any
|
|
additions or corrections to the above logic, please post the information to the
|
|
Cygwin mailing list.
|
|
|
|
To avoid having to specify '-T screen-256color' every time, you can put
|
|
|
|
term screen-256color
|
|
|
|
into your .screenrc or /etc/screenrc file.
|
|
|
|
|
|
## FAT file system warning
|
|
|
|
If your /tmp directory is stored on a FAT file system, you won't be able to
|
|
reattach to screen sessions after you detach from them. The reason is that to
|
|
preserve the security of your session, screen requires that restrictive
|
|
permissions be set on the directory where it stores its socket files, in
|
|
/tmp/uscreens by default. But the FAT file system doesn't support file
|
|
permissions at all, so it's incapable of setting the permissions tightly
|
|
enough. If this is your case, then when you try to reattach to a detached
|
|
session, screen will give you the following unhelpful error message:
|
|
|
|
There is a screen on:
|
|
There is no screen to be resumed.
|
|
|
|
You can use the 'mount' command to see which type of file system your root
|
|
directory is stored on:
|
|
|
|
mount | grep 'on / '
|
|
|
|
(or `mount | grep 'on /tmp '` in case you've mounted a separate file system on
|
|
/tmp). If the result says the type is fat, fat32, vfat, or some other kind of
|
|
fat, then you won't be able to reattach to screen sessions.
|
|
|
|
To solve this problem, you need to tell screen to store its socket files in a
|
|
directory on a file system that does support file permissions, such as NTFS. For
|
|
example, you could put the following in your ~/.bash_login file:
|
|
|
|
export SCREENDIR=/cygdrive/c/WINDOWS/Temp/screen/$USER
|
|
|
|
assuming that C:/Windows/Temp/screen/$USER is an existing NTFS directory where
|
|
you have write permission. Another solution would be to mount an NTFS directory
|
|
as your /tmp directory, e.g. by putting
|
|
|
|
C:/WINDOWS/Temp /tmp some_fs binary 0 0
|
|
|
|
into /etc/fstab or /etc/fstab.d/$USER. See mount(1).
|