Suposição:
No seu diretório home, você tem um subdiretório .themes
.
Nesse subdiretório, digamos que você copiou recursivamente um tema de /usr/share/themes
, para leitura e leitura
costumização. Vamos chamar esse tema, ou melhor, seu diretório, ~/.themes/mytheme
.
(Nota: preste muita atenção e, se necessário, modifique o conteúdo do arquivo ~/.themes/mytheme/index.theme
).
Dentro desse diretório ~/.themes/mytheme
você tem outro subdiretório ~/.themes/mytheme/gtk-3.0
.
Existe um arquivo chamado gtk.css
.
Este arquivo pode ser grande ou pequeno. No último caso, geralmente há várias declarações "@import url",
importando outros arquivos CSS (folhas de estilo) de outro lugar, por exemplo, assim:
@import url("/home/WHOAMI/.config/gtk-3.0/apps/someother.css");
@import url("./another.css");
(substitua o nome da sua conta por WHOAMI)
Sua folha de estilos do emacs (amostra chegando) para este exemplo será chamada - você adivinhou - emacs.css
, e nós precisamos
para adicioná-lo a gtk.css
, assim como as outras importações. Vamos dizer:
@import url("/home/WHOAMI/.themes/gtk-3.0/emacs.css");
Antes de entregar a minha cópia, algumas notas:
-
Estilo Gtk3: ao contrário do que você poderia esperar (eu certamente fiz), as folhas de estilo específicas do aplicativo que podem estar disponível em um tema (como o acima mencionado
emacs.css
e possivelmente outros no subdiretório gtk-3.0 ou qualquer outro subdiretórios aninhados lá como aplicativos), essas folhas de estilo específicas do aplicativo NÃO estão limitadas a esse respectivo aplicativo só! Como parece, o Gtk3 apenas analisa todas as folhas de estilo alegremente dentro do mesmo espaço de nomes (eu apenas estou inventando o último termo aqui, mas parece apropriado).O que isso significa é que, por exemplo, quando você está estilizando um menu na sua folha de estilo e chama o seletor de CSS, por exemplo, 'GtkMenu', você está, na verdade, estilizando TODAS as instâncias do GtkMenu em TODAS as aplicações. Isso pode ou não ser o que você tinha em mente, mas no meu caso eu achei muito contraproducente e muito chato, quando eu estou trabalhando em uma folha de estilo que Eu chamei o emacs.css por uma razão - a saber, limitar sua aplicabilidade ao emacs. Então esteja avisado, essa última suposição é INVALID.
-
Outra nota (em parte uma consequência de a): mesmo que o css pareça pequeno, o estilo do emacs Gtk3 foi difícil (eu lhe darei isso Eu sou um novato relativamente css, mas ainda assim). Eu acho que o emacs + Gtk3 precisa ter um perfil CSS um pouco melhor, porque ter um elemento apenas identificável por ' #pane ' é um pouco geral demais, e o fato de que você pode quase não tema a barra de rolagem é um bug na minha opinião. Eu tenho usado emacs por mais de 20 anos e Eu gosto de estilizar o mais recente emacs-24.3 com Gtk3 exatamente como eu tive anteriormente no emacsen com o Gtk2. Tendo a consistência de um tema de desktop é legal na maioria dos aspectos, mas não neste caso em particular: eu gasto um muito tempo dentro do emacs, e ele precisa ser moldado ao que meus olhos gostam e estão acostumados (então, note desenvolvedores do emacs!)
-
E uma terceira nota: novamente por sua vez resultante de b): esta folha de estilos parece delicada! Tenho a sensação de que removendo um seletor e a coisa toda se desfaz.
-
Quando você começa a hackear uma folha de estilo, não inicia o aplicativo a partir de um iniciador . Comece a partir do terminal linha de comando, então qualquer feedback que o Gtk3 possa dar sobre erros de modelagem / análise está bem na frente do seu rosto. E, você NÃO DEVE ter absolutamente nenhuma outra instância do mesmo aplicativo aberta em qualquer lugar . Se você fizer isso, Gtk aparentemente caches styling data, e uma nova instância apenas usará os dados em cache e deixará você se perguntando por que a edição que deveria finalmente fazer com que funcione de fato não é uma opção. Então, com cada modificação de estilo: ciclo de energia: saia do emacs, acione-o novamente a partir do CLI.
Então, com isso, aqui está, meu 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;
}
/*----------------------------------------------------------------*/
Parece um covarde? Bem, há muitas horas de estilo e tentativa e erro lá dentro (eu odeio CSS, não é um linguagem real, não tem descoberta).
Experimente e veja como você pode se adaptar e adaptá-lo. Se você der alguma ideia ou dicas ou descobrir deficiências ou erros ou outras possibilidades de temas, por favor dê feedback. Estou certo de que é incompleto e imperfeito uma coisa, eu não conseguia arredondar os cantos inferiores dos menus suspensos).
Boa sorte!