【Linux】为.sh脚本制作桌面快捷方式(.desktop,可双击执行),且替换显示图标(图文详情)

news2024/11/14 10:28:11

目录

0.背景+环境

1、原理

2、详细步骤

 1)创建.desktop快捷方式

2) 给test.desktop快捷方式增加可执行权限

3)编辑test.desktop内容和参数

4)修改快捷方式属性为双击可执行

5)将桌面快捷方式发送到桌面


0.背景+环境

ubuntu 16.04

项目需求,目前有一个可执行程序(test.sh),test.sh这个脚本是执行了某个命令打开应用,但是把.sh放在桌面也不好看(图标是默认的),所以希望制作一个桌面快捷方式,有自己的图标,并且双击可以打开

原本是这样的图标

 制作后是这样的图标,是个.desktop桌面快捷方式(可执行程序)

你需要准备:

  • test.sh可执行程序(实现好的,本文不关注.sh的内容)
  • 一张作为快捷方式的图片

1、原理

首先要理解,这个名叫“C10”的本质是一个.desktop桌面快捷方式,双击可执行,需要在这个文件内部编写一些相关参数,如执行.sh脚本的位置和自己想使用的图标。

.desktop相关参数如下,需要什么参数可以自己加,我下文的例子中只展现比较基础的参数(少,但是够用,满足大多数情况)

在这里插入图片描述

 详细信息的网址:Desktop Entry Specification (specifications.freedesktop.org)

2、详细步骤

 1)创建.desktop快捷方式

注意:一定要在此目录下创建【/usr/share/applications】

因为这个目录是系统自动创建桌面快捷方式的路径,保存格式为xxxx.desktop

(我试过在桌面创建,图片会无法显示)

打开命令行,输入命令:进入此路径,然后用touch创建一个叫test的快捷方式(此名字其实不重要,因为后期显示的是写进去参数中的名字Name)

cd /usr/share/applications
sudo touch test.desktop

2) 给test.desktop快捷方式增加可执行权限

sudo chmod +x test.desktop

3)编辑test.desktop内容和参数

先用vim打开这个文件,如果没有vim,用vi也可以

 

然后将内容复制进去(注意,等号后的内容要替换为你自己的,如名字,可执行程序位置,图片等

[Desktop Entry]
Type=Application
Name=C10
GenericName=C10
Comment=test
Exec="/home/wangyunuo/test.sh" %f
Icon=/home/wangyunuo/testImg.png
Terminal=true
Categories=X-Application;

 参数解读

Type为了允许将来添加新类型,实现应该忽略具有未知类型的桌面条目。共三种:应用程序(Application)、链接(Link)、目录(Directory),因为我希望运行应用程序,所以我这个字段用了Application
Name

应用程序的特定名称。我的名字是“C10”

GenericName应用程序的通用名称
Comment

条目的工具提示。右键可执行程序,在属性里可以看到

Exec

Exec是可执行文件或脚本文件(.sh)的路径。我的可执行脚本.sh在【/home/wangyunuo/test.sh】这个路径

需要注意:Exec字段的值需要用引号括起来,并加上“ %f”

Icon

图片位置,我用的这张图片在【/home/wangyunuo/testImg.png】这个路径,直接把路径写在=后面就行

Terminal程序是否在终端窗口中运行。通常是不需要打开终端的,false是不在终端中运行,true是在终端中运行。
Categories 条目应显示在菜单中的类别。

 好了,参数都替换成你自己的之后,就可以保存退出了

4)修改快捷方式属性为双击可执行

【/usr/share/applications】这个目录下,找到你刚写完的文件(注意,此时的名字已经替换为Name参数后的名字,不是最开始的test.desktop),右键,选择属性

 在【Permissions】权限中选择把这个Execute勾上

 此时就已经在默认路径下配置完成了,双击试一下,看是否能执行你的.sh程序

如果能执行的话,我们将他发送到桌面上,更方便点击

5)将桌面快捷方式发送到桌面

右键-选择“复制到”-选择桌面

 然后就被发送到桌面了

至此,我们已经为test.sh这个可执行程序制作了一个桌面快捷方式,双击即可执行.sh 

参考:

ubuntu 编写.desktop文件及调试方法_张亦可918011的博客-CSDN博客

unbuntu手动创建桌面快捷方式desktop文件详解_startupnotify_玩转智能机器人的博客-CSDN博客

--END--

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

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

相关文章

【TI毫米波雷达笔记】sdk type避坑

这个函数要传一个结构体进去 然后结构体里面有个adcoutcfg结构体变量 adcoutcfg结构体里面共有三个变量 一个adcbitformat结构体 另外两保留 点开adcbitformat结构体发现是个32位段 一共四级结构体 那么请问 为什么adcoutcfg变量不直接定义成一个32位无符号整形? 另…

RISC-V走向开放服务器规范

原文:RISC-V Moving Toward Open Server Specification 作者:Agam Shah 转载自:https://www.hpcwire.com/2023/07/24/risc-v-moving-toward-open-server-specification/ 中文翻译: 2023年7月24日 RISC-V International目前正…

nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件

特性: 1、支持任意深度的chm文件解析 2、解析后内容结构转换为tree数据呈现 3、点击树节点可以在html实时查看数据 4、不依赖任何浏览器端插件,兼容性较好 nodejs端核心代码 const $g = global.SG.$g, fs = global.SG.fs, router = global.SG.router, xlsx = global.SG.xl…

git与github常用方法

这里写目录标题 1. Github基本使用方法2. Git使用方法3. git、VS code、Github联合使用方法4. Git配置Github远程仓库SSH密钥5 常见问题 1. Github基本使用方法 仓库(Repository):Github上用来存放代码的空间,包含代码、文档和其…

