Gnome桌面图标创建

默认九宫格抽屉图标存储位置

/usr/share/applications  #系统包、snap、flatpak --system、官方 deb 放这里
/usr/local/share/applications  #手动 make install、第三方软件常放这里
$HOME/.local/share/applications  #用户自己建的启动器、AppImage 自注册、Steam 外部游戏、flatpak --user 都在这儿

GNOME Shell 启动时会一次性读入这些目录(含子目录),按 Name 排序后展示在“全部应用”视图;

桌面图标创建

cd $HOME
vim example.desktop

# 写入以下内容
[Desktop Entry]
Name=Example
Comment=Example ...
Exec=/opt/appimages/example.AppImage
Icon=/opt/appimages/example.png
Terminal=false
StartupNotify=true
StartupWMClass=example-WMClass
Type=Application
Categories=Network;

chmod +x example.desktop

解包拿图标过程

cd /opt/appimages
sudo ./example.AppImage --appimage-extract
sudo find squashfs-root -name "*icon*.png" -exec cp {} /opt/appimages/example.png \;
sudo rm -rf squashfs-root

StartupNotify StartupWMClass

此两个属性可以不添加

  1. StartupNotify
  • 是否向桌面环境发送“启动通知”信号。
  • true(默认)→ 点击图标后光标旁会出现旋转指示,告诉用户“程序正在启动”。
  • false → 不发送通知,适用于不弹窗口的脚本或后台进程,避免一直转圈 。

  1. StartupWMClass
  • 把后面真正跑出来的窗口“归到”哪一个 WM_CLASS 名下,实现
  • 窗口与启动器图标合一(防止重复图标);
  • 旋转指示正确消失(桌面环境收到匹配窗口后结束通知)。

获取StartupWMClass

xprop WM_CLASS          # 然后点击窗口,第一串引号内容即为值

Gnome-remote-desktop修改证书

# 默认证书位置
/home/desktop-user/.local/share/gnome-remote-desktop

# 证书名称
rdp-tls.crt & rdp-tls.key

# 使用Let's Encrypt证书替换
cd /home/desktop-user/.local/share/gnome-remote-desktop
openssl rsa -in /etc/letsencrypt/live/domain/privkey.pem -out my.key
openssl x509 -in /etc/letsencrypt/live/domain/fullchain.pem -out my.crt -outform PEM
# 备份
cp rdp-tls.crt rdp-tls.crt.bak
cp rdp-tls.key rdp-tls.key.bak
# 替换
cat my.crt > rdp-tls.crt
cat my.key > rdp-tls.key
# 验证,输出一致即可
md5sum my.key rdp-tls.key


# 加入certbot自动化脚本中,自动更新证书内容
LOCAL_FILE_PATH_CRT="/etc/letsencrypt/live/domain/fullchain.pem"
LOCAL_FILE_PATH_KEY="/etc/letsencrypt/live/domain/privkey.pem"
GNOME_REMOTE_TLS_PATH="/home/desktop-user/.local/share/gnome-remote-desktop"

echo "Update gnome remote desktop ssl"
openssl rsa -in $LOCAL_FILE_PATH_KEY -out "$GNOME_REMOTE_TLS_PATH/my.key"
openssl x509 -in $LOCAL_FILE_PATH_CRT -out "$GNOME_REMOTE_TLS_PATH/my.crt" -outform PEM
cat "$GNOME_REMOTE_TLS_PATH/my.key" > "$GNOME_REMOTE_TLS_PATH/rdp-tls.key"
cat "$GNOME_REMOTE_TLS_PATH/my.crt" > "$GNOME_REMOTE_TLS_PATH/rdp-tls.crt"