Как известно, GNOME Shell использует нижний трей с автоскрытием. Вообщем-то неплохое решение. Но иногда, например как в случае с "My weather indicator" или "Skype", хочется лицезреть их трей-иконки. Есть неплохое расширение "Classic systray", которое возращает весь системный трей на панель GNOME Shell. Но когда иконок много и, в принципе, часть из них не нужна, было бы хорошо, чтобы они так и оставались в нижнем трее.
И так, одно из решений это создание расширения, которое будет отражать трей-иконку нужного приложения на верхней панели.
Покажу на примере программ, таких как Mу-weather-indicator и Skype:
Создаем две папки:
1
2
|
mkdir
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
my
-
weather
-
indicator
-
status
mkdir
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
skype
-
status
|
Создаем в папке my-weather-indicator-status файлы extension.js:
1
|
gedit
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
my
-
weather
-
indicator
-
status
/
extension
.js
|
С содержанием:
1
2
3
4
5
6
7
8
9
|
const
StatusIconDispatcher
=
imports
.
ui
.
statusIconDispatcher
;
function
enable
(
)
{
StatusIconDispatcher
.
STANDARD_TRAY_ICON_IMPLEMENTATIONS
[
`
my
-
weather
-
indicator
`
]
=
`
my
-
weather
-
indicator
`
;
}
function
disable
(
)
{
StatusIconDispatcher
.
STANDARD_TRAY_ICON_IMPLEMENTATIONS
[
`
my
-
weather
-
indicator
`
]
=
`
`
;
}
function
init
(
)
{
}
|
И metadata.json:
1
|
gedit
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
my
-
weather
-
indicator
-
status
/
metadata
.json
|
С содержанием:
1
2
3
4
5
6
|
{
"shell-version"
:
[
"3.0"
,
"3.2"
,
"3.4"
]
,
"uuid"
:
"my-weather-indicator-status"
,
"name"
:
" My-weather-indicator Status Icon"
,
"description"
:
"Integrates My-weather-indicator into the status bar"
}
|
Создаем в папке skype-status файлы extension.js:
1
|
gedit
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
skype
-
status
/
extension
.js
|
С содержанием:
1
2
3
4
5
6
7
8
9
|
const
StatusIconDispatcher
=
imports
.
ui
.
statusIconDispatcher
;
function
enable
(
)
{
StatusIconDispatcher
.
STANDARD_TRAY_ICON_IMPLEMENTATIONS
[
`
skype
`
]
=
`
skype
`
;
}
function
disable
(
)
{
StatusIconDispatcher
.
STANDARD_TRAY_ICON_IMPLEMENTATIONS
[
`
skype
`
]
=
`
`
;
}
function
init
(
)
{
}
|
И metadata.json:
1
|
gedit
~
/
.local
/
share
/
gnome
-
shell
/
extensions
/
skype
-
status
/
metadata
.json
|
с содержанием:
1
2
3
4
5
6
|
{
"shell-version"
:
[
"3.0"
,
"3.2"
,
"3.4"
]
,
"uuid"
:
"skype-status"
,
"name"
:
" Skype Status Icon"
,
"description"
:
"Integrates Skype Icon into the status bar"
}
|
Вот и все перезапускаем GNOME Shell (Alt + F2 и команда r или выходим и входим обратно в систему), запускаем gnome-tweak-tool и включаем наши расширения.
Всё, можно запускать наши программы. Таким образом можно переместить в верхний бар трей-иконку практически любого приложения заменив в файле extension.js имя программы "skype" на имя другой программы (и заменив, соответственно, описание расширения в metadata.json). Для себя я сделал расширения еще для программ Deadbeef , Psi+, Turpial.
Всем приятного открытия! Буду рад видеть в группе vk.com/hybryde.