= Uebersicht =

Titel:          "Screen"
Untertitel:     "Window Manager fuer das Terminal"
Datum:          2017-09-28 18-22h
Dauer:          Vortrag: 1h; PAUSE. Workshop: 2h
Veranstalter:   Berliner Linux User Group (BeLUG)
Ankuendigung:   https://www.belug.de/aktivitaeten-kalender/WindowmanagerInDerConsole.html
Ort:            Lehrter Str. 53, 10557 Berlin
                http://www.openstreetmap.org/node/412766878
BVG:            Bus 123,M27 "Quitzowstrasse"; Bus 123 "Kruppstrasse"
Kontakt:        Sven Guckes vortrag-belug-screen-2017-10-04@guckes.net
Diese_Seite:    http://www.guckes.net/talks/screen/2017-10-04.screen_talk.belug.txt
Latest change:  Thu Sep 28 03:33:33 CEST 2017

= Beschreibung =

    "Screen" ist ein "Window Manager" fuer das Terminal,
    dh man verwaltet damit Prozesse - in jedem Fenster einen.

    Natürlich kann man zwischen den Fenster hin+herwechseln,
    die Anzeige der Fenstertitel und deren Nummer anpassen.
    Ein "Monitoring" gibt Nachricht über Aktivität
    oder Schweigen auf den unsichtbaren Fenstern.

    Beim Trennen der Ansicht ("detach") laufen die Prozesse weiter
    bis man sich wieder mit einer Ansicht verbindet ("reattach") -
    egal, ob auf dem lokalen Laptop oder auf einem entfernten Server.
    Allein *das* ist schon ein grosser Nutzen von Screen überhaupt.

    Screen hat, wie jedes gute Programm, ein "Key Bindung",
    dh erlaubt es die Tasten auf Kommandos konfigurieren.
    Es gibt auch einen Multiuser Modus über den man anderen
    erlauben kann zuzuschauen (read) bzw hineinzutippen (write).
    Damit ist zwischen den Nutzern eine Zusammenarbeit möglich.

    Der "Copy Mode" erlaubt es in der Fensterhistorie
    zu suchen und von dort auch Text zu kopieren.
    Man sieht normalerweise immer nur ein Fenster, aber
    man kann auch die Ansicht spalten (horizontal+vertikal).

    [Extra] und dann gibt es noch: Hardcopies,
    Zombie Mode, Backtick Command, Farben..

    Vorführung: max eine Stunde.
    Workshop: möglich. wer möchte? Kiste mitbringen!

= Tweet =

  https://twitter.com/guckes/status/913187311021694976

  2017-10-11 Wed 18-22h @BeLUGBerlin Vortrag "GNU Screen"
  Lehrter_53 http://www.openstreetmap.org/node/412766878
  https://www.belug.de/aktivitaeten-kalender/WindowmanagerInDerConsole.html
  http://www.guckes.net/talks/screen/2017-10-04.screen_talk.belug.txt

= Vortragsplan =

for BEGINERs:

Detach+Reattach
     :detach
     screen -r
     :powdetach

Multiple Screens/Windows
     editor (vim), email (neomutt), IRC (irssi), news (slrn),
     rss (newsbeuter), shell (zsh), web (elinks2)

Navigation
     digit
     :next + :previous
     :other
     :select
     :windows
     :windowlist

Number+Title
     :number
     :title

Split Screens
     :focus
     :split
     :split -v
     :resize
     :remove
     :only

Multiple Views + Sessions
     :displays
     screen -ls
     :sessionname
     screen -r prefix

PAUSE

== ADVANCED 1 ==

Extra: Copy Mode
     CTRL-A ESC "space {move} space"
     :readbuf
     :writebuf
     :removebuf

Extra: Notification
     :monitor
     :silence

Extra: Zombie Mode
     :zombie z
     CTRL-SPACE

== ADVANCED 2 ==

Extra: Multiuser Mode
     :multiuser on
     screen -ls $USER/
     screen -x  $USER/
     .
     screen -ls root
     "No Sockets found in /tmp/uscreens/S-guckes."
     screen -ls root/
     "Must run suid root for multiuser support."
     .
     ls -l $(which -a screen)
     :fit

     :acladd :aclchg :aclgrp :aclmask :acldel
     :group

== Extra Extra ==

     :backtick  :idle

     :blanker   :blankerprg
     :hardcopy  :hardcopydir hardcopy_append
     :history
     :info
     :login
     :log
     :lockscreen
     :nethack
     :password
     :stuff
     :time

     Copy+Paste:
     :readreg

     Processes:
     :kill :quit

     Layouts:
     :layout new|remove|next|prev|select|show|title|attach|save|autosave|dump

     Activity:
     :monitor   :silence

     Load Config:
     :source

== Configuration ==

     * Command Char:   escape ^xy
     * Startup:        startup_message off
     * Scollback:      defscrollback 1000
     * Silence:        silencewait 15
     * Exchange:       bufferfile  $HOME/.screen_exchange
     * Hardcopies:     hardcopydir $HOME/.screen
     * Shell+Title:    $HOME/bin/zsh  :shelltitle
     * Base Color:     sorendition kG
     * Bells+Whistles: activity, bell_msg, pow_detach_msg, vbell_msg
     * Windowlist:     windowlist title/string

== Configuration Extra ==

these take some time..

     * Command Binding
        :bind and :bindkey
        :bind y bumpleft
        :bind x bumpright
         Programme starten, zB:
         dictionary, editor, email, google,
         htop, imdb, wetter, weblog

     * Caption+Hardstatus

= FAQ =

    * [beep, sound]
      wie kann man eine nachricht hörbar machen?
        -> vbell

    * [session naming]
      wie gibt man einer laufenden session einen namen?
        -> :sessionname

    * [session nesting - "screen within screen"]
      wie geht man um mit einer screen session in einer anderen session?
        -> command character wechseln -> :escape ^xy

    * [remote sessions]
        anzeigen von CPU load von mehreren servern?
        -> jeweils im fenster per ssh auf host einloggen
            screen ssh user@host htop
            screen ssh user@host TERM=linux htop

    * [adjust terminal sizes]
      wenn mehrere Benutzer zugeschaltet ("attachede) sind
      und unterschiedliche Terminalgrößen haben - wie bekommt
      man eine *gemeinsame* Terminalgrößen hin?
        -> :fit

    * [commandline]
      Kann man auf der internen Kommandozeile
      auch die Kommandos der bash verwenden?
        -> evtl die gnu readline einbinden (untested)

    * [redirection]
      kann man zwischen fenster auch kopieren bzw umleiten?
        -> file descriptors -> :exec fdpat

= Links =

    http://guckes.net/Screen/
    http://guckes.net/Screen/intro.html
    http://guckes.net/Setup/screenrc

    Die Alternative: tmux!
    Wer möchte einen Vortrag über tmux machen?

EOF