Übersicht

Titel:          Screen - der Window Manager für Terminals
Kurztitel:      Screen Feature Show
Art:            Vortrag mit Vorführung
                Pause nach 40min
Zielgruppe:     Alle.
Vorkenntnisse:  Keine.
Zeit:           Di 2013-04-09 20-23h
Ort:            AFRA - Abteilung für Redundanz Abteilung
                Herzbergstr. 55, 10365 Berlin
                http://osm.org/go/0MbHkiUy-
                http://osm.org/go/0MbHkiVqp--
                "Herzbergstr/Siegfriedstr"
                Tram M8+21+37, Bus 256+N56
Vortragender:   Sven Guckes
                mailto:screen_vortrag@guckes.net
                fon:+49-179-3966141
Diese Seite:    http://www.guckes.net/talks/2013-04-09.txt
                http://www.guckes.net/talks/2013-04-09.html
Neueste Änderung: Wed Apr 10 03:00:00 CEST 2013

Abstract/Beschreibung

Screen ist ein window manager für das terminal bzw die console. Es erlaubt zwischen Programmen in einem Terminal zu wechseln und es erhält die Programme am leben über einen logout+login hinaus. Man kann die Fenster horizontal+vertikal aufteilen lassen, sowie andere Benutzer zusehen und mitmachen lassen. Fenster haben backlogs aus denen man kopieren kann.

Inhalt - NOT

Was ist es nicht?

Dies ist kein Vortrag mit Folien, sondern eine feature show, dh sie zeigt lediglich die Effekte im Programm, die man auch gut sehen kann, damit man einen Eindruck von der Vielfalt der Eigenschaften des Programms erhält. Darum wird auch nicht erklärt welche der Tasten man drücken muss, um die Effekte auszulösen. Das hätte auch keinen Sinn, weil das zum einen viel Zeit in Anspruch nimmt, und das Ansagen jedes Tastendrucks sehr langweilig ist. ;-)

Eine der wesentlichen Eigenschaften von Screen ist das "free key binding", dh eine freie Belegung aller Tasten zu Kommandos oder Kommandosequenzen. Somit kann sich jeder Benutzer seine Lieblingskombinationen selber zurechtlegen, wie er das wünscht. Und wen interessieren da noch wie die voreingestellte Tastenbelegung ist? Das wäre dann der Stoff für einen Workshop..

Inhalt - kurz

  • Fenster öffnen (:screen) und schliessen

  • Wechseln zwischen Fenstern (:next :prev :other :select windowlist)

  • Fenstertitel neu benennen (:title)

  • Fensternummer aendern (:number)

  • Copy Mode (:copy); paste into file or window.

  • Detach+Reattach.

  • Digraph input.

  • Key Binding

  • Notifications (monitor for activity or silence.)

  • Screendumps+Logfiles. session locking. configuration of caption and hardstatus line.

  • Multiuser Mode.

Inhalt - lang

SCREEN verwaltet Fenster auf dem Terminal, es ist also ein "window manager".
In jedem Fenster wird ein Programm gestartet.  SCREEN zeigt aber immer nur eines der Fenster.
Zwischen den Fenstern kann man leicht wechseln (nach Nummer, Name oder per Menu).

SCREEN erlaubt auch einen Abzug vom aktuellen Bildschirm zu nehmen
(hardcopy).  Es verwaltet auch für jedes Fenster einen "backlog", der
die herausgeschobenen Zeilen beinhaltet, und man kann auch allen Daten,
die über ein Fenster gehen, in eine Logdatei schreiben lassen.

SCREEN erlaubt das Suchen von Text im Fenster und dessen Backlog.
Über den "*copy mode*" kann man Text selektieren (Fliesstext, ganze Zeilen,
aber auch rechteckige Blöcke) und dessen Kopieren in einen Puffer.
Der Inhalt eines Puffers kann dann in einem anderen Fenster wieder eingefügt werden.
Mit SCREEN kann man also sehr leicht Daten zwischen Programmen austauschen.
(Wer benutzt dafür noch die Maus?)

SCREEN erlaubt die Eingabe von Zeichen, die nicht direkt per
Taste auf der Tastatur sind, über die *Digraph*-Eingabemethode.

SCREEN besteht aus zwei Prozessen: Ein Prozess hält Unterprozesse
am Leben und der andere stellt die Verbindung zum Terminal her.
Beendet man die Verbindung zum Terminal, so erhält der andere Prozess
die Unterprozesse weiterhin am Leben - auch über einen Logout hinweg.
Man kann sich also später wieder einloggen und seine Arbeit
direkt wieder aufnehmen - auch von einem anderen Terminal aus.

SCREEN hat auch einen Befehl, um die aktuelle Session schnell zu
verschliessen, so dass man nur mit dem Passwort des Users wieder
herankommt.  Ein zusätzliches Passwort kann gewählt
werden, um eine weitere Sicherheit zu haben.

SCREEN sagt dem Benutzer auch bescheid, wenn die aktuell unsichtbaren
Fenster eine Aktivität bzw eine Inaktivität für N sekunden aufweisen.
Damit kann man indirekt aufmerksam werden über neue EMail, eine neue
Nachricht beim Chat, oder auch auf das Beenden eines Vorgangs (zB compile).

SCREEN erlaubt die freie Zuweisung von Tasten auf Kommandos,
so dass man schnell Kommandos ausführen kann, zB ein neues Fenster mit einem
Textbrowser auf einer Webseite öffnen, insbesondere zur Suche über Google.

SCREEN erlaubt ausserdem anderen Benutzern an der eigenen Session
teilhaben zu lassen, dh man darf bei der Session mitsehen (read-only)
oder sogar daran mitarbeiten (write).  Damit kann man dem Administrator
erlauben zu sehen wie man ein Programm benutzt und wie es zu einer
Fehlermeldung kommt.  Das lästige Erklären über eine Diskussion per Email
entfällt dabei.  Man kann sich am Telephon über das Programm unterhalten.

Und über den Schreibzugriff können Benutzer
per SCREEN auch ko-produktiv sein!

Kür

Screen Session in einer anderen Screen Session,
unterschiedliche Command Keys (zB CTRL-O oder CTRL-X)

Spezielle Setupdateien:
Session zum Arbeiten:
  screen -c .screenrc.comm

Session für (ablenkende) Kommunikationsprogramme:
  screen -c .screenrc.comm

Screen within Screen:
    escape ^xx

Remote startup mit spezieller Setupdatei

Vorgefertigte Setupdateien mit curl oder wget holen.
  wget $URL -O ~/.screenrc

Splits:
    S   split horizontally
    |   split   vertically
    Q   only
    TAB focus
    X   remove

die homepage in den aktuellen prozess pasten:
    :bind Y stuff http://www.guckes.net/

Multiuser Mode: ACL commands.
    $ man screen | grep '^ *acl'
    acladd usernames [crypted-pw]
    aclchg usernames permbits list
    acldel username
    aclgrp username [groupname]
    aclumask [[users]+bits |[users]-bits .... ]

Zombie Mode:
    :zombie z
    resurrect (CTRL-SPACE) or kill (z)?

Zusammenarbeit - Text kopieren und austauschen
über das tempfile "/tmp/screen-exchange".
    CTRL-A <   :readbuf
    CTRL-A >   :writebuf
    CTRL-A =   :removebuf

Environment: SCREENDIR + STY

  $ ls -l $SCREENDIR
  total 0
  prwx------ 1 guckes guckes 0 Apr 09 23:23 0815.work
  prwx------ 1 guckes guckes 0 Apr 09 23:42 4711.comm

Copy Mode:
* Vi Kommandos zum Bewegen des Cursors
* Selection festlegen: {move} space {move} space
* Auswahl per Block mittels c+C (rectangular selection)
* Join modes

Caption+Hardstatus:
    configuring the "bottom lines"

Screendumps+Logfiles:
* hardcopy
* log

Key Binding:
* bind
* bindkey

Stealth Mode:
    login on|off

