我用centos 7(我在ssh桌面文件中远程部署)从python脚本创建了一个.desktop文件,这个快捷方式执行另一个python脚本。操作系统已升级为centos 8。
不幸的是,我的桌面条目不再适用于用户。
2问题:
-For用户,图标不显示(文件不受信任,用户需要信任文件来显示图标)。我试着执行: gio设置了myShortcup.desktop元数据::可信的是它看起来很好,但是用户必须单击f5来刷新桌面)
-When用户双循环的.desktop文件,文本编辑器中的桌面条目代码正在打开:但是对于我来说,在远程终端上使用./myShtcut.桌面命令启动了应用程序)。用户必须右键单击文件并使其可执行以解决问题,并且它只在桌面文件夹中工作(而不是直接在桌面中)。
拜托,我怎样才能远程解决这两个问题,并生成这些快捷方式呢?
生成代码:
#!/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谢谢
发布于 2020-06-19 08:56:54
我在家里用virtualbox在centos 8.2.2004VM上进行了测试,我复制了这个问题,我无法执行脚本,也不能做右键单击“允许启动”。
经过几个小时的调查,要解决这些问题,您需要编辑chmod 777到775 (可能是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在那之后,它起了作用。在你的机器上测试它并告诉我们它是否解决了这个问题。
https://stackoverflow.com/questions/62463990
复制相似问题