Ubuntu系统为程序创建桌面快捷方式

2023-11-08

为了不用每次都要进入命令行启动应用程序,为程序创建快捷方式是一个很方便的方法,尤其是你的程序需要在团队外部使用的时候。

桌面创建快捷方式一般使用.desktop为后缀的文件实现,该文件的内容格式基本要素如下:

[Desktop Entry]
Name=<Program Name>
Comment=<Program Description>
Exec=<Absolute Path of the Program>
Type=<Application or Link>
Terminal=<For window application, set false, for terminal application, set true>
Icon=<The absolute path of program icon>

当然,除了以上基本要素之外,还有更丰富的其他元素,比如,拿我们最熟悉的firefox举例,它的desktop文件在/usr/share/applications目录下,该目录下有我们安装在该台PC上的所有application的desktop文件。打开firefox.desktop,部分内容如下:

那么,接下来我们就用一个比较简单的示例程序来演示如何创建桌面快捷方式。

示例程序test_shortcut.py要运行的是一段Python代码,功能为显示一行文字,并显示一张图像:

import time
import cv2

print('Hello! This is a test program for shortcut.')

im=cv2.imread('/home/grace/test/myicons/ainr.png')
cv2.imshow('icon', im)
cv2.waitKey(0)

现在,我们写一个脚本test_shortcut.sh来执行上面这段代码:

python3 test_shortcut.py

我们在桌面上的快捷方式就是要来调用这个脚本。

首先,我们在当前目录下创建一个.desktop为后缀的文件(当然也可以直接在桌面上创建),比如就叫ainr.desktop吧,在该文件中,按照desktop的基本格式填入内容:

[Desktop Entry]
Name=AINR
Comment=AINR shortcut
Exec=/home/grace/test/test_shortcut.sh
Type=Application
Terminal=true
Icon=/home/grace/test/myicons/ainr.png

在以上文件中,我们指明了桌面快捷方式的名称"AINR",程序执行路径/home/grace/test/test_shortcut.sh,由于需要在终端打印文字,因此Terminal项设置为了true,最后指定了桌面快捷方式的图标路径/home/grace/test/myicons/ainr.png。

然后我们将该文件拷贝到桌面路径,并为其添加可执行权限:sudu chmod +x ainr.desktop

以上的操作均可通过命令行终端完成。接下来的操作则需要在可视化桌面上进行了。

在桌面上,我们可以看到已经存在了ainr.desktop这个文件,但并未显示成我们指定的图标。我们通过鼠标右键为其设置“Allow Launching”,这时,该桌面图标已经显示成我们指定的图标。双击该图标,命令行黑框一闪而过,并没有成功运行我们的程序,怎么回事呢?

为了查找原因,我们在桌面路径直接执行我们的bash脚本,通过绝对路径执行:

/home/grace/test/test_shortcut.sh

提示找不到test_shortcut.py文件。真相大白了!原来是路径问题。在桌面路径下执行脚本,是无法找到要调用的python文件的,因为脚本内用的是相对路径。于是修改脚本test_shortcut.sh为:

python3 /home/grace/test/test_shortcut.py

再次执行,成功!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu系统为程序创建桌面快捷方式 的相关文章

