首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.desktop文件不能在centos8上执行

.desktop文件不能在centos8上执行
EN

Stack Overflow用户
提问于 2020-06-19 05:40:50
回答 1查看 1.6K关注 0票数 2

我用centos 7(我在ssh桌面文件中远程部署)从python脚本创建了一个.desktop文件,这个快捷方式执行另一个python脚本。操作系统已升级为centos 8。

不幸的是,我的桌面条目不再适用于用户。

2问题:

-For用户,图标不显示(文件不受信任,用户需要信任文件来显示图标)。我试着执行: gio设置了myShortcup.desktop元数据::可信的是它看起来很好,但是用户必须单击f5来刷新桌面)

-When用户双循环的.desktop文件,文本编辑器中的桌面条目代码正在打开:但是对于我来说,在远程终端上使用./myShtcut.桌面命令启动了应用程序)。用户必须右键单击文件并使其可执行以解决问题,并且它只在桌面文件夹中工作(而不是直接在桌面中)。

拜托,我怎样才能远程解决这两个问题,并生成这些快捷方式呢?

生成代码:

代码语言:javascript
复制
#!/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)

创建的文件:

代码语言:javascript
复制
[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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 08:56:54

我在家里用virtualbox在centos 8.2.2004VM上进行了测试,我复制了这个问题,我无法执行脚本,也不能做右键单击“允许启动”。

经过几个小时的调查,要解决这些问题,您需要编辑chmod 777到775 (可能是linux安全.赛利诺?我不知道具体原因),您还需要添加gio元数据可信命令(不要注意我的错误缩进):

代码语言:javascript
复制
        # Add execution permission
        try:
        os.chmod(desktopPath + shortcutName, 0o755)
        cmd="gio set "+ desktopPath+shortcutName + " \"metadata::trusted\" true"
        os.system(cmd)
        except OSError:
                pass

在那之后,它起了作用。在你的机器上测试它并告诉我们它是否解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62463990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档