Рубиновая плазма. Часть 1.
Введение
Наверное, самое привлекательное для меня свойство linux – возможность достаточно быстро переделать систему под свои запросы. Причем практически всегда есть возможность дописать то, чего нет, структура системы “из небольших кусочков” легко позволяет это. Интересную возможность для кодирования представляют появившиеся в KDE4 празмоиды (plasmoids) – небольшие приложения рабочего стола, которые можно писать как на C++, так и на скриптовых языках, например на Ruby.
Простейшие-то они простейшие, но весь рабочий стол KDE (от корзины до кнопки “пуск”) состоит из них, и поэтому сделать приложение, которое будет достойным представителем рабочего стола, всегда интересно и полезно.
Что такое скриптовый плазмоид?
Это zip-файл, минимально содержащий следующую структуру:
- metadata.desktop – XML-файл настроек плазмоида
- contents – папка, в которой содержится все содержимое плазмоида.
- code – папка с кодом
Подробнее можно прочитать в документации(eng)
Скриптовые плазмоиды можно писать на C#, Python, Javascript, Ruby.
Здесь мы помучаем Руби. Почему? Возможно, потому что попробовав программировать на Ruby, уже не хочется программировать ни на чем другом. Очень приятный язык. Если C позволяет написать программу, совершенную с точки зрения процессора, который будет ее исполнять, то Ruby дает возможность написать программу, совершенную с точки зрения алгоритма.
Все, что нужно для работы
Чтобы заработал наш ruby-плазмоид, нужно чтоб в системе был установлен ruby и пакеты для его поддержки в плазме.
В моей мандриве это ruby, ruby-kde4, ruby-qt4
Также в будущем нам понадобится qtdesigner, чтоб рисовать интерфейс.
Среда разработки
Среда разработки для плазмоидов еще не написана, ее обещают в KDE 4.4 (PlasMate), мы же пока обойдемся подручными средствами. Понадобится редактировать файлы скриптов и XML-файлы, т.е. нужна универсальная среда к которой можно подключить внешние сборщики-интерпретаторы.
Я использовал geany, она позволяет сделать все, что необходимо.
Нужно только добавить в систему скриптовый файл для инсталляции
Назовем его installPlasmoid.sh и скопируем в папку для выполнения, например usr/bin
#!/bin/sh
plasmapkg -r “$1″ # удаляем уже установленный плазмоид из системы
rm “$1″.plasmoid # удаляем его исходный пакет
cd “$1″ # переходим в папку с искходым кодом
zip -r ../”$1″.plasmoid * # пакуем новый плазмоид
cd ..
plasmapkg -i “$1″.plasmoid # устанавливаем
plasmoidviewer “$1″ # смотрим результат
Тестовый плазмоид
Создаем необходимую для плазмоида структуру папок. Для нас она будет такой:
- plasma – папка плазма-проектов geany
- plasmatest
- content
- code
- content
- plasmatest
Запускаем geany, создаем новый проект со следующими настройками.

Создаем и сохраняем в папке plasmatest файл metadata.desktop следующего содержания:
[Desktop Entry]
Encoding=UTF-8
Name=Плазма тест
Comment=Тестируем рубиновую плазму
Type=Service
ServiceTypes=Plasma/Applet
Icon=applications-utilities
X-Plasma-DefautSize=150,150
X-Plasma-API=ruby-script
X-Plasma-MainScript=code/main.rb
X-KDE-PluginInfo-Author=keleg
X-KDE-PluginInfo-Email=keleg@mail.ru
X-KDE-PluginInfo-Name=plasmatest
X-KDE-PluginInfo-Version=0.1
X-KDE-PluginInfo-Website=http://www.keleg.info/
X-KDE-PluginInfo-Category=Examples
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
Осталось только создать сам файл кода main.rb типа “Hello world!”
require ‘plasma_applet’
module Plasmatest
class Main < PlasmaScripting::Applet
def initialize parent
super parent
end
def init
self.has_configuration_interface = false
end
def paintInterface(painter, option, rect)
painter.save
painter.pen = Qt::Color.new Qt::white
painter.draw_text rect, Qt::AlignVCenter | Qt::AlignHCenter, “Hello world!”
painter.restore
end
end
end
Обратите внимание на одну тонкость:
папка проекта должна совпадать по имени с X-KDE-PluginInfo-Name, а имя модуля должно быть с тем же именем, только с большой буквы.
Ну вот в общем-то и все. Теперь, если нажать F5, запустится выполнение и на экране появится новый плазмоид.
Пока он почти совершенно бесполезен, разве что сигнализирует нам, что все работает и уже можно делать что-то посерьезнее. Но об этом – в следующей статье.
Теги: kde, linux, plasma, ruby + Рубрика: Программирование
Отзывов: 2
Трекбеки и пинги
-
Рубиновая плазма. Часть 2. | Келег`s homepage
[...] заняться созданием плазмоида. Копируем из примера предыдущей статьи структуру папок вместе с файлами, переименовываем [...]
неужели вордпресс такое может делать?