随机推荐

  • oracle 介于日期之间_oracle 月份中日的值必须介于 一 和当月最后一日之间

    oracle 月份中日的值必须介于 1 和当月最后一日之间 请教大家 在oracle存储过程中 有一个insert语句 总是报错 找到是插入时间的问题 比如 case when nvl pa ptm 0 0 then v invptm el
  • win10系统CMD运行无反应,闪一下后消失

    原因是 未知 解决办法 注册表HKEY CURRENT USER Software Microsoft Command Processor 中发现autorun这一项 删除后可以正常打开
  • 模式识别与机器学习第四章特征选择和提取

    特征选择 从原始特征中挑选 从n个度量值集合 x1 x2 xn 中 按某一准则选取出供分类用的子集 作为降维 m维 m
  • anchor iview 悬浮_iview 表头table 悬浮提示tooltip ;iview 单元格悬浮提示 ;iview table header cell tooltip;...

    一 批量悬浮提示 二 提示数据举例 三 核心方法 单元格提示 function renderCell h params console log h h console log params params var tipsContent ge
  • 【算法】KMP算法实现顺序串各种模式匹配运算的算法设计

    C 版 一 设计任务 编写程序 利用顺序串的基本运算 建立目标串以及模式串 用BF算法求出t在s中的位置 求出模式串的next数组以及nextval数组 KMP算法使用next数组以及改进的KMP算法使用nextval数组求出t在s中的位置
  • Redis缓存穿透-击穿-雪崩详细分析加解决办法

    Redis 缓存穿透 问题描述 如图 缓存穿透的原因 key 对应的数据在数据源并不存在 每次针对此key 的请求从缓存获取不到 请求都会压到数据源 可能压垮数据源 比如 用一个不存在的用户id 获取用户信息 不论缓存还是数据库都没有 若黑
  • Qt浅谈之二十二Qt样式表

    一 简介 不断总结好的样式表 美化自己的界面 在实际工作中会不断的更新 二 详解 1 加载样式表文件 html view plain copy QFile file qss stylesheet qss file open QFile Re
  • 外星人m15键盘灯光设置_Alienware Command Center灯光软件高级设置

    文章内容 症状 目录 点开桌面 首先我们先对AW Command Center 高级界面进行介绍 电源按钮高级设置 电源按钮动作只能一个 无法创建多个动作 灯光多动作多变化模式设置 动作 颜色模式 单一种颜色常亮 默认常亮3s受Action
  • 数据库原理第十章---数据库恢复技术

    1 事务的基本概念 事务 所谓事务是用户定义的一个数据库操作序列 这些操作要么全做 要么不做 是一个不可分割的工作单位 事务的开始和结束可以由用户显示控制 如果用户没有显示定义事务 则由数据库管理系统按默认规定自动划分事务 在SQL中定义事
  • 用Python导入表格

    刚刚博主学到如何用Python来导入表格 现在就将过程写给大家看看 我是用了Pycharm 的2019 3 1 版本的 这还得需要下载Python 3 7 Interpreter 才能运行 这个可是弄了很久才弄好的 不说那么多了 直接上代码
  • 每日一学13——Unity Debug.Log控制开关

    学习来源 https blog csdn net blog lee article details 81389692 其实我并不是在乎一丢丢性能的影响 我只关心能不能关闭Log 这样就可以在不想看log的时候全都不显示 不过文中的方法也不错
  • ActionScript 3.0 学习笔记(二)

    使用HTTP请求进行URL导航 flash中最普通的http请求是使用URLRequest类和navigateToURL 方法进行URL导航 创建HTTP请求 在创建HTTP请求时 需要URLRequest类参与处理所有的通信 在创建HTT
  • 详解Android中的屏幕方向

    分类 android 2014 09 19 09 07 113人阅读 评论 0 收藏 举报 详解Android中的屏幕方向 屏幕方向是对Activity而言的 所以你可以在AndroidManifest xml文件中 通过
  • 嵌入式模型部署学习笔记 ——在Jetson TX1上部署Yolov5模型

    Jetson TX1实现TensorRT加速YOLOv5进行实时检测 一 前言 二 移动端部署思路 三 部署步骤 1 克隆YOLOv5工程文件 2 pt 转 ONNX 安装 ONNX 转换文件 3 移动端部署 克隆工程 生成 wts 文件
  • 访问www.baidu.com全过程

    1 域名解析成IP 每个主机在网络中都是IP为标识的 IP才是主机在网络中的位置 域名只是为了方便用户记忆而已 这就要求浏览器能够识别域名并且将其转化为对应的IP地址 所以浏览器会有一个DNS缓存 其中记录了一些域名与IP的对应关系 供浏览
  • 机器学习之条件随机场CRF一点理解

    1 前言 最近看了一些有关于CRF的论文 基本概念懂 但是到求解的部分有些疑惑 CRF问题容易构成NP hard问题 求解过程还需要再学习 下面稍微介绍一些CRF的学习吧 这里前面CRF内容主要参考了下面博文 讲的非常好 http blog
  • 什么是 Optional 类?Java 中如何使用 Optional 类

    什么是 Optional 类 Java 中如何使用 Optional 类 在 Java 8 中 Optional 是一个非常重要的类 它提供了一种优雅的方式来处理 null 值 避免了 NullPointerException 空指针异常
  • Linux系统编程之TCP网络编程模型

    Linux TCP网络编程模型示例 客户端代码示例 include
  • Intellij IDEA 生成Get/Set方法快捷键

    1 选中你要创建getter setter的字段 然后选择generator 可以拖选住你想要生成get set方法的属性 点击完成即可自动生成get和set方法 菜单栏 gt generator 或者 点击右键 gt generator
  • Ubuntu系统为程序创建桌面快捷方式

    为了不用每次都要进入命令行启动应用程序 为程序创建快捷方式是一个很方便的方法 尤其是你的程序需要在团队外部使用的时候 桌面创建快捷方式一般使用 desktop为后缀的文件实现 该文件的内容格式基本要素如下 Desktop Entry Nam