Среднее приложение работает в полноэкранном режиме; нет меню браузера и правильной иконки!

Если вы похожи на меня, вы проводите много времени в веб-браузере. Вещи, которые вы раньше делали в отдельной программе — электронная почта, обработка текстов, даже графика — теперь обрабатываются веб-страницами от Microsoft, Google и других. Это особенно удобно для пользователей Linux, потому что многие программы, такие как Office, сложно запустить в Linux, но они прекрасно работают в браузере. Но есть и темная сторона, которую я покажу вам, как исправить.

Проблема в том, что браузер представляет собой одно окно, обычно заполненное вкладками. Даже если вы запускаете, скажем, Gmail, в одном окне, ваш оконный менеджер видит его только как браузер. Если у вас открыто десять окон, все они выглядят как браузер, если вы внимательно не изучите их. У вас также может возникнуть соблазн открыть «только одну вкладку» в этом окне, и тогда у вас будет еще большая путаница.

В Linux есть отличные инструменты для управления большим количеством открытых окон. Я использую KDE, но большинство современных систем поддерживают виртуальные рабочие столы, доки для управления задачами и какую-то мозаику окон. Ничего из этого не работает с вкладками.

Решение

Я использую Vivaldi, браузер на базе Chrome. Однако вы можете использовать Chrome, Chromium или, возможно, любой другой браузер на основе Chrome. Вам также понадобится несколько простых инструментов. Программа xdotool легко доступна везде, где вы устанавливаете программное обеспечение. Я также думал, что буду использовать программу под названием xseticon, но на практике, вероятно, можно обойтись и без нее. Его не всегда можно легко установить в каждом дистрибутиве, но он доступен в виде Snap.

Установка хорошо работает для меня, используя рабочий стол KDE Plasma. Однако в этом нет ничего особенного для KDE. Однако, поскольку xdotool не работает на Wayland, вам, вероятно, нужно использовать рабочий стол X11, хотя некоторые идеи могут быть применимы, даже если вы используете Wayland.

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-sr000.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-sr001.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-sr002.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-sr003.html

https://ceds.ed.gov/cbn/done/video-Sassuolo-Inter-fobo-tv--04.html

https://ceds.ed.gov/cbn/done/video-Sassuolo-Inter-fobo-tv--05.html

https://ceds.ed.gov/cbn/done/video-Sassuolo-Inter-fobo-tv--06.html

https://ceds.ed.gov/cbn/done/video-Sassuolo-Inter-fobo-tv--07.html

https://ceds.ed.gov/cbn/cbs/video-Juve-Benevento-fobo-tv--00.html

https://ceds.ed.gov/cbn/cbs/video-Juve-Benevento-fobo-tv--01.html

https://ceds.ed.gov/cbn/cbs/video-Juve-Benevento-fobo-tv--02.html

https://ceds.ed.gov/cbn/cbs/video-Juve-Benevento-fobo-tv--03.html

https://ceds.ed.gov/cbn/des/Bayern-v-im-de-tc04.html

https://ceds.ed.gov/cbn/des/Bayern-v-im-de-tc05.html

https://ceds.ed.gov/cbn/des/Bayern-v-im-de-tc06.html

https://ceds.ed.gov/cbn/des/Bayern-v-im-de-tc07.html

https://ceds.ed.gov/cbn/des/Berlin-v-im-de-tc00.html

https://ceds.ed.gov/cbn/des/Berlin-v-im-de-tc01.html

https://ceds.ed.gov/cbn/des/Berlin-v-im-de-tc02.html

https://ceds.ed.gov/cbn/des/Berlin-v-im-de-tc03.html

https://ceds.ed.gov/cbn/des/BVB-v-im-de-tc00.html

https://ceds.ed.gov/cbn/des/BVB-v-im-de-tc01.html

https://ceds.ed.gov/cbn/des/BVB-v-im-de-tc02.html

https://ceds.ed.gov/cbn/des/BVB-v-im-de-tc03.html

https://ceds.ed.gov/cbn/des/Freiburg-v-im-de-tc00.html

https://ceds.ed.gov/cbn/des/Freiburg-v-im-de-tc01.html

https://ceds.ed.gov/cbn/des/Freiburg-v-im-de-tc02.html

https://ceds.ed.gov/cbn/des/Freiburg-v-im-de-tc03.html

https://ceds.ed.gov/cbn/des/Leipzig-v-im-de-tc00.html

https://ceds.ed.gov/cbn/des/Leipzig-v-im-de-tc01.html

