it-swarm.com.de

Die .desktop-Datei führt kein Skript aus und funktioniert einwandfrei, wenn sie von Hand ausgeführt wird

Ich habe Probleme mit meinen .desktop-Dateien. Ich habe ein Shell-Skript, das ständig darauf wartet, dass eine Datei in den Ordner "Downloads" verschoben wird. Wenn eine Datei in den Ordner gelegt wird, führt sie automatisch ein C-Programm aus, das ich im Terminal geschrieben habe, und bietet mir verschiedene Optionen zum Verschieben der Datei an.

Alles ist gut da. Ich möchte jedoch eine Desktop-Verknüpfung zum Programm. Ich habe versucht, den Shortcut-Editor zu verwenden, um den auszuführenden Befehl anzugeben, ihn im Terminal auszuführen und das Terminal nach der Ausführung des Befehls weiter laufen zu lassen. Der Befehl enthält nur cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh

Das wird jedoch nicht funktionieren. Außerdem habe ich versucht, ein C-Programm zu schreiben, das dem System im Grunde den obigen Befehl mitteilte, da ich dachte, dass der Verknüpfungseditor versagt hat.

Interessanterweise läuft es einwandfrei, wenn ich in seinem Verzeichnis bin und ./'Download Manager' eingebe.

Ich möchte jedoch nicht bei jedem Neustart in das Verzeichnis wechseln und das Programm ausführen. Stattdessen möchte ich eine .desktop-Verknüpfung oder, noch besser, eine Möglichkeit, den Neustart automatisch zu starten. Ich verstehe nicht, warum es nicht funktioniert. Wenn ich es nicht im Terminal ausführe, funktioniert es nicht ...

Hier ist die Desktop-Datei:

[Desktop Entry]
Name=Download Manager
Comment=
Exec=cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh
Icon=icon name
Terminal=true
Type=Application
StartupNotify=true
X-KeepTerminal=true

Hier ist der C-Quellcode und seine Desktop-Datei, genau wie eine andere Option:

[Desktop Entry]
Name=Download Manager
Comment=
Exec=./'Download Manager'
Icon=icon name
Terminal=true
Type=Application  
StartupNotify=true
X-KeepTerminal=true

C-Quellcode:

/*
desktoplauncher.c Source Code
Written by me
This program is used to launch
the inotify monitor Shell script
which in turn launches the 
download manager program 
whenever a file is placed in the
"Downloads" folder.
*/ 

#include <stdio.h>

int main()
{
system("cd ~/Documents/prog/c/learn/inotify-tools && ./notifyscript.sh");
}
4
Zeke Legge

Ich habe es zum Laufen gebracht, indem ich das Skript in meinen Ausgangsordner verschoben und die Desktop-Konfigurationsdatei wie folgt bearbeitet habe.

[Desktop Entry]
Name=Download Manager
Comment=
Exec=lxterminal --command="./.notifyscript.sh"
Icon=icon name
Terminal=false
Type=Application
StartupNotify=true

Dies scheint wirklich seltsam, vor allem, weil das Terminal falsch ist ... Wie auch immer, es funktioniert, also bin ich glücklich! Vielen Dank für Ihre Hilfe!

3
Zeke Legge

Die Exec -Zeile führt den Wert in einer Shell wahrscheinlich nicht aus. Versuche dies:

Exec=/home/user/Documents/prog/c/learn/inotify-tools/notifyscript.sh

Wenn Sie dieses Verzeichnis als cwd benötigen, fügen Sie Folgendes zum Shell-Skript hinzu:

cd -P -- "$(dirname -- "$0")"
2
glenn jackman