...:
    at+backtick

Screensaver:
* idle
* blanker

Getting Started:
* license
* version
* startup_message on|off

Security:
* password

Copy+Paste:
* copy
* history
* paste
* readbuf
* readreg
* register

Session Management:
* sessionname

Default Shell:
* shell

Pruning + Merging:
    gibt es nicht. -> tmux

freeNX - screen on GUI:
    "remote desktop software"
    http://de.wikipedia.org/wiki/NX_NoMachine

screen als login shell:
    TODO

Help!

wer kann ueber die folgenden Themen vortragen?

  • Colors: 256 colors fuer screen und Terminal

  • Command Line History copy+paste (Commands { and })

  • Flow Control

  • Filters

  • Paste Buffers

Examples

Key Bindings

bind \\
bind " " select 0

bind o only
bind q copy
bind X lockscreen

bind A select 10
bind @ windowlist -m
bind Y stuff http://www.guckes.net/
bind + resize +1
bind - resize -1

bind e screen -t mail     0 mutt
bind V screen -t vim      0 vim -X

bind D screen -t DICT     4 links dict.tu-chemnitz.de/pda
bind G screen -t Google   0 links www.google.com
bind I screen -t IMDB     9 links http://us.imdb.com/search/

Shell Aliases

alias WORK='screen -m -c ~/.screenrc.work'
alias COMM='screen -t COMM 9 screen -m -c ~/.screenrc.comm'

alias   \?='screen -ls'
alias   \!='screen -d -RR'

alias number='screen -S $STY -X number'
  HomePage:
* http://www.gnu.org/software/screen/
* http://git.savannah.gnu.org/r/screen.git
  Screen Pages:
* http://www.guckes.net/Screen/intro.txt
  Setupdateien:
* http://www.guckes.net/Setup/screenrc
* http://www.guckes.net/Setup/screenrc.knoppix
* http://www.guckes.net/Setup/screenrc.minimal
  Andere Programme:
* http://byobu.co/ byobu - open source text-based window manager and terminal multiplexer
  Screen vs Tmux: [2013-04-09]
* http://pad.someserver.de/WXCxS4JyzQ

Hilfsmittel

Diese technischen Hilfsmittel sollten fuer den Vortrag vorhanden sein:

Projektor: Ein Projektor mit einer Auflösung von mindestens 1024x768. Dazu ein laaaanges VGA Kabel (5m).

Internet: Ein Zugang zum Internet sollte vorhanden sein, um Webseiten und Services abrufen zu können. Ein Kabel zum Internet mit DHCP wäre schön. Wifi macht leider immer wieder Probleme.

Rechner: Ein Rechner mit einer Knoppix sollte genügen.

Programme: mosh/ssh, terminal (zB xterm), vim 7.3. Eventuell noch ein X mit einem graphischen Webbroser, zum Zeigen von Websites oder zum Suchen mit Google, sowie einem PDF viewer (acroread, evince oder xpdf).

Ich werde aber mein Netbook mitbringen. Die Programme sollten also vorhanden sein.

Workshop

Falls ein Workshop gewünscht wird, so sollten wie uns möglichst abends oder am Wochenende treffen, und ca 3-5 Stunden Zeit haben. Maximal 10 Teilnehmer, weil wir uns sonst eventuell in zu viele Details verlieren.

Persönliche Angaben

Sven Guckes, (*1967), Studium der Mathematik und Informatik an der Freien Universität Berlin; Freiberufler, lebt in Berlin.

Benutzt SCREEN seit 1992. Ohne dieses Tool geht es nicht mehr. Und dennoch ist damit immer noch nicht zufrieden, weil es weitaus mehr leisten könnte für die tägliche Arbeit.

Über SCREEN hat er auf Linux events bereits einige Vorträge und Workshops abgehalten, zB in StPölten, Wien und Chemnitz.

Spezialgebiete: "Text Tools" (zB mutt, screen, slrn, vim, zsh) und zur Effizienz von User Interfaces.

Projekte: zu viele. ;-)