webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
Das scheint doch genau das richtige zu sein. Jede Arbeitsfläche hat dann ihr eigenes Script für alle Einstellungen. Die Anzahl Arbeitsflächen kann leicht erweitert werden. Ich weiss jetzt nur noch nicht genau wie ich den Ordner für die jeweilige Arbeitsfläche definiere. Übrigens meine Arbeitsfläche ist jezt entgültig weg. Nach drei mal neustarten hab ich jetzt meinen persönlichen Ordner auf dem Screen. Die Arbeitsfläche ist nur noch eine leere symbolische Verknüpfung. Komisch ist dass ich die Daten von der alten Arbeitsfläche nirgens mehr finden kann. Hab das ganze Dateisystem durchsucht.
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
webghost schrieb: Das scheint doch genau das richtige zu sein. Jede Arbeitsfläche hat dann ihr eigenes Script für alle Einstellungen. Die Anzahl Arbeitsflächen kann leicht erweitert werden. Ich weiss jetzt nur noch nicht genau wie ich den Ordner für die jeweilige Arbeitsfläche definiere.
Das Richtige ist es auch nicht. Ich habe mir den Quelltext nochmal genauer angesehen. Das Programm ist doch sehr speziell für die Anwendungsfälle des Entwicklers geschrieben. Damit das erwartungsgemäß funktioniert, müsste man noch etwas Handarbeit investieren.
Übrigens meine Arbeitsfläche ist jezt entgültig weg. Nach drei mal neustarten hab ich jetzt meinen persönlichen Ordner auf dem Screen. Die Arbeitsfläche ist nur noch eine leere symbolische Verknüpfung. Komisch ist dass ich die Daten von der alten Arbeitsfläche nirgens mehr finden kann. Hab das ganze Dateisystem durchsucht.
Das die Dateien deiner ursprünglichen Arbeitsfläche verschwunden sind, könnte daran liegen, dass Justux beim Erstellen der symbolischen Verknüpfung den Parameter --force (-f ) übergeben hat und damit der tatsächliche Ordner mit der Verknüpfung überschrieben wurde. Die Dateien wären damit weg. Was genau bei dir noch durcheinander gekommen ist, weiß ich nicht. Du kannst aber einmal folgenden Lösungsweg versuchen:
rm -r $HOME/Arbeitsfläche
mkdir $HOME/Arbeitsfläche
xdg-user-dirs-update DESKTOP $HOME/Arbeitsfläche
pkill -HUP xfdesktop
Danach sollte xfdesktop wieder normal funktionieren.
|
webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
mrkramps schrieb: Das Richtige ist es auch nicht. Ich habe mir den Quelltext nochmal genauer angesehen. Das Programm ist doch sehr speziell für die Anwendungsfälle des Entwicklers geschrieben. Damit das erwartungsgemäß funktioniert, müsste man noch etwas Handarbeit investieren.
Wenn ich das richtig gesehen habe wird doch je nach Arbeitsfläche ein Script ausgeführt. Somit müsste im ensprechenden Script doch nur noch der richtige Ordner geladen werden. Oder bin ich da falsch?
Was genau bei dir noch durcheinander gekommen ist, weiß ich nicht. Du kannst aber einmal folgenden Lösungsweg versuchen:
rm -r $HOME/Arbeitsfläche
mkdir $HOME/Arbeitsfläche
xdg-user-dirs-update DESKTOP $HOME/Arbeitsfläche
pkill -HUP xfdesktop
Danach sollte xfdesktop wieder normal funktionieren.
xdg-user-dirs-update DESKTOP $HOME/Arbeitsfläche
gibt folgendes zurück "Invalid argument DESKTOP"
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Mein Fehler, entschuldige bitte! Richtig muss der Befehl lauten:
xdg-user-dirs-update --set DESKTOP $HOME/Arbeitsfläche
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
webghost schrieb: Wenn ich das richtig gesehen habe wird doch je nach Arbeitsfläche ein Script ausgeführt. Somit müsste im ensprechenden Script doch nur noch der richtige Ordner geladen werden. Oder bin ich da falsch?
Es ist so implementiert, dass die Arbeitsflächen nach Name nicht nach Nummer identifiziert werden. Außerdem werden nur die Arbeitsflächen 1 bis 4 überhaupt angesprochen. Abgesehen davon, funktioniert das Ausführen der Skripte mit der vorkompilierten Binary nicht und selber Kompilieren geht mit GCC 4.6 unter Ubuntu 12.04 leider auch nicht. Mit GCC 4.4 hat es funktioniert, aber er führt die Skripte dann trotzdem nicht aus. Ich hätte jetzt gerne die notwendigen Programmierkenntnisse in C um das selber zu lösen, aber ich scheitere schon daran eindeutig zwischen C und C++ unterscheiden zu können und einen funktionierenden Weg zu finden int in const char * zu konvertieren.
|
webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
Jetzt hats funktionier - ich hab wieder eine Arbeitsfläch ☺ danke Dir Gut die Arbeitsflächen zu erweitern sollte nicht das Problem sein. Besser wäre natürlich erst die aktuellen Arbeitsflächen abfragen zu können, statt die fix im Code zu definieren. Aber ja, hab halt von C sowieso keine Ahnung. PHP,JS und bisschen Java dann hat sich's bei mir. mal sehen vielleicht ergibt sich noch was..
|
Justux
Anmeldungsdatum: 18. Oktober 2011
Beiträge: 208
|
Ich bin es nochmal. Zuallererst "Entschuldigung!", ich hätte darauf hinweisen sollen, dass der aktuelle Ordner verloren geht. (Abgesehen von dem -f auf das mrkramps schon hinwies, steht auch in der Zeile oben drüber rm -r $HOME/Arbeitsfläche , aber wie gesagt, mein Fehler, da gehört ne Warnung hin. Ich hoffe, es waren keine allzu wichtigen Daten.) Nun habe ich mir ohne C-Kenntnisse, das C-Programm angeschaut und nach ein wenig suchen verstanden, dass das Event "Arbeitsfläche gewechselt" von libwnck kommt. Dieses Modul gibt es auch für Python und so hab ich mich in dieser mir halbwegs vertrauten Sprache versucht. Nachfolgend, was bei rumgekommen ist. Zu beachten ist:
Auch hier löscht es wieder den eigentlichen Desktop-Ordner, um nachfolgend einen Link zum "richtigen" Ordner an dieser Stelle zu platzieren. Also vielleicht erstmal einen Testbenutzer anlegen und da rumspielen. Variablen wie $HOME funktionieren nicht, da das ja von Python und nicht von der bash interpretiert wird. Das Modul libwnck für python heißt python-wnck und muss natürlich installiert sein.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 | #!/usr/bin/env python
# -*- coding: UTF-8 -*-
'''
Program to use different directories for different workspaces
'''
import gtk
import wnck
import os
import sys
import codecs
def main():
sys.stdout = codecs.getwriter('UTF-8')(sys.stdout)
screen = wnck.screen_get_default()
screen.connect("active-workspace-changed", on_active_workspace_changed, None);
gtk.main()
def on_active_workspace_changed(screen, space, pointer):
active_workspace = screen.get_active_workspace()
ws_number = active_workspace.get_number()
set_workspace_dir(ws_number)
def set_workspace_dir(ws_number):
desktop_dir = '/home/USER/Arbeitsfläche'
directories = ['/home/USER/desk_0', '/home/USER/desk_1', '/home/USER/desk_2']
try:
os.rmdir(desktop_dir)
except OSError:
os.remove(desktop_dir)
try:
os.symlink(directories[ws_number], desktop_dir)
except IndexError:
os.symlink(directories[0], desktop_dir)
os.system('xfdesktop --reload')
if __name__ == "__main__":
main()
|
Edit: Wenn Fragen, dann fragen, nicht, dass wieder was schief läuft.
|
mrkramps
Anmeldungsdatum: 10. Oktober 2006
Beiträge: 5523
Wohnort: south central EL
|
Das sieht gut aus. Funktioniert zumindest in meiner Testumgebung erwartungsgemäß. Problem bleibt aber, dass beim schnellen Wechseln durch die Arbeitsflächen das Script mehrfach hintereinander ausgeführt wird. Sinnvoll wäre vielleicht eine Abfrage bevor set_workspace_dir jedes Mal vollständig ausgeführt wird, ob nach einem kurzen Intervall ws_number immernoch aktuell ist. Damit kann man zumindest einige unnötige Aufrufe abfangen. Ich habe mal wegen $HOME im Netz gesucht:
| desktop_dir = os.path.expanduser('~') + '/Arbeitsfläche'
|
Sollte so zumindest unter Linux und Windows funktionieren.
|
webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
Justux schrieb: Ich bin es nochmal. Zuallererst "Entschuldigung!", ich hätte darauf hinweisen sollen, dass der aktuelle Ordner verloren geht. (Abgesehen von dem -f auf das mrkramps schon hinwies, steht auch in der Zeile oben drüber rm -r $HOME/Arbeitsfläche , aber wie gesagt, mein Fehler, da gehört ne Warnung hin. Ich hoffe, es waren keine allzu wichtigen Daten.)
ach kein Problem, war nichts wichtiges - ich hätte mich ja selber mal schlau machen können nun wollte ich Dein Script gleich ausprobieren - hab's in eine Datei gepackt (ws_switch.py) und ausführbar gemacht, dann python-wnck instaliert. Was ist noch zu tun damit es beim Arbeitsflächenwechsel ausgeführt wird?
|
Justux
Anmeldungsdatum: 18. Oktober 2011
Beiträge: 208
|
Wenn du die Pfade entsprechend angepasst hast, starte es am besten in einem Terminal, da siehst du, wenn Fehlermeldungen kommen. Wenn alles funktioniert, wie es soll, einfach in den Autostart damit und es läuft "im Hintergrund". Edit: Es wird halt nicht nur beim Arbeitsflächenwechsel das Skript ausgeführt, sondern es läuft die ganze Zeit und lauscht auf das Event "Arbeitsflächenwechsel" und reagiert dann entsprechend darauf.
|
webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
bekomme folgendes zurück Traceback (most recent call last):
File "/home/yves/Arbeitsfläche/ws_switch.py", line 21, in on_active_workspace_changed
set_workspace_dir(ws_number)
File "/home/yves/Arbeitsfläche/ws_switch.py", line 32, in set_workspace_dir
os.remove(desktop_dir)
OSError: [Errno 21] Ist ein Verzeichnis: '/home/yves/Arbeitsfl\xc3\xa4che'
|
Justux
Anmeldungsdatum: 18. Oktober 2011
Beiträge: 208
|
Er versucht erst /home/yves/Arbeitsfläche als Ordner zu löschen (der muss dafür leer sein), wenn das nicht klappt, versucht er es wie eine Datei zu löschen. Da du mindestens dein Skript im Ordner Arbeitsfläche hast, verweigert er das ersteres und zweiteres, weil es ja doch ein Ordner ist. Davon abgesehen, nicht das Skript in dem Ordner speichern, von dem man weiß, dass er durch es selbst gelöscht wird...
|
lionlizard
Anmeldungsdatum: 20. September 2012
Beiträge: 6244
Wohnort: Berlin
|
Hast du schon mal versucht, einfach den KDE-Desktop zu installieren unter XFCE? Denn unter KDE habe geht das ja 'out of the box'. Stefan
|
webghost
(Themenstarter)
Anmeldungsdatum: 5. August 2013
Beiträge: 43
|
lionlizard schrieb: Hast du schon mal versucht, einfach den KDE-Desktop zu installieren unter XFCE? Denn unter KDE habe geht das ja 'out of the box'. Stefan
also von KDE lass ich die Finger. Musste in weniger als einem Jahr dreimal neuinstallieren. Läuft bei mir einfach nie stabil, deswegen bin ich ja zu XFCE @Justux
Also Script läuft wenn ich es manuell starte, es liegt im Autostart aber passiert nichts beim starten. Noch was ist komisch - Also die Arbeitsfläche ist immer noch da und es kopiert mir ständig die Daten vom ersten Workspace-Ordner hinein. Wahrscheinlich eht es deshalb nach einem Reboot nicht mehr weil wieder Daten drin sind Edit: nach dem Systemstart läuft es, aber nur kurz bis die Aufforderung für das Passwort vom Schlüsselbund kommt
|
Justux
Anmeldungsdatum: 18. Oktober 2011
Beiträge: 208
|
webghost schrieb: Noch was ist komisch - Also die Arbeitsfläche ist immer noch da und es kopiert mir ständig die Daten vom ersten Workspace-Ordner hinein. Wahrscheinlich eht es deshalb nach einem Reboot nicht mehr weil wieder Daten drin sind
Nein, es kopiert nix, es erstellt nur einen symbolischen Link, siehst du auch im Thunar an der Spalte Typ. Edit: nach dem Systemstart läuft es, aber nur kurz bis die Aufforderung für das Passwort vom Schlüsselbund kommt
Hm, keine Ahnung, was da dazwischenfunkt. Ich melde mich über den Anmeldebildschirm an und damit brauchts keine Freigabe des Schlüsselbunds. Das wär vielleicht ein Workaround.
|