Файлы .desktop не исполняются на centos8 - PullRequest
2 голосов
/ 19 июня 2020

Я создал файлы .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

Спасибо

1 Ответ

1 голос
/ 19 июня 2020
• 1000 * После нескольких часов исследований, чтобы решить эти проблемы, вам нужно отредактировать chmod 777 на 775 (вероятно, linux security ... se linux? Я точно не знаю, почему) И вам также нужно добавить gio команда доверенных метаданных (не обращайте внимания на мой плохой отступ):
        # Add execution permission
        try:
        os.chmod(desktopPath + shortcutName, 0o755)
        cmd="gio set "+ desktopPath+shortcutName + " \"metadata::trusted\" true"
        os.system(cmd)
        except OSError:
                pass

И после этого все заработало. Протестируйте его на своей машине и сообщите нам, решило ли оно проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...