Сообщество - GNU/Linux

GNU/Linux

1 151 пост 15 633 подписчика

Популярные теги в сообществе:

47

Разработка виджетов Plasma - часть 1

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


Инструменты, которые рекомендую использовать (есть аналоги, но если вы без опыта, то это быстрее):

1. QtCreator - IDE специально для Qt, имеет самую лучшую поддержку языка QML (альтернатива - Kdevelop). Во многих дистрибутивах идет в комплекте по-умолчанию - если нет, установите с помощью пакетного менеджера вашего дистрибутива.

2. Plasmoidviewer (входит в пакет plasma-sdk) - очень рекомендую, дабы не перезапускать Plasmashell при тестировании виджета. Позволяет тестировать виджет в отдельном окне (альтернатива - plasmawindowed, но меньше настроек).

3. Любая консоль (для чтения логов во время тестирования).

4. Настоятельно рекомендую ознакомится с QML и QtQuick (именно на нем будет происходить вся магия + JS). Язык очень простой, но некоторые вещи неочевидны. Ссылка - https://doc.qt.io/qt-5/qtquick-qmlmodule.html


Самый простой способ обучения - это посмотреть исходный код других виджетов. Встроенные виджеты (или добавленные мейнтейнерами вашего дистрибутива) находятся в /usr/share/plasma/plasmoids/, а сторонние (отдельно установленные для пользователя) в /home/%username%/.local/share/plasma/plasmoids/ (я сам лично начинал именно так, потому что документации практически никакой, а та, которую нашел была очень устаревшей - сейчас понемногу ситуация исправляется).


Структура файлов плазмоида: Уникальное имя папки (например: com.mydomain.myplasmoid), внутри это:

├── contents

│ ├── ui

│ │ ├── main.qml

│ │ └── configGeneral.qml

│ └── config

│ ├── config.qml

│ └── main.xml

└── metadata.desktop


Начнем с описания виджета (файл metadata.desktop). Этот файл необходим для работы виджета и определения его системой. Вот примерное его содержание:


[Desktop Entry]

Name=My Plasmoid

Comment=A widget to take over the world!

Type=Service

Icon=battery

X-KDE-ServiceTypes=Plasma/Applet

X-Plasma-API=declarativeappletscript

X-Plasma-MainScript=ui/main.qml

X-KDE-PluginInfo-Author=My Name

X-KDE-PluginInfo-Email=myemail@gmail.com

X-KDE-PluginInfo-Name=com.mydomain.myplasmoid

X-KDE-PluginInfo-Version=1

X-KDE-PluginInfo-Website=https://github.com/username/myplasmoid

X-KDE-PluginInfo-Category=System Information


Кратко пройдусь по основным строкам:


Name - название плазмоида

Comment - описание виджета (опционально)

Type (тут точно Service, т.к. не является отдельным приложением)

Icon - иконка для отображения при установке (название берется из темы, путь прописать пока нельзя)

X-KDE-ServiceTypes=Plasma/Applet, X-Plasma-API=declarativeappletscript - оставляем как есть

X-Plasma-MainScript - путь к исполняемому файлу (с него начинается выполнение)

X-KDE-PluginInfo-Author, X-KDE-PluginInfo-Email - данные автора виджета

X-KDE-PluginInfo-Name - ВАЖНО - должно совпадать с названием основной папки виджета

X-KDE-PluginInfo-Version - используется во внутренних процессах, например для отображения версии клиенту (стоит менять при обновлении)

X-KDE-PluginInfo-Website - ссылка на исходник (опционально)

X-KDE-PluginInfo-Category - используется для определения категории в репозитории store.kde.orgpling.com) Примеры категорий здесь: https://techbase.kde.org/Projects/Plasma/PIG


Содержимое main.qml (далее немного копипасты, если непонятно, пишите в комментариях) -

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

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

Вы также можете разместить его на рабочем столе как виджет рабочего стола, размер которого может быть изменен пользователем. Как виджет рабочего стола, он может переключаться между «видом значков», когда он меньше (который открывает всплывающее окно), и прямым отображением содержимого всплывающего окна на рабочем столе, когда достаточно места.

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


Пример самого простого файла main.qml:


import QtQuick 2.0

import org.kde.plasma.components 2.0 as PlasmaComponents

PlasmaComponents.Label {

text: "Hello world in Plasma 5 ";

color: "black";

}


