
一招解决:Ubuntu 20.04 桌面双击 .desktop 文件不再"用文本编辑器打开"
- 前言
- [1 创建.desktop文件](#1 创建.desktop文件)
-
- [1.1 将文件放到 ~/.local/share/applications 目录](#1.1 将文件放到 ~/.local/share/applications 目录)
- [1.2 创建文件](#1.2 创建文件)
- [1.3 写入内容](#1.3 写入内容)
-
- [1.3.1 写入SLAM建图运行指令的.desktop文件](#1.3.1 写入SLAM建图运行指令的.desktop文件)
- [1.3.2 写入SLAM导航运行指令的.desktop文件](#1.3.2 写入SLAM导航运行指令的.desktop文件)
- [1.3.3 写入GPS打点运行指令的.desktop文件](#1.3.3 写入GPS打点运行指令的.desktop文件)
- [1.3.4 写入GPS导航运行指令的.desktop文件](#1.3.4 写入GPS导航运行指令的.desktop文件)
- [2 脚本赋予权限](#2 脚本赋予权限)
- [3 移动到桌面](#3 移动到桌面)
- [4 设置系统信任标记](#4 设置系统信任标记)
- [5 允许启动](#5 允许启动)
- [6 双击图标运行](#6 双击图标运行)
前言
想让 Ubuntu 20.04 桌面上双击 .desktop 文件就能直接启动程序,而不是弹出文本编辑器? 其实只需要 三步 :
1️⃣ 在 ~/.local/share/applications/ 里创建或放好 .desktop 文件
2️⃣ 把它复制到桌面 ~/Desktop/
3️⃣ 在桌面上右键该文件 → "允许启动"
完成后图标恢复正常,双击即可运行。
具体而言,在 Ubuntu 20.04 中,要让 .desktop 文件在桌面上运行,最推荐的方法是:将文件放到 ~/.local/share/applications 目录,再复制到桌面,然后右键"允许启动" 。这样做能同时解决启动和图标显示的问题。
✅具体流程
找到 ~/.local/share/applications/ ->创建 .desktop文件 ->写入内容-> .desktop文件 权限修改->放到桌面路径 ~/Desktop/ -> .desktop文件 桌面运行,设置系统信任标记 -> 右键 "允许启动"
✅推荐的精简流程(可靠且最常用)
- 在 ~/.local/share/applications/ 中创建 xxx.desktop,填写正确内容。
- 复制该文件到桌面:cp ~/.local/share/applications/xxx.desktop ~/Desktop/
- 在桌面上右键该文件 → "允许启动"(Allow Launching)
- 双击即可运行。
1 创建.desktop文件
1.1 将文件放到 ~/.local/share/applications 目录
bash
cd ~/.local/share/applications/

1.2 创建文件
📝 创建
bash
# 1 创建SLAM建图运行指令的.desktop文件
sudo gedit mapping.desktop
# 2 创建SLAM导航运行指令的.desktop文件
sudo gedit slam_navigation.desktop
# 3 创建GPS打点运行指令的.desktop文件
sudo gedit get_gps_points.desktop
# 4 创建GPS导航运行指令的.desktop文件
sudo gedit gps_navigation.desktop

1.3 写入内容
📝 编辑 Desktop Entry
bash
Desktop Entry 是程序的启动配置文件。以下是它的基础结构:
[Desktop Entry]:必需,表示文件开始。
Version=1.0:可选,文件规范版本。
Name:必需,应用程序名称。
Comment:可选,应用描述。
Exec:必需,程序的完整路径。启动脚本需先给脚本 chmod +x 权限。
Icon:可选,图标完整路径。
Terminal:必需,设置为 true 表示在终端运行;开启多个终端时需要设置为 false 。
Type:必需,通常设为 Application。
Categories:可选,程序在菜单中的分类。
StartupNotify:可选,应用是否发送启动通知。
1.3.1 写入SLAM建图运行指令的.desktop文件
sudo gedit mapping.desktop
bash
[Desktop Entry]
Version=1.0
Name=SLAM建图
Comment=Launch SLAM Navigation 3D Mapping
Exec=bash -c "source /opt/ros/noetic/setup.bash && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch autofleet base.launch; exec bash' & sleep 3 && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && source /home/cst/catkin_ws/install_isolated/setup.bash && source devel/setup.bash --extend && roslaunch slam_navigation 3d_mapping.launch; exec bash'"
Icon=/home/cst/catkin_car/icons/3d_mapping.png
Terminal=false
Type=Application
Categories=Development;
1.3.2 写入SLAM导航运行指令的.desktop文件
sudo gedit slam_navigation.desktop
bash
[Desktop Entry]
Version=1.0
Name=SLAM导航
Comment=Launch SLAM Navigation
Exec=bash -c "source /opt/ros/noetic/setup.bash && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch autofleet base.launch; exec bash' & sleep 3 && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch slam_navigation navigation.launch; exec bash'"
Icon=/home/cst/catkin_car/icons/slam_navigation.png
Terminal=false
Type=Application
Categories=Development;
1.3.3 写入GPS打点运行指令的.desktop文件
sudo gedit get_gps_points.desktop
bash
[Desktop Entry]
Version=1.0
Name=GPS打点
Comment=Launch GPS POINTS
Exec=bash -c "source /opt/ros/noetic/setup.bash && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch gpsnavigation drawroute.launch; exec bash'"
Icon=/home/cst/catkin_car/icons/gps_points.png
Terminal=true
Type=Application
Categories=Development;
1.3.4 写入GPS导航运行指令的.desktop文件
sudo gedit gps_navigation.desktop
bash
[Desktop Entry]
Version=1.0
Name=GPS导航
Comment=Launch GPS Navigation
Exec=bash -c "source /opt/ros/noetic/setup.bash && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch autofleet base.launch; exec bash' & sleep 3 && gnome-terminal -- bash -c 'source /opt/ros/noetic/setup.bash && cd /home/cst/catkin_car && source devel/setup.bash && roslaunch gpsnavigation navigation.launch; exec bash'"
Icon=/home/cst/catkin_car/icons/gps_navigation.png
Terminal=false
Type=Application
Categories=Development;
2 脚本赋予权限
启动脚本需先给脚本 chmod +x 权限
bash
sudo chmod +x mapping.desktop
sudo chmod +x get_gps_points.desktop
sudo chmod +x gps_navigation.desktop
sudo chmod +x slam_navigation.desktop
3 移动到桌面
bash
cp get_gps_points.desktop ~/Desktop/
cp gps_navigation.desktop ~/Desktop/
cp mapping.desktop ~/Desktop/
cp slam_navigation.desktop ~/Desktop/

4 设置系统信任标记
bash
gio set get_gps_points.desktop metadata::trusted true
gio set gps_navigation.desktop metadata::trusted true
gio set mapping.desktop metadata::trusted true
gio set slam_navigation.desktop metadata::trusted true

5 允许启动
右键 "允许启动" 或者 "Allow Launching"

6 双击图标运行
1~5 步骤完成后,之后再使用双击桌面图标即可运行。
