LINUX.ORG.RU

.xinitrc выполняется при инициализации X сессии.

Насколько я понимаю вам нужно блокировать текущую сессию при закрытии ноутбука (опускании монитора). Это нужно делать посредством screen-saver`а и демона управления электропитанием вашего DE либо сервиса acpid для отслеживания ACPI событий.

kostik87 ★★★★★
()

Не systemd случаем? Там можно одной строчкой в конфиге

derlafff ★★★★★
()
Ответ на: комментарий от Fluttershy

Вот этот скрипт:

#!/bin/sh

# fix acpid
PID=$(pgrep dbus-launch)
USER=$(ps -o user --no-headers $PID)
USERHOME=$(getent passwd $USER | cut -d: -f6)
export XAUTHORITY="$USERHOME/.Xauthority"
for x in /tmp/.X11-unix/*; do
    displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
    if [ x"$XAUTHORITY" != x"" ]; then
        export DISPLAY=":$displaynum"
    fi
done

su $USER -c "gnome-screensaver-command -l"
«вешаешь» на acpi событие закрытия крышки ноутбука, если не «ловится» ACPI событие, то пишешь правило udev для запуска этого скрипта.

Вместо gnome-screensaver можешь использовать любой другой screensaver или например slock

* x11-misc/slock
     Available versions:  1.1 ~1.1-r1 {{+filecaps savedconfig}}
     Homepage:            http://tools.suckless.org/slock
     Description:         simple X screen locker

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)

чтоб переходило в SLIM и при этом сессия сохранялась

разве слим умеет мульти-сессии?

moot ★★★★
()
Ответ на: комментарий от kostik87

со скринсавером понятно. при закрытие крышки он лочится.но не переходит в ждущий режим. нижний скрипт это куда прописать\?

Fluttershy
() автор топика
Ответ на: комментарий от moot

ну вот со слимом не получилось. со xscreensaver вроде работает. надо ждущий режим тока сделать чтоб при закрытие он не только лочил но и в ожидание переводил

Fluttershy
() автор топика
Ответ на: комментарий от Fluttershy

нижний скрипт это куда прописать

В файл, в директории, в которой находятся скрипты, которые вызываются ACPID при возникновении ACPI событий. Либо в файл, который вы будете вызывать при срабатывании правила udev, которое напишете.

но не переходит в ждущий режим.

Это называется suspend to ram, вам нужно установить пакет с соответствующими утилитами, в соответствии с технологией, которая используется в ядре вашего Linux дистрибутива, это может быть стандартный Linux Hibernate / Suspend, либо может быть TuxOnIce‎. После установки соответствующих утилит и правки конфигурационных файлов просто добавьте соответствующую команду в конец указанного скрипта.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

у меня есть скрипт который переводит и в ждущий и в спящий режим только с команды. ну щас я это забиндил уже. мне бы это связать как-то. он у меня его берет с usr/local/bin

Fluttershy
() автор топика
Ответ на: комментарий от kostik87

зделал как там указанно. там нет такого чтоб экран при закрытие крышли блокировался XScreenSaver + уходил в ждущий режим

Fluttershy
() автор топика
Ответ на: комментарий от Fluttershy

У вас есть скрипт для блокировки и скрипт для ухода в ждущий режим, пропишите вызов этих двух скриптов по необходимому событий ACPI.

Неужели это сложно сделать ?

kostik87 ★★★★★
()

Есть у кого? Так же нужно для залочки экрана, чтоб переходило в SLIM и при этом сессия сохранялась

laptop-mode-tools

emulek
()
Ответ на: комментарий от Fluttershy

Вот зачем вы в лом копируете какие-то участки кода, даже не читая то, что написано в указанной статье и не думая ?

В общих чертах, вам нужно в начале запустить acpid и затем запустить acpi_listen:

acpi_listen
затем закрыть крышку ноутбука и посмотреть, что «видит» acpi, у меня примерно так:
button/lid LID 00000080 00000020

#!/bin/sh
# /etc/acpi/default.sh
# Default acpi script that takes an entry for all actions

set $*

group=${1%%/*}
action=${1#*/}
device=$2
id=$3
value=$4

log_unhandled() {
        logger "ACPI event unhandled: $*"
}

case "$group" in
        button)
                case "$action" in
                        power)
                               /etc/acpi/actions/powerbtn.sh
                                ;;

                        # if your laptop doesnt turn on/off the display via hardware
                        # switch and instead just generates an acpi event, you can force
                        # X to turn off the display via dpms.  note you will have to run
                        # 'xhost +local:0' so root can access the X DISPLAY.
                        #lid)
                        #       xset dpms force off
                        #       ;;

                        lid)
                                case "$3" in
                                00000020)
                                        echo "mem" > /sys/power/state ;;
                                esac
                                ;;

                        *)      log_unhandled $* ;;
                esac
                ;;
        *)      log_unhandled $* ;;
esac

Вместо 'echo «mem» > /sys/power/state ;;' ваша команда перехода в ждущий режим, а выше вызов скрипта блокировки.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

в случае если acpi_listen у меня выдает:

button/lid LID close
button/lid LID open
то close это вместо твоего «00000020» на блокировку у меня идет непосредственно командой
qdbus --system org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
скрипт блокировки xscreensaver который работает в данный момент я не знаю где находится. то что переводить на него после закрытия крышки у меня само стало. нижняя часть понял должна выглядеть именно так:
 # if your laptop doesnt turn on/off the display via hardware
                        # switch and instead just generates an acpi event, you can force
                        # X to turn off the display via dpms.  note you will have to run
                        # 'xhost +local:0' so root can access the X DISPLAY.
                        #lid)
                        #       xset dpms force off
                        #       ;;

                        lid)
                                case "$3" in
                                close)
                                        qdbus --system org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend ;;
                                esac
                                ;;

                        *)      log_unhandled $* ;;
                esac
                ;;
        *)      log_unhandled $* ;;
esac
как мне мой скрип блокировки поставить? знаю нубский вопрос

Fluttershy
() автор топика
Ответ на: комментарий от kostik87

попробывал создать скрип на сон как указанно там: etc/acpi/actions/sleep-button.sh [co#!/bin/sh case «$2» in SLPB) echo -n mem >/sys/power/state ;; *) logger «ACPI action undefined: $2» ;; esac de]

верхняя часть получилась

#!/bin/sh
# /etc/acpi/default.sh
# Default acpi script that takes an entry for all actions

set $*

group=${1%%/*}
action=${1#*/}
device=$2
id=$3
value=$4

log_unhandled() {
        logger "ACPI event unhandled: $*"
}

case "$group" in
        button)
                case "$action" in
                        sleep)
                               /etc/acpi/actions/sleepbutton.sh
                                ;;
ну это не пашет, значит что-то не то(((

Fluttershy
() автор топика
Ответ на: комментарий от Fluttershy

в случае если acpi_listen у меня выдает:

button/lid LID close
button/lid LID open

В твоём случае вместо

...
                        lid)
                                case "$3" in
                                close)
...
должно быть:
                        lid)
                                case "$2" in
                                close)

скрипт блокировки xscreensaver который работает в данный момент я не знаю где находится

Я тебе его написал. Вместо «gnome-screensaver-command -l» можешь использовать любой другой screesaver или slock.

попробывал создать скрип на сон как указанно там: etc/acpi/actions/sleep-button.sh

А у тебя срабатывает ACPI событие как указано «там», ты конечно проверил всё с помощью acpi_listen ?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87
* x11-misc/slock
     Available versions:  1.1 ~1.1-r1 {{+filecaps savedconfig}}
     Homepage:            http://tools.suckless.org/slock
     Description:         simple X screen locker

ты имеешь ввиду этот? его прописать непосредственно в handler.sh? ну у меня xscreensaver стоит я прост всеровно не понял как это должно выглядеть

Fluttershy
() автор топика
Ответ на: комментарий от Fluttershy
Ответ на: комментарий от kostik87

вот если делать как ты написал это handler.sh но скрипт этот всеровно не запускает

#!/bin/sh

# fix acpid
PID=$(pgrep dbus-launch)
USER=$(ps -o user --no-headers $PID)
USERHOME=$(getent passwd $USER | cut -d: -f6)
export XAUTHORITY="$USERHOME/.Xauthority"
for x in /tmp/.X11-unix/*; do
    displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
    if [ x"$XAUTHORITY" != x"" ]; then
        export DISPLAY=":$displaynum"
    fi
done

su $USER -c "xscreensaver-command -lock"
 # if your laptop doesnt turn on/off the display via hardware
                        # switch and instead just generates an acpi event, you can force
                        # X to turn off the display via dpms.  note you will have to run
                        # 'xhost +local:0' so root can access the X DISPLAY.
                        #lid)
                        #       xset dpms force off
                        #       ;;

                        lid)
                                case "$2" in
                                close)
                                        qdbus --system org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend ;;
                                esac
                                ;;

                        *)      log_unhandled $* ;;
                esac
                ;;
        *)      log_unhandled $* ;;
esac

Fluttershy
() автор топика
Ответ на: комментарий от Fluttershy

В файл, сделать файл исполняемым, после чего прописать запуск этого файла (скрипта) перед вызовом твоей команды перехода в ждущий режим. В соответствующем разделе case`а.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.