:encoding: ISO-8859-1 = SCREEN - der Window Manger für Terminals = == Ü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' ------------------- == Links == 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. ;-)