• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Wäre genial: Arbeitsverzeichnis temporär global ändern

Keks Dose

Member
Hallo,

ich habe folgendes Problem, das ich an einem Beispiel erklären möchte:

Ich erstelle für einen Kunden ein spreadsheet, das ich im Verzeichnis <Kunde> speichere. Dann schreibe ich dem Kunden einen Brief, den ich im Verzeichnis <Kunde> speichere. Dazu benötige ich noch eine Anlage aus einer gestern eingeganenen E-Mail. Die Anlage speichere ich im Verzeichnis <Kunde>, nur um mich Sekunden später von einer anderen Anwendung aus wieder in das Verzeichnis <Kunde> durchzuklicken, um diese Anlage weiterzuverarbeiten.

Ich muss ständig das gleiche Verzeichnis öffnen und das nervt gewaltig. Kann ich kde oder linux irgenwie mitteilen, dass alle Programme, die ich ab jetzt starte, bis auf weiteres das Verzeichnis <Kunde> als Arbeitsverzeichnis haben sollen? Wine, OpenOffice und Firefox eingeschlossen?

Oder bleibt nur ein "feature request" an das kde-team mit Wiedervorlage 2008?

Gruß,
Alexander
 
OP
K

Keks Dose

Member
admine schrieb:
KDE Kontrollzentrum -> Erscheinungsbild -> Arbeitsfläche -> Pfade

Bei mir (OpenSuse 10.2) lassen sich die Pfade unter -> Systemverwaltung ändern, aber ohne jede Wirkung. Kile & Co. bestehen darauf, dasjenige Verzeichnis zum "Öffnen" anzubieten, das zuletzt mit Kile & Co. geöffnet wurde.

Der Vorschlag zeigt mir immerhin, dass ich mein Anliegen offensichtlich verständlich dargelegt habe.

Jetzt fehlt nur noch die ANTWORT.

Es dankt

Alexander
 

abgdf

Guru
> Systemverwaltung -> Dokument-Pfad scheint doch richtig zu sein.
In den Einstellungen der einzelnen Anwendungen muß man das vielleicht aber auch noch umstellen.

Gruß
 
admine schrieb:
KDE Kontrollzentrum -> Erscheinungsbild -> Arbeitsfläche -> Pfade
Gilt allerdings nur für KDE-Programme.
In Nicht-KDE-Programmen muss das Arbeitsverzeichnis (falls möglich) separat geändert werden.

Workaround: Symlinks ins Homeverzeichnis.
Die meisten Programme starten mit dem Öffnen/Speichern-Dialog entweder im Homeverzeichnis oder bieten einen entsprechenden Button ($Home) an.

Also könntest du dir das Kunden-verzeichnis mit einen Symlink ins Homeverzeichnis legen.
 
OP
K

Keks Dose

Member
In meinem Kundenverzeichnis sind ca. 300 Kunden. Ich verwende eine größere Anzahl verschiedener Programme (kile, OpenOffice, konqueror, kmail, firefox, mc, Wind-Progs mit wine, Lyx, ...).

Meine Hoffnung war, dass ich innerhalb von 15 Sekunden alle Arbeitsverzeichnisse auf einen neuen Kundennamen umstellen kann.

Ein einzelner sym-link ins Kundenverzeichnis löst das Problem nicht, zumal das Kundenverzeichnis auf einem Small-Business-Server liegt und ich darauf über smb4k zugreife.

Was meint ihr: Soll ich beim kde-Team anfragen, ob es so ein Feature geben kann? Immerhin öffnet die Taste F4 bei aktivem Konqueror-Fenster ja eine Konsole in genau dem Verzeichnis, das Konqueror gerade anzeigt.

Oder ist mein Wunsch eher abwegig?

fragt sich

Alexander
 
Keks Dose schrieb:
Oder ist mein Wunsch eher abwegig?
Ja.
Du benutzt Nicht-KDE-Programme (Firefox, OOo, mc, ...).
Die funktionieren völlig unabhängig von KDE - also kann das KDE-Team an der Situation auch nichts ändern.

