Келег`s homepage

Обработанные мысли

Рубиновая плазма. Часть 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

Запускаем geany, создаем новый проект со следующими настройками.

geany-settings

Создаем и сохраняем в папке 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, запустится выполнение и на экране появится новый плазмоид.

Пока он почти совершенно бесполезен, разве что сигнализирует нам, что все работает и уже можно делать что-то посерьезнее. Но об этом – в следующей статье.


Теги: , , , + Рубрика: Программирование

1 отзыв

Трекбеки и пинги

  1. Рубиновая плазма. Часть 2. | Келег`s homepage

    [...] заняться созданием плазмоида. Копируем из примера предыдущей статьи структуру папок вместе с файлами, переименовываем [...]

Ваш отзыв