Автор Тема: Xfce и управление питанием  (Прочитано 5411 раз)

Онлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 908
    • Домашняя страница
    • Email
Re: Xfce и управление питанием
« Ответ #15 : 29.12.2016 06:03:14 »
То есть гипотеза об игнорировании Hidden=true неверна и зря напраслину навели. В /etc/xdg/autostart есть подобное?
Андрей Черепанов (cas@)

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #16 : 29.12.2016 06:14:16 »
Багрепорт
Ошибка 32955 - Неконтролируемый запуск xfce4-power-manager
повешен на пакет xfce4-session

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #17 : 29.12.2016 06:16:25 »
В /etc/xdg/autostart есть подобное?

Только xfce4-power-manager застрял в процессах
$ grep -rHin ^Exec= /etc/xdg/autostart/
/etc/xdg/autostart/xfce4-notes-autostart.desktop:99:Exec=xfce4-notes
/etc/xdg/autostart/xfdashboard-autostart.desktop:12:Exec=/usr/bin/xfdashboard -d
/etc/xdg/autostart/nm-applet.desktop:141:Exec=nm-applet
/etc/xdg/autostart/spice-vdagent.desktop:4:Exec=/usr/bin/spice-vdagent
/etc/xdg/autostart/xfsettingsd.desktop:52:Exec=xfsettingsd
/etc/xdg/autostart/gsettings-data-convert.desktop:117:Exec=gsettings-data-convert
/etc/xdg/autostart/at-spi-dbus-bus.desktop:4:Exec=/usr/libexec/at-spi-bus-launcher --launch-immediately
/etc/xdg/autostart/polkit-gnome-authentication-agent-1-xfce.desktop:92:Exec=/usr/libexec/polkit-1/polkit-gnome-authentication-agent-1
/etc/xdg/autostart/xscreensaver.desktop:101:Exec=xscreensaver -no-splash
/etc/xdg/autostart/pulseaudio.desktop:81:Exec=start-pulseaudio-x11
/etc/xdg/autostart/xfce4-clipman-plugin-autostart.desktop:100:Exec=xfce4-clipman
$ grep -rHn Hidden ~/.config/autostart/
/home/user/.config/autostart/xfce-polkit.desktop:2:Hidden=true
/home/user/.config/autostart/screensaver & powersave off.desktop:11:Hidden=false
/home/user/.config/autostart/polkit-gnome-authentication-agent-1-xfce.desktop:2:Hidden=true
/home/user/.config/autostart/xfce4-power-manager.desktop:2:Hidden=true
$ ps -eo pid,args|grep polkit-1/polkit-gnome-authentication-agent-1
 6837 grep polkit-1/polkit-gnome-authentication-agent-1

xfce-polkit удалён гораздо ранее физически.
Остального пока не вижу.

То есть гипотеза об игнорировании Hidden=true неверна и зря напраслину навели.

Это я к тому, что несмотря на то что маркер снят, не стоит безоглядно надеяться что процесс не взлетит. :) А по какой причине, это уже другой вопрос.
« Последнее редактирование: 29.12.2016 06:33:26 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #18 : 29.12.2016 07:49:56 »
А нет, вру, вижу.
Смотрю себе и думаю:
- Чтоб ещё такое грохнуть, но чтобы возни потом поменьше?, - а давай пульсу щёлкнем, чтобы на входе в сессию звука не было?

Снял марке в Сеансы и запуск>Автозагрузка с пульсы. Вышел из сессии Xfce. Посмотрел, пульсовые процессы, - завершились, нет их.
Захожу в сессию, а музыкой хоть наслаждайся:
$ grep -rHn Hidden ~/.config/autostart/pulseaudio.desktop
/home/user/.config/autostart/pulseaudio.desktop:2:Hidden=true
$ grep -rHin ^Exec= /etc/xdg/autostart/pulseaudio.desktop
/etc/xdg/autostart/pulseaudio.desktop:81:Exec=start-pulseaudio-x11
$ ps -eo pid,user,args|grep pulse|grep -v grep
10616 user   /usr/lib/xfce4/panel/wrapper-2.0 /usr/lib/xfce4/panel/plugins/libpulseaudio-plugin.so 18 14680100 pulseaudio PulseAudio Plugin Adjust the audio volume of the PulseAudio sound system
10669 user   /usr/bin/pulseaudio --start --log-target=syslog

Похоже что-то другое его поднимает, не автостарт. В смысле запрет игнорируется.
Если что, xfce-шный пользовательский лог на багтрекере лежит.
« Последнее редактирование: 29.12.2016 07:56:09 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #19 : 29.12.2016 08:09:40 »
Кстати о логике Hidden=true|false и автостарте.

Если desktop-файл в /etc/xdg/autostart/ есть, а у пользователя в каталоге нет, то щелчёк в автостарте создаст desktop-файл с таким же именем в ~/.config/autostart/, пропишет Hidden=true|false в зависимости от того, снят ли маркер или выставлен.

Если desktop-файла в /etc/xdg/autostart/ нет, а есть только у пользователя в ~/.config/autostart/, то Hidden=true|false добавляется к конфигу в пользовательский desktop-файл:

Маркер в Сеансы и запуск>Автостарт установлен, - запускать screensaver & powersave off
$ cat ~/.config/autostart/screensaver\ \&\ powersave\ off.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=screensaver & powersave off
Comment=
Exec=/usr/bin/xset s off -dpms
OnlyShowIn=GNOME;KDE;LXDE;LXQt;MATE;Razor;ROX;TDE;XFCE;Cinnamon;Old;
StartupNotify=false
Terminal=false
Hidden=false

Маркер в Сеансы и запуск>Автостарт снят, - не запускать
$ cat ~/.config/autostart/screensaver\ \&\ powersave\ off.desktop
[Desktop Entry]
Encoding=UTF-8
Version=0.9.4
Type=Application
Name=screensaver & powersave off
Comment=
Exec=/usr/bin/xset s off -dpms
OnlyShowIn=GNOME;KDE;LXDE;LXQt;MATE;Razor;ROX;TDE;XFCE;Cinnamon;Old;
StartupNotify=false
Terminal=false
Hidden=true
« Последнее редактирование: 29.12.2016 08:14:29 от Speccyfighter »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Xfce и управление питанием
« Ответ #20 : 29.12.2016 08:49:16 »
Какой физический смысл
Hidden=false
?
Скрывать пункт меню у пользователя? Что-бы он ломал голову откуда у него программа запускается?

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #21 : 29.12.2016 09:18:10 »
Какой физический смысл
Hidden=false
?
Скрывать пункт меню у пользователя? Что-бы он ломал голову откуда у него программа запускается?

Ну, Руслан...
Hidden ничего не скрывает ни от кого :)

https://specifications.freedesktop.org/autostart-spec/0.5/ar01s02.html#idm140060502090816
Цитировать
Implementation Notes

If an application autostarts by having a .desktop file installed in the system wide autostart directory, an individual user can disable the autotomatic start of this application by placing a .desktop file of the same name in its personal autostart directory which contains the key Hidden=true.

Конкретно вольный перевод:
Если автостартующее приложение имеет desktop файл установленный в автостарт каталог системы,  пользователь может отключить автозапуск этого приложения, поместив файл .desktop с тем же именем в своем личном каталоге автостарта, который содержит ключ Hidden=true.

Пульс-демон и поувер-менеджер запускаются персонально для сессии пользователя с правами пользователя, т.о. каждый пользователь может запретить или разрешить подниматься процессам принадлежащим ему через GUI-приложение сняв или установив маркер для аппликации во вкладке автостарт.

Смысл Hidden=false в desktop-файле каталога автостарт профиля пользователя:
- Разрешить запускаться приложению указанному в /etc/xdg/autostart/*.desktop с таким же именем. Hidden=true - запретить. true|false это триггер для аппликации который устаналивает GUI-конфигуратор, для аппликации при входе в X-сессию, - разрешить автостарт или запретить . В данном случае это конфигуатор Сеансы и запуск>Автозапуск.
   Фишка автостарта не в том чтобы автостарт руками вкручивать и выдирать его пассатижами, а в том чтобы это делать в один клик мыши триггером. Ну или руками через sed или через него же по сценарию.



Не стартовать start-pulseaudio-x11 (запретить пульсаудио) в сессии пользователя:
моя селёдка, в какой цвет хочу в такой и крашу
$ grep -rHn Hidden ~/.config/autostart/pulseaudio.desktop
/home/user/.config/autostart/pulseaudio.desktop:2:Hidden=true

Но его всё равно что-то дёргает, как и поувэр менеджер
$ ps -eo pid,user,args|grep pulse|grep -v grep
 2778 user   /usr/lib/xfce4/panel/wrapper-2.0 /usr/lib/xfce4/panel/plugins/libpulseaudio-plugin.so 18 12582948 pulseaudio PulseAudio Plugin Adjust the audio volume of the PulseAudio sound system
 2831 user   /usr/bin/pulseaudio --start --log-target=syslog


Ещё по этому же поводу:
https://specifications.freedesktop.org/autostart-spec/0.5/ar01s02.html
Цитировать
Hidden Key

When the .desktop file has the Hidden key set to true, the .desktop file MUST be ignored. When multiple .desktop files with the same name exists in multiple directories then only the Hidden key in the most important .desktop file must be considered: If it is set to true all .desktop files with the same name in the other directories MUST be ignored as well.
- When the .desktop file has the Hidden key set to true, the .desktop file MUST be ignored.
- Когда desktop файл имеет ключ Hidden установленный в true, desktop файл ДОЛЖЕН (ОБЯЗАН) быть проигнорирован.

Всё целиком:
Desktop Application Autostart Specification
https://specifications.freedesktop.org/autostart-spec/0.5/index.html


Я эту байду не заметил, потому что мне надо было на скорую руку автостартом запретить энергосбережение через xset в своём домашнем каталоге. По true|false на входе в сессию поднимает-не_поднимает, ну и ладно. И мне даже в голову не пришло, что в Линукс что при Hidden=true для процесса (не подниматься), для desktop-файла /etc/xdg/autostart/ запрет будет проигнорен и процесс всё равно взлетит.
« Последнее редактирование: 29.12.2016 10:25:59 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #22 : 29.12.2016 11:59:35 »
Тьфу ты ё-моё...
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
$
$ grep -rHin ^Exec= /etc/xdg/autostart/xfce4-power-manager.desktop
/etc/xdg/autostart/xfce4-power-manager.desktop:109:Exec=xfce4-power-manager
$ grep Hidden ~/.config/autostart/xfce4-power-manager.desktop
Hidden=true


Выкрутился закатом солнца вручную:

- Маркер сохранить сеанс снят
- Hidden=true
$ grep -rHin ^Exec= /etc/xdg/autostart/xfce4-power-manager.desktop
/etc/xdg/autostart/xfce4-power-manager.desktop:109:Exec=xfce4-power-manager
$ grep Hidden ~/.config/autostart/xfce4-power-manager.desktop
Hidden=true

- Понадобилось и решило проблему самовзлетания процесса:
$ ls -1 ~/.cache/sessions/xfce4*
/home/user/.cache/sessions/xfce4-session-comp-pentium-m-e6b072:0
/home/user/.cache/sessions/xfce4-session-comp-pentium-m-e6b072:0.bak
$ mv ~/.cache/sessions/xfce4* ~/temporary/

- Перелогинивание.

Т.е. понадобилось руками грохнуть кеш xfce4 и выйти без сохранения сеанса.

Само-собой кеш был мой и с нормальными правами
$ ls -l temporary/xfce4-session-pentium-m\:0*
-rw-r--r-- 1 user user 3238 дек 27 09:00 temporary/xfce4-session-pentium-m:0
-rw-r--r-- 1 user user 3239 дек 27 08:49 temporary/xfce4-session-pentium-m:0.bak

По времени видно что кеш обновлялся на выходе, но как там застрял xfce4-power-manager и с сохранением и без сохранения сеанса, ума не приложу...

Размышление в никуда:
Т.е. выходит что содержимое кеша имеет более высокий приоритет над конфигами?..

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Xfce и управление питанием
« Ответ #23 : 29.12.2016 12:59:23 »
- Когда desktop файл имеет ключ Hidden установленный в true, desktop файл ДОЛЖЕН (ОБЯЗАН) быть проигнорирован.
Он и игнорируется, не отбражаясь в меню

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #24 : 29.12.2016 13:11:11 »
- Когда desktop файл имеет ключ Hidden установленный в true, desktop файл ДОЛЖЕН (ОБЯЗАН) быть проигнорирован.
Он и игнорируется, не отбражаясь в меню

Он игнорируется отображаясь:
$ grep -rHin ^Exec= /etc/xdg/autostart/xfce4-power-manager.desktop
/etc/xdg/autostart/xfce4-power-manager.desktop:109:Exec=xfce4-power-manager
$ grep Hidden ~/.config/autostart/xfce4-power-manager.desktop
Hidden=true
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
$

Мне ещё раз процитировать спецификацию с freedesktop.org?

Чем этот Hidden= править, руками или GUI-ем, не имеет значения, - параметр срабатывает на входе в сессию, как разрешение или запрет автостарта.
« Последнее редактирование: 29.12.2016 13:17:19 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #25 : 29.12.2016 14:26:16 »
Стоит один раз разрешить и пока кеш не грохнешь и не перелогинишься, ни за что не хочет исчезать. Даже с Hidden=true. И сказано же, не сохранять сессию. Так он и не сохраняет. А xfce4-power-manager очень даже сохраняет.
Гад!..
« Последнее редактирование: 29.12.2016 14:32:57 от Speccyfighter »

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #26 : 29.12.2016 15:10:09 »
Совсем запретил, чтобы снова в кеш не побежал из-за сломанного триггера:
$ echo 'NotShowIn=XFCE;' >> ~/.config/autostart/xfce4-power-manager.desktop
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=true

NotShowIn=XFCE;

Но перед этим кеш Xfce был убит. Чтобы менеджер там не застрял.
Сутки пролетели, - не заметил.

И по-другому никак не прибить, иначе на первом же обновлении сломается:
$ rpm -ql $(rpm -qf /etc/xdg/autostart/xfce4-power-manager.desktop) | grep xfce4-power-manager.desktop
/etc/xdg/autostart/xfce4-power-manager.desktop

Но заметил, что кастомный автостартовый с xset в домашнем каталоге, триггером работает хорошо.
« Последнее редактирование: 29.12.2016 15:22:50 от Speccyfighter »

Оффлайн stranger573

  • Мастер
  • ***
  • Сообщений: 1 434
    • Email
Re: Xfce и управление питанием
« Ответ #27 : 29.12.2016 15:55:17 »
- Когда desktop файл имеет ключ Hidden установленный в true, desktop файл ДОЛЖЕН (ОБЯЗАН) быть проигнорирован.
Он и игнорируется, не отбражаясь в меню
Это такая смешная шутка?
Для того, чтобы desktop-файл не отображался в меню:
NoDisplay=true

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Xfce и управление питанием
« Ответ #28 : 30.12.2016 08:44:16 »
Нет, такое противоречие здравой логике мне конкретно вынесло мозг, но однако пора закругляться...


Линукс:
О проецировании идеального костылизма в неидеальный мир.


xfce4-power-manager в кеше сеанса xfce нет и он на входе в сессию не запущен
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep

Автозапуск при входе в сессию запрещён
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=true


Разрешаем запускаться xfce4-power-manager при входе в сессию
$ sed -i 's/Hidden=true/Hidden=false/' ~/.config/autostart/xfce4-power-manager.desktop
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=false


Маркер Сохранить сеанс не стоит.
Выходим из сеанса.

xfce4-power-manager запущен
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
 2797 xfce4-power-manager

Оставляем разрешение запускаться
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=false

Удаляем из сеанса xfce4-power-manager:
Скриншот:
xfce-удалить_из_сеанса.png

Маркер Сохранить сеанс не стоит.
Выходим из сеанса.
Ожидаем что в следующем сеансе xfce4-power-manager будет запущен.
Т.е. ключ Hidden с параметром false в соответствии со спецификацией freedesktop.org на автозапуск будет работать.

И он действительно запущен:
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=false

$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
 3950 xfce4-power-manager

И в кеше сессии xfce его нет
$ grep xfce4-power-manager ~/.cache/sessions/xfce4-session-comp-pentium-m-e6b072\:0*
$

Запрещаем запуск xfce4-power-manager при входе в сессию xfce
$ sed -i 's/Hidden=false/Hidden=true/' ~/.config/autostart/xfce4-power-manager.desktop
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=true


но не удаляем из сеанса запущенный xfce4-power-manager
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
 3950 xfce4-power-manager

и выходим с сохранением сеанса:
Маркер Сохранить сеанс установлен в окне на выходе из сессии.
На вкладке Общие xfce4-session-settings, Автоматически сохранять сеанс не установлен.

После входа в сессию xfce, xfce4-power-manager запущен
$ ps -eo pid,args|grep xfce4-power-manager|grep -v grep
 5146 xfce4-power-manager --restart --sm-client-id ...

несмотря на запрет запуска,
$ sed '' ~/.config/autostart/xfce4-power-manager.desktop
[Desktop Entry]
Hidden=true


потому что остался в кеше сессии xfce
$ grep xfce4-power-manager ~/.cache/sessions/xfce4-session-pentium-m\:0*
/home/user/.cache/sessions/xfce4-session-pentium-m:0:Client6_CloneCommand=xfce4-power-manager
/home/user/.cache/sessions/xfce4-session-pentium-m:0:Client6_RestartCommand=xfce4-power-manager,--restart,--sm-client-id,2455f13aa-ad7d-4278-b4a4-6d4551eb9f56
/home/user/.cache/sessions/xfce4-session-pentium-m:0:Client6_DesktopFile=/etc/xdg/autostart/xfce4-power-manager.desktop
/home/user/.cache/sessions/xfce4-session-pentium-m:0:Client6_Program=xfce4-power-manager

А в чём здесь идеальный костылизм?
А в том, что настройки вкладок Общие и Сеанс xfce4-session-settings, начинают противоречить настройке вкладки Автозапуск, которая разрещает или запрещает автозапуск. Т.е. здесь конфликт со спецификацией freedesktop.org на Автозапуск на уровне одного приложения настройки сессии xfce.
Т.е.:
Если аплет попал в кеш сеансов xfce, вы не можете запретить его старт через Hidden=true в desktop-файле автозапуска (снять маркер на вкладке Автозапуск в Сеансы и запуск (xfce4-session-settings)).


Единственный вариант провернуть этот фарш с запретом автозапуска аплета если он попал в кеш сеансов xfce, это:

1. Снять маркер Автоматически сохранять сеанс при выходе в Сеансы и запуск>Общие.
2. На вкладке Сеансы и запуск>Сеанс удалить аплет из кеша сессии xfce, - выбрать аплет и нажать кнопку Завершить программу.
3. На этой же вкладке, нажать кнопку Сохранить сеанс.
4. На вкладке Сеансы и запуск>Автозапуск проверить, чтобы маркер с аплета был снят, - этот макер меняет параметр у Hidden= в desktop-файле автозапуска в домашнем каталоге пользователя: Hidden=false, - автозапуск разрешён, маркер установлен; Hidden=true, - автозапуск запрещён, маркер снят.
5. Выйти можно без сохранения сеанса, - уже сохранённый в кеше сессии xfce сеанс, который будет использован при входе в сессию xfce, не содержит аплета.

А поскольку автозапуск аплета запрещён в desktop-файле автозапуска домашнего каталога пользователя, аплет при входе в сессию xfce запущен не будет.


Но вы уверены, что в отличие от идеального бескостылизма спецификации на автозапуск freedesktop.org, всё это не вынесет пользователю мозг?

ИМХО.
А ведь алгоритм решения прост как кипич:
Всё что находится в /etc/xdg/autostart не должно попадать в кеш сессии, тогда триггер Hidden будет работать безукоризненно.

Keep It Simple Stupid!



ЗЫ
Всё это, кроме последнего выброса, можно было бы сделать в картинках с комментариями и показать как это делается мышкой, без терминала, но форум позволяет вставить только четыре изображения.
« Последнее редактирование: 30.12.2016 09:31:46 от Speccyfighter »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Xfce и управление питанием
« Ответ #29 : 30.12.2016 15:46:55 »
Единственный вариант провернуть этот фарш с запретом автозапуска аплета если он попал в кеш сеансов xfce, это:

1. Снять маркер Автоматически сохранять сеанс при выходе в Сеансы и запуск>Общие.
2. На вкладке Сеансы и запуск>Сеанс удалить аплет из кеша сессии xfce, - выбрать аплет и нажать кнопку Завершить программу.
3. На этой же вкладке, нажать кнопку Сохранить сеанс.
4. На вкладке Сеансы и запуск>Автозапуск проверить, чтобы маркер с аплета был снят, - этот макер меняет параметр у Hidden= в desktop-файле автозапуска в домашнем каталоге пользователя: Hidden=false, - автозапуск разрешён, маркер установлен; Hidden=true, - автозапуск запрещён, маркер снят.
5. Выйти можно без сохранения сеанса, - уже сохранённый в кеше сессии xfce сеанс, который будет использован при входе в сессию xfce, не содержит аплета.

А чуть проще нельзя? При включенном маркере Автоматически сохранять сеанс:
1 Убираем программу из автозапуска
2. Завершаем процесс
3. Перезапускаем сеанс

Но на счёт костылизма согласен полностью.