Hallo
Gibt es hier jemanden, der Lust und genug Kenntnisse hat, um mit mir ein Tiling-Windows-Placement-Metacity-Dingens zu entwickeln?
(Python, da ich dann wenigstens rudimentär zur Programmierung beitragen kann).
Bitte PN oder hier melden
Danke Z
Anmeldungsdatum: Beiträge: 65 |
Hallo Gibt es hier jemanden, der Lust und genug Kenntnisse hat, um mit mir ein Tiling-Windows-Placement-Metacity-Dingens zu entwickeln? (Python, da ich dann wenigstens rudimentär zur Programmierung beitragen kann). Bitte PN oder hier melden Danke Z |
||||
Anmeldungsdatum: Beiträge: 350 |
Hallo, ich vermute mal, du willst einen Window Manager, der die Features von Metacity und Tiling beherrscht. Rein zufällig arbeite ich bei samurai-x mit, das ist ein sich im Aufbau befindlicher sehr erweiterbarer Window Manager auf Pythonbasis (während sich die Version im Repo aber grundsätzlich von dem Release 0.1 unterscheidet, weil wir seit 0.1 das Hauptziel der Erweiterbarkeit haben 😉. Gestern habe ich auch ein (experimentelles, aber immerhin funktionierts grundsätzlich) Tiling-Plugin committet (sx-tiling nennt sich das). Samurai-x hat noch nicht alle Features von Metacity (insbesondere beim Fokus und bei den Fensterdekorationen fehlt da noch einiges), und auch nicht alle von anderen Tiling-WMs, aber das kann ja noch werden. Grundsätzlich benutzbar ist er jetzt aber schon.
Um samurai-x auszuprobieren, müsstest du im Grunde einfach das git-Repository auschecken und die Packages innerhalb von Also - falls du es mal ausprobieren willst ... Hilfe könnten wir auch noch gebrauchen ☺ Der Vollständigkeit halber: Es gäbe aber auch noch andere Python - Window Manager im Aufbau - zum Beispiel whimsy oder parti. Sorry, falls ich da ein bisschen zu viel Werbung gemacht haben sollte 😉 Gruß, Friedrich |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 65 |
Hallo Erstmal danke für Deine Antwort. Ich habe die Angelegenheit "ein wenig" verkürzt dargestellt. Prinzipiell finde ich das Samurai-x Projekt interessant. Allerdings überfordert mich das sowohl zeitlich als auch in meinen Fähigkeiten. Grundsätzlich reicht mir Metacity. Ich hab mir ein Bash script gebastelt, welches mir meine Fenster je nach Anzahl nach einem bestimmten Muster verteilt. Mit der Zeit kam noch eins dazu, welches das aktive Fenster verkleinert auf die Seite schiebt (je nach Titel an eine bestimmte Stelle/Größe). So langsam komme ich aber an die Grenzen der Bash. - Ich dachte daran Regeln für verschiedene Fenster anlegen (wo sie beim tiling bevorzugt abgelegt werden). g z |
||||
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Ich hatte gehofft, dies über die im anderen Thread angesprochenen Xlib-Bindings für Python zu schaffen. Das heißt: Die Größe bestehender Fenster zu manipulieren, ohne dafür einen eigenen Windowmanager programmieren zu müssen. Ich dachte, man könnte hierfür configure() auf ein bestehendes Fenster anwenden. Leider tut sich beim Aufruf meiner Funktion tile() rein gar nichts - keine Größenänderung, keine Fehlermeldung. ☹ (die Positionierung hätte ich später eingebaut)
Ich poste mal den Code, vielleicht findet sich ja noch Hilfe...
|
||||
Anmeldungsdatum: Beiträge: 350 |
Im Zweifelsfall fehlt da einfach ein Gruß, Fred |
||||
![]() Anmeldungsdatum: Beiträge: 323 Wohnort: Köln |
Auch wenn jetzt schon viele Lösungsansätze vorliegen... Hier mal ein quick&dirty Vorschlag in Perl und libwnck (Window Navigator Construction Kit library):
Installation der nötigen Abhängigkeiten, um das Skript auszuführen:
|
||||
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
flush() hilft mir schon sehr gut weiter. Die Fenster werden jetzt in ihrer Größe angepasst und verschoben. Probleme: - Rechtes Fenster liegt unter linkem statt daneben (habe ich einen Denkfehler oder funktioniert x und y nicht richtig?) - Fenster liegen unter Panels (was klar ist, weil die Bildschirmauflösung das eben auch beinhaltet, wird sich aber wohl lösen lassen) - Rechtes Fenster, wenn man es dann von Hand neben das linke zieht, geht über Bildschrimrand hinaus (warum, weiß ich nicht) - Vollbildfenster werden nicht berührt (muss man halt vorher in "Normalzustand" setzen, sollte auch nicht so schwierig sein) @zhocchao: Wie sieht's denn aus? Besteht Interesse an einem Fenstermanager-unabhängigen Tiler, der direkt mit dem X-Server kommuniziert und dort die Anweisungen zum Fensterverschieben gibt? Ich persönlich will sowas schon länger machen. Bin mir auch gar nicht sicher, ob es sowas schon gibt (also ein Tiler, der kein eigener WM ist). Ich glaube nämlich nicht. Der Ansporn ist aber eben größer, wenn man zwischendurch ein bißchen Feedback kriegt, oder so Leute wie Fred dabei hat, die einem helfen. 😉 Achso, hier noch die aktuelle Funktion. Wenn einer weiß, was ich falsch mach, bitte sagen. 😉
|
||||
Anmeldungsdatum: Beiträge: 350 |
Hallo snafu1, ich glaub, da ist ein kleiner Denkfehler drin. Für mich siehts so aus, als hättest du bei den zwei Configure-Aufrufen beide Male x und y verwechselt ... x ist waagerecht, y ist senkrecht 😉 Fenster vor andere schieben kannst du ebenfalls mit configure (das Argument Übrigens ist durchaus auch das Xlib-Manual der C-Version zu empfehlen, das erklärt nämlich einiges ziemlich gut 😉 Ich habe aber den Eindruck, dass die Lösung per
Gerne 😀 Gruß, Fred |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 65 |
@snafu1 Klar besteht da Interesse, Ich hatte danach gesucht, aber nichts gefunden. Ich hab ja schon geschrieben, was ich mir so gedacht hab. Ich werde mich nach meinen Möglichkeiten beteiligen. Momentan hab ich versucht durch eure Beispiele und Posts durchzusteigen, was mir nicht so gelungen ist. z |
||||
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Ich habe das (noch sehr in seinen Anfängen befindliche) Tiling jetzt als Option -t bzw --tile von der Kommandozeile eingebaut. Einfach vorher alle Fenster auf "wiederhergestellt" setzen und gucken was passiert. ☺
|
||||
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
Romario schrieb:
Sieht natürlich wesentlich einfacher aus, wenn man ein Toolkit benutzt. Allerdings möchte vielleicht nicht jeder User die kompletten Gnome-Bibliotheken samt Abhängigkeiten installieren, nur um seine Fenster teilen zu können. Man denke mal an Xubuntu-, Kubuntu- und User ganz anderer WM's. Okay, Aufgabenstellung des OP's war Metacity. Von daher könnte die Sache auch so gelöst werden. Sie entspricht dann allerdings nicht mehr meinem Vorhaben... 😉 fred.reichbier schrieb:
Welche Nachteile hätte das? Ich hatte vermutet, dass configure() genau dies tät und es daher unnötig wäre, das ganze nochmal selbst zu implementieren. |
||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 65 |
snafu1 schrieb:
Ich hab mal e17 ausprobiert, und hätte es auch weiter verwendet, allerdings konnte ich da mit wmctrl nicht den Desktop ermitteln, mein Bash script hat dort nicht funktioniert und die e17 tiling Option taugt nix. Insofern finde ich persönlich ein unabhängiges Prog vorteilhafter. |
||||
Anmeldungsdatum: Beiträge: 350 |
snafu1: configure sitzt sozusagen eine Ebene tiefer, das ist eine elementare X-Funktion. An fremden Fenster rumzuconfiguren geht anscheinend zwar gut, und der Window Manager sollte das auch verkraften, aber schön ist das nicht unbedingt 😉 Das hier wäre dann sauberer, weil der Window Manager dann entscheiden darf, ob er das tut oder nicht. Andererseits unterstützt _NET_MOVERESIZE_WINDOW vermutlich nicht jeder Window Manager – vielleicht wärs also doch am besten, configure zu nutzen, solange keine Probleme auftauchen 😀 Ich könnte mir vorstellen, dass auch libwnck irgendwo an seine Grenzen stößt ... mit der Xlib ist man zwar etwas mehr low-level, hat aber dafür die größere Kontrolle. Ich hab sowas aber auch noch nicht gemacht, kann ich also nicht mit Sicherheit sagen 😉 Gruß, Fred |
||||
![]() Anmeldungsdatum: Beiträge: 323 Wohnort: Köln |
snafu1 schrieb:
Bei den verwendeten Bibliotheken besteht keine Abhängigkeit zu irgendwelchen Gnome Bibliotheken. Man darf sich hier nicht vom Namen (es ist lediglich Teil des Gnome Projektes) täuschen lassen:
War ja auch nur als Anregung gedacht. |
||||
![]() Anmeldungsdatum: Beiträge: 2133 Wohnort: Gelsenkirchen |
@Romario: Okay, da lag ich falsch. Das sind ja tatsächlich nur ein paar Megabyte (wenn man einige der Abhängigkeiten mitrechnet). Also ich hänge nicht an der X-Lib... Wenn du Lust hast, kannst du das ganze ja noch etwas verfeinern. Ich persönlich will eigentlich nur endlich mal nen Tiler unter Xfce nutzen können. Und der OP hat ja ohnehin für später mal eine Gui in Betracht gezogen, die man dann auch in Gtk machen könnte, wenn man will. Habe dein Skript jetzt mal getestet. Die Probleme mit den Panels bestehen da leider auch. Nun auch wnck für Python getestet: Schien auf dem ersten Blick optimal, da viel einfacher. Dummerweise klappt aber set_geometry() bei mir nicht (im Xlib Skript via configure() aber schon). Die anderen Sachen wie maximize(), get_name() usw funktionieren. Da diese Funktion aber der Kern des Projektes ist, finde ich das etwas ungünstig... 😉 Sofern es in der Hinsicht keine Lösung gibt, würde ich schon lieber bei der Xlib bleiben. Die wichtigen Sachen sind ja auch allmählich implementiert. Normalerweise sollte das nun folgende einfache Mathematik sein. |