https://ceds.ed.gov/cbn/des/Leipzig-v-im-de-tc02.html

https://ceds.ed.gov/cbn/des/Leipzig-v-im-de-tc03.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-01.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-02.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-03.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-04.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-05.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-06.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-07.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-08.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-09.html

https://ceds.ed.gov/cbn/dus/Man-v-Burn-liv-hd-tv-10.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-01.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-02.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-03.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-04.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-05.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-06.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-07.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-08.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-09.html

https://artsmidhudson.org/dlrx/des/Man-v-Burn-liv-hd-tv-10.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-01.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-02.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-03.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-04.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-05.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-06.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-07.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-08.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-09.html

https://www.kepler.org/wp-content/pol/des/Man-v-Burn-liv-hd-tv-10.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-01.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-02.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-03.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-04.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-05.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-06.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-07.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-08.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-09.html

http://admin.maps.bpex.org.uk/cnn/Man-v-Burn-liv-hd-tv-10.html

https://ceds.ed.gov/cbn/done/s-v-i-it01.html

https://ceds.ed.gov/cbn/done/s-v-i-it02.html

https://ceds.ed.gov/cbn/done/s-v-i-it03.html

https://ceds.ed.gov/cbn/done/s-v-i-it04.html

https://ceds.ed.gov/cbn/done/s-v-i-it05.html

https://artsmidhudson.org/dlrx/done/s-v-i-it01.html

https://artsmidhudson.org/dlrx/done/s-v-i-it02.html

https://artsmidhudson.org/dlrx/done/s-v-i-it03.html

https://artsmidhudson.org/dlrx/done/s-v-i-it04.html

https://artsmidhudson.org/dlrx/done/s-v-i-it05.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr00.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr01.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr02.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr03.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr04.html

http://admin.maps.bpex.org.uk/cnn/Manu-v-Burny-N-v-Sr05.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr00.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr01.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr02.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr03.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr04.html

https://ceds.ed.gov/cbn/dus/Manu-v-Burny-N-v-Sr05.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De00.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De01.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De02.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De03.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De04.html

http://admin.maps.bpex.org.uk/cnn/D-v-K-De05.html

https://ceds.ed.gov/cbn/des/D-v-K-De00.html

https://ceds.ed.gov/cbn/des/D-v-K-De01.html

https://ceds.ed.gov/cbn/des/D-v-K-De02.html

https://ceds.ed.gov/cbn/des/D-v-K-De03.html

https://ceds.ed.gov/cbn/des/D-v-K-De04.html

https://ceds.ed.gov/cbn/des/D-v-K-De05.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr00.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr01.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr02.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr03.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr04.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-Sr05.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De00.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De01.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De02.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De03.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De04.html

https://www.kepler.org/wp-content/pol/pik/D-v-K-De05.html

https://artsmidhudson.org/dlrx/des/Manu-v-Burny-N-v-sr000.html

https://artsmidhudson.org/dlrx/des/Manu-v-Burny-N-v-sr001.html

https://artsmidhudson.org/dlrx/des/Manu-v-Burny-N-v-sr002.html

https://artsmidhudson.org/dlrx/des/Manu-v-Burny-N-v-sr003.html

https://artsmidhudson.org/dlrx/done/video-Juve-Benevento-fobo-tv--00.html

https://artsmidhudson.org/dlrx/done/video-Juve-Benevento-fobo-tv--01.html

https://artsmidhudson.org/dlrx/done/video-Juve-Benevento-fobo-tv--02.html

https://artsmidhudson.org/dlrx/done/video-Juve-Benevento-fobo-tv--03.html

https://artsmidhudson.org/dlrx/done/video-Sassuolo-Inter-fobo-tv--04.html

https://artsmidhudson.org/dlrx/done/video-Sassuolo-Inter-fobo-tv--05.html

https://artsmidhudson.org/dlrx/done/video-Sassuolo-Inter-fobo-tv--06.html

https://artsmidhudson.org/dlrx/done/video-Sassuolo-Inter-fobo-tv--07.html

https://artsmidhudson.org/dlrx/pik/Bayern-v-im-de-tc04.html

https://artsmidhudson.org/dlrx/pik/Bayern-v-im-de-tc05.html

https://artsmidhudson.org/dlrx/pik/Bayern-v-im-de-tc06.html

https://artsmidhudson.org/dlrx/pik/Bayern-v-im-de-tc07.html

https://artsmidhudson.org/dlrx/pik/Berlin-v-im-de-tc00.html

