Я создал файлы .desktop из сценария python с помощью centos 7 (я развертываю удаленно в файлах рабочего стола s sh), этот ярлык выполняет другой сценарий python. ОС была обновлена до centos 8.
К сожалению, мои записи на рабочем столе больше не работали для пользователей.
2 проблемы:
- Для пользователя значок не отображается (файл не является доверенным, пользователю необходимо доверять файлу для отображения значка). Я пытаюсь выполнить: gio set myShortcup.desktop metadata :: доверенный да, похоже, все работает нормально, но пользователь должен нажать f5, чтобы обновить sh рабочий стол)
-Когда пользователь дважды кликает c на .desktop открывается текстовый редактор с кодом входа на рабочий стол: но для меня на удаленном терминале с командой ./myShortcut.desktop запускается Приложение). Пользователь должен щелкнуть правой кнопкой мыши файл и сделать его исполняемым, чтобы устранить проблему, и он работает только в папке рабочего стола (а не непосредственно на рабочем столе).
Пожалуйста, как я могу исправить эти две проблемы удаленно и при их создании ярлыки?
Код генерации:
#!/usr/bin/env python2
import os, sys, logging
import glob
import os.path
import datetime
# DECLARATION
desktopPath = "/home/user/Desktop/"
scriptPath = "/home/user/Desktop/DEPLOY/"
# METHODS
def createShortcut(fileName):
# File name
shortcutName = fileName.replace(".raw","") + ".desktop"
# Remove file if exists
try:
os.remove(desktopPath + shortcutName)
except OSError:
pass
with open(desktopPath + shortcutName, "w") as shortcut:
shortcut.write("[Desktop Entry]\n")
shortcut.write("Name=" + fileName.replace(".raw","") +"\n")
shortcut.write("Exec=python2 " + scriptPath +"myApp.py -f " + fileName + "\n")
shortcut.write("Terminal=true\n")
shortcut.write("Type=Application\n")
shortcut.write("Icon="+ scriptPath + "icon.png\n")
shortcut.close()
# Add execution permission
try:
os.chmod(desktopPath + shortcutName, 0o777)
except OSError:
pass
# MAIN CODE
def main(argv):
# Set logging level
logging.basicConfig(stream=sys.stderr, level=logging.INFO)
# Loop raw files
fileList = glob.glob('*.raw')
for i in fileList:
# Create shortcut on PC desktop
fileName = i
createShortcut(fileName)
if __name__ == "__main__":
main(sys.argv)
Созданный файл:
[Desktop Entry]
Name=myShortcut
Exec=python2 /home/user/Desktop/DEPLOY/myApp.py -f myShortcut.raw
Terminal=true
Type=Application
Icon=/home/user/Desktop/DEPLOY/icon.png
Спасибо