在 Linux Mint 13 中设置 udev 规则

在 Linux Mint 13 中设置 udev 规则

我正在尝试通过一些教程为我的 HP 耳机 (usb) 设置 udev 规则。

在 /etc/udev/rules.d 中创建了一个文件 ( 90-local.rules ),并添加了以下内容:

ACTION="add",SUBSYSTEM="usb", ATTR{vendor}=="Hewlett-Packard", RUN+="sh /home/alex/Scripts/usb.sh"

问题是当我连接耳机时什么都没发生!我做错了什么?

注意:我重启了 udev,脚本也运行正常,所以不是这个原因

答案1

你的 udev 规则没有问题。问题是你的脚本以及 udev 本身都运行

  1. 作为– 不是您自己的用户帐户;
  2. 作为一个服务– 在您的登录会话之外;

因此无法访问您的 X11 显示器或 DBus 会话总线。

请记住,Linux 与 Unix 一样,从第一天起就支持多个并发登录会话,因此不存在“用户”;可以有多个用户拥有多个 X11 显示器和多个 DBus 总线(甚至可能没有连接 X11 服务器)。

一种常见的解决方法是让脚本始终选择第一个 X11 显示器(通过DISPLAY=":0"在脚本内部设置)。然而,这是不是保证正常工作——即使是单用户 PC 也可以运行两个或更多 X11 显示器(例如,您自己的桌面可能位于:1,而:0可能是登录屏幕或者根本没有运行)。

答案2

首先通过按 Alt-F2 尝试一下,然后在框中执行以下操作:/bin/sh -c“DISPLAY=:0.0 /usr/bin/notify-send foobar”请注意所有完整路径,并注意 shell 命令周围的双引号。

相关内容