Java练习

添加你喜欢的歌手以及你喜欢他唱过的歌曲,并遍历 package Test0726;import java.util.ArrayList; import java.util.HashMap; import java.util.*;public class SingerTest {public static void main(String[] args) {HashMap singers new HashMap();String singe…

软工导论知识框架(五)面向对象方法学

传统软件工程方法学适用于中小型软件产品开发; 面向对象软件工程方法学适用于大型软件产品开发。 一.四要素 对象+类+继承+传递消息实现通信 二.概念 1.对象:具有相同状态的一组操作的集合,对状态和操作…

批处理处理退格符,一行里输出百分比

直接上例子程序&#xff1a; echo off&setlocal enabledelayedexpansion for /l %%a in (1,1,6) do set "str!str!" rem set /p0%<nul for /L %%i in (0,1,100) do (sleep 1 >nul set /p%str%<nul&set /p%%i%%<nul ) pause>nul 输出效果如…

linuxARM裸机学习笔记(5)----定时器按键消抖和高精度延时实验

定时器按键消抖 之前的延时消抖&#xff0c;是直接借助delay函数进行的&#xff0c;但是这样会浪费CPU的性能。我们采用延时函数的方式实现&#xff0c;可以实现快进快出。 定时器消抖&#xff0c;必须是在t3的时间点才可以&#xff0c;当在t1,t2的时间点每次进入中断函数都要…

SSH 免密登录

SSH SSH&#xff08;Secure Shell&#xff09;是一种安全通道协议&#xff0c;主要用来实现字符界面的远程登录、远程复制等功能 SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令 SSH 为建立在应用层和传输层基础上的安全协议。对数…

vscode关闭绑定元素“xxx”隐式具有“any”类型这类错误

在ts的项目里面&#xff0c;真的经常看到any类型的报错&#xff0c;真的很烦的 所以为了眼不见心不乱&#xff0c;我决定消除这个错误提示 在tsconfig.json里面配置 "noImplicitAny": false 就可以了 {"compilerOptions": {"target": "E…

LeetCode——只出现一次的数字II(位运算方法/哈希方法)

题目地址 力扣 题目解析 位运算法 由题我们能知道该数组中只有一个数出现了一次&#xff0c;然而其他的数都出现了3次。 我们可以通过分析每一个二进制位的和来讨论这个题目的解法&#xff01; 由于前边的条件&#xff0c;那么我们可以得出&#xff0c;某一个二进制位的和…

培训Java技术要多久才能学会?答案都在这里啦

培训Java技术要多久才能学会?这是想学习Java开发的很多人都会问到的一个问题。而这个问题的答案其实并不是那么简单&#xff0c;因为学Java的时间长短受到众多因素的影响。本文将从个人基础、学习动力和学习效率三个方面来为您解答这个问题。 1. 个人基础 自己的基础对于学习…

LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器

LT8711UXD 1.描述 LT8711UXD是一款高性能的双车道TypeC/DP1.4到HDMI2.0转换器&#xff0c;设计用于将USB Type-C源或DP1.4源连接到HDMI2.0接收器。LT8711UXD集成了一个DP1.4兼容的接收机&#xff0c;和一个HDMI2.0兼容的发射机。此外&#xff0c;还包括两个CC控制器&#xff0…

List和数组互转方法以及踩坑点

一、数组转List 1. 使用for循环逐个添加 String[] array {"A", "B", "C"}; List<String> list new ArrayList<>(); for (String element : array) {list.add(element); }2. 使用Arrays.asList(arr) String[] array {"A&q…

机器学习笔记之优化算法(十一)梯度下降法:凸函数VS强凸函数

机器学习笔记之优化算法——梯度下降法&#xff1a;凸函数VS强凸函数 引言凸函数&#xff1a;凸函数的定义与判定条件凸函数的一阶条件凸函数的梯度单调性凸函数的二阶条件 强凸函数强凸函数的定义强凸函数的判定条件强凸函数的一阶条件强凸函数的梯度单调性强突函数的二阶条件…

java.sql.SQLFeatureNotSupportedException 问题及可能的解决方法

目录 问题 分析&#xff1a; 解决方法 问题 java.sql.SQLFeatureNotSupportedException 分析&#xff1a; 可能是你的 druid的maven依赖版本太低了&#xff0c;我的以前是1.1.16&#xff0c;就出现了异常&#xff01; 解决方法 把druid的maven依赖版本调高&#xff01; 运…

tui.calender日历在vue中的使用1.0

官网&#xff1a;https://ui.toast.com/tui-calendar github&#xff1a;https://github.com/nhn/tui.calendar/tree/main 月、周、日视图都有&#xff0c;拖拽也比较方便&#xff0c;但是自己用起来比较费劲&#xff0c;参考文档写得不全&#xff0c;做个记录日后方便参考&…

考研408 | 【计算机网络】 数据链路层

导图&#xff1a; 数据链路层概念&#xff1a; 结点&#xff1a;主机、路由器 链路&#xff1a;网络中两个结点之间的物理通道&#xff0c;链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路&#xff1a;网络中两个结点之间的逻辑通道&#xff0…

idea中提示Unsupported characters for the charset ‘ISO-8859-1‘

application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 解决办法&#xff1a; 注意&#xff1a; 改完之后之前输入的中文就变成“ &#xff1f;&#xff1f;&#xff1f;”了&#xff0c;建议备份一下 1、打开setti…

并发——什么是线程死锁?如何避免死锁?

文章目录 1. 认识线程死锁2. 如何避免线程死锁? 1. 认识线程死锁 线程死锁描述的是这样一种情况&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞&#xff0c;因此程序不可能正常终止。 如下图所示&#xff…