Minimales X-Windows-System

ZIEL: Installation und Konfiguration einer minimalen, grafischen Arbeitsumgebung auf Debian 9.

../_images/x11-openbox-two-wings.png

Software

Am besten, man wählt bei der Betriebssysteminstallation gar keinen Desktop mit aus. Dann geht es manuell so weiter:

root:~# apt-get install xorg pcmanfm openbox tint2 conky sakura virt-viewer surf x11-apps gmrun unzip yad lightdm

X11-Startup

Als einfacher Nutzer „tux“ erstellen wir nun die Startupdatei für den Display-Manager. Wir geben ihr den Namen ~/.xsession und befüllen Sie mit folgenden Inhalt:

sakura &
tint2 &
pcmanfm -d --desktop &
(sleep 5 ; conky) &
setxkbmap de
exec openbox

Nach dem Neustarten der Oberfläche oder des gesamten Systems, sollte der Display-Manager ‚lightdm‘ im Login Screen die Möglichkeit anbieten, eine „Default Xsession“ zu starten (oben rechts, Symbol mit Schraubenschlüssel). Das führt dazu, dass unsere eben erstelle Datei abgearbeitet wird.

Ausführen-Dialog

Der Fenstermanager Openbox bringt von Haus aus kein Dialogfenster mit, in welchem man Kommandos zur Ausführung bringen könnte. Deswegen haben wir vorhin unter anderem auch ‚gmrun‘ installiert. Die Einbindung nehmen wir als einfacher Nutzer „tux“ vor:

tux@linux:~$ mkdir -p ~/.config/openbox
tux@linux:~$ cp /etc/xdg/openbox/rc.xml ~/.config/openbox
tux@linux:~$ vi +316 ~/.config/openbox/rc.xml

Mit letzterer Kommandozeile öffnen wir die Datei bei Zeile 316 (alternativ einfach nach ‚scrot‘ suchen). Diese Zeile sowie die beiden nächsten können nun kopiert und unterhalb dem endenden ‚</keybind>‘ Tag eingefügt und angepasst werden. Im Endeffekt sind es diese 3 Zeilen, die an entsprechender Stelle hinzugefügt werden müssen:

<keybind key="A-F2">
  <action name="Execute"><command>gmrun</command></action>
</keybind>

Schließlich lesen wir die Konfiguration einfach via Kommandozeile ein:

tux@linux:~$ openbox --reconfigure

Testen können wir das Ganze nun durch Drücken der Tastenkombination ALT-F2. Jetzt müsste sich „a small fast, yet featureful application launcher“ zeigen, in den man z.B. surf metager.de hineintippen kann. Das kleine Tool beherrscht Autovervollständigung (Tabulator-Taste) und führt auch eine History (Cursor nach oben/unten).

Hintergrundbild

Ein schönes Wallpaper ist z.B. ‚TwoWings.jpg‘. Wer aber das ca. 20 MB große Paket ‚mate-backgrounds‘ nicht installieren will, kann sich auch ein bestimmtes Hintergrundbild aus dem Paket extrahieren:

root:~# apt-get install -d mate-backgrounds
root:~# mkdir /tmp/picture
root:~# cd /tmp/picture
root:~# ar x /var/cache/apt/archives/mate-backgrounds_1.16.0-1_all.deb
root:~# tar xJf data.tar.xz ./usr/share/backgrounds/mate/nature/TwoWings.jpg -O > /home/tux/Bilder/TwoWings.jpg
root:~# chown tux: /home/tux/Bilder/TwoWings.jpg
root:~# cd
root:~# rm -rf /tmp/picture
root:~# apt-get clean

Dann muss das Wallpaper mittels grafischen Dateimanager ‚pcmanfm‘ eingebunden werden:

  • Rechtsklick auf Desktopfläche, => „Desktop Einstellungen“ anklicken

  • In Registerkarte „Erscheinungsbild“ bei „Hintergrundmodus“ auswählen: „Angepasst“

  • In selbiger Karte bei „Hintergrundbild“ dann das gewünschte Bild „TwoWings.jpg“ einbinden

Monitor-App für den Schreibtisch

Zuerst lassen wir uns die Default-Konfiguration in die Startup-Datei von Conky schreiben:

tux@linux:~$ conky -C > ~/.conkyrc

Die eben erzeugte Datei editieren wir nun, anzupassen sind hierbei folgende Einstellungen auf die gezeigten Werte (Zeilen 28 - 21 stammen von Bunsenlabs Helium, sie dienen dem Aktivieren von Tranzparenz):

  • Zeile 7: alignment = 'top_right',

  • Zeile 18: gap_y = 5,

  • Zeile 27: own_window_type = 'normal',

  • Zeile 28: own_window_transparent = true,

  • Zeile 29: own_window_hints = 'undecorated,below,skip_taskbar,skip_pager,sticky',

  • Zeile 30: own_window_colour = '000000'

  • Zeile 31: own_window_title = 'BunsenLabs Default Conky',

  • Zeile 40: ${alignc}${color orange}$nodename with Linux $kernel}

