UNIXwork

Remote X11 Session mit Xephyr

2018-09-18 20:37:00.0

Xephyr ist ein X-Server, der die Ausgabe in einem Fenster eines anderen X-Servers darstellt. Ein nützliches Tool, wenn man z.B. einen Window-Manager entwickelt und diesen testen möchte ohne die eigene Desktop-Session zu beenden. Man kann Xephyr aber auch nutzen, um eine zweite Desktop-Session zu starten. Diese kann lokal sein, oder remote, für X11 spielt das keine Rolle.

Die Benutzung ist einfach. Zunächst startet man Xephyr und danach startet man einen beliebigen X-Client mit angepasster DISPLAY-Variable.

Xephyr :1 -ac -screen 800x600 &
DISPLAY=:1
xterm

Xephyr öffnet ein Fenster nur mit schwarzen Inhalt. Das ist die Ausgabe des zweiten X-Servers. Dieser enthält bisher nur ein Root-Window. Starten wir xterm auf diesem Display, fällt auf, dass es keine Window-Decoration oder sowas gibt. Denn das ist nur ein nacktes Root-Window mit Xterm als Kind, ganz ohne Window-Manager oder Desktop.

Es ist aber problemlos möglich, dort einfach einen Window-Manager zu starten, oder einen ganzen Desktop. Normalerweise haben Desktops ein Startprogramm dafür, was den Window-Manager und was sonst noch so benötigt wird, startet. Z.B. bei Gnome ist es gnome-session oder bei Xfce ist es xfce4-session.

Als Test hier ein Screenshot, wie ich den minimalen Window-Manager jwm innerhalb von Xephyr verwende.

Terminal Screenshot

Es spricht auch nichts dagegen, per Remote-X11 einen X-Client zu starten. Auf diese weise kann man den Desktop einer entfernten Maschine lokal anzeigen.

DISPLAY=:1
ssh -X myhost gnome-session

Ein bisschen schöner wird es noch, wenn man Xephyr im Vollbild startet. Desweiteren hatte ich in Standardeinstellung Probleme mit dem Tastaturlayout, denn es ging die Alt-Graph-Taste nicht.

$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     de,de
variant:    nodeadkeys,
options:    compose:menu
$ Xephyr -keybd ephyr,,,xkbmodel=pc105,xkblayout=de,xkbrules=evdev -ac -fullscreen :1

Damit öffnet man Xephyr im Fullscreen-Modus mit dem Tastaturlayout des normalen X-Servers.

Autor: Olaf | 0 Kommentare | Tags: x11

Virtuellen Desktop wechseln - aus VBox-Guest heraus

2017-12-22 14:59:29.0

Den virtuellen Desktop kann man gewöhnlich schön per Tastenkombination wechslen, was leider nicht funktioniert, wenn eine VirtualBox-VM den Fokus hat. Dabei wäre es so schön, wenn man auf einem virtuellen Desktop eine VM im Vollbildmodus hätte und man bequem zwischen Host und Gast wechseln könnte.

Da ich leider keine VBox-Einstellung oder irgendeinen einfachen Trick gefunden habe, um dieses Verhalten zu ändern, habe ich eine vielleicht etwas primitive aber einfache Lösung gefunden.

Ein kleines Tool, welches auf dem Host läuft und per Socket einfache Befehle wie “down” oder “up” entgegen nimmt und daraufhin den virtuellen Desktop wechselt. Im Gast-System muss man noch die dortigen Tastenkombinationen für das wechseln des virtuellen Desktops so ändern, dass stattdessen an den Host diese Befehle gesendet werden.

Hier gibt es das Programm, welches auf dem Host laufen muss. Dieses lauscht auf Port 9302 und nimmt die Befehle “up”, “down”, “left” und “right” an, wobei “left” und “right” aktuell das gleiche machen wie “up” und “down”. Außerdem gibt es noch keine Konfigurationsmöglichkeiten oder Sicherheitsmechanismen.

Im Gastsystem erstellt man dann passende Scripte wie dieses hier:

#!/bin/sh
echo "up" | nc host 9302

Diese Scripte müssen dann nur noch per Tastenkombination ausgeführt werden.

Das ganze ist noch etwas primitiv, aber Verbesserungen sind geplant. Fortsetzung folgt (irgendwann).

Autor: Olaf | 0 Kommentare | Tags: x11, virtualbox, c

Linkdump

2017-12-07 19:41:10.0
Autor: Olaf | 0 Kommentare | Tags: links, unix, x11, history

Gnome Dark-Theme-Fenster ohne GTK

2016-12-17 21:48:20.0

Gnome 3 hat das nette Feature, dass ein GTK-Theme eine light und eine dark Variante hat, und einzelne GTK-Anwendungen können sich aussuchen, welche Theme-Variante sie nutzen wollen. Nutzt eine Anwendung jedoch nicht GTK, so gibt es trotzdem eine Möglichkeit zumindestens einen dunklen Fenster-Rahmen zu erhalten.

Welche Farbe ein Fenster hat, hängt nur von einer X-Property ab. Starten wir einfach mal xprop und klicken auf ein dark-theme-Fenster, dann gibt das Programm alle Properties aus. Darunter findet sich dann auch diese Zeile:

_GTK_THEME_VARIANT(UTF8_STRING) = "dark"

Man kann mit xprop auch Properties setzen:

xprop -f _GTK_THEME_VARIANT 8u -set _GTK_THEME_VARIANT "dark" 

Klickt man dann auf ein Fenster, müsste seine Titelleiste das dark theme nutzen.

Um das gleiche in C mit der xlib zu machen, reicht folgender Code:

void set_dark_theme(Display *dp, Window window) {
    Atom atom = XInternAtom(dp, "_GTK_THEME_VARIANT", False);
    Atom type = XInternAtom(dp, "UTF8_STRING", False);
    XChangeProperty(
            dp, 
            window, 
            atom,
            type,
            8,
            PropModeReplace,
            (const unsigned char*)"dark",
            4);
}
Autor: Olaf | 0 Kommentare | Tags: x11, gnome, c

Standardausgabe in die Zwischenablage umleiten mit xclip

2016-02-16 16:52:00.0

Mit xclip kann man von der Kommandozeile aus mit der X11-Zwischenablage interagieren. Das Tool kann seine Eingabe von stdin in die Zwischenablage speichern oder die Zwischenablage auf stdout ausgeben.

Folgendes Beispiel speichert die Ausgabe von ls in der Zwischenablage

ls | xclip -selection clipboard

Die Zwischenablage auf stdout ausgeben kann man mit

xclip -selection clipboard -o
Autor: Olaf | 0 Kommentare | Tags: x11, linux, unix
Weiter