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

news2024/11/22 15:55:34

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

桌面创建快捷方式一般使用.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

再次执行,成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/346976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git与IDEA强强联合(HTTPS协议连接)

最近在写项目的时候&#xff0c;在台式机和笔记本之间频繁切换&#xff0c;竟然还是用qq传压缩包&#xff0c;我自己都感觉无语&#xff0c;有git这样强大的版本管理工具&#xff0c;我竟然没想起来。然后也没有相关的博文就想来更新一篇。 那么如何使idea和git强强联合呢&…

果实可采摘点论文汇总

文章目录2019基于Mask R-CNN的芒果实例分割及采摘点检测研究与实现2021A mango picking vision algorithm on instance segmentation and key point detection from RGB images in an open orchard2022基于深度学习的多品种鲜食葡萄采摘点定位Method for Identifying Litchi Pi…

webpack(高级)--Prefetch和Preload shimming

webpack Prefetch和Preload webpack v4.6.0 增加了对预获取和预加载的支持 在声明import时 使用下面这些内置指令 来告知浏览器 prefetch(预获取):&#xff1a;将来某些导航下可能需要的资源 preload(预加载)&#xff1a;当前导航下可能需要资源 import(/* webpackChunkName…

Leetcode详解JAVA版

目录1. 两数之和14. 最长公共前缀15. 三数之和18. 四数之和19. 删除链表的倒数第 N 个结点21. 合并两个有序链表28. 找出字符串中第一个匹配项的下标36. 有效的数独42. 接雨水43. 字符串相乘45. 跳跃游戏 II53. 最大子数组和54. 螺旋矩阵55. 跳跃游戏62. 不同路径70. 爬楼梯73.…

Jenkins连接Maven自动化部署构建SpringBoot

目录1.首先下载maven拉取到服务器2.解压maven并进入解压文件修改setting.xml2.拉取jdk18到服务器并解压3.将jdk还有maven移动到jenkins的挂载目录4.进入jenkins容器5.在jenkins的全局配置中配置jdk与maven6.jenkins安装插件 Publish Over SSH7.jenkins服务器创建一个jar包存放目…

ArcGIS API for JavaScript 4.15系列(6)——Dojo中的事件绑定

1、前言 在Web界面中&#xff0c;用户点击按钮、选择下拉选项、移动鼠标都涉及到dom元素的事件机制。下面就来介绍一下Dojo中的事件绑定操作。 2、dojo/on模块绑定事件 我们就从最简单的按钮click事件入手&#xff0c;Dojo中的dojo/on模块可以实现dom元素的事件绑定&#xf…

高性能办公娱乐迷你主机——Maxtang大唐AMD5600U

今天给大家介绍一款AMD5600U迷你主机&#xff0c;说起这款处理器大家应该并不陌生&#xff0c;像联想小新、YOGA以及ThinkBook等很多款用的都是这个型号&#xff0c;不过笔记本的价格基本都在3999-4999这个价位区间&#xff0c;同样的处理器&#xff0c;笔记本卖那么贵&#xf…

内网渗透(二十八)之Windows协议认证和密码抓取-Windows RDP凭证的抓取和密码破解

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

帮公司面试了一个30岁培训班出来的程序员,没啥工作经验...

首先&#xff0c;我说一句&#xff1a;培训出来的&#xff0c;优秀学员大有人在&#xff0c;我不希望因为带着培训的标签而无法达到用人单位和候选人的双向匹配&#xff0c;是非常遗憾的事情。 最近&#xff0c;在网上看到这样一个留言&#xff0c;引发了程序员这个圈子不少的…

Python程序设计-第5章Python面向对象

第5章Python面向对象一.预习笔记 1.类的相关概念 类的定义&#xff0c;类对象&#xff0c;实例对象&#xff0c;类属性 类属性是跟类绑定的&#xff0c;如果要修改类的属性就必须使用类对象访问&#xff0c;只使用实例对象是无法修改的。 权限访问&#xff1a;name与age是公…

