mirror of
https://github.com/lbonn/rofi
synced 2024-11-13 23:57:10 +00:00
[Theme] Undo part of default theme changes, always pick build-in
This commit is contained in:
parent
214a6e061b
commit
acb1979f10
8 changed files with 82 additions and 31 deletions
15
Makefile.am
15
Makefile.am
|
@ -238,8 +238,7 @@ theme_DATA=\
|
||||||
themes/solarized_alternate.rasi\
|
themes/solarized_alternate.rasi\
|
||||||
themes/fancy.rasi\
|
themes/fancy.rasi\
|
||||||
themes/iggy.rasi\
|
themes/iggy.rasi\
|
||||||
themes/iggy.jpg\
|
themes/iggy.jpg
|
||||||
themes/default.rasi
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Extra DIST
|
# Extra DIST
|
||||||
|
@ -257,6 +256,7 @@ EXTRA_DIST+=\
|
||||||
script/get_git_rev.sh\
|
script/get_git_rev.sh\
|
||||||
$(theme_DATA)\
|
$(theme_DATA)\
|
||||||
doc/default_configuration.rasi\
|
doc/default_configuration.rasi\
|
||||||
|
doc/default_theme.rasi\
|
||||||
Changelog
|
Changelog
|
||||||
##
|
##
|
||||||
# Indent
|
# Indent
|
||||||
|
@ -328,6 +328,7 @@ textbox_test_CFLAGS=\
|
||||||
-I$(top_builddir)/lexer/\
|
-I$(top_builddir)/lexer/\
|
||||||
-I$(top_srcdir)/lexer/\
|
-I$(top_srcdir)/lexer/\
|
||||||
-I$(top_srcdir)/config/\
|
-I$(top_srcdir)/config/\
|
||||||
|
-I$(top_builddir)/resources/\
|
||||||
-I$(top_builddir)/
|
-I$(top_builddir)/
|
||||||
|
|
||||||
textbox_test_LDADD=\
|
textbox_test_LDADD=\
|
||||||
|
@ -368,7 +369,8 @@ widget_test_SOURCES=\
|
||||||
config/config.c\
|
config/config.c\
|
||||||
lexer/theme-parser.y\
|
lexer/theme-parser.y\
|
||||||
lexer/theme-lexer.l\
|
lexer/theme-lexer.l\
|
||||||
test/widget-test.c
|
test/widget-test.c\
|
||||||
|
resources/resources.c
|
||||||
|
|
||||||
box_test_LDADD=$(textbox_test_LDADD)
|
box_test_LDADD=$(textbox_test_LDADD)
|
||||||
box_test_CFLAGS=$(textbox_test_CFLAGS)
|
box_test_CFLAGS=$(textbox_test_CFLAGS)
|
||||||
|
@ -384,6 +386,7 @@ box_test_SOURCES=\
|
||||||
include/theme.h\
|
include/theme.h\
|
||||||
include/css-colors.h\
|
include/css-colors.h\
|
||||||
config/config.c\
|
config/config.c\
|
||||||
|
resources/resources.c\
|
||||||
test/box-test.c
|
test/box-test.c
|
||||||
|
|
||||||
scrollbar_test_LDADD=$(textbox_test_LDADD)
|
scrollbar_test_LDADD=$(textbox_test_LDADD)
|
||||||
|
@ -400,7 +403,8 @@ scrollbar_test_SOURCES=\
|
||||||
include/theme.h\
|
include/theme.h\
|
||||||
include/css-colors.h\
|
include/css-colors.h\
|
||||||
config/config.c\
|
config/config.c\
|
||||||
test/scrollbar-test.c
|
test/scrollbar-test.c\
|
||||||
|
resources/resources.c
|
||||||
|
|
||||||
textbox_test_SOURCES=\
|
textbox_test_SOURCES=\
|
||||||
source/widgets/widget.c\
|
source/widgets/widget.c\
|
||||||
|
@ -424,6 +428,7 @@ textbox_test_SOURCES=\
|
||||||
include/xrmoptions.h\
|
include/xrmoptions.h\
|
||||||
include/helper.h\
|
include/helper.h\
|
||||||
include/helper-theme.h\
|
include/helper-theme.h\
|
||||||
|
resources/resources.c\
|
||||||
test/textbox-test.c
|
test/textbox-test.c
|
||||||
|
|
||||||
if USE_CHECK
|
if USE_CHECK
|
||||||
|
@ -448,6 +453,7 @@ theme_parser_test_SOURCES=\
|
||||||
source/rofi-types.c\
|
source/rofi-types.c\
|
||||||
include/rofi-types.h\
|
include/rofi-types.h\
|
||||||
source/css-colors.c\
|
source/css-colors.c\
|
||||||
|
resources/resources.c\
|
||||||
test/theme-parser-test.c
|
test/theme-parser-test.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -481,6 +487,7 @@ helper_test_CFLAGS=\
|
||||||
-I$(top_builddir)/lexer/\
|
-I$(top_builddir)/lexer/\
|
||||||
-I$(top_srcdir)/lexer/\
|
-I$(top_srcdir)/lexer/\
|
||||||
-I$(top_srcdir)/config/\
|
-I$(top_srcdir)/config/\
|
||||||
|
-I$(top_builddir)/resources/\
|
||||||
-I$(top_builddir)/
|
-I$(top_builddir)/
|
||||||
|
|
||||||
helper_test_LDADD=\
|
helper_test_LDADD=\
|
||||||
|
|
|
@ -14,3 +14,5 @@ configuration {
|
||||||
directories-first: true;
|
directories-first: true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@theme "default"
|
||||||
|
|
|
@ -34,8 +34,10 @@
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "resources.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <gio/gio.h>
|
||||||
#include <helper.h>
|
#include <helper.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
@ -56,6 +58,8 @@ typedef enum {
|
||||||
PT_FILE,
|
PT_FILE,
|
||||||
/** Parse a string */
|
/** Parse a string */
|
||||||
PT_STRING,
|
PT_STRING,
|
||||||
|
/** Parse a string */
|
||||||
|
PT_STRING_ALLOC,
|
||||||
/** Parse environment */
|
/** Parse environment */
|
||||||
PT_ENV
|
PT_ENV
|
||||||
} ParseType;
|
} ParseType;
|
||||||
|
@ -75,6 +79,8 @@ typedef struct _ParseObject {
|
||||||
int str_len;
|
int str_len;
|
||||||
/** String */
|
/** String */
|
||||||
const char *input_str;
|
const char *input_str;
|
||||||
|
/** For where we need to free at end. (PT_STRING_ALLOC); */
|
||||||
|
char *malloc_str;
|
||||||
/** Position in file */
|
/** Position in file */
|
||||||
YYLTYPE location;
|
YYLTYPE location;
|
||||||
} ParseObject;
|
} ParseObject;
|
||||||
|
@ -127,6 +133,7 @@ static double rofi_theme_parse_convert_hex ( char high, char low)
|
||||||
break;\
|
break;\
|
||||||
}\
|
}\
|
||||||
case PT_ENV:\
|
case PT_ENV:\
|
||||||
|
case PT_STRING_ALLOC:\
|
||||||
case PT_STRING:\
|
case PT_STRING:\
|
||||||
{\
|
{\
|
||||||
yy_size_t len = MIN (max_size, current->str_len);\
|
yy_size_t len = MIN (max_size, current->str_len);\
|
||||||
|
@ -273,6 +280,7 @@ C_COMMENT_OPEN "/*"
|
||||||
|
|
||||||
INCLUDE "@import"
|
INCLUDE "@import"
|
||||||
THEME "@theme"
|
THEME "@theme"
|
||||||
|
DEFAULT (?i:\"default\"?)
|
||||||
|
|
||||||
MEDIA "@media"
|
MEDIA "@media"
|
||||||
|
|
||||||
|
@ -363,6 +371,26 @@ if ( queue == NULL ) {
|
||||||
<INCLUDE>{WHITESPACE} {}
|
<INCLUDE>{WHITESPACE} {}
|
||||||
|
|
||||||
/** Parse path. Last element in this INCLUDE */
|
/** Parse path. Last element in this INCLUDE */
|
||||||
|
<INCLUDE>{DEFAULT} {
|
||||||
|
yytext[yyleng-1] = '\0';
|
||||||
|
/** Add Parse object */
|
||||||
|
GBytes *theme_data = g_resource_lookup_data( resources_get_resource(),
|
||||||
|
"/org/qtools/rofi/default.rasi", G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
|
||||||
|
if (theme_data) {
|
||||||
|
const char *theme = g_bytes_get_data(theme_data, NULL);
|
||||||
|
file_queue = g_queue_new ();
|
||||||
|
ParseObject *po = g_malloc0(sizeof(ParseObject));
|
||||||
|
po->type = PT_STRING_ALLOC;
|
||||||
|
po->malloc_str = g_strdup(theme);
|
||||||
|
po->input_str = po->malloc_str;
|
||||||
|
po->str_len = strlen(po->malloc_str);
|
||||||
|
current = po;
|
||||||
|
g_queue_push_head ( file_queue, po );
|
||||||
|
g_bytes_unref(theme_data);
|
||||||
|
}
|
||||||
|
// Pop out of include. */
|
||||||
|
BEGIN(GPOINTER_TO_INT(g_queue_pop_head ( queue )));
|
||||||
|
}
|
||||||
<INCLUDE>{STRING} {
|
<INCLUDE>{STRING} {
|
||||||
yytext[yyleng-1] = '\0';
|
yytext[yyleng-1] = '\0';
|
||||||
ParseObject *top = g_queue_peek_head ( file_queue );
|
ParseObject *top = g_queue_peek_head ( file_queue );
|
||||||
|
@ -666,6 +694,9 @@ if ( queue == NULL ) {
|
||||||
if ( po->type == PT_FILE ) {
|
if ( po->type == PT_FILE ) {
|
||||||
fclose ( po->filein );
|
fclose ( po->filein );
|
||||||
}
|
}
|
||||||
|
if ( po->type == PT_STRING_ALLOC ) {
|
||||||
|
g_free( po->malloc_str);
|
||||||
|
}
|
||||||
g_free ( po );
|
g_free ( po );
|
||||||
}
|
}
|
||||||
po = g_queue_peek_head ( file_queue );
|
po = g_queue_peek_head ( file_queue );
|
||||||
|
@ -812,6 +843,9 @@ gboolean rofi_theme_parse_file ( const char *file )
|
||||||
if ( po->type == PT_FILE ) {
|
if ( po->type == PT_FILE ) {
|
||||||
fclose ( po->filein );
|
fclose ( po->filein );
|
||||||
}
|
}
|
||||||
|
if ( po->type == PT_STRING_ALLOC ) {
|
||||||
|
g_free( po->malloc_str);
|
||||||
|
}
|
||||||
g_free ( po );
|
g_free ( po );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -847,6 +881,9 @@ gboolean rofi_theme_parse_string ( const char *string )
|
||||||
if ( po->type == PT_FILE ) {
|
if ( po->type == PT_FILE ) {
|
||||||
fclose ( po->filein );
|
fclose ( po->filein );
|
||||||
}
|
}
|
||||||
|
if ( po->type == PT_STRING_ALLOC ) {
|
||||||
|
g_free( po->malloc_str);
|
||||||
|
}
|
||||||
g_free ( po );
|
g_free ( po );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -266,7 +266,6 @@ install_data(
|
||||||
'themes/fancy.rasi',
|
'themes/fancy.rasi',
|
||||||
'themes/iggy.rasi',
|
'themes/iggy.rasi',
|
||||||
'themes/iggy.jpg',
|
'themes/iggy.jpg',
|
||||||
'themes/default.rasi',
|
|
||||||
install_dir: themedir
|
install_dir: themedir
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -312,6 +311,7 @@ test('widget test', executable('widget.test', [
|
||||||
'test/widget-test.c',
|
'test/widget-test.c',
|
||||||
theme_parser,
|
theme_parser,
|
||||||
theme_lexer,
|
theme_lexer,
|
||||||
|
default_theme,
|
||||||
],
|
],
|
||||||
objects: rofi.extract_objects([
|
objects: rofi.extract_objects([
|
||||||
'source/widgets/widget.c',
|
'source/widgets/widget.c',
|
||||||
|
@ -329,6 +329,7 @@ test('box test', executable('box.test', [
|
||||||
'test/box-test.c',
|
'test/box-test.c',
|
||||||
theme_parser,
|
theme_parser,
|
||||||
theme_lexer,
|
theme_lexer,
|
||||||
|
default_theme,
|
||||||
],
|
],
|
||||||
objects: rofi.extract_objects([
|
objects: rofi.extract_objects([
|
||||||
'source/widgets/widget.c',
|
'source/widgets/widget.c',
|
||||||
|
@ -345,6 +346,7 @@ test('scrollbar test', executable('scrollbar.test', [
|
||||||
'test/scrollbar-test.c',
|
'test/scrollbar-test.c',
|
||||||
theme_parser,
|
theme_parser,
|
||||||
theme_lexer,
|
theme_lexer,
|
||||||
|
default_theme,
|
||||||
],
|
],
|
||||||
objects: rofi.extract_objects([
|
objects: rofi.extract_objects([
|
||||||
'source/widgets/widget.c',
|
'source/widgets/widget.c',
|
||||||
|
@ -361,6 +363,7 @@ test('textbox test', executable('textbox.test', [
|
||||||
'test/textbox-test.c',
|
'test/textbox-test.c',
|
||||||
theme_parser,
|
theme_parser,
|
||||||
theme_lexer,
|
theme_lexer,
|
||||||
|
default_theme,
|
||||||
],
|
],
|
||||||
objects: rofi.extract_objects([
|
objects: rofi.extract_objects([
|
||||||
'source/widgets/widget.c',
|
'source/widgets/widget.c',
|
||||||
|
@ -428,6 +431,7 @@ if check.found()
|
||||||
'source/theme.c',
|
'source/theme.c',
|
||||||
'source/rofi-types.c',
|
'source/rofi-types.c',
|
||||||
'source/css-colors.c',
|
'source/css-colors.c',
|
||||||
|
'resources/resources.c',
|
||||||
]),
|
]),
|
||||||
dependencies: deps,
|
dependencies: deps,
|
||||||
))
|
))
|
||||||
|
|
|
@ -17,6 +17,31 @@ some of the more 'off-script' use of rofi.
|
||||||
This release was made possible by many contributors, see below for a full list. Big thanks again to SardemFF7 and
|
This release was made possible by many contributors, see below for a full list. Big thanks again to SardemFF7 and
|
||||||
TonCherAmi.
|
TonCherAmi.
|
||||||
|
|
||||||
|
|
||||||
|
## Default theme loading
|
||||||
|
|
||||||
|
In older version of **rofi** the default theme was (almost) always loaded based on some unclear rules, sometimes
|
||||||
|
some random patch code was loaded and sometimes no theme was loaded before loading another theme.
|
||||||
|
|
||||||
|
The current version of rofi this is hopefully more logic. It loads the default
|
||||||
|
theme by default using the default configuration. (Can be disabled by `-no-default-config`).
|
||||||
|
Using `-theme`, or `@theme` primitive will discard the theme completely.
|
||||||
|
|
||||||
|
So the below css completely removes the default theme, and loads `iggy`.
|
||||||
|
|
||||||
|
```css
|
||||||
|
configuration {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme "iggy"
|
||||||
|
|
||||||
|
element {
|
||||||
|
children: [element-icon, element-text];
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## File Browser
|
## File Browser
|
||||||
|
|
||||||
TonCherAmi made several very nice usability improvements to the file-browser. His changes allow you to define sorting
|
TonCherAmi made several very nice usability improvements to the file-browser. His changes allow you to define sorting
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<gresources>
|
<gresources>
|
||||||
<gresource prefix="/org/qtools/rofi">
|
<gresource prefix="/org/qtools/rofi">
|
||||||
<file alias="default.rasi">themes/default.rasi</file>
|
<file alias="default.rasi">doc/default_theme.rasi</file>
|
||||||
<file alias="default_configuration.rasi">doc/default_configuration.rasi</file>
|
<file alias="default_configuration.rasi">doc/default_configuration.rasi</file>
|
||||||
</gresource>
|
</gresource>
|
||||||
</gresources>
|
</gresources>
|
||||||
|
|
|
@ -841,7 +841,7 @@ int main(int argc, char *argv[]) {
|
||||||
"Pidfile location");
|
"Pidfile location");
|
||||||
|
|
||||||
/** default configuration */
|
/** default configuration */
|
||||||
{
|
if (find_arg("-no-default-config") < 0) {
|
||||||
GBytes *theme_data = g_resource_lookup_data(
|
GBytes *theme_data = g_resource_lookup_data(
|
||||||
resources_get_resource(), "/org/qtools/rofi/default_configuration.rasi",
|
resources_get_resource(), "/org/qtools/rofi/default_configuration.rasi",
|
||||||
G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
|
G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
|
||||||
|
@ -987,30 +987,6 @@ int main(int argc, char *argv[]) {
|
||||||
windowid = config.monitor;
|
windowid = config.monitor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Load default theme, if no theme was set and we don't have a current theme
|
|
||||||
// loaded.
|
|
||||||
if (config.theme == NULL && rofi_theme_is_empty()) {
|
|
||||||
GBytes *theme_data = g_resource_lookup_data(
|
|
||||||
resources_get_resource(), "/org/qtools/rofi/default.rasi",
|
|
||||||
G_RESOURCE_LOOKUP_FLAGS_NONE, NULL);
|
|
||||||
if (theme_data) {
|
|
||||||
const char *theme = g_bytes_get_data(theme_data, NULL);
|
|
||||||
if (rofi_theme_parse_string((const char *)theme)) {
|
|
||||||
g_warning("Failed to parse default theme. Giving up..");
|
|
||||||
if (list_of_error_msgs) {
|
|
||||||
for (GList *iter = g_list_first(list_of_error_msgs); iter != NULL;
|
|
||||||
iter = g_list_next(iter)) {
|
|
||||||
g_warning("Error: %s%s%s", color_bold, ((GString *)iter->data)->str,
|
|
||||||
color_reset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rofi_theme = NULL;
|
|
||||||
cleanup();
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
g_bytes_unref(theme_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make small commandline changes to the current theme.
|
* Make small commandline changes to the current theme.
|
||||||
|
|
Loading…
Reference in a new issue