Keks Dose schrieb:
Meine Hoffnung war, dass ich innerhalb von 15 Sekunden alle Arbeitsverzeichnisse auf einen neuen Kundennamen umstellen kann.
Halte ich eher für utopisch.

Keks Dose schrieb:
Ein einzelner sym-link ins Kundenverzeichnis löst das Problem nicht, zumal das Kundenverzeichnis auf einem Small-Business-Server liegt und ich darauf über smb4k zugreife.
Ich dachte da eher an ein kleines Shell-Script mit dem du dann die jeweilige Umbung (z.B. einen Symlink) für einen bestimmten Kunden setzen kannst.

Bsp:
<ALT> + <F2>
Befehl: switchK <kunde/kdnr>

Das Script mountet/linkt dann das jeweilige Kundenverzeichnis direkt unterhalb von $HOME.


Wie gesagt, ist nur ein Workaround ... aber was besseres fällt mir dazu nicht ein.
Die jeweiligen Konfigurationsdateien zu ändern macht auch keinen Sinn, da i.d.R. die Programme dann neugestartet werden müssten.
 
OP
K

Keks Dose

Member
b3ll3roph0n schrieb:
Ich dachte da eher an ein kleines Shell-Script mit dem du dann die jeweilige Umbung (z.B. einen Symlink) für einen bestimmten Kunden setzen kannst.

Bsp:
<ALT> + <F2>
Befehl: switchK <kunde/kdnr>

Das Script mountet/linkt dann das jeweilige Kundenverzeichnis direkt unterhalb von $HOME.


Wie gesagt, ist nur ein Workaround ... aber was besseres fällt mir dazu nicht ein.
Die jeweiligen Konfigurationsdateien zu ändern macht auch keinen Sinn, da i.d.R. die Programme dann neugestartet werden müssten.

Das ist doch einmal eine sehr gute Idee. Großes Kompliment. Sie funktioniert unter Linux, unter Windows und sonstwo. Und man kommt nach diesem switch mit zwei Klicks ins richtige Verzeichnis.

Ich will Dir nicht im Weg stehen, falls Du diese Idee in den USA zum Patent anmelden möchtest. :wink:

Ein Schritt in die richtige Richtung wäre dann natürlich die Umsetzung. Das Script sollte den vorigen symlink entfernen und den neuen setzen, denn sonst müllt man sich ja das home-Verzeichnis zu.

Ähm, ich hab' nicht nur keine so guten Ideen, sondern ich kann auch nicht programmieren. Könnten wir einen kleinen Schnorr- und Schmarotz-Vertrag abschließen, wonach
1. Du das Script herstellst und ich als Gegenleistung
2. Dir großzügigerweise unentgeltlich die weitere Nutzung meiner Anregung in diesem Thread überlasse?

Aber die Idee ist so gut, dass ich auch einen bezahlten Auftrag vergeben werde, um sowas zu kriegen.

Gruß und herzlichen Dank,

Alexander
 

oc2pus

Ultimate Guru
dieses Script macht das fast schon ...
http://www.linux-user.de/ausgabe/2003/03/070-multidistri/symlinker

musst du also nur geringfügig anpassen.... :mrgreen:
 
OP
K

Keks Dose

Member
Leider nein, das Script macht zwar etwas irgendwie ähnliches, aber wie der Artikel dazu zeigt -
http://www.linux-user.de/ausgabe/2003/03/070-multidistri/

kommt es dem Script auf völlig andere Dinge an.

Immerhin, wenn etwas so kompliziertes wie Symlinks zwischen zwei Distributionen in einem so kurzen Script geregelt werden kann, dann besteht ja Hoffnung.

Gruß,
Alexander
 

oc2pus

Ultimate Guru
Keks Dose schrieb:
Leider nein, das Script macht zwar etwas irgendwie ähnliches, aber wie der Artikel dazu zeigt -
http://www.linux-user.de/ausgabe/2003/03/070-multidistri/

kommt es dem Script auf völlig andere Dinge an.

Immerhin, wenn etwas so kompliziertes wie Symlinks zwischen zwei Distributionen in einem so kurzen Script geregelt werden kann, dann besteht ja Hoffnung.

Gruß,
Alexander

das script erzeugt symlinks und räumt sie wieder auf ... und genau das hast du gesucht.
das script setzt symlinks innerhalb eines existioerenden HOME, genau das hast du gesucht
das script wird beim booten/shutdown ausgeführt, via runlevel-scripte, du brauchst es "Aktionsbezogen", aber auch keine sooo grosse Änderung :)

ALLE Befehle, die du für dein Vorhaben brauchst sind darin aufgeführt, also dann man ans Werk ...
 
OP
K

Keks Dose

Member
Seufz.

Ich verstehe leider Bahnhof. Schau, ich bin Anwalt und es übersteigt schlichtweg meine Kenntnisse, überhaupt zu verstehen, was das Script genau macht.

Wenn Du mir diplomatisch andeuten willst, ich hätte besser 'was vernünftiges gelernt, so ist der Wink angekommen.

Aber ich kann immerhin lesen:
"tell people what you want to do, and they'll probably help you to do it."

:D

Könntest Du -- höchst gelegentlich -- das Script sinnvoll anpassen, dass man einfach ein Verzeichnis einträgt, irgendwie?

Bei näherem Überlegen möchte ich die Anfrage bereits davon abhängig machen, dass Du nicht viel länger als eine Viertelstunde dafür brauchst. Wenn's richtig Arbeit sein sollte, vergisses.

Gruß,
Alexander
 
Poste doch mal einen Ausschnitt aus der Ordnerstruktur deines Kundenverzeichnisses.
(fiktive Kundennamen/Kundennr)

Evtl. kann ich dir am WE mal ein paar Ansätze (= rudimentäres Script) zusammenbasteln.
 
OP
K

Keks Dose

Member
Ordnerstruktur, gesehen von Linux aus:

$home/smb4k/SERVER/COMPANY/ZENTRALE/

Unter der Zentrale kommen die Kunden:
Kunde1
Kunde2
Kunde3

die jeweils mit ihrem Namen und einer Nummer bezeichnet sind.

Mit $home ist mein Homeverzeichnis als User gemeint.

Ich würde mich natürlich über solche Hilfe sehr freuen.

Danke + Gruß,
Alexander
 

abgdf

Guru
Hm, ob man in die Config-Dateien der Programme anstatt der vollen Verzeichnisnamen wohl eine bash-Variable "$homecustomer" schreiben könnte, die man dann über
Code:
export homecustomer="/home/smb4k/SERVER/COMPANY/ZENTRALE/Kunde1"
usw. jeweils umdefinieren könnte ?
 

oc2pus

Ultimate Guru
abgdf schrieb:
Hm, ob man in die Config-Dateien der Programme anstatt der vollen Verzeichnisnamen wohl eine bash-Variable "$homecustomer" schreiben könnte, die man dann über
Code:
export homecustomer="/home/smb4k/SERVER/COMPANY/ZENTRALE/Kunde1"
usw. jeweils umdefinieren könnte ?
Konfig-Dateien werden meist nur beim Programmstart gelesen ...

evtl kommen wir bei einigen Programmen via Kommandoziel weiter:
man kann Programme (einige) aufrufen und ein Verzeichnis bzw Dokument mitgeben, Beispiel: kate ~/abc.txt, damit braucht man diese Linkerei etc gar nicht. Per GUI geht das wenn der "%F" inder entsprechenden Desktop-Datei drinsteht, dann "wirft" man sein Dokument einfach auf das Desktop-Icon und das Programm startet mit dem Dokument.
 
Sry, hatte leider nicht viel Zeit ... :roll:
... aber ich hab mal etwas zusammengeklempnert.