https://artsmidhudson.org/dlrx/pik/Berlin-v-im-de-tc01.html

https://artsmidhudson.org/dlrx/pik/Berlin-v-im-de-tc02.html

https://artsmidhudson.org/dlrx/pik/Berlin-v-im-de-tc03.html

https://artsmidhudson.org/dlrx/pik/BVB-v-im-de-tc00.html

https://artsmidhudson.org/dlrx/pik/BVB-v-im-de-tc01.html

https://artsmidhudson.org/dlrx/pik/BVB-v-im-de-tc02.html

https://artsmidhudson.org/dlrx/pik/BVB-v-im-de-tc03.html

https://artsmidhudson.org/dlrx/pik/Freiburg-v-im-de-tc00.html

https://artsmidhudson.org/dlrx/pik/Freiburg-v-im-de-tc01.html

https://artsmidhudson.org/dlrx/pik/Freiburg-v-im-de-tc02.html

https://artsmidhudson.org/dlrx/pik/Freiburg-v-im-de-tc03.html

https://artsmidhudson.org/dlrx/pik/Leipzig-v-im-de-tc00.html

https://artsmidhudson.org/dlrx/pik/Leipzig-v-im-de-tc01.html

https://artsmidhudson.org/dlrx/pik/Leipzig-v-im-de-tc02.html

https://artsmidhudson.org/dlrx/pik/Leipzig-v-im-de-tc03.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De00.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De01.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De02.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De03.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De04.html

https://artsmidhudson.org/dlrx/pik/D-v-K-De05.html

https://www.kepler.org/wp-content/pol/pik/Bayern-v-im-de-tc04.html

https://www.kepler.org/wp-content/pol/pik/Bayern-v-im-de-tc05.html

https://www.kepler.org/wp-content/pol/pik/Bayern-v-im-de-tc06.html

https://www.kepler.org/wp-content/pol/pik/Bayern-v-im-de-tc07.html

https://www.kepler.org/wp-content/pol/pik/Berlin-v-im-de-tc00.html

https://www.kepler.org/wp-content/pol/pik/Berlin-v-im-de-tc01.html

https://www.kepler.org/wp-content/pol/pik/Berlin-v-im-de-tc02.html

https://www.kepler.org/wp-content/pol/pik/Berlin-v-im-de-tc03.html

https://www.kepler.org/wp-content/pol/pik/BVB-v-im-de-tc00.html

https://www.kepler.org/wp-content/pol/pik/BVB-v-im-de-tc01.html

https://www.kepler.org/wp-content/pol/pik/BVB-v-im-de-tc02.html

https://www.kepler.org/wp-content/pol/pik/BVB-v-im-de-tc03.html

https://www.kepler.org/wp-content/pol/pik/Freiburg-v-im-de-tc00.html

https://www.kepler.org/wp-content/pol/pik/Freiburg-v-im-de-tc01.html

https://www.kepler.org/wp-content/pol/pik/Freiburg-v-im-de-tc02.html

https://www.kepler.org/wp-content/pol/pik/Freiburg-v-im-de-tc03.html

https://www.kepler.org/wp-content/pol/pik/Leipzig-v-im-de-tc00.html

https://www.kepler.org/wp-content/pol/pik/Leipzig-v-im-de-tc01.html

https://www.kepler.org/wp-content/pol/pik/Leipzig-v-im-de-tc02.html

https://www.kepler.org/wp-content/pol/pik/Leipzig-v-im-de-tc03.html

https://www.kepler.org/wp-content/pol/done/video-Juve-Benevento-fobo-tv--00.html

https://www.kepler.org/wp-content/pol/done/video-Juve-Benevento-fobo-tv--01.html

https://www.kepler.org/wp-content/pol/done/video-Juve-Benevento-fobo-tv--02.html

https://www.kepler.org/wp-content/pol/done/video-Juve-Benevento-fobo-tv--03.html

https://www.kepler.org/wp-content/pol/done/video-Sassuolo-Inter-fobo-tv--04.html

https://www.kepler.org/wp-content/pol/done/video-Sassuolo-Inter-fobo-tv--05.html

https://www.kepler.org/wp-content/pol/done/video-Sassuolo-Inter-fobo-tv--06.html

https://www.kepler.org/wp-content/pol/done/video-Sassuolo-Inter-fobo-tv--07.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-sr000.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-sr001.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-sr002.html

https://www.kepler.org/wp-content/pol/des/Manu-v-Burny-N-v-sr003.html

