Seite 1 von 1

Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 29.07.2012 23:54
von Mokota
Hi!
Da ich künftig auch das ein oder andere Programm für Linux portieren will hätte ich ein/zwei Fragen.

Und zwar habe ich damals bei Windows die Programmeinstellungen und den Standartspeicherpfad direkt im Programmordner gehabt.
Da neue Windowsversionen das nichtmehr zulassen, nutze ich derzeit den Appdata-Ordner für Einstellungen und den Dokumenteordner
als Standart-Speicherpfad.

In Linux (Ubuntu) scheint es aber ja nur das Homeverzeichniss zu geben (bzw. ist nur das nutzbar).
Dann kann ich es doch im Prinzip wieder wie zu alten Windowstagen machen und direkt im Programm die Einstellungsdatei und ein Ordner zum
Speichern reinpacken, oder?
Wäre zumindest auf die schnelle die einfachste Methode.

Und noch eine Frage... In Linux werden ja Programme nicht wie in Windows mittels Setupprogrammen installiert, also einfach das Proggi als zip oder rar verpackt releasen? Compilieren muss ich es natürlich in Linux, das ist mir klar.

Das wärs erstmal :)
MfG Mokota

EDIT: Noch eine Frage Ubuntu-spezifisch: Wo sind die Menüleisten der Programme? Hatte vorhin PB in Ubuntu am Laufen, die Iconleiste ist da, aber keine Menüleiste. Habe die aktuelle Windows-Installer Version von Ubuntu, liegt es vll. daran?

Re: Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 30.07.2012 00:41
von ts-soft
Mokota hat geschrieben: In Linux (Ubuntu) scheint es aber ja nur das Homeverzeichniss zu geben (bzw. ist nur das nutzbar).
Dann kann ich es doch im Prinzip wieder wie zu alten Windowstagen machen und direkt im Programm die Einstellungsdatei und ein Ordner zum
Speichern reinpacken, oder?
Nein! Die Einstellungen schreibst Du in einem Versteckem Verzeichnis im HomeDir:

Code: Alles auswählen

PrefsPath.s = GetHomeDirectory() + ".Mokota/MeinProgramm/MyPrefs.prefs"
Die Ornder ".Mokota" und "MeinProgramm" sind natürlich erst zu erstellen. Wichtig ist der "." vor dem ersten Ordner!
Die Namen kannst Du natürlich anpassen.
Mokota hat geschrieben: EDIT: Noch eine Frage Ubuntu-spezifisch: Wo sind die Menüleisten der Programme? Hatte vorhin PB in Ubuntu am Laufen, die Iconleiste ist da, aber keine Menüleiste. Habe die aktuelle Windows-Installer Version von Ubuntu, liegt es vll. daran?
Wie beim Mac auch, Menüleisten sind in der oberen Leiste integriert!

Gruß
Thomas

// edit: Also so:

Code: Alles auswählen

Procedure.s GetPrefsFile(AppName.s, FileName.s = "settings.prefs", Publisher.s = "ts-soft")
  Protected Path.s, slash.s
  
  CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_Windows
      slash = "\"
      Path = GetEnvironmentVariable("APPDATA") + "\"
    CompilerDefault
      slash = "/"
      Path = GetHomeDirectory() + "."    
  CompilerEndSelect
  If Publisher
    Path + Publisher + slash
    If Not FileSize(Path) = - 2
      CreateDirectory(Path)
    EndIf
  EndIf
  Path + AppName + slash
  If Not FileSize(Path) = - 2
    CreateDirectory(Path)
  EndIf
  If FileSize(Path) = -2
    ProcedureReturn Path + FileName
  EndIf
EndProcedure

Re: Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 30.07.2012 01:09
von Mokota
Okay, vielen Dank :)

Und wie schaut es mit dem Standart-Speicherpfad aus?
Bei Windows biete ich den "Dokumente"-Ordner beim Requester an...
Gibt es da einen speziellen Ordner in Linux der dem entspricht (und auf den man zugreifen kann) oder einfach ins Programmverzeichniss einen Ordner für Speicherdateien reinpacken?

Und die letzte Frage die noch überbleibt ist die Releasefrage... als rar/zip packen oder gibt es für Linux auch eine Setup-Lösung? Heißt ja immer Linux sei seit einiger Zeit auch für "Normaluser" einfach zu nutzen, aber ich denke mal viele kommen ohne Installer nicht klar.
Kenne mich da noch garnicht aus und ist absolutes Neuland, also sry für die Unwissenheit ^^

Re: Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 30.07.2012 01:21
von ts-soft
Mokota hat geschrieben:Und wie schaut es mit dem Standart-Speicherpfad aus?
Da bietest Du das Homeverzeichnis an. Es gibt unter Ubuntu Unterordner wie Downloads, Dokumente, Videos usw.
diese sind aber nicht zwingend vorgeschrieben und haben lokalisierte Namen, die sollte der Anwender also selber
auswählen!
Mokota hat geschrieben: Und die letzte Frage die noch überbleibt ist die Releasefrage... als rar/zip packen oder gibt es für Linux auch eine Setup-Lösung? Heißt ja immer Linux sei seit einiger Zeit auch für "Normaluser" einfach zu nutzen, aber ich denke mal viele kommen ohne Installer nicht klar.
Kenne mich da noch garnicht aus und ist absolutes Neuland, also sry für die Unwissenheit ^^
rar und zip verwendet man unter Linux eigentlich nicht (möglich ist es natürlich), sondern tar/gz!
Also alle Dateien in einem Ordner unter Linux und dort mit Rechtsklick packen. Nicht unter Windows packen!

Re: Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 30.07.2012 01:30
von Mokota
Super, Danke für die schnellen Infos um die Uhrzeit :D

Und hilft bestimmt auch anderen Linux-Neulingen im Forum.

Und mit Blick auf Win8, muss man sich ja langsam mal mit alternativen auseinandersetzen :lol:

Re: Programmeinstellungs- und Speicherpfad in Linux

Verfasst: 03.08.2012 11:32
von remi_meier
Diese Dokumente-, Videos-, Bilder-, ... Ordner sind standardisiert
und können per
xdg-user-dir DOCUMENTS
abgefragt werden. Siehe http://www.unix.com/man-page/OpenSolari ... -user-dir/

Wenn die Distribution aber diesen Freedesktop.org-Standard nicht
implementiert, dann sollte das HOME-Verzeichnis angegeben werden.

Ich würde also zuerst testen, ob das Programm xdg-user-dir
existiert, dann lesen, was es mir zurückgibt. Ansonsten einfach
das $HOME angeben.


Edit: Hier als Prozedur:

Code: Alles auswählen

ImportC ""
  system(name.p-utf8)
EndImport

; DESKTOP
; DOWNLOAD
; TEMPLATES
; PUBLICSHARE
; DOCUMENTS
; MUSIC
; PICTURES
; VIDEOS
Procedure.s GetUserFolder(name.s)
  Protected exists.i, pid.i, out.s
  
  exists = system("which xdg-user-dir")
  If exists = 0
    pid = RunProgram("xdg-user-dir", name, "", #PB_Program_Open|#PB_Program_Read)
    out = ""
    While ProgramRunning(pid)
      If AvailableProgramOutput(pid)
        out + ReadProgramString(pid)
      EndIf
    Wend
    
    If ProgramExitCode(pid) = 0
      ProcedureReturn out
    EndIf
  EndIf
  
  ProcedureReturn GetHomeDirectory()
EndProcedure

Debug GetUserFolder("DOCUMENTS")
Debug GetUserFolder("DOWNLOAD")
Debug GetUserFolder("bla")