Ist kein Meisterwerk, sollte aber funktionieren ...
(Achtung: Nur grob getestet!)

2007 / 07 / 26 --- Update
Sollte jetzt auch mit Leerzeichen funktionieren
Im Nicht-Interaktiven Modus Leerzeichen mit \ maskieren (switchK.sh Kunde\ 1)


Code:
#!/bin/bash

#set -x

####################### Optionen: Bitte anpassen ####################### 

# Kundenverzeichnis
KDIR="${HOME}/test/1/2/3";

# Link
HDIR="${HOME}/Kunde";

# Fenterposition (Breite x Höhe + X + Y)
KPOS="250x150+250+250";

# Keine Meldungen
QUIET="No";

######################################################################## 

ARGV="$@";
PRGNAME=$(basename $0);
KDIAG=`which kdialog 2> /dev/null`;
LN=`which ln 2> /dev/null`;
readonly HELP="Usage: $PRGNAME [kunde]";

function usage {
  if [[ $QUIET != [Yy][Ee][Ss] ]]; then
    case $1 in
      1) ( echo -e "Kundenverzeichnis $2 existiert nicht!\n\n$HELP\n" ) >&2; ;;
      2) ( echo -e "Ziel $2 ist ein kein symbolischer Link!\n\n$HELP\n" ) >&2; ;;
      *) ( echo -e "$HELP\n" ) >&2; ;;
    esac;
  fi;
  exit 100; };

if [ $# -eq 0 ]; then
  eval $(ls -A1 "$KDIR" | awk ' function p(varname,val) { printf "%s=\"%s\"\n",varname,val } BEGIN { i = "0" } { p("K["i++"]",$0); } END { p("LIMIT", i) }');
  KDN="$(for (( i=0; i < LIMIT; i++ )); do echo -n " '${K[$i]}' '${K[$i]}'"; done | xargs -L$LIMIT "$KDIAG" --geometry $KPOS --title "Kundenauswahl" --menu "Bitte Ordner wählen")";
  [ $? -eq 0 ] || usage;
 elif [ $# -eq 1 ]; then
   if [ ! -d "$KDIR/$1" ]; then
     usage 1 "$1";
    else KDN="$1";
   fi;
  else usage;
fi;

if [ ! -e "$HDIR" -o -L "$HDIR" ]; then
  $LN -nsf "${KDIR}/${KDN}" "${HDIR}";
 else
  usage 2 "$HDIR";
fi;

# End of file
 

INA_Medick

Member
Es gibt da eine viel einfachere Lösung.
Einfach „konsole“ starten. Dann mit „cd“ in den gewünschten Ordner wechseln (oder den Ordner ins Konsole-Fenster ziehen und „cd“ aus dem erscheinenden Menü auswählen).
Und dann die benötigten Programme aus diesem Konsolenfenster nach dieser Art starten: „programmname &“ (das „&“ bewirkt, dass das eine Programm nicht das Konsolenfenster blockiert und du also mehrere Anwendungen starten kannst).
 
OP
K

Keks Dose

Member
Hallo b3ll3roph0n,

vielen Dank für die Mühe, das Script funktioniert eigentlich sehr gut und erleichtert mir die Arbeit sehr. Ende der Klickorgien.

Es hat einen einzigen kleinen Mangel: Aus irgendwelchen Gründen werden Verzeichnisnamen mit einem Leerzeichen nicht akzeptiert. Unser Kundenverzeichnis enthält aber Leerzeichen in den Namen. Ich werde dies wohl am einfachsten für meine Kunden ändern und gut. Herzlichen Dank jedenfalls.

@INAMedick:

Nein, leider hilft das nicht, denn Programme, die nur mit wine laufen, kann ich so nicht starten. Und das eine oder andere Windows-Progrämmchen verwende ich schon. Auch z.B. lyx kümmert sich nicht darum, von wo aus ich das Programm gestartet habe.

Gruß,
Alexander
 
Oben