tux@linux:~$ diff -u .conkyrc .conkyrc_Default | nl
     1  --- .conkyrc    2018-12-18 12:17:51.661776936 +0100
     2  +++ .conkyrc_Default    2018-12-20 13:45:31.769735336 +0100
     3  @@ -26,8 +26,8 @@
     4   ]]
     5
     6   conky.config = {
     7  -    alignment = 'top_right',
     8  -    background = false,
     9  +    alignment = 'top_left',
    10  +    background = false,
    11       border_width = 1,
    12       cpu_avg_samples = 2,
    13          default_color = 'white',
    14  @@ -40,7 +40,7 @@
    15       use_xft = true,
    16       font = 'DejaVu Sans Mono:size=12',
    17       gap_x = 5,
    18  -    gap_y = 5,
    19  +    gap_y = 60,
    20       minimum_height = 5,
    21          minimum_width = 5,
    22       net_avg_samples = 2,
    23  @@ -50,11 +50,7 @@
    24       extra_newline = false,
    25       own_window = true,
    26       own_window_class = 'Conky',
    27  -    own_window_type = 'normal',
    28  -  own_window_transparent = true,
    29  -  own_window_hints = 'undecorated,below,skip_taskbar,skip_pager,sticky',
    30  -  own_window_colour = '000000',
    31  -  own_window_title = 'BunsenLabs Default Conky',
    32  +    own_window_type = 'desktop',
    33       stippled_borders = 0,
    34       update_interval = 1.0,
    35       uppercase = false,
    36  @@ -64,7 +60,7 @@
    37   }
    38
    39   conky.text = [[
    40  -${alignc}${color orange}$nodename with Linux $kernel}
    41  +${scroll 16 $nodename - $sysname $kernel on $machine | }
    42   $hr
    43   ${color grey}Uptime:$color $uptime
    44   ${color grey}Frequency (in MHz):$color $freq
tux@linux:~$

Letztendlich weist die Datei folgenden Inhalt auf:

-- vim: ts=4 sw=4 noet ai cindent syntax=lua
--[[
Conky, a system monitor, based on torsmo

Any original torsmo code is licensed under the BSD license

All code written since the fork of torsmo is licensed under the GPL

Please see COPYING for details

Copyright (c) 2004, Hannu Saransaari and Lauri Hakkarainen
Copyright (c) 2005-2012 Brenden Matthews, Philip Kovacs, et. al. (see AUTHORS)
All rights reserved.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
]]

conky.config = {
    alignment = 'top_right',
    background = false,
    border_width = 1,
    cpu_avg_samples = 2,
        default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    use_xft = true,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 5,
    gap_y = 5,
    minimum_height = 5,
        minimum_width = 5,
    net_avg_samples = 2,
    no_buffers = true,
    out_to_console = false,
    out_to_stderr = false,
    extra_newline = false,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'normal',
own_window_transparent = true,
own_window_hints = 'undecorated,below,skip_taskbar,skip_pager,sticky',
own_window_colour = '000000',
own_window_title = 'BunsenLabs Default Conky',
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    show_graph_scale = false,
    show_graph_range = false
}

conky.text = [[
${alignc}${color orange}$nodename with Linux $kernel}
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
${color grey}Name              PID   CPU%   MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]

Grundsätzlich ist es sinnvoll, Conky von der Shell heraus mit killall conky ; conky & ganz neu zu starten. Spätere Konfigurationsänderungen liest das Programm automatisch ein.

Start-Icons auf dem Schreibtisch

Ziel ist, die Maschine bequem neustarten, herunterfahren oder sperren zu können.

Wir erstellen dazu ein Shellskript ~/bin/locking-shutdown; es bekommt folgenden Inhalt (nicht vergessen, es ausführbar zu machen):

#!/bin/sh
# Datei: ~/bin/locking-shutdown
#
# Nach https://sourceforge.net/p/yad-dialog/wiki/Examples/?page=2
#
action=$(yad --width 300 --entry --title "System Logout" \
    --image=gnome-shutdown \
    --geometry=0x0+300+300 \
    --button="gtk-ok:0" --button="gtk-close:1" \
    --text "Choose action:" \
    --entry-text \
    "Power Off" "Reboot" "Lock-Screen")
case $action in
    Power*) cmd="systemctl poweroff" ;;
    Reboot*) cmd="systemctl reboot" ;;
    Lock-Screen*) cmd="/usr/bin/slock" ;;
    *) exit 1 ;;
esac
eval exec $cmd

Fehlt uns dazu nur noch die Datei ~/Schreibtisch/locking-shutdown.desktop, die den Anwendungsstarter dafür bereitstellen soll. Wir geben ihr folgenden Inhalt:

[Desktop Entry]
Name=Locking Shutdown
Icon=/usr/share/icons/nuoveXT2/64x64/apps/gnome-session-halt.png
Exec=/home/tux/bin/locking-shutdown
Terminal=false
Type=Application
StartupNotify=false

Neben diesem Starter können nach Belieben weitere auf einfache Art auf dem Desktop platziert werden:

  • Rechtsklick auf ‚Papierkorb‘, => ‚PCManFM Dateimanager‘ anklicken

  • Links unten auf ‚Anwendungen‘ klicken

  • Gewünschte App aus den Unterverzeichnissen auswählen und auf den Desktop ziehen