В настройках "Параметры системы" -> "Окна" -> "Раскладка кнопок" можно включить режим Gnome, что скроет кнопки "Скрыть" и "Развернуть".
Можно ли каким-то образом запустить отдельное приложение с такой настройкой?

inxi -Fxz
в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
xprop -name 'Telegram' -format _MOTIF_WM_HINTS 32i -set _MOTIF_WM_HINTS 1
xprop -name 'Telegram' _NET_WM_STATE
выдает состояние окна телеги. Например, _NET_WM_STATE_HIDDEN если оно свёрнуто или _NET_WM_STATE_DEMANDS_ATTENTION если оно требует внимания (мигает на панели задач вместо того, чтобы нормально нарисоваться на экране). А дальше два путя: нужен какой-то демон, который будет отслеживать состояние окна и активировать его, если оно требует внимания. Или наоборот, закрывать, если оно свернуто. И то, и другое легко делается через wmctrl
. Сама телега никуда из трея не денется: даже набранное, но не отправленное сообщение не пропадет. Код: Выделить всё
title=`wmctrl -l | egrep -o Telegram.*` # Имя окна Telegram
if [ -n "$title" ] # Если окно найдено
then
echo "title = "$title
status=`xprop -name "$title" _NET_WM_STATE` # Текущее состояние окна
echo "status = "$status
marker1="_NET_WM_STATE(ATOM) = _NET_WM_STATE_HIDDEN, _NET_WM_STATE_DEMANDS_ATTENTION" # Маркер свёрнутого мигающего окна
if [ "$status" == "$marker1" ] # Статус соответствует маркеру
then
wmctrl -a "$title" # Активация окна
fi
else
echo "Окно Telegram не найдено"
fi
Код: Выделить всё
./Telegram &
for ((;;))
do
echo "Бесконечный цикл"
...
sleep 1
done
"_NET_WM_STATE(ATOM) = _NET_WM_STATE_HIDDEN, _NET_WM_STATE_DEMANDS_ATTENTION"
- вот тут, если окно не свёрнуто, может быть просто один статус "demands attention". При этом окно мигает и не прорисовывается.Код: Выделить всё
#!/bin/bash
while true
do
title=`wmctrl -l | egrep -o Telegram.*`
if [ -n "$title" ]; then
status=`xprop -name "$title" _NET_WM_STATE`
if [[ $status == *"DEMANDS_ATTENTION"* ]]; then
wmctrl -R "$title"
fi
fi
sleep 1
done
sleep 0.3
жрет до 0,1% CPU, с секундной задержкой почти незаметен.Код: Выделить всё
marker1="_NET_WM_STATE(ATOM) = _NET_WM_STATE_HIDDEN, _NET_WM_STATE_DEMANDS_ATTENTION"
marker2="_NET_WM_STATE(ATOM) = _NET_WM_STATE_DEMANDS_ATTENTION"
if [ "$status" == "$marker1" ] || [ "$status" == "$marker2" ] # Статус соответствует маркеру
then
wmctrl -a "$title" # Активация окна
fi
А если убрать галку "Настройки > Уведомления и звуки > Подсветка окна"? У меня вроде работает.demonlibra писал(а): ↑11 авг 2022, 17:12но при этом окно Telegram вываливается на передний план при получении уведомлений.
Код: Выделить всё
#!/bin/bash
while true
do
if [ -z $window_id ]; then
window_id=`wmctrl -l | grep -i telegram | awk '{print $1}'`
fi
status=`xprop -id "$window_id" _NET_WM_STATE`
if [[ $status == *"DEMANDS_ATTENTION"* ]]; then
wmctrl -i -R "$window_id"
fi
sleep 1
done
Код: Выделить всё
./Telegram &
sleep 5
while [[ -n `pgrep Telegram` ]]
...
Почему-то если запустить сценарий в терминале, то всё прекрасно работает.
Странно... у меня и в фоне работает. Запускал просто из nemo. А процесс висит в системном мониторе, не пропадает? Там ещё sleep у него должен быть, если с зависимостями смотреть. Как вариант - можно echo в лог вывести, посмотреть, что там в переменных.demonlibra писал(а): ↑11 авг 2022, 20:46Почему-то если запустить сценарий в терминале, то всё прекрасно работает.
Но стоит это сделать в фоне, то эффект нулевой.
У меня только
pgrep telegram
PID выдаёт. Если с большой буквы написать - то пустое значение.Код: Выделить всё
#!/bin/bash
Код: Выделить всё
[Desktop Entry]
Name=Telegram fix
Comment=Desktop version of Telegram messaging app
Exec=/home/demonlibra/.scripts/telegram.sh
Icon=telegram
Terminal=false
StartupWMClass=TelegramDesktop
Type=Application
Categories=Chat;Network;InstantMessaging;Qt;
MimeType=x-scheme-handler/tg;
Keywords=tg;chat;im;messaging;messenger;sms;tdesktop;
SingleMainWindow=true
X-GNOME-UsesNotifications=true
Движок сайта её коварно маскирует бледно-серым цветом почему-то )))demonlibra писал(а): ↑11 авг 2022, 21:26Задал принудительно интерпритатор bash добавив в начало сценария строку
Код: Выделить всё
#!/bin/bash
Вот извращенцы. Вам надо для цикла убедится, что программа запущена? Дык это можно сделать гораздо проще:
while pidof telegram-desktop
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей