Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Темы GTK2 (gnome), Metacity, Icons  (Прочитано 152595 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Denis Konstantinov

  • Автор темы
  • Активист
  • *
  • Сообщений: 864
    • Просмотр профиля
Темы GTK2 (gnome), Metacity, Icons
« : 05 Апрель 2007, 12:32:14 »
ВНИМАНИЕ:

В Ubuntu 11.10 появилась новая библиотека Gtk3 она использует CSS для формирования стилей.
подробнее про синтаксис можно прочитать тут http://developer.gnome.org/gtk3/3.0/GtkCssProvider.html
главное отличие, практически отпала необходимость в разных theme-engines, идеи остались прежними.

Устройство:
Что такое можно прочесть тут http://ru.wikipedia.org/wiki/Gtk
Перевод  GTK Theming Tutorial http://open-life.org/blog/gnome/330.html

Основная идея заключается в том что все элементы графического интерфейса называемые "виджеты" умеют взаимодействовать с соседними элементами. Создание интерфейса на Gtk в чём то похоже на создание html страницы. Не нужно задумываться какая позиция будет у того или иного объекта при том или ином размере окна или если рядом появится ещё какой нибудь виджет. Нужно лишь описать расположение объектов друг относительно друга. Всё остальное происходит автоматически.

Библиотека разделена на две чести код который отвечает за логическое строение объекта (Gtk) и код код который рисует этот объект на экране Gdk. Благодаря такому строению одни и те же объекты могут выглядеть по разному. Отрисовка происходит при помощи движков (engines).
Итак  когда программа запускается она вызывает функции создания обьектов из библиотеки Gtk когда эти объекты создаются для их отрисовки используется движёк который прописан в теме (gtkrc файл) (для каждого объекта (кнопки, поля для редактирования текста и т.п.) можно использовать свои движки). Получается можно на основе одних и тех же движков создавать огромное количество тем не похожих друг на друга.

Темы можно располагать:
 в /usr/share/themes темы от сюда будут доступны для всех пользователей
 в ~/.themes доступна только конкретному пользователю (поэтому программы запущенные от рута не будут использовать эту тему!!!)
 также настройки Gtk тем можно располагать в ~/.gtkrc-2.0
Нужно отметить что настройки в стом файле перекрывают настройки темы, поскольку он читается в последнюю очередь.

Устройство темы:
Рассмотрим тему Clearlooks она устанавливается по умолчанию как и несколько других тем.
Вот список файлов:
ls -1 -R /usr/share/themes/Clearlooks/

/usr/share/themes/Clearlooks/:
gtk-2.0/
index.theme
metacity-1/

/usr/share/themes/Clearlooks/gtk-2.0:
gtkrc


/usr/share/themes/Clearlooks/metacity-1:
metacity-theme-1.xml

В файле /usr/share/themes/Clearlooks/index.theme прописано название темы в целом (тема состоит не только gtk но и оконного менеджера и иконок) и описание  этой темы на разных языках:

[X-GNOME-Metatheme]                                                                                                                                           
Name=Clearlooks                                                                                                                                               
Name[be]=Clearlooks
...
Name[ru]=Ясность
...
GtkTheme=Clearlooks
MetacityTheme=Clearlooks
IconTheme=gnome

Именно это название мы увидим в менеджере тем
Система->Параметры->Тема
(или из консоли gnome-theme-manager)

Как видите это готовая тема включив которую мы получим законченное решение.
по мимо файла index.theme в каталоге /usr/share/themes/Clearlooks/
есть два подкаталога /usr/share/themes/Clearlooks/gtk-2.0 и /usr/share/themes/Clearlooks/metacity-1
В них описаны тема для gtk и metacity соответственно.

В каталоге /usr/share/themes/Clearlooks/gtk-2.0/ находится файл gtkrc который какраз и описывает тему.
Но если в него заглянуть мы не найдём названия как же тогда программы узнают какой файл относится к теме Clearlooks которая описана в /usr/share/themes/Clearlooks/index.theme   
....
GtkTheme=Clearlooks
....

Всё очень просто. Поскольку gtk и metacity это отдельные проекты то формат файлов тем у них разный
но есть общая структура расположения файлов.
т.е. файлы тем должны располагаться в  /usr/share/themes/<тут имя какталога оноже название темы>/<каталог конкретного проекта>

Например для gtk темы Clearlooks файл темы должен иметь следующий путь 
/usr/share/themes/Clearlooks/gtk-2.0/gtkrc
А для metacity
/usr/share/themes/Clearlooks/metacity-1/metacity-theme-1.xml

Поэтому если в каталоге /usr/share/themes/Clearlooks/ не будет файла index.theme а будут только каталоги gtk-2.0 и metacity-1
То в менеджере тем мы не увидим тему Clearlooks и для того чтобы нам включить тему Clearlooks для gtk нужно выбрать любую тему из представленных затем щёлкнуть на кнопке "Подробнее о теме" и там на закладке "Элементы управления" мы увидим Clearlooks.
Также если мы переключимся на закладку "Рамка окна" то там мы также увидим тему Clearlooks.

Если вы внимательно читали то должны были заметить что в файле index.theme прописаны так же и иконки строка IconTheme=gnome
но каталога с иконками в /usr/share/themes/Clearlooks/ нет.

Дело в том что иконки располагаются отдельно в каталоге /usr/share/icons
Листинг файлов:
ls -1 /usr/share/icons
Crux/
default/
gnome/
...
Tango/
whiteglass/

Каждый из каталогов содержит много подкаталогов к которых расположены иконки соответствующего размера и предназначения.
Описывать каждый каталог очень долго но в целом

/usr/share/icons/gnome/<размер>/<предназначение>/<название иконки>
размеры могут быть разные например 10x10 16x16 или огромные 48x48.

Несложно догадаться что в каталоге /usr/share/icons/gnome/16x16 будут иконки именно стого размера т.е. 16 на 16 пикселей.

Но как я уже писал выше темы расположенные в каталогах /usr/share/icons и /usr/share/themes доступны всем пользователям на чтение и только root'у на запись поэтому если у вас нет прав или вы просто хотите посмотреть тему можно поместить темы в
~/.themes и ~/.icons соответственно.

Например можно скопировать тему /usr/share/themes/Clearlooks в ~/.themes/Clearlooks-My/ изменить название в файле  index.theme
и дальше можно экспериментировать с разными настройками например поправить цвет фона кнопок и т.п.

В следующей версии Gtk обещают ассоциировать специально расширение файла с установщиком тем. А пока если вы скачали тему
с gnome-look.org то можно архивный файл перетащить мышкой на программу "Менеджер тем" (gnome-theme-manager) и если архив правильной структуры то он установится. Но попадаются и "кривые" архивы в стом случае программа скажет что это не архив с темой и она установить не сможет, поэтому придётся распаковать файлы из архива во временный каталог и поправить структуру каталогов чтобы она соответствовала правильной, надеюсь благодаря этому описанию вы сможете разобраться.

Напоследок  несколько ссылок где можно подробнее узнать о строении gtk тем.

Ru:
Еще одно руководство http://systemsinside.kiev.ua/node/282?page=1
И о создании тем иконок http://systemsinside.kiev.ua/node/281
(Спасибо за ссылки  EtTi  )

En:
http://live.gnome.org/GnomeArt/Tutorials/GtkThemes
https://stage.maemo.org/svn/maemo/projects/haf/trunk/gtk+/docs/widget_geometry.txt
http://developer.gnome.org/doc/API/2.0/gtk/index.html Здесь доступна полная документация о gtk для программистов но там же описаны
Style Properties т.е. настройки стиля для конкретного виджета.
Также можно получить информацию поиском в гугле или на форуме http://gnomesupport.org/forums/viewforum.php?f=20&sid=cc054db42895f999aa608ac6a6692bbd
или на канале #gnome-art что на сервере irc.gnome.org
« Последнее редактирование: 08 Август 2012, 15:04:21 от Denis Konstantinov »
AltYo консоль для Gtk3 в стиле консоли quake http://forum.ubuntu.ru/index.php?topic=198594.0

Оффлайн AleksWhite

  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #1 : 04 Июль 2007, 11:23:10 »
Позволю себе добавить для более углубленного ознакомления с установкой тем, значков (иконок), курсоров далее оформление.

Все сказанное ниже проверялось на версии Ubuntu 7.04 и предназначено для продвинутых пользователей и тех кто администрирует систему.
Возможно дублирование информации из поста, расположенного выше. Но ... "повторение - мать ученья"

Оформление доступное всем:
Для темы

/usr/share/themes/ИмяТемы/ - каталог где располагается тема
/usr/share/themes/ИмяТемы/index.theme
/usr/share/themes/ИмяТемы/cursor.theme - описание темы курсоров
/usr/share/themes/ИмяТемы/gtk-2.0/gtkrc - файл описывающий цветовое оформление.
/usr/share/themes/ИмяТемы/metacity-1/ - для изменения внешнего вида окон
/usr/share/themes/ИмяТемы/metacity-1/*.png - графические элементы окна
/usr/share/themes/ИмяТемы/metacity-1/metacity-theme-1.xml - файл описания темы

Замечание: Содержимое каталога gtk-2.0 соответствует закладке "Элементы управления" в менеджере тем (смю пост выше). А содержимое metacity-1 - закладке "Рамка окна"

Для иконок

/usr/share/icons/ИмяТемы - каталог где располагается тема
/usr/share/icons/ИмяТемы/разме_иконки/ - размеры могут быть 8х8, 16x16, 22х22, 24х24, 32х32 и 48х48
/usr/share/icons/ИмяТемы/разме_иконки/actions/
/usr/share/icons/ИмяТемы/разме_иконки/animations/
/usr/share/icons/ИмяТемы/разме_иконки/aaps/
/usr/share/icons/ИмяТемы/разме_иконки/categories/
/usr/share/icons/ИмяТемы/разме_иконки/devices/
/usr/share/icons/ИмяТемы/разме_иконки/emblems/
/usr/share/icons/ИмяТемы/разме_иконки/emotes/
/usr/share/icons/ИмяТемы/разме_иконки/filesystems/
/usr/share/icons/ИмяТемы/разме_иконки/media/
/usr/share/icons/ИмяТемы/разме_иконки/mimetype/
/usr/share/icons/ИмяТемы/разме_иконки/navigation/
/usr/share/icons/ИмяТемы/разме_иконки/places/
/usr/share/icons/ИмяТемы/разме_иконки/status/
/usr/share/icons/ИмяТемы/разме_иконки/stok/
/usr/share/icons/ИмяТемы/scalable/
/usr/share/icons/ИмяТемы/cursors/
/usr/share/icons/ИмяТемы/icon-theme.cache
/usr/share/icons/ИмяТемы/index.theme


Для установки курсоров достаточно распаковать в каталог /usr/share/icons/ИмяТемы/cursors/ или в ~/.icons/ИмяТемы/cursors/

После чего выбрать Система->Параметры->Мышь и на вкладке Указатели выбрать свою тему.

Для переопределения темы по умолчанию выполняем следующие команды

Решение ищется


Вся информация взята здесь http://www.gnome.org/learn/admin-guide/2.14/themes-0.html
Материал для тем можно взять с http://www.gnome-look.org

PS Продолжение следует
« Последнее редактирование: 04 Июль 2007, 14:42:45 от AleksWhite »

Оффлайн mityukov

  • Участник
  • *
  • Сообщений: 220
  • Divina gratia homo libero
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #2 : 10 Июль 2007, 01:33:45 »
Почему-то не нашел темы с "поцарапаным металом". Максимум что встрчал в оформлении окон (строка меню, тулбары) - это градиент (например OS-X emulation).

Просто интересно с чем это связано? Невозможность заюзать текстуры в Gtk или просто искал не там? ;-)
Never cared for what they they
Never cared for games they play

Оффлайн Denis Konstantinov

  • Автор темы
  • Активист
  • *
  • Сообщений: 864
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #3 : 10 Июль 2007, 11:18:50 »
искал не там или ты один такое захотел :)
Есть тема с древесным рисунком на всех элементах так что редактор в руки и вперёд
AltYo консоль для Gtk3 в стиле консоли quake http://forum.ubuntu.ru/index.php?topic=198594.0

Оффлайн psymi

  • Новичок
  • *
  • Сообщений: 48
  • i love OpenSource
    • Просмотр профиля
    • macgera: offcolor
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #4 : 20 Август 2007, 17:08:21 »
искал не там или ты один такое захотел :)
Есть тема с древесным рисунком на всех элементах так что редактор в руки и вперёд

а можно попдробнее.... ? что за редактор? редактор тем? и где можно почитать о нем? или хотя бы что вписать в гуглю?
З.Ы. я новичок в linux, сорри если вопрос глупый. Заранее благодарен.

Оффлайн Denis Konstantinov

  • Автор темы
  • Активист
  • *
  • Сообщений: 864
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #5 : 21 Август 2007, 09:53:36 »
Редактор gimp :)
Зайди на gnome-look.org найди тему где используется текстура для отрисовки виджетов.
Эти темы используют движок pixmaps, т.е. в папке с темой лежат картинки используемые темой. Вот их и правишь гимпом как тебе нужно.
За основу можно взять например тему http://gnomelook.org/content/show.php/Mithril?content=64288
AltYo консоль для Gtk3 в стиле консоли quake http://forum.ubuntu.ru/index.php?topic=198594.0

Pytnev

  • Гость
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #6 : 21 Ноябрь 2007, 12:57:37 »
ХОЧУ ТАКУЮ ПАНЕЛЬКУ!!! Как сделать?
http://gnomelook.org/content/show.php/Mithril?content=64288

Оффлайн Kwah

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1442
  • Ubuntu 10.04
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #7 : 21 Ноябрь 2007, 13:05:53 »
ХОЧУ ТАКУЮ ПАНЕЛЬКУ!!! Как сделать?
http://gnomelook.org/content/show.php/Mithril?content=64288
Если ту, что снизу, то искать в сторону AWN ака Avant Window Navigator

Оффлайн begemot

  • Активист
  • *
  • Сообщений: 385
  • Я отказался от наркотического яда - никотина!
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #8 : 25 Ноябрь 2007, 07:33:53 »
Автору огромное спасибо.

Написано очень хорошо, но очень мало!

Оффлайн Denis Konstantinov

  • Автор темы
  • Активист
  • *
  • Сообщений: 864
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #9 : 27 Ноябрь 2007, 23:29:16 »
чего не хватает?
AltYo консоль для Gtk3 в стиле консоли quake http://forum.ubuntu.ru/index.php?topic=198594.0

Оффлайн begemot

  • Активист
  • *
  • Сообщений: 385
  • Я отказался от наркотического яда - никотина!
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #10 : 28 Ноябрь 2007, 05:40:06 »
Цитата: Denis Konstantinov
чего не хватает?
Денис, дай, пожалуйста, ссылку на хороший туториал по созданию полноценной темы оформления: gtk, metacity, icons и GDM-скрина. Желательно, на русском языке.

Заранее огромное спасибо!

Оффлайн Denis Konstantinov

  • Автор темы
  • Активист
  • *
  • Сообщений: 864
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #11 : 04 Декабрь 2007, 19:25:10 »
Цитировать
Напоследок  несколько ссылок где можно подробнее узнать о строении gtk тем.

http://live.gnome.org/GnomeArt/Tutorials/GtkThemes
https://stage.maemo.org/svn/maemo/projects/haf/trunk/gtk+/docs/widget_geometry.txt
http://developer.gnome.org/doc/API/2.0/gtk/index.html Здесь доступна полная документация о gtk для программистов но там же описаны
Style Properties т.е. настройки стиля для конкретного виджета.
Также можно получить информацию поиском в гугле или на форуме http://gnomesupport.org/forums/viewforum.php?f=20&sid=cc054db42895f999aa608ac6a6692bbd
или на канале #gnome-art что на сервере irc.gnome.org
:) лучше если только ты сам напишешь?
AltYo консоль для Gtk3 в стиле консоли quake http://forum.ubuntu.ru/index.php?topic=198594.0

Оффлайн begemot

  • Активист
  • *
  • Сообщений: 385
  • Я отказался от наркотического яда - никотина!
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #12 : 06 Декабрь 2007, 01:46:45 »
Denis Konstantinov
ОЙ!
Прошу прощенья. Как я мог не заметить?! (:
Попытаюсь проштудировать...

Оффлайн Vlad_C

  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #13 : 23 Декабрь 2007, 21:31:40 »
Прошу прощения за тупой вопрос, но что-то я недогоняю...
Хочу скопировать иконки в /usr/share/icons, но в ответ получаю:
bob@bob-desktop:~$ sudo cp /media/Downloads/LiNsta /usr/share/icons
cp: пропуск каталога `/media/Downloads/LiNsta'
bob@bob-desktop:~$
Помогите, плз  :)

Оффлайн adept_

  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Re: Темы GTK2 (gnome), Metacity, Icons
« Ответ #14 : 24 Декабрь 2007, 00:25:59 »
Правильней было бы вот так:
sudo cp -R /media/Downloads/LiNsta /usr/share/icons

Опция R - это рекурсивное копирование, т.е., вместе с содержимым каталогов.
« Последнее редактирование: 24 Декабрь 2007, 09:55:02 от adept_ »

 

Страница сгенерирована за 1.229 секунд. Запросов: 23.