{"id":55206,"date":"2020-01-15T00:00:00","date_gmt":"2020-01-14T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/alternativnoe-upravlenie-oknami-v-linux"},"modified":"2020-02-18T14:03:18","modified_gmt":"2020-02-18T11:03:18","slug":"alternativnoe-upravlenie-oknami-v-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","title":{"rendered":"Alternative Fensterverwaltung in Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ich geh\u00f6re zu denjenigen, die die Caps Lock-Taste f\u00fcr den Wechsel der Tastaturbelegung nutzen, weil es mir zu m\u00fchsam ist, zwei Tasten zu dr\u00fccken, wenn ich nur eine dr\u00fccken kann. Ich h\u00e4tte sogar gerne zwei \u00fcberfl\u00fcssige Tasten: Eine w\u00fcrde ich zum Aktivieren der englischen Tastaturbelegung nutzen, und die andere f\u00fcr die russische. Aber die zweite \u00fcberfl\u00fcssige Taste ist die f\u00fcr das Kontextmen\u00fc, die so \u00fcberfl\u00fcssig ist, dass viele Laptop-Hersteller sie entfernen. Daher muss ich mit dem zufrieden sein, was vorhanden ist. <\/p>\n<p><\/p>\n<p>Au\u00dferdem m\u00f6chte ich beim Wechseln zwischen Fenstern nicht deren Symbole in der Taskleiste suchen oder die Titel beim Scrollen durch <em>Alt+Tab<\/em>, durch die Arbeitsfl\u00e4chen bl\u00e4ttern usw. Ich m\u00f6chte eine Tastenkombination dr\u00fccken (idealerweise sogar nur eine, aber es gibt keine freien \u00fcberfl\u00fcssigen Tasten mehr) und sofort in das Fenster gelangen, das ich brauche. Zum Beispiel so:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: Firefox<\/li>\n<li>Alt+D: Firefox (Privater Modus)<\/li>\n<li>Alt+T: Terminal<\/li>\n<li>Alt+M: Rechner<\/li>\n<li>Alt+E: IntelliJ Idea<\/li>\n<li>usw.<\/li>\n<\/ul>\n<p><\/p>\n<p>Au\u00dferdem m\u00f6chte ich, wenn ich zum Beispiel auf <em>Alt+M<\/em> dr\u00fccke, den Rechner sehen, unabh\u00e4ngig davon, ob dieses Programm momentan ge\u00f6ffnet ist oder nicht. Wenn es ge\u00f6ffnet ist, soll das Fenster den Fokus erhalten, und wenn nicht, das ben\u00f6tigte Programm gestartet werden und der Fokus \u00fcbergeben werden, sobald es geladen ist.<\/p>\n<p><\/p>\n<p>F\u00fcr F\u00e4lle, die von dem vorhergehenden Szenario nicht abgedeckt sind, m\u00f6chte ich universelle Tastenkombinationen haben, denen beliebige der offenen Fenster einfach zugewiesen werden k\u00f6nnen. Beispielsweise habe ich 10 Kombinationen von <em>Alt+1<\/em> bis <em>Alt+0<\/em>, die keiner bestimmten Anwendung zugeordnet sind. Ich kann einfach dr\u00fccken <em>Alt+1<\/em> und das Fenster, das gerade im Fokus ist, erh\u00e4lt den Fokus, wenn ich dr\u00fccke. <em>Alt+1<\/em>.<\/p>\n<p><\/p>\n<p>Im Folgenden ist die Beschreibung noch einiger Funktionen und eine Antwort darauf, wie man das machen kann. Aber ich warne gleich, dass eine solche Anpassung 'auf sich selbst' eine starke Abh\u00e4ngigkeit verursachen und sogar Entzugserscheinungen hervorrufen kann, wenn man Windows, Mac OS oder sogar einen fremden Computer mit Linux verwenden muss.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Wenn man ehrlich nachdenkt, verwenden wir im Alltag nicht so viele Programme. Browser, Terminal, IDE, ein gewisser Messenger, Dateimanager, Rechner und das war's dann auch schon. Man braucht nicht viele Tastenkombinationen, um 95% der t\u00e4glichen Aufgaben abzudecken.<\/p>\n<p><\/p>\n<p>F\u00fcr Programme, bei denen mehrere Fenster ge\u00f6ffnet sind, kann eines davon als Hauptfenster festgelegt werden. Beispielsweise sind mehrere Fenster von IntelliJ Idea ge\u00f6ffnet, die auf <em>Alt+E<\/em>gesetzt sind. Unter normalen Bedingungen wird beim Dr\u00fccken von <em>Alt+E<\/em> ein Fenster dieses Programms ge\u00f6ffnet, h\u00f6chstwahrscheinlich das, das zuerst ge\u00f6ffnet wurde. Wenn man jedoch auf dr\u00fcckt, <em>Alt+E<\/em> Wenn eines der Fenster dieses Programms den Fokus hat, wird genau dieses Fenster als Hauptfenster festgelegt, und der Fokus wird bei nachfolgenden Tastenkombinationen an dieses Fenster weitergegeben. <\/p>\n<p><\/p>\n<p>Das Hauptfenster kann neu zugewiesen werden. Dazu muss die Kombination zuerst zur\u00fcckgesetzt werden, und dann kann ein anderes Fenster als neues Hauptfenster zugewiesen werden. Um die Kombination zur\u00fcckzusetzen, dr\u00fccken Sie die Kombination selbst und dann eine spezielle Reset-Kombination, bei mir ist sie zugewiesen auf <em>Alt+Backspace<\/em>. Dies ruft ein Skript auf, das die Zuweisung des Hauptfensters f\u00fcr die vorherige Kombination aufhebt. Anschlie\u00dfend kann ein neues Hauptfenster gem\u00e4\u00df den Anweisungen im vorherigen Absatz zugewiesen werden. Das Zur\u00fccksetzen des zugewiesenen Fensters auf universelle Kombinationen erfolgt auf \u00e4hnliche Weise.<\/p>\n<p><\/p>\n<p>Die Einleitung ist lang geworden, aber ich wollte zun\u00e4chst erkl\u00e4ren, was wir tun werden, und dann erl\u00e4utern, wie es gemacht wird.<\/p>\n<p><\/p>\n<h2 id=\"dlya-teh-komu-nadoelo-chitat\">F\u00fcr diejenigen, die das Lesen satt haben<\/h2>\n<p><\/p>\n<p>Kurz gesagt, der Link zu den Skripten befindet sich am Ende des Artikels.<\/p>\n<p><\/p>\n<p>Aber trotzdem wird es nicht sofort m\u00f6glich sein, es einzurichten und zu verwenden. Zuerst muss man herausfinden, wie das Skript das richtige Fenster findet. Ohne das wird es nicht m\u00f6glich sein, dem Skript anzugeben, wohin der Fokus genau gegeben werden soll. Und es muss verstanden werden, was zu tun ist, falls kein passendes Fenster gefunden wird.<\/p>\n<p><\/p>\n<p>Ich werde auch nicht darauf eingehen, wie man die Ausf\u00fchrung von Skripten durch Tastenkombinationen einrichtet. Zum Beispiel in KDE unter Systemeinstellungen \u2192 Tastenkombinationen \u2192 Benutzerdefinierte Tastenkombinationen. In anderen Fenstermanagern sollte das \u00e4hnlich sein.<\/p>\n<p><\/p>\n<h2 id=\"znakomstvo-s-wmctrl\">Einf\u00fchrung in wmctrl<\/h2>\n<p><\/p>\n<p><em>Wmctrl<\/em> ist ein Konsolendienstprogramm zur Interaktion mit dem X Window Manager. Es ist das Schl\u00fcsselprogramm f\u00fcr das Skript. Lassen Sie uns schnell einen Blick darauf werfen, wie man es verwenden kann.<\/p>\n<p><\/p>\n<p>Zun\u00e4chst zeigen wir eine Liste der ge\u00f6ffneten Fenster an:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -lx\n0x01e0000e -1 plasmashell.plasmashell             N\/A Desktop \u2014 Plasma\n0x01e0001e -1 plasmashell.plasmashell             N\/A Plasma\n0x03a00001  0 skype.Skype                         N\/A Skype\n0x04400003  0 Navigator.Firefox                   N\/A Google \u00dcbersetzer - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Beste Ver\u00f6ffentlichungen des Tages \/ Habr - Mozilla Firefox (Privates Surfen)\n...<\/code><\/pre>\n<p><\/p>\n<p>Option <em>-l<\/em> zeigt eine Liste aller ge\u00f6ffneten Fenster an, und <em>-x<\/em> f\u00fcgt der Ausgabe den Klassennamen hinzu (<em>skype.Skype<\/em>, <em>Navigator.Firefox<\/em> usw.). Wir ben\u00f6tigen hier die Fenster-ID (Spalte 1), den Klassennamen (Spalte 3) und den Fenstertitel (letzte Spalte).<\/p>\n<p><\/p>\n<p>Sie k\u00f6nnen versuchen, ein Fenster mit der Option zu aktivieren <em>-a<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -a skype.Skype -x<\/code><\/pre>\n<p><\/p>\n<p>Wenn alles nach Plan l\u00e4uft, sollte das Skype-Fenster auf dem Bildschirm erscheinen. Wenn anstelle der Option <em>-x<\/em> die Option verwendet werden <em>-i<\/em>, statt des Klassennamens kann die ID des Fensters angegeben werden. Das Problem mit der ID ist, dass sie sich bei jedem Start der Anwendung \u00e4ndert und wir sie im Voraus nicht wissen k\u00f6nnen. Andererseits weist dieses Attribut eindeutig auf das Fenster hin, was wichtig sein kann, wenn die Anwendung mehr als ein Fenster \u00f6ffnet. Dazu sp\u00e4ter mehr.<\/p>\n<p><\/p>\n<p>An dieser Stelle m\u00fcssen wir uns merken, dass wir das ben\u00f6tigte Fenster mit einem Regex aus der Ausgabe suchen werden. <em>wmctrl -lx<\/em>. Aber das bedeutet nicht, dass wir unbedingt etwas Komplexes verwenden m\u00fcssen. In der Regel reicht der Klassenname oder der Fenstertitel aus. <\/p>\n<p><\/p>\n<p>Grunds\u00e4tzlich sollte die Hauptidee bereits klar sein. In den Einstellungen f\u00fcr globale Hotkeys\/Tastenkombinationen Ihres Fenster-Managers konfigurieren wir die ben\u00f6tigte Kombination zum Ausf\u00fchren des Skripts.<\/p>\n<p><\/p>\n<h2 id=\"kak-polzovatsya-skriptami\">Wie man Skripte nutzt<\/h2>\n<p><\/p>\n<p>Zuerst m\u00fcssen Sie die Konsolenwerkzeuge installieren <em>wmctrl<\/em> und <em>xdotool<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ sudo apt-get install wmctrl xdotool<\/code><\/pre>\n<p><\/p>\n<p>Dann m\u00fcssen die Skripte heruntergeladen und hinzugef\u00fcgt werden in <em>$PATH<\/em>. Ich lege sie normalerweise in <em>~\/bin<\/em>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ cd ~\/bin\n$ git clone https:\/\/github.com\/masyamandev\/Showwin-script.git\n$ ln -s .\/Showwin-script\/showwin showwin\n$ ln -s .\/Showwin-script\/showwinDetach showwinDetach<\/code><\/pre>\n<p><\/p>\n<p>Wenn das Verzeichnis <em>~\/bin<\/em> nicht existierte, muss es erstellt werden und man muss sich neu anmelde (oder neu einloggen), sonst <em>~\/bin<\/em> wird es nicht in <em>$PATH<\/em>. Wenn alles richtig gemacht wurde, sollten die Skripte aus der Konsole verf\u00fcgbar sein und die Tab-Vervollst\u00e4ndigung sollte funktionieren.<\/p>\n<p><\/p>\n<p>Das Hauptskript <strong>showwin<\/strong> nimmt 2 Parameter an: der erste ist das Regex, mit dem wir das ben\u00f6tigte Fenster suchen, und der zweite Parameter ist der Befehl, der ausgef\u00fchrt werden soll, wenn das gew\u00fcnschte Fenster nicht gefunden wurde. <\/p>\n<p><\/p>\n<p>Sie k\u00f6nnen versuchen, das Skript auszuf\u00fchren, zum Beispiel:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ showwin \"Mozilla Firefox$\" firefox<\/code><\/pre>\n<p><\/p>\n<p>Wenn Firefox installiert ist, sollte der Fokus auf sein Fenster gesetzt werden. Sogar wenn Firefox nicht gestartet wurde, sollte es jetzt gestartet werden.<\/p>\n<p><\/p>\n<p>Wenn es funktioniert hat, k\u00f6nnen Sie versuchen, die Ausf\u00fchrung von Befehlen auf Tastenkombinationen einzustellen. In den Einstellungen f\u00fcr globale Hotkeys\/Tastenkombinationen f\u00fcgen wir hinzu:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+F: showwin \u00abMozilla Firefox$\u00bb firefox<\/li>\n<li>Alt+D: showwin \u00abMozilla Firefox (Privater Modus)$\u00bb \u00abfirefox -private-window\u00bb<\/li>\n<li>Alt+C: showwin \u00abchromium-browser.Chromium-browser N*\u00bb chromium-browser<\/li>\n<li>Alt+X: showwin \u00abchromium-browser.Chromium-browser I*\u00bb \u00abchromium-browser -incognito\u00bb<\/li>\n<li>Alt+S: showwin \u00abskype.Skype\u00bb skypeforlinux<\/li>\n<li>Alt+E: showwin \u00abjetbrains-idea\u00bb idea.sh<\/li>\n<\/ul>\n<p><\/p>\n<p>Und so weiter. Jeder kann Tastenkombinationen und Software nach seinen W\u00fcnschen einstellen.<br \/>\nWenn alles richtig gemacht wurde, k\u00f6nnen wir mit den oben angegebenen Kombinationen einfach zwischen Fenstern wechseln.<\/p>\n<p><\/p>\n<p>Ich entt\u00e4usche die Liebhaber von Chrome: Normale Fenster sind von einem Inkognito-Fenster anhand der Ausgabe nicht zu unterscheiden. <em>wmctrl<\/em> Das ist nicht m\u00f6glich, da sie die gleichen Klassennamen und Fenstertitel haben. Die vorgeschlagenen Regex-Zeichen N* und I* sind nur erforderlich, damit sich diese regul\u00e4ren Ausdr\u00fccke voneinander unterscheiden und verschiedenen Fenstern als Hauptschnittstelle zugeordnet werden k\u00f6nnen.<\/p>\n<p><\/p>\n<p>Um das Hauptfenster der vorherigen Kombination zur\u00fcckzusetzen (tats\u00e4chlich f\u00fcr den Regex, der <strong>showwin<\/strong> zum letzten Mal aufgerufen wurde), muss das Skript <strong>showwinDetach<\/strong>aufgerufen werden. Ich habe dieses Skript einer Tastenkombination zugeordnet. <em>Alt+Backspace<\/em>. <\/p>\n<p><\/p>\n<p>Das Skript <strong>showwin<\/strong> hat eine weitere Funktion. Wenn es mit einem Parameter (in diesem Fall ist der Parameter einfach eine ID) aufgerufen wird, \u00fcberpr\u00fcft es die Regex \u00fcberhaupt nicht, sondern betrachtet alle Fenster als passend. Das wirkt auf den ersten Blick nutzlos, aber auf diese Weise k\u00f6nnen wir jedes Fenster als Hauptfenster zuordnen und schnell zu genau diesem Fenster wechseln.<\/p>\n<p><\/p>\n<p>Ich habe folgende Kombinationen eingerichtet:<\/p>\n<p><\/p>\n<ul>\n<li>Alt+1: showwin \u00abCustomKey1\u00bb<\/li>\n<li>Alt+2: showwin \u00abCustomKey2\u00bb<\/li>\n<li>\u2026<\/li>\n<li>Alt+0: showwin \u00abCustomKey0\u00bb<\/li>\n<li>Alt+Backspace: showwinDetach<\/li>\n<\/ul>\n<p><\/p>\n<p>So kann ich beliebige Fenster Kombinationen zuordnen. <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>Einfach durch Dr\u00fccken von <em>Alt+1<\/em> ordne ich das aktuelle Fenster dieser Kombination zu. Ich kann die Zuordnung mit dem Dr\u00fccken von <em>Alt+1<\/em>, und dann auf <em>Alt+Backspace<\/em>widersprechen. Oder das Fenster schlie\u00dfen, auch das funktioniert.<\/p>\n<p><\/p>\n<p>Nun m\u00f6chte ich ein paar technische Details erl\u00e4utern. Man muss sie nicht lesen, sondern kann einfach versuchen, sie einzurichten und sich die Ergebnisse anzusehen. Ich empfehle jedoch trotzdem, sich mit fremden Skripten vertraut zu machen, bevor man sie auf seinem Computer ausf\u00fchrt. :)<\/p>\n<p><\/p>\n<h2 id=\"kak-razlichat-raznye-okna-odnogo-prilozheniya\">Wie man verschiedene Fenster derselben Anwendung unterscheidet<\/h2>\n<p><\/p>\n<p>Im Prinzip war das erste Beispiel \u201ewmctrl -a skype.Skype -x\u201c funktional und kann genutzt werden. Aber schauen wir uns noch einmal das Beispiel mit Firefox an, in dem 2 Fenster ge\u00f6ffnet sind:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">0x04400003  0 Navigator.Firefox                   N\/A Google Translate - Mozilla Firefox\n0x04400218  0 Navigator.Firefox                   N\/A Die besten Beitr\u00e4ge des Tages \/ Habr - Mozilla Firefox (Privates Browsen)<\/code><\/pre>\n<p><\/p>\n<p>Das erste Fenster ist im Normalmodus, das zweite im Privaten Browsen. Diese Fenster w\u00fcrden wir gerne als verschiedene Anwendungen betrachten und zwischen ihnen mit unterschiedlichen Tastenkombinationen wechseln. <\/p>\n<p><\/p>\n<p>Das Skript zum Wechseln der Fenster muss komplizierter werden. Ich habe folgende L\u00f6sung verwendet: eine Liste aller Fenster ausgeben, eine <em>grep<\/em> Regex anwenden, die erste Zeile mit Hilfe von <em>head<\/em>entnehmen, die erste Spalte (das wird die ID des Fensters sein) mit Hilfe von <em>cut<\/em>entnehmen und dann auf das Fenster anhand der ID wechseln.<\/p>\n<p><\/p>\n<p>Es sollte einen Witz \u00fcber regul\u00e4re Ausdr\u00fccke und zwei Probleme geben, aber tats\u00e4chlich verwende ich nichts Kompliziertes. Regul\u00e4re Ausdr\u00fccke ben\u00f6tige ich, um das Ende einer Zeile anzugeben (Symbol \u201e$\u201c) und um \u201eMozilla Firefox$\u201c von \u201eMozilla Firefox (Privates Browsen)$\u201c zu unterscheiden.<\/p>\n<p><\/p>\n<p>Das Team sieht ungef\u00e4hr so aus:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ wmctrl -i -a `wmctrl -lx | grep -i \"Mozilla Firefox$\" | head -1 | cut -d\" \" -f1`<\/code><\/pre>\n<p><\/p>\n<p>Hier kann man bereits \u00fcber die zweite Besonderheit des Skripts spekulieren: Wenn grep nichts ausgegeben hat, bedeutet das, dass die ben\u00f6tigte Anwendung nicht ge\u00f6ffnet ist und sie \u00fcber den Befehl im zweiten Parameter gestartet werden muss. Danach sollte regelm\u00e4\u00dfig \u00fcberpr\u00fcft werden, ob das ben\u00f6tigte Fenster ge\u00f6ffnet wurde, um ihm den Fokus zu geben. Ich werde nicht weiter darauf eingehen; wer es braucht, kann sich den Quellcode ansehen.<\/p>\n<p><\/p>\n<h2 id=\"kogda-okna-prilozheniya-ne-razlichimy\">Wenn die Fenster der Anwendung nicht unterscheidbar sind<\/h2>\n<p><\/p>\n<p>Also, wir haben gelernt, wie man den Fokus auf das Fenster der ben\u00f6tigten Anwendung \u00fcbertr\u00e4gt. Aber was, wenn mehr als ein Fenster der Anwendung ge\u00f6ffnet ist? Welchem von diesen soll der Fokus \u00fcbertragen werden? Das obige Skript wird wahrscheinlich an das erste ge\u00f6ffnete Fenster weitergeben. Wir w\u00fcrden jedoch mehr Flexibilit\u00e4t w\u00fcnschen. Es w\u00e4re sch\u00f6n, sich zu merken, welches Fenster genau wir brauchen, und zu diesem Fenster zu wechseln.<\/p>\n<p><\/p>\n<p>Die Idee war folgende: Wenn wir f\u00fcr eine Tastenkombination ein bestimmtes Fenster merken m\u00f6chten, m\u00fcssen wir diese Kombination dr\u00fccken, w\u00e4hrend das ben\u00f6tigte Fenster den Fokus hat. Bei sp\u00e4terem Dr\u00fccken dieser Kombination wird der Fokus genau auf dieses Fenster \u00fcbertragen. Solange das Fenster nicht geschlossen wird oder wir diese Kombination im Skript zur\u00fccksetzen. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<p>Der Algorithmus des Skripts <strong>showwin<\/strong> sieht ungef\u00e4hr so aus:<\/p>\n<p><\/p>\n<ul>\n<li>Pr\u00fcfen, ob wir zuvor die ID des Fensters, dem wir den Fokus geben wollen, gespeichert haben.<br \/>\nWenn wir es gespeichert haben und dieses Fenster immer noch existiert, geben wir ihm den Fokus und beenden. <\/li>\n<li>Wir sehen uns an, welches Fenster gerade im Fokus ist, und wenn es unseren Anforderungen entspricht, merken wir uns seine ID f\u00fcr den sp\u00e4teren Zugriff und beenden.<\/li>\n<li>Wir wechseln zu einem beliebigen passenden Fenster, falls es existiert, oder \u00f6ffnen die ben\u00f6tigte Anwendung.<\/li>\n<\/ul>\n<p><\/p>\n<p>Um herauszufinden, welches Fenster gerade im Fokus ist, kann man das Konsolenprogramm xdotool verwenden und dessen Ausgabe in das hexadezimale Format umwandeln:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ printf \"0xx\" `xdotool getwindowfocus`<\/code><\/pre>\n<p><\/p>\n<p>Etwas in bash zu speichern, ist am einfachsten, indem man Dateien im virtuellen Dateisystem in den Speicher erstellt. In Ubuntu ist solch ein Dateisystem standardm\u00e4\u00dfig angeschlossen <em>\/dev\/shm\/<\/em>. Ich kann nichts \u00fcber andere Distributionen sagen, ich hoffe, etwas \u00c4hnliches gibt es auch dort. Man kann dies mit dem Befehl \u00fcberpr\u00fcfen:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$ mount -l | grep tmpfs<\/code><\/pre>\n<p><\/p>\n<p>Das Skript wird in diesem Ordner leere Verzeichnisse erstellen, wie diese: <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX\/$WINDOW_ID<\/em>. Zus\u00e4tzlich wird es bei jedem Aufruf einen Symlink erstellen <em>\/dev\/shm\/$USER\/showwin\/showwin_last<\/em> auf <em>\/dev\/shm\/$USER\/showwin\/$SEARCH_REGEX<\/em>. Dies wird ben\u00f6tigt, um bei Bedarf die Fenster-ID f\u00fcr eine bestimmte Kombination mit Hilfe des Skripts zu l\u00f6schen. <strong>showwinDetach<\/strong>.<\/p>\n<p><\/p>\n<h2 id=\"chto-mozhno-uluchshit\">Was verbessert werden k\u00f6nnte<\/h2>\n<p><\/p>\n<p>Zun\u00e4chst m\u00fcssen die Skripte manuell konfiguriert werden. Wahrscheinlich werden viele von euch aufgrund der Notwendigkeit, sich einzuarbeiten und viel manuell zu erledigen, nicht einmal versuchen, das System zu konfigurieren. W\u00e4re es m\u00f6glich, einfach ein Paket zu installieren und alles einfacher zu konfigurieren, k\u00f6nnte es m\u00f6glicherweise an Beliebtheit gewinnen. Vielleicht w\u00fcrde die Anwendung sogar in die Standarddistributionen integriert.<\/p>\n<p><\/p>\n<p>Und m\u00f6glicherweise k\u00f6nnte man es einfacher gestalten. Wenn man durch die ID des Fensters die ID des Prozesses, der es erstellt hat, ermitteln kann, und durch die ID des Prozesses herausfinden kann, welcher Befehl ihn erstellt hat, k\u00f6nnte man die Konfiguration automatisieren. Tats\u00e4chlich habe ich mich nicht damit besch\u00e4ftigt, ob das, was ich in diesem Absatz geschrieben habe, m\u00f6glich ist. Fakt ist, dass ich pers\u00f6nlich mit der aktuellen Funktionsweise zufrieden bin. Aber wenn jemand anderes den Ansatz als praktisch empfindet und es verbessert, werde ich gerne die bessere L\u00f6sung nutzen.<\/p>\n<p><\/p>\n<p>Ein weiteres Problem, wie ich bereits erw\u00e4hnt habe, besteht darin, dass man in einigen F\u00e4llen Fenster nicht voneinander unterscheiden kann. Ich habe das bisher nur bei Incognito in Chrome\/Chromium beobachtet, aber vielleicht gibt es so etwas auch anderswo. Im Extremfall gibt es immer die M\u00f6glichkeit universeller Kombinationen. <em>Alt+1<\/em>\u2026<em>Alt+0<\/em>Ich benutze \u00fcbrigens Firefox und f\u00fcr mich pers\u00f6nlich ist dieses Problem nicht wesentlich.<\/p>\n<p><\/p>\n<p>Ein wesentliches Problem f\u00fcr mich ist jedoch, dass ich beruflich Mac OS verwende und ich dort nichts \u00c4hnliches konfigurieren konnte. Das Tool <em>wmctrl<\/em> konnte ich anscheinend installieren, aber es funktioniert auf Mac OS nicht richtig. Man kann etwas mit der Anwendung <em>Automator<\/em>, aber es l\u00e4uft so langsam, dass es selbst dann unangenehm zu bedienen ist, wenn es funktioniert. Ich konnte auch die Tastenkombinationen nicht so einstellen, dass sie in allen Programmen funktionieren. Falls jemand eine L\u00f6sung findet - ich w\u00fcrde mich freuen, sie zu benutzen.<\/p>\n<p><\/p>\n<h2 id=\"vmesto-zaklyucheniya\">Zum Abschluss<\/h2>\n<p><\/p>\n<p>Es sind unerwartet viele Worte f\u00fcr eine scheinbar einfache Funktionalit\u00e4t geworden. Ich wollte die Idee vermitteln und den Text nicht \u00fcberladen, aber ich habe noch nicht herausgefunden, wie ich es einfacher erz\u00e4hlen kann. Vielleicht w\u00e4re es im Videoformat besser, aber das wird hier nicht gerne gesehen.<\/p>\n<p><\/p>\n<p>Ich habe ein wenig dar\u00fcber erz\u00e4hlt, was unter der Haube des Skripts steckt und wie man es konfiguriert. Ich bin nicht auf die Einzelheiten des Skripts eingegangen, aber es sind nur 50 Zeilen, und es ist nicht schwer, sich einzuarbeiten. <\/p>\n<p><\/p>\n<p>Ich hoffe, dass jemand diese Idee ausprobiert und sie vielleicht sogar sch\u00e4tzt. F\u00fcr mich kann ich sagen, dass das Skript vor etwa 3 Jahren geschrieben wurde und ich damit SEHR zufrieden bin. So zufrieden, dass es beim Arbeiten an fremden Computern ernsthafte Unannehmlichkeiten verursacht. Und mit meinem Arbeits-MacBook. <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/masyamandev\/Showwin-script\">Link zu den Skripten<\/a><\/noindex><\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483846\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443. \u042f \u0431\u044b \u0434\u0430\u0436\u0435 \u0445\u043e\u0442\u0435\u043b 2 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: \u043e\u0434\u043d\u0443 \u0431\u044b \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438, \u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u0434\u043b\u044f \u0440\u0443\u0441\u0441\u043a\u043e\u0439. \u041d\u043e \u0432\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u2014 \u044d\u0442\u043e \u0432\u044b\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043d\u0443\u0436\u043d\u0430\u044f, \u0447\u0442\u043e \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55206","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430\u043c\u0438 \u0432 Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-14T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:18+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Alternatives Fenster-Management in Linux | ProHoster","description":"Ich geh\u00f6re zu den Leuten, die den Caps Lock f\u00fcrs Umschalten der Eingabeklasse verwenden, weil ich zu faul bin, 2 Tasten zu dr\u00fccken, wenn ich nur eine dr\u00fccken kann.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u043a\u043d\u0430\u043c\u0438 \u0432 Linux | ProHoster","og:description":"\u042f \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u0430\u0432\u0438\u0442 \u043d\u0430 Caps Lock \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043b\u0435\u043d\u044c \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c 2 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c \u043e\u0434\u043d\u0443.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/alternativnoe-upravlenie-oknami-v-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-14T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55206","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:48:29","updated":"2022-09-30 14:18:59","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=55206"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55206\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=55206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=55206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=55206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}