Решение зависит от переключателя командной строки браузера --app, хотя самого по себе этого недостаточно. Если запустить, например:

google-chrome --app https://gmail.com

Вы получите красивое окно с вашей почтой. Однако это только часть битвы. Окно по-прежнему выглядит как браузер на рабочем столе.

Чтобы исправить это, нам нужно найти окно по его заголовку и изменить имена классов окна. Это говорит диспетчеру рабочего стола, что это уникальная программа. Вы можете принудительно установить значок, но если веб-сайт устанавливает значок, который все равно будет отображаться, обычно вы можете пропустить этот шаг.

Единственная другая проблема заключается в том, что у вас есть диспетчер задач или док-станция, которые группируют значки по процессам. Вы можете отключить это поведение, если оно приводит к тому, что все ваши приложения складываются вместе.

Параметры диспетчера задач KDE только для значков

Упрощать

Чтобы упростить задачу, я создал скрипт, который вы можете скачать с GitHub. Он предназначен для вызова из другого скрипта, который вы создадите для запуска своего веб-приложения. Вы захотите отредактировать скрипт weblaunch и установить переменную BROWSER в соответствии с вашим выбором браузера.

Скрипт принимает три или четыре аргумента. Первый — это URL-адрес приложения. Сценарий предполагает https://, поэтому не добавляйте эту часть. Второй аргумент — это регулярное выражение, соответствующее заголовку окна. Это может быть сложно, потому что вам нужно найти что-то уникальное. Так что Inbox, вероятно, не подходит.

Третий аргумент — файл PNG для использования в качестве значка. Вам это может не понадобиться, поэтому вы можете передать тире здесь, если хотите. Последний необязательный аргумент — это новый заголовок окна. Это может быть полезно для идентификации окна и предотвращения его повторного сопоставления позже, если это окажется проблемой.

Есть один вариант, который вы можете передать перед аргументами, если хотите. Обычно скрипт открывает любое количество копий веб-приложения. Установив -1, вы можете настроить скрипт на поиск нового заголовка или исходного заголовка, если вы его не указали. Если он найден, скрипт выводит его на передний план и завершает работу. Если скрипт не может найти окно, он запускает приложение в обычном режиме.

Пример

Вот мой скрипт Gmail:

#!/bin/bash
APP=mail.google.com/mail/u/[email protected]
ICON=-
TITLE="Inbox.*My Name"
exec weblaunch "$APP" "$TITLE" "$ICON"

Или, вы могли бы сделать это проще:

#!/bin/bash
exec weblaunch mail.google.com "Inbox.*My Name" mail.google.com

Использование длинного URL приведет к загрузке Gmail для этой учетной записи, если вы уже вошли в эту учетную запись. Более короткий URL-адрес просто попадает в учетную запись по умолчанию. Очевидно, вам нужно будет изменить адрес и имя, чтобы они соответствовали вашим настройкам.

На GitHub есть много других примеров скриптов. Есть даже один для Medium. Возможно, вы захотите добавить эти сценарии в меню рабочего стола с помощью редактора меню или создать для них файлы .Desktop. Или вы можете запустить их, как и любой другой файл сценария. Не забудьте сделать их исполняемыми (например, chmod +x gmail).

Предостережения

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

Если вы еще не вошли в систему, многие веб-сайты будут перенаправлять вас на другой URL-адрес, чтобы войти в систему. Он откроется в окне браузера и не вернется. Так что войдите сначала.

Единственная другая проблема, которую я видел, — это загрузка вложений Gmail. Это не работает. Однако вы можете выбрать трехточечный значок в правом верхнем углу и выбрать «Открыть в новом окне», как вы можете видеть на этом рисунке. Это поместит это электронное письмо в обычное окно браузера, где вы сможете его загрузить.

С другой стороны…

Существует программа под названием Nativefier, которая делает то же самое, но генерирует исполняемый файл. Тем не менее, он использует Electron, и поэтому, хотя браузер Chrome такой же, в нем нет никаких ваших плагинов, паролей и т. д. Использование GMail без, скажем, Grammarly, на самом деле не стоит, так что это часть того, что стимулировало мне написать этот сценарий.

Больше информации есть на GitHub. Попробуйте. Если это не работает для вашего варианта использования, оставьте проблему, и, возможно, мы сможем ее решить. Между тем, если это работает, наслаждайтесь тем, что ваши веб-приложения работают в их собственных окнах, которые легко найти.