Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Смена статуса в Pidgin по закрытию крышки бука  (Прочитано 3065 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Когда-то, на welinux, а именно вот тут: http://welinux.ru/post/3394/ публиковалось решение для данной задачи.
Но, дело в том, что purple-remote использует информацию сессии dbus, и дисплей, на котором запущен Pidgin. Если с дисплеем, все понятно, то сессия dbus постоянно разная. И именно этого не было учтено. Так же я подумал, что неплохо было бы после открытия крышки ноутбука/нетбука возвращать старый статус, стоявший до закрытия крышки.
И еще, по умолчанию в purple-remote для stdin и stdout не задано никаких кодировок.
Первым делом исправим эту досадную несправедливость:
sudo nano /usr/bin/purple-remoteи после строки import sys, добавляем:
import codecs
sys.stdin = codecs.getwriter('utf-8')(sys.stdin);
sys.stdout = codecs.getwriter('utf-8')(sys.stdout);
сохраняем(CTRL+O, Enter :)), выходим (CTRL+X)
теперь создадим скрипт, который будет выдирать данные сессии dbus. Я создавал его в папке .config своего домашнего каталога, чтобы не мозолил глаза...
nano ~/.config/xdbus.shпосле чего вставляем туда такой код:
#!/bin/bash
touch $HOME/.Xdbus
chmod 600 $HOME/.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.Xdbus
env | grep XAUTHORITY >> $HOME/.Xdbus
echo 'export XAUTHORITY' >> $HOME/.Xdbus
Сохраняем, выходим.
Даем скрипту права на выполнение:
sudo chmod +x ~/.config/xdbus.shДобавляем скрипт в Запускаемые приложения, чтобы каждый раз при загрузке нашего пользователя у нас были новые данные о dbus-сессии. Для Gnome это будет так:
Меню->Система->Параметры->Запускаемые приложения
Жмем на Добавить. Название пишем любое. Например - Xdbus Session Info. В строке Команда, пишем:
sh -c "/home/имя_вашего_пользователя/.config/xdbus.sh"Комментарий можно пропустить. Жмем на Сохранить. Выходим оттуда.
Это была подготовительная стадия, своего рода прелюдия, а теперь можно приступить непосредственно к делу.
Открываем файл /etc/acpi/lid.sh
sudo nano /etc/acpi/lid.shИ после первых двух строк:
#!/bin/bash
# TODO:  Change the above to /bin/sh
вставляем нужное нам:
if [ -e /tmp/pidgin_status ]
then
STATUS=`cat /tmp/pidgin_status`;
else
export DISPLAY=:0.0;
source /home/имя_вашего_пользователя/.Xdbus; sudo -u имя_вашего_пользователя /usr/bin/purple-remote "getstatusmessage" > /tmp/pidgin_status
STATUS=`cat /tmp/pidgin_status`;
fi
grep -q closed /proc/acpi/button/lid/*/state
if [ $? = 0 ]
then
export DISPLAY=:0.0;
source /home/имя_вашего_пользователя/.Xdbus; sudo -u имя_вашего_пользователя /usr/bin/purple-remote "setstatus?status=away&message=Отошел. Крышка ноута закрыта";
else
export DISPLAY=:0.0;
export STATUS;
source /home/имя_вашего_пользователя/.Xdbus; sudo -u имя_вашего_пользователя /usr/bin/purple-remote "setstatus?status=available&message=$STATUS";
unset STATUS;
rm /tmp/pidgin_status;
fi
Думаю, объяснять что делается в каждой строке, нет необходимости, ибо каждый, кто хоть чуть-чуть знает bash, сможет в этом разобраться, или даже переделать под себя. Можно например добавить озвучку открытия и закрытия крышки через festival.
в таком случае устанавливаем его командой sudo apt-get install festival и в вышеприведенном коде перед вторым else добавляем:
echo "closed" | festival --ttsи перед вторым fi:
echo "opened" | festival --tts
Ах да! Не забываем после всех манипуляций перелогиниться!
« Последнее редактирование: 08 Августа 2010, 23:36:43 от gr1m »
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

Оффлайн ZwS

  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #1 : 08 Августа 2010, 21:40:01 »
интересная хаутушка, спасибо. опробую на своем ноуте когда из сервисцентра вернут.
только мне кажется что файлик .Xdbus лучше создавать в /tmp . это сделает скрипт более универсальным.
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #2 : 08 Августа 2010, 21:43:02 »
интересная хаутушка, спасибо. опробую на своем ноуте когда из сервисцентра вернут.
только мне кажется что файлик .Xdbus лучше создавать в /tmp . это сделает скрипт более универсальным.
Да, можно в принципе и в /tmp =)

нашел маленький касяк, а потому решил подправить скрипт... изменил главный пост...
« Последнее редактирование: 08 Августа 2010, 23:38:12 от gr1m »
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

Оффлайн GonZaleZ

  • Активист
  • *
  • Сообщений: 628
  • Нет, не включат
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #3 : 09 Августа 2010, 00:16:17 »
Cейчас протестил, вроде как работает, но после каждого закрытия/открытия крышки в истории статусов пиджина сохраняеются все эти статусы. Можно ли их как-нибудь автоматом чистить?
И ещё, что означает ключ -е в строке if [ -e /tmp/pidgin_status ] ?

Сорри, просто баш я не знаю, но большинство интуитивно понимаю
HP Pavilion dv6 1317-er | Ubuntu 11.04
Intel Core 2 Duo 2,2 ГГц | 3 Gb RAM | ATI Mobility Radeon 4650 HD 1Gb
У меня есть айфон и айпад - тролльте, господа...

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #4 : 09 Августа 2010, 14:44:37 »
Cейчас протестил, вроде как работает, но после каждого закрытия/открытия крышки в истории статусов пиджина сохраняеются все эти статусы. Можно ли их как-нибудь автоматом чистить?
И ещё, что означает ключ -е в строке if [ -e /tmp/pidgin_status ] ?

Сорри, просто баш я не знаю, но большинство интуитивно понимаю
почистить? копай в сторону ~/.purple/status.xml
ключ -e в данном случае проверяет наличие файла /tmp/pidgin_status.
Да, заметил еще один досадный косяк... Если в статусе есть двойные кавычки, то он берет статус ровно до первых кавычек... Не предусмотрел я экранирования кавычек. Собственно вечером подправлю, я думаю... Попробую так же сделать автоочистку статусов, если получится.
« Последнее редактирование: 09 Августа 2010, 14:48:22 от gr1m »
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

Оффлайн GonZaleZ

  • Активист
  • *
  • Сообщений: 628
  • Нет, не включат
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #5 : 10 Августа 2010, 06:58:15 »
Всё, понял))
Я и спросил это только потому, что в скрипте этот файл не удалялся после открытия крышки. Думал, может этот ключ что-то такое даёт. Сейчас поправлю и буду копать в сторону истории статусов.

Пользователь решил продолжить мысль 10 Августа 2010, 07:18:47:
Попробовал вручную поудалять из ~/.purple/status.xml ненужные статусы - не помогло.
Ну да и фиг с ними. Главное, что сохранённые не меняются.

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 10 Августа 2010, 07:18:47 от GonZaleZ »
HP Pavilion dv6 1317-er | Ubuntu 11.04
Intel Core 2 Duo 2,2 ГГц | 3 Gb RAM | ATI Mobility Radeon 4650 HD 1Gb
У меня есть айфон и айпад - тролльте, господа...

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #6 : 10 Августа 2010, 11:42:25 »
Всё, понял))
Я и спросил это только потому, что в скрипте этот файл не удалялся после открытия крышки. Думал, может этот ключ что-то такое даёт. Сейчас поправлю и буду копать в сторону истории статусов.

Пользователь решил продолжить мысль 10 Августа 2010, 07:18:47:
Попробовал вручную поудалять из ~/.purple/status.xml ненужные статусы - не помогло.
Ну да и фиг с ними. Главное, что сохранённые не меняются.

(Нажмите, чтобы показать/скрыть)
не удалялся /tmp/pidgin_status? Очень странно. строка удаления ведь есть.
Вчера руки не дошли до ~/.purple/status.xml. А если черт с ним, то действительно, черт с ним =)
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

Оффлайн kinley

  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #7 : 10 Августа 2010, 11:49:20 »
во вы садюги нафига так над собой издеваться ? это вы чтоб сменить статус в аське крышку бука открываете/закрываете ?
имхо ржу нимагу:) нафига это нада ? где вы этим пользуетесь ? научите ньюба крышкой бука пользоватсо..:)

без обид личное мнение.

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #8 : 10 Августа 2010, 14:27:45 »
во вы садюги нафига так над собой издеваться ? это вы чтоб сменить статус в аське крышку бука открываете/закрываете ?
имхо ржу нимагу:) нафига это нада ? где вы этим пользуетесь ? научите ньюба крышкой бука пользоватсо..:)

без обид личное мнение.
Садюги? Нет, ничуть. Просто по моему кому-то нужно научиться правильно понимать суть топика. Это тоже без обид. Сугубо мое мнение.
Сидишь ты с бука, в каком-нибудь общественном месте(универ/офис или еще чего). Нужно перейти с этажа на этаж, например. Ты будешь держать крышку бука открытой? и переносить ноут? А так, закрыл крышку, статус сменился, что ты отошел. Пришел на место, открыл бук и все, ты тут =)
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

Оффлайн GonZaleZ

  • Активист
  • *
  • Сообщений: 628
  • Нет, не включат
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #9 : 10 Августа 2010, 16:43:47 »
не удалялся /tmp/pidgin_status? Очень странно. строка удаления ведь есть.

Не, просто, по-моему, в первоначальной версии этой строки не было. Потом уже сам добавил. Или я ошибаюсь? о_О
HP Pavilion dv6 1317-er | Ubuntu 11.04
Intel Core 2 Duo 2,2 ГГц | 3 Gb RAM | ATI Mobility Radeon 4650 HD 1Gb
У меня есть айфон и айпад - тролльте, господа...

Оффлайн gr1m

  • Автор темы
  • Любитель
  • *
  • Сообщений: 84
  • #10#13
    • Просмотр профиля
Re: Смена статуса в Pidgin по закрытию крышки бука
« Ответ #10 : 10 Августа 2010, 23:12:50 »
не удалялся /tmp/pidgin_status? Очень странно. строка удаления ведь есть.

Не, просто, по-моему, в первоначальной версии этой строки не было. Потом уже сам добавил. Или я ошибаюсь? о_О
в первоначальной версии не было... Но в первоначальной версии и косяк глобальный был =) сейчас то все ровно =)
Gentoo @ HP Pavilion dv2300 (Core 2 Duo 2 GHz, 2 Gb DDR2)
Ubuntu 10.04.3 @ Dell Inspiron 6400 (Core Duo 1,87 GHz, 2,5 Gb DDR2)
Gentoo @ Dell Inspiron Mini 1010 (Atom 1,33 GHz, 1 Gb DDR2)

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.