Предположение: в вашем домашнем каталоге у вас есть .themes
.
Предположим, что в этом подкаталоге вы рекурсивно скопировали тему из /usr/share/themes
для просмотра и настройки. Давайте назовем эту тему, точнее ее каталог, ~/.themes/mytheme
.
(Примечание: обратите пристальное внимание и, при необходимости, измените содержимое файла ~/.themes/mytheme/index.theme
).
В этом каталоге ~/.themes/mytheme
вас есть другой подкаталог ~/.themes/mytheme/gtk-3.0
.
Там есть файл с именем gtk.css
.
Этот файл может быть большим или маленьким. В последнем случае он обычно содержит несколько операторов «@import url», импортирующих другие CSS-файлы (таблицы стилей) из других мест, например, так:
@import url("/home/WHOAMI/.config/gtk-3.0/apps/someother.css");
@import url("./another.css");
(замените имя своей учетной записи на WHOAMI)
Будет названа ваша таблица стилей emacs (готовится пример) для этого примера - как вы уже догадались - emacs.css
, и нам нужно добавить ее в gtk.css
, как и другие импорты . Скажем так:
@import url("/home/WHOAMI/.themes/gtk-3.0/emacs.css");
Прежде чем передать вам мой экземпляр, пара замечаний:
Стили Gtk3: вопреки тому, что вы могли ожидать (я, конечно, сделал), таблицы стилей для конкретного приложения, которые могут быть доступны в теме (например, вышеупомянутый emacs.css
и, возможно, другие в подкаталоге gtk-3.0 или любых вложенных подкаталогах, таких как приложения)), эти таблицы стилей для конкретного приложения НЕ ограничены только соответствующим приложением! Похоже, Gtk3 просто счастливо анализирует все таблицы стилей в одном и том же пространстве имен (я просто придумываю последний термин здесь, но это кажется уместным)..
Это означает, что, например, когда вы стилизуете меню в своей таблице стилей и вызываете селектор CSS, например, «GtkMenu», вы фактически стилизуете ВСЕ экземпляры GtkMenu во ВСЕХ приложениях. Это может или не может быть то, что вы имели в виду, но в моем случае я нашел это очень контрпродуктивным и очень раздражающим, когда я работаю в таблице стилей, которую я назвал emacs.css по причине - а именно, чтобы ограничить его Применимость к Emacs. Так что имейте в виду , что последнее предположение неверно.
Еще одно замечание (отчасти это следствие a): несмотря на то, что css теперь кажется маленьким, стилизовать emacs Gtk3 было сложно (я позволю вам сказать, что я относительный новичок в css, но все же). Я думаю, что emacs + Gtk3 должен иметь немного лучший профиль CSS, потому что наличие элемента, который можно идентифицировать только с помощью « #pane », является слишком общим, и тот факт, что вы почти НЕ можете использовать тему полосы прокрутки, является ошибкой, на мой взгляд. Я использую emacs уже более 20 лет, и мне нравится стилизовать последний emacs-24.3 с Gtk3 точно так же, как я делал раньше emacsen с Gtk2. Наличие консистенции темы рабочего стола во многих отношениях приятно, но не в этом конкретном случае: я провожу много времени в emacs, и его нужно адаптировать к тому, что нравится моим глазам и к чему они привыкли (так что обратите внимание на разработчиков emacs !)
И третье замечание: опять же, в свою очередь, в результате b): эта таблица стилей кажется деликатной! У меня такое ощущение, что удаление одного селектора и все это ломается.
Когда вы начнете взламывать таблицу стилей, не запускайте приложение из панели запуска. Запустите его из командной строки терминала, так что любая обратная связь, которую Gtk3 может дать об ошибках стилизации / разбора, находится прямо перед вашим лицом.
И вы НЕ ДОЛЖНЫ ИМЕТЬ абсолютно НИКАКИЕ другие экземпляры одного и того же приложения. Если вы это сделаете, Gtk, очевидно, кэширует данные стиля, и новый экземпляр просто использует кэшированные данные, и вы задаетесь вопросом, почему это редактирование, которое должно наконец-то заставить его работать, на самом деле бесполезно. Так что с каждой модификацией стиля: цикл питания: выход из emacs, запуск его снова из CLI.
Итак, вот он, мой emacs.css
:
/*
see:
http://developer.gnome.org/gtk3/3.4/GtkCssProvider.html
http://www.gnu.org/software/emacs/manual/html_node/emacs/GTK-resources.html
http://thegnomejournal.wordpress.com/2011/03/15/styling-gtk-with-css/
http://www.gtkforums.com/viewtopic.php?f=3&t=988&p=72088=GTK3+with+CSS#p72088
*/
/*----------------------------------------------------------------*/
/*
General notes:
- try to make selectors as long as possible, so as not to interfere
with the controls of other applications; this can be achieved only partly
(e.g., #pane is a very general selector)
-
TODO:
- checkmarks in menus are black instead of white
- the 'exit emacs' popup dialog somehow gets the wrong resize grip
*/
/*----------------------------------------------------------------*/
/* this works */
#xxxpane
{
background-color: alpha( @theme_selected_bg_color, 0.8 );
color: purple;
}
#xxxframe /* works, but touches other applications */
/* (and we don't need it) )*/
{
background-color: #708090;
border-radius: 3px;
font-size: 12pt;
color: red;
}
/*----------------------------------------------------------------*/
#pane #verticalScrollBar
{
/* the vertical scrollbar in emacs has a bug where it sometimes covers the fringe */
border: 2px solid #292929; /* works ! */
padding: 1px 10px; /* second value has enormous effect oddly in vertical dimension! */
margin: 1px 10px; /* second value has enormous effect oddly in vertical dimension! */
/*border-radius: 2px;*/ /* works */
/*
GtkScrollbar:
"fixed-slider-length" gboolean
"has-backward-stepper" gboolean
"has-forward-stepper" gboolean
"has-secondary-backward-stepper" gboolean
"has-secondary-forward-stepper" gboolean
"min-slider-length" gint
*/
/*-GtkScrollbar-fixed-slider-length: 1;*/
-GtkScrollbar-min-slider-length: 25;
-GtkScrollbar-has-backward-stepper: 0;
-GtkScrollbar-has-forward-stepper: 0;
/*
GtkRange:
"activate-slider" gboolean
"arrow-displacement-x" gint
"arrow-displacement-y" gint
"arrow-scaling" gfloat
"slider-width" gint
"stepper-position-details" gboolean
"stepper-size" gint
"stepper-spacing" gint
"trough-border" gint
"trough-side-details" gboolean
"trough-under-steppers" gboolean
*/
/*-GtkRange-activate-slider: 1;*/
-GtkRange-slider-width: 4; /* works */
-GtkRange-trough-border: 0; /* works */ /* with a large width it reveals a bug in emacs and/or gtk3 */
-GtkRange-trough-side-details: 0;
-GtkRange-trough-under-steppers: 0;
}
/*----------------------------------------------------------------*/
/* the toolbar is almost never visible */
#emacs-toolbar,
#emacs-toolbar *
{
background-color: #536B84;
color: white;
padding: 0px 6px;
border: 1px solid white;
}
/*----------------------------------------------------------------*/
/* objective: get menu pulldown menu's to have thin and rounded borders */
#pane #menubar GtkMenuShell
{
border: 1px solid #78BAD4; /* light blue */
border-radius: 5px;
}
/* also give the menus a slightly larger font */
#pane #menubar,
#pane #menubar GtkMenuShell,
#pane #menubar GtkMenuShell *
{
font-family: "Ubuntu Sans Mono";
font-size: 7px;
}
/*----------------------------------------------------------------*/
#pane #menubar /* works */
{
background-color: #536B84;
border: none;
padding: 0px 0px;
margin: 25px;
}
/* top menu item */
/* this works, but it needs a parent Emacs class specifier */
#pane #menubar > GtkLabel,
#pane #menubar > GtkMenuItem
{
padding: 2px 18px; /* works */
margin: 3px 0px; /* works */
color: aquamarine; /* works */
}
/*----------------------------------------------------------------*/
/* disabled ("greyed out") menu items */
/* note: #emacs-menuitem:insensitive only does one level deep; test on Edit > GoTo > ... */
#emacs-menuitem *:insensitive
{
color: #292929; /* works */
text-shadow: none; /* works */
}
#emacs-menuitem * :hover,
#xxxxemacs-menuitem * :active
{
background-color: transparent; /* FINALLY WORKS! */
color: white; /* works */
}
#emacs-menuitem *, /* works */
#emacs-menuitem > GtkLabel /* works */
{
background-color: #536B84;
color: white /* works (also for tear lines!) */
}
#emacs-menuitem /* with only this it ALMOST works beautifully; only the tear lines are still white */
{
background-color: #536B84;
color: #292929; /* works -- this affects only the separators */
border: 0px none;
/*padding: auto auto;*/
/*margin: 0px 0px 0px 0px;*/
/*margin: auto auto auto auto;*/
}
/*----------------------------------------------------------------*/
/* popup dialog */
#emacs-dialog
{
background-color: #536B84;
color: white;
border: 0px none;
}
/*----------------------------------------------------------------*/
Похоже на слабак? Ну, там много часов стиля и проб и ошибок (я ненавижу CSS, это не настоящий язык, не обнаруживаемый).
Попробуйте и посмотрите, как вы можете адаптировать и настроить его. Если вы получаете какие-либо идеи или советы, или обнаруживаете недостатки, ошибки или другие тематические возможности, пожалуйста, оставьте отзыв. Я уверен, что он неполный и несовершенный (во-первых, я не мог округлить нижние углы выпадающих меню).
Удачи!