在锁定屏幕上输入密码时如何运行脚本?

mek*_*zer 6 scripts lubuntu udev wakeup

为了根据连接的 USB 鼠标切换笔记本触摸板的启用/禁用,我使用了 touchpad-indicator,它运行一个守护程序来监视连接的设备并采取适当的措施。当我让笔记本进入睡眠状态然后拔下鼠标时,在唤醒时,触摸板被禁用,所以我必须连接 - 断开鼠标才能启用它!我在这个论坛上搜索过这个问题,但都找到了解决方案(在/etc/pm/sleep.d或 中添加脚本/usr/lib/pm-utils/sleep.d)没有用!我提出了一个问题来解决它,但毕竟,即使使用 udev 的规则而不是触摸板指示器重新工作,问题仍然存在!

我要说明的是:如果触摸板在系统级禁用(即连日志记录之前禁用,脚本将在于rc.local,其中,但是,我试过了,没有工作),把脚本在/ etc / PM和 usr/lib/pm-utils可能工作

但是它在会话级别或 udev 适用的任何级别被禁用。你能告诉我把输入密码时会运行的脚本放在哪里吗?不是登录,而是在唤醒后输入密码

更新:@terdon 你不太明白。我什至没有启用 xscreensaver,我怀疑它是否已安装。你看,因为我的帐户有密码,如果我按“注销”或“更改用户”或睡眠模式,之后我将不得不输入我的密码,这与 xscreensaver 或我不喜欢的任何屏幕保护程序无关有他们。

在问这个问题之前,我尝试了你的建议,但没有成功。

更新 2:好的,经过一些调查,我可以看出这是 Lubuntu 特定的问题。我的“成为朋友” lightdm现在的工作(我猜应用在一定程度上其他比的udev)和udev。任何对 lightdm 有任何经验的人都会受到赞赏。

更新 3:多亏了Ubuntu Wiki,我(正确地?)找到了在哪里放置我的脚本调用。因此,我增加session-setup-script=/home/n76/tptoggle.sh/etc/lightdm/lightdm.conf 现在的情况是一样的开始,除了lightdm实际上是试图把触摸板上的用户会话开始时

问题并没有消失,但我觉得我已经接近了,这只是给 lightdm 正确的特权。

请建议如何做。

ter*_*don 2

我不知道是否有一种方法可以在按照您的要求输入密码后运行某些东西,并且我怀疑会有这种方法,因为这是由桌面环境(可能是屏幕保护程序守护程序)处理的。但是,如果您将正确的脚本添加到/etc/pm/sleep.d. 由于您没有显示您尝试过的脚本,我的猜测是您根本没有正确编写脚本。以下在我的系统上运行良好:

  1. /etc/pm/sleep.d/20_resume创建一个名为以下内​​容的文件:

    #!/bin/sh
    
    case "$1" in
        thaw|resume)
        /home/terdon/scripts/onoff.sh
        ;;
    esac
    exit $?
    
    Run Code Online (Sandbox Code Playgroud)

    确保将上面的路径 ( /home/terdon/scripts/onoff.sh) 调整为步骤 3 中显示的脚本的实际路径。

  2. 授予文件正确的权限 ( rwxr-xr-x)

    sudo chmod 755 /etc/pm/sleep.d/20_resume
    
    Run Code Online (Sandbox Code Playgroud)
  3. 编写一个脚本,如果连接了鼠标,则关闭触摸板;如果没有连接鼠标,则打开触摸板:

    #!/bin/sh
    
    ## Get the xinput ID of the touchpad
    TID=$(xinput list | grep -iPo 'touchpad.*id=\K\d+')
    
    ## Check if a mouse is connected and act accordingly
    xinput list | grep -iq mouse &&  xinput disable "$TID" || xinput enable "$TID" 
    
    Run Code Online (Sandbox Code Playgroud)

    现在使用步骤 1 中的路径和名称保存上面的脚本(在本例中为/home/terdon/scripts/onoff.sh),使其可执行(chmod +x /home/terdon/scripts/onoff.sh),然后您就应该完成设置了。

如果您已经尝试过这种方法,请编辑您的问题并向我们展示您使用过的脚本。


我能想到的另一种方法是使用我对您的其他问题的回答中概述的过程。我不明白你对循环有什么看法,它们是一个完全有效且确实无价的编程结构。sleep我能想到的唯一问题是运行无限循环可能会加重 CPU 负担,但如果您的脚本在每次循环运行之间等待一两秒,那么这应该不是问题。因为我的建议就是这样做的,所以如果上述方法失败了,您可以简单地使用它。