UNIXwork

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

Persistente Remote-X11-Anwendungen mit Xpra

2015-01-25 18:10:00.0

Dass man X11-Anwendungen auch remote per ssh ausführen kann dürfte allseits bekannt sein. Die Anwendung ist dann allerdings an die ssh-Sitzung gebunden. Wird diese terminiert, wird auch die Anwendung beendet. Mit dem Tool Xpra (X Persistent Remote Applications) kann man jedoch auch Anwendungen Remote starten und dann nahtlos auf andere Computer bzw Displays übertragen oder die lokale Sitzung unterbrechen und später wieder aufnehmen.

Die Bedienung ist denkbar einfach. Zuerst muss nur die Anwendung auf dem Server gestartet werden:

xpra start ssh:user@server:100 --start-child=gedit

Dieser Befehl baut eine Verbindung zum Server auf und startet die gewünschte Anwendung, die nach dem Login auch gleich auf dem Client angezeigt wird. Die Zahl 100 steht für das Display ist frei wählbar. Wichtig dabei ist, dass man jedes Display nur für eine Anwendung benutzen kann. Möchte man mehrere Anwendungen starten, wählt man einfach eine andere Displaynummer.

Der lokale xpra-Prozess kann einfach beendet werden und die Anwendung läuft auf dem Server weiter. Möchte man später die Verbindung wieder herstellen, egal ob vom gleichen Computer oder einem anderen, geht das auch sehr einfach:

xpra attach ssh:user@server:100

Auf dem Server kann man sich mit xpra list eine Liste aller Sitzungen anzeigen lassen und mit xpra stop :100 ein Display und damit auch die Anwendung wieder stoppen.

Autor: Olaf | 0 Kommentare | Tags: x11, linux, unix