Если вы ранее пользовались QtQuick, то все должно быть понятно, если нет, научиться несложно, там очень простой синтаксис для построения интерфейсов (ссылка в начале поста). Дополнение: PlasmaComponents - отдельный класс для Plasma (обычно наследуется от QtQuickControls - позже опишу чуть подробнее).


Остальные файлы и папки в структуре необязательны (но без них не сделать что-то полезное), опишу в следующих постах.


Если вы сделали уникальное имя папки плазмоида, указали ее название в metadata.desktop и существует файл main.qml (название и путь может отличаться, настраивается в metadata.desktop) - вы уже можете скопировать корневую папку в /home/%username%/.local/share/plasma/plasmoids/ и добавить ваш виджет на панель или рабочий стол. Самым лучшим способом тестирования является plasmoidviewer (как я писал выше). Запустите в консоли команду plasmoidviewer -a com.mydomain.myplasmoid (укажите атрибут X-KDE-PluginInfo-Name вместо com.mydomain.myplasmoid) и вы увидите результат в отдельном окне (позже я покажу несколько атрибутов команды plasmoidviewer, для опытных man plasmoidviewer).


Пока на этом все, продолжение следует.

Не стесняйтесь задавать вопросы в комментариях )


Показать полностью
28

Нужна ли информация по созданию виджетов Plasma?

Если кому-нибудь нужна информация о создании виджетов для Plasma 5 - пишите в комментариях. Я давно общаюсь с одним из разработчиков, он не против если я переведу его инструкции (со своими дополнениями из личного опыта).

231

Изучаем GNU/Linux часть 30. bash скрипты #4

Продолжаем изучать GNU/Linux и готовиться к сертификации от Red Hat (RHCSA).


Для тех, кто видит мои посты впервые - я стараюсь очень лёгким языком с нуля научить вас работать с операционной системой GNU/Linux. Зачем? Потому что - Стоит ли делать курс по RHCSA?


Предыдущие темы:

Изучаем GNU/Linux часть 29. bash скрипты #3

Изучаем GNU/Linux часть 28. bash скрипты #2

Изучаем GNU/Linux часть 27. bash скрипты #1

Изучаем GNU/Linux часть 26. Программный RAID - MD

Изучаем GNU/Linux часть 25. Управление логическими томами - LVM (RHCSA)

Изучаем GNU/Linux часть 24. Работа с файловыми системами (RHCSA)

Изучаем GNU/Linux часть 23. Основы файловых систем

Изучаем GNU/Linux часть 22. Работа с дисками (RHCSA)

Изучаем GNU/Linux часть 21. Ядро Linux

Изучаем GNU/Linux часть 20. Права на файлы (RHCSA)

Изучаем GNU/Linux часть 19. Пользователи и группы (RHCSA)

Изучаем GNU/Linux часть 18. Sudo (RHCSA)

Изучаем GNU/Linux часть 17. Su и visudo (RHCSA)

Изучаем GNU/Linux часть 16. Процессы #3: Работа с процессами (RHCSA)

Изучаем GNU/Linux часть 15. Процессы #2: Информация о процессах #2 (RHCSA)

Изучаем GNU/Linux часть 14. Процессы #1: Информация о процессах

Изучаем GNU/Linux часть 13. Bash #2: переменные (RHCSA)

Изучаем GNU/Linux часть 12. Bash #1: bash-completion, alias, type

Изучаем GNU/Linux часть 11. Стандартные потоки (RHCSA)


Ссылки на темы 1 лвла - Изучаем GNU/Linux часть 10. Текстовые редакторы nano и vi (RHCSA)


Цикл на примере for, IFS, функции, select, case.

P.S. Текст из видео в комментариях. Также потихоньку начинаю составлять полноценный текстовой вариант и он доступен по ссылке https://gitlab.com/doatta/gnu-linux-rhcsa . Стоит ли переделывать старые посты на пикабу для добавления текстового варианта - решать вам и модераторам.


P.P.S. Мне бы пригодилась помощь в создании большого количества заданий и вопросов для обучающихся -> Задания, вопросы и ответы

Показать полностью 1
354

Изучаем GNU/Linux часть 29. bash скрипты #3

Продолжаем изучать GNU/Linux и готовиться к сертификации от Red Hat (RHCSA).


Для тех, кто видит мои посты впервые - я стараюсь очень лёгким языком с нуля научить вас работать с операционной системой GNU/Linux. Зачем? Потому что - Стоит ли делать курс по RHCSA?