【每日随笔】手指训练 ( 产品需求探索、技术无关 | 手指训练作用 | 哪些人需要手指训练 | 手指操 | 手指康复训练器材 )

文章目录一、手指训练作用二、哪些人需要手指训练三、手指操四、手指康复训练器材产品需求探索 , 研究下手指训练的市场 , 前景 , 是否可以开发 ; 一、手指训练作用 手指训练作用 : 改善 上肢协调性手眼 协调性训练提高 手指 抓握 能力提高 手指 灵活性提高 上肢运动 准确性 和…

Linux进程间通信(system V共享内存)

共享内存原理 看上面这张图&#xff0c;其实只要是进程间通信都离不开让他们看到同一块资源(内存)&#xff0c;其实共享内存这里和动态库那里一样&#xff0c;都是要加载到共享区&#xff0c;共享内存提供者&#xff0c;是操作系统&#xff0c;操作系统要不要管理共享内存&…

Python环境搭建指南

Python能做太多有趣使用的事了&#xff0c;不仅可以做现在火热的人工智能、数据分析&#xff0c;还可以做爬虫、Web开发、自动化运维的事情。 随着Python为我们工作与生活带来更多的便捷后&#xff0c;很多人开始学习Python&#xff0c;关注Python的发展前景、薪资和职业素养的…

RabbitMQ——高级特性(SpringBoot实现)

本篇文章的内容与我之前如下这篇文章一样&#xff0c;只是使用技术不同&#xff0c;本篇文章使用SpringBoot实现RabbitMQ的高级特性&#xff01; RabbitMQ——高级特性_小曹爱编程&#xff01;的博客-CSDN博客RabbitMQ——高级特性&#xff1a;1、RabbitMQ高级特性&#xff1b;…

IDEA2021.3新建一个maven-archetype-webapp项目,发现在新建文件汇总,没有新建servlet文件选项

问题 我使用maven-webapp 模板新建了一个web项目&#xff0c;但是在新建文件的时候&#xff0c;发现没有servlet选项 解决 第一种&#xff1a;在pom中直接配置 <dependencies><dependency><groupId>javax.servlet</groupId><artifactId>java…

Linux进程信号产生以及捕捉

一.什么是信号 生活中&#xff0c;有哪些信号相关的场景呢&#xff0c;比如&#xff1a;红绿灯&#xff0c;闹钟&#xff0c;转向灯等等 1.这里我们要知道&#xff0c;你为什么认识这些信号呢&#xff0c;记住了对应场景下的信号&#xff0b;后续是有”动作“要你执行的 2.我们…

spring boot 项目打包镜像方式以及区分环境打包

springboot项目打包成docker镜像-贾玉珍-2023年2月8日方法一&#xff1a;将项目jar包手动推送到docker服务器上1.用maven对项目进行打包&#xff0c;打包成功后会有一个target目录&#xff0c;目录下有打好的项目jar包2.将jar包上传到服务器上&#xff0c;我用的是finalshell工…

Zabbix Agent item监控项讲解

前言 agent与snmp是Zabbix两种重要的监控方式&#xff0c;这一期主要介绍Zabbix Agent item监控项。。Zabbix agent分为主动代理、被动代理&#xff0c;配置item类型时&#xff0c;可以选择需要的类型&#xff1a; Zabbix agent &#xff1a;用于被动检查 Zabbix agent&…

【C语言进阶】结构体、位段、枚举和联合

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;C语言航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&a…

顶刊MS论文解读|数据驱动的动态定价和订购策略

作者&#xff1a;白静 金凯瑞 马玺渊 钟子俊编者按 本次解读的文章为“Data-Driven Dynamic Pricing and Ordering with Perishable Inventory in a Changing Environment”&#xff0c;于2022年发表在期刊 Management Science, 作者 N. Bora Keskin, Yuexing Li, Jing-Sheng …