Как я могу автоматически отключить приложение, если оно не в фокусе?

Evince (программа просмотра PDF по умолчанию) должна автоматически запоминать отдельные настройки отображения для разных документов. Однако в 10.04 предпочтение отдается режиму просмотра по умолчанию.

В Ubuntu 10.10 (GNOME 2.30) у Evince есть опция в меню «Правка» для этого: «Сохранить текущие настройки по умолчанию ". В этом случае вы измените масштаб на «Лучшее соответствие» и настройте все ваши настройки отображения, а затем активируйте этот параметр, который будет применяться к будущим документам. Если вы сможете подождать месяц на 10.10, чтобы быть выпущенным, и можете перейти на него, это может быть вашим лучшим выбором. Есть другие читатели в формате PDF, которые могут это сделать, но я не нашел таких простых в использовании, как Evince.

1
задан 12 June 2016 в 22:37

2 ответа

Сценарий ниже опирается на все собственные инструменты Ubuntu, pactl и qdbus, чтобы определить активное приложение, автоматически отключать звук и включать звук, когда приложение получает и фокусируется от пользователя.

Имя приложения установленным в переменной APP_ICON_NAME. Вы можете использовать pactl list sink-inputs | grep icon_name, чтобы определить значение, которое вам нужно установить. В моем случае я протестировал его с помощью chromium-browser.

Скрипт подвергнется незначительным улучшениям в стиле, и, возможно, дополнительные функции будут добавлены, но на данный момент он на 90% полезен и выполняет его задачу должным образом. Он будет в конечном итоге отправлен в github

#!/bin/bash

list_sinks()
{
  pactl list sink-inputs | awk '/Sink Input #/{ sub(/#/," ");  printf $3" "} /application.icon_name/{ printf $0"\n" }'
}

get_active_app_icon_name()
{
  qdbus org.ayatana.bamf  /org/ayatana/bamf/matcher org.ayatana.bamf.matcher.ActiveApplication \
      | xargs -I {} qdbus org.ayatana.bamf {} org.ayatana.bamf.view.Icon
}



get_sinks_for_app()
{
  list_sinks | while read line ; do

    if grep -q "$APP_ICON_NAME" <<< "$line"
    then
       awk '{printf $1" "}' <<< "$line"
    fi
 done
}

mute_sinks()
{
   for sink_id in $( get_sinks_for_app  ) ; do
       pactl set-sink-input-mute "$sink_id" 1
   done
}

unmute_sinks()

{
   for sink_id in $( get_sinks_for_app  ) ; do
       pactl set-sink-input-mute "$sink_id" 0
   done
}
main()
{
  local APP_ICON_NAME="chromium-browser"

  while true 
  do

     if [ "$( get_active_app_icon_name )" != "$APP_ICON_NAME" ] ;
     then
          mute_sinks
     else 
         unmute_sinks
     fi

  sleep 0.25  
  done
}


main
4
ответ дан 23 May 2018 в 10:02
  • 1
    Привет, Серж, вам действительно нужно посмотреть на загрузку системы, она добавляет слишком много для продолжающегося процесса. – Jacob Vlijm 12 June 2016 в 23:10
  • 2
    @JacobVlijm сколько? – Sergiy Kolodyazhnyy 12 June 2016 в 23:10
  • 3
    Я получаю от +6 до 7%, но правило должно быть imo, если вы заметили, это слишком много. – Jacob Vlijm 12 June 2016 в 23:11
  • 4
    @JacobVlijm htop сообщает обо мне около 2% – Sergiy Kolodyazhnyy 12 June 2016 в 23:13
  • 5
    Да, это возможно, не уверен, почему и как, но это, вероятно, вызывает другие процессы, чтобы потреблять больше. У нас было это раньше, я посмотрю ... – Jacob Vlijm 12 June 2016 в 23:14

Если в игре используется обычная звуковая система от ubuntu, aka pulse audio, тогда вы входите в:

системные настройки -> звук -> приложения

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

3
ответ дан 23 May 2018 в 10:02

Другие вопросы по тегам:

Похожие вопросы: