Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Feb 2020 03:04:32 +0300
From:      Yuri Pankov <yuripv@yuripv.me>
To:        Noah Palmer <noahpalmerversion1@gmail.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Update X when laptop lip is closed
Message-ID:  <a5f78fee-edf5-a590-2c47-3ebe0aa9f0b2@yuripv.me>
In-Reply-To: <CACd7u-9em=-NvBZwb4H2S7pP5QqOLf3OHsBzBDFY5d44KL05ag@mail.gmail.com>
References:  <CACd7u-8CNo8OgqO21v%2BBpqesO-cUwKw-uUieYjqsSxiNFu1taw@mail.gmail.com> <2061301f-4f78-e50a-1864-f9a608b7c504@yuripv.me> <CACd7u--dZZiz6tcSgMeFazdsnyREEgOT0WoomEtAaa5VWSnbFQ@mail.gmail.com> <5fe7c2f2-9645-0c13-1878-7bbfa8f33487@yuripv.me> <CACd7u-9em=-NvBZwb4H2S7pP5QqOLf3OHsBzBDFY5d44KL05ag@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
Noah Palmer wrote:
> On Sun, Feb 16, 2020 at 4:00 AM Yuri Pankov <yuripv@yuripv.me> wrote:
> 
>> Noah Palmer wrote:
>>> On Sat, Feb 15, 2020 at 11:08 PM Yuri Pankov <yuripv@yuripv.me> wrote:
>>>
>>>> Noah Palmer wrote:
>>>>> is there a way to automatically remove or add the display to X when the
>>>>> laptop lid is opened or closed. I have been using a script to read
>>>>> dev.acpi_lid.0.state, but is there better way?
>>>>
>>>> If you are polling the dev.acpi_lid.0.state value, see /etc/devd.conf
>>>> for examples of ACPI events notification, so you could invoke the need
>>>> actions when lid is open/closed.
>>>>
>>> Okay that seems to be the solution. I also have an issue that
>>> dev.acpi_lid.0.state is incorrect if the lid was open at boot. you have
>> to
>>> close and open the lid for the value to be correct.
>>
>> Interesting, I'm seeing the same on my lenovo laptop, something to look
>> into.  BTW, there's somewhat related PR filed:
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=240881.
>>
> Okay, I can use devd to run commands when the lid is opened and closed, but
> they don't trigger if the laptop starts open or closed, there has to be a
> change in state when the laptop is running.

Just tried that with a simple /etc/devd/lid.conf file:

notify 10 {
         match "system"          "ACPI";
         match "subsystem"       "Lid";
         action                  "logger Lid $notify";
};

I seem to be getting the event right after the first state change, 
booting both open and closed.

For the initial lid state, please try the attached patch (if possible).

[-- Attachment #2 --]
commit 49e57132dc8b8d2e512c7fa5ed427e8346878d2e
Author: Yuri Pankov <yuripv@FreeBSD.org>
Date:   Mon Feb 17 02:49:28 2020 +0300

    acpi_lid: provide initial LID state

diff --git a/sys/dev/acpica/acpi_lid.c b/sys/dev/acpica/acpi_lid.c
index 80bc344d606d..40ff2566889b 100644
--- a/sys/dev/acpica/acpi_lid.c
+++ b/sys/dev/acpica/acpi_lid.c
@@ -124,6 +124,9 @@ acpi_lid_attach(device_t dev)
     if (acpi_parse_prw(sc->lid_handle, &prw) == 0)
 	AcpiEnableGpe(prw.gpe_handle, prw.gpe_bit);
 
+    /* Get the initial lid status, ignore failures */
+    (void) acpi_GetInteger(sc->lid_handle, "_LID", &sc->lid_status);
+
     /*
      * Export the lid status
      */

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a5f78fee-edf5-a590-2c47-3ebe0aa9f0b2>