Предыдущие темы:

Изучаем GNU/Linux часть 28. bash скрипты #2

Изучаем GNU/Linux часть 27. bash скрипты #1

Изучаем GNU/Linux часть 26. Программный RAID - MD

Изучаем GNU/Linux часть 25. Управление логическими томами - LVM (RHCSA)

Изучаем GNU/Linux часть 24. Работа с файловыми системами (RHCSA)

Изучаем GNU/Linux часть 23. Основы файловых систем

Изучаем GNU/Linux часть 22. Работа с дисками (RHCSA)

Изучаем GNU/Linux часть 21. Ядро Linux

Изучаем GNU/Linux часть 20. Права на файлы (RHCSA)

Изучаем GNU/Linux часть 19. Пользователи и группы (RHCSA)

Изучаем GNU/Linux часть 18. Sudo (RHCSA)

Изучаем GNU/Linux часть 17. Su и visudo (RHCSA)

Изучаем GNU/Linux часть 16. Процессы #3: Работа с процессами (RHCSA)

Изучаем GNU/Linux часть 15. Процессы #2: Информация о процессах #2 (RHCSA)

Изучаем GNU/Linux часть 14. Процессы #1: Информация о процессах

Изучаем GNU/Linux часть 13. Bash #2: переменные (RHCSA)

Изучаем GNU/Linux часть 12. Bash #1: bash-completion, alias, type

Изучаем GNU/Linux часть 11. Стандартные потоки (RHCSA)


Ссылки на темы 1 лвла - Изучаем GNU/Linux часть 10. Текстовые редакторы nano и vi (RHCSA)


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

P.S. Текст из видео в комментариях.


P.P.S. Мне бы пригодилась помощь в создании большого количества заданий и вопросов для обучающихся -> Задания, вопросы и ответы

Показать полностью 1
244

Изучаем GNU/Linux часть 28. bash скрипты #2

Продолжаем изучать GNU/Linux и готовиться к сертификации от Red Hat (RHCSA).


Для тех, кто видит мои посты впервые - я стараюсь очень лёгким языком с нуля научить вас работать с операционной системой GNU/Linux. Зачем? Потому что - Стоит ли делать курс по RHCSA?


Предыдущие темы:

Изучаем GNU/Linux часть 27. bash скрипты #1

Изучаем GNU/Linux часть 26. Программный RAID - MD

Изучаем GNU/Linux часть 25. Управление логическими томами - LVM (RHCSA)

Изучаем GNU/Linux часть 24. Работа с файловыми системами (RHCSA)

Изучаем GNU/Linux часть 23. Основы файловых систем

Изучаем GNU/Linux часть 22. Работа с дисками (RHCSA)

Изучаем GNU/Linux часть 21. Ядро Linux

Изучаем GNU/Linux часть 20. Права на файлы (RHCSA)

Изучаем GNU/Linux часть 19. Пользователи и группы (RHCSA)

Изучаем GNU/Linux часть 18. Sudo (RHCSA)

Изучаем GNU/Linux часть 17. Su и visudo (RHCSA)

Изучаем GNU/Linux часть 16. Процессы #3: Работа с процессами (RHCSA)

Изучаем GNU/Linux часть 15. Процессы #2: Информация о процессах #2 (RHCSA)

Изучаем GNU/Linux часть 14. Процессы #1: Информация о процессах

Изучаем GNU/Linux часть 13. Bash #2: переменные (RHCSA)

Изучаем GNU/Linux часть 12. Bash #1: bash-completion, alias, type

Изучаем GNU/Linux часть 11. Стандартные потоки (RHCSA)


Ссылки на темы 1 лвла - Изучаем GNU/Linux часть 10. Текстовые редакторы nano и vi (RHCSA)


Разберём условие if

P.S. Текст из видео в комментариях.


P.P.S. Мне бы пригодилась помощь в создании большого количества заданий и вопросов для обучающихся -> Задания, вопросы и ответы

Показать полностью 1

Минутка тупых вопросов

Так сложилось что немного умею программировать на delphi. Недавно появилась необходимость написать простенькую программку для собственных нужд, но нужно что бы она работала на ubuntu. И собственно вопрос: можно ли написать эту программку на lazarus которая установлена windows, дабы она работала на ubuntu?

Отличная работа, все прочитано!