Как разветвить виджет KDE из системного каталога в моем домашнем каталоге?

У меня есть рабочий стол KDE4 на корпоративном сервере (CentOS 7), где у меня нет root-доступа. Да, KDE 4 по-прежнему.

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

Я нашел этот старый поток, который пытается сделать то же самое, но никогда не был решен, и они не были ограничены решениями без полномочий root, как я.

Моя попытка состояла в том, чтобы скопировать файлы виджетов из системного каталога в мой домашний каталог и сделать новую версию с взломанным QML (см. изменения в конце).

Но после перезапуска KDE я не вижу новый виджет, доступный для использования, если щелкнуть панель правой кнопкой мыши и перейти в диалоговое окно Добавить виджет.

Я больше не могу найти много соответствующей документации по KDE4. Кто-нибудь помнит, что делать?


Разветвление виджета как org.kde.pager-nowinoutline

$ mkdir -p ~/.kde/share/apps/plasma/packages
$ cp -r /usr/share/kde4/apps/plasma/packages/org.kde.pager ~/.kde/share/apps/plasma/packages/org.kde.pager-nowinoutline

metadata.desktop

[Desktop Entry]
Name=Pager (No window outlines)
Icon=user-desktop                                                                                                                                                                                                                                              
Type=Service
X-KDE-ServiceTypes=Plasma/Applet
X-Plasma-MainScript=ui/main.qml
X-KDE-PluginInfo-Author=
X-KDE-PluginInfo-Email=
X-KDE-PluginInfo-Name=org.kde.pager-nowinoutline
X-KDE-PluginInfo-Version=1.0
X-KDE-PluginInfo-Category=Windows and Tasks
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true

контент/пользовательский интерфейс/main.qml

// ...

// Comment out this part responsible for drawing the window outlines
/*
                Repeater {                                                                                                                                                                                                                                     
                    model: windows

                    Rectangle {
                        id: windowRect
                    // ...
                    }
                // ...
                }
*/

// ...

person tomocafe    schedule 08.12.2020    source источник


Ответы (1)


Я заставил его работать, сохранив одно и то же имя виджета (как в структуре каталогов, так и в metadata.desktop.

$ cp -r /usr/share/kde4/apps/plasma/packages/org.kde.pager ~/.kde/share/apps/plasma/packages

Этого достаточно, чтобы при перезапуске KDE (или, наоборот, удалении и повторном добавлении виджета на панели) ваша $HOME версия переопределяла системную версию.

Что касается QML, я не мог просто закомментировать все это, как я сделал в исходном вопросе, поскольку это нарушило некоторые другие функции, так что виджет даже не загружался.

Я закончил тем, что просто добавил

visible: false

в контексте

                Repeater {
                    model: windows

                    Rectangle {
                        id: windowRect

и это предотвращает отрисовку окон.

person tomocafe    schedule 08.12.2020