summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/config.c1
-rw-r--r--doc/rofi-manpage.markdown4
-rw-r--r--doc/rofi.18
-rw-r--r--include/settings.h2
-rw-r--r--include/textbox.h18
-rw-r--r--include/x11-helper.h11
-rw-r--r--source/dialogs/window.c37
-rw-r--r--source/history.c2
-rw-r--r--source/view.c38
-rw-r--r--source/x11-helper.c50
-rw-r--r--source/xrmoptions.c161
11 files changed, 229 insertions, 103 deletions
diff --git a/config/config.c b/config/config.c
index 756e59c2..d33a8303 100644
--- a/config/config.c
+++ b/config/config.c
@@ -125,4 +125,5 @@ Settings config = {
.threads = 1,
.scrollbar_width = 8,
.scroll_method = 0,
+ .fake_background = "screenshot",
};
diff --git a/doc/rofi-manpage.markdown b/doc/rofi-manpage.markdown
index 37d03c6c..78865739 100644
--- a/doc/rofi-manpage.markdown
+++ b/doc/rofi-manpage.markdown
@@ -589,6 +589,10 @@ simultaneously. This is useful when running **rofi** from a keybinding daemon.
Enable fake transparency. This only works with transparent background color in the theme, not the opacity setting.
+`-fake-background`
+
+Select what to use as background for fake transparency. This can be 'background' or 'screenshot'
+
### Debug
diff --git a/doc/rofi.1 b/doc/rofi.1
index 987e7d1a..40d30c62 100644
--- a/doc/rofi.1
+++ b/doc/rofi.1
@@ -1,7 +1,7 @@
.\" generated with Ronn/v0.7.3
.\" http://github.com/rtomayko/ronn/tree/0.7.3
.
-.TH "ROFI\-MANPAGE" "" "April 2016" "" ""
+.TH "ROFI\-MANPAGE" "" "May 2016" "" ""
.
.SH "NAME"
\fBrofi\fR \- A window switcher, run launcher, ssh dialog and dmenu replacement
@@ -932,6 +932,12 @@ Make \fBrofi\fR create a pid file and check this on startup\. Avoiding multiple
.P
Enable fake transparency\. This only works with transparent background color in the theme, not the opacity setting\.
.
+.P
+\fB\-fake\-background\fR
+.
+.P
+Select what to use as background for fake transparency\. This can be \'background\' or \'screenshot\'
+.
.SS "Debug"
\fB\-no\-config\fR
.
diff --git a/include/settings.h b/include/settings.h
index 2633354a..cb741a1d 100644
--- a/include/settings.h
+++ b/include/settings.h
@@ -127,6 +127,8 @@ typedef struct
unsigned int threads;
unsigned int scrollbar_width;
unsigned int scroll_method;
+ /** Background type */
+ char *fake_background;
} Settings;
/** Global Settings structure. */
extern Settings config;
diff --git a/include/textbox.h b/include/textbox.h
index e1d608e1..3d3b8d09 100644
--- a/include/textbox.h
+++ b/include/textbox.h
@@ -38,15 +38,15 @@ typedef struct
typedef enum
{
- TB_AUTOHEIGHT = 1 << 0,
- TB_AUTOWIDTH = 1 << 1,
- TB_LEFT = 1 << 16,
- TB_RIGHT = 1 << 17,
- TB_CENTER = 1 << 18,
- TB_EDITABLE = 1 << 19,
- TB_MARKUP = 1 << 20,
- TB_WRAP = 1 << 21,
- TB_PASSWORD = 1 << 22,
+ TB_AUTOHEIGHT = 1 << 0,
+ TB_AUTOWIDTH = 1 << 1,
+ TB_LEFT = 1 << 16,
+ TB_RIGHT = 1 << 17,
+ TB_CENTER = 1 << 18,
+ TB_EDITABLE = 1 << 19,
+ TB_MARKUP = 1 << 20,
+ TB_WRAP = 1 << 21,
+ TB_PASSWORD = 1 << 22,
} TextboxFlags;
typedef enum
diff --git a/include/x11-helper.h b/include/x11-helper.h
index 730724bc..c6704ff4 100644
--- a/include/x11-helper.h
+++ b/include/x11-helper.h
@@ -38,7 +38,9 @@ void window_set_atom_prop ( xcb_window_t w, xcb_atom_t prop, xcb_atom_t *atoms,
X ( I3_SOCKET_PATH ), \
X ( UTF8_STRING ), \
X ( STRING ), \
- X ( WM_WINDOW_ROLE )
+ X ( WM_WINDOW_ROLE ), \
+ X ( _XROOTPMAP_ID ), \
+ X ( ESETROOT_PMAP_ID )
enum { EWMH_ATOMS ( ATOM_ENUM ), NUM_NETATOMS };
@@ -134,5 +136,12 @@ void color_border ( cairo_t *d );
void color_separator ( cairo_t *d );
void x11_helper_set_cairo_rgba ( cairo_t *d, Color col );
+
+/**
+ * Gets a surface containing the background image of the desktop.
+ *
+ * @param a cairo surface with the background image of the desktop.
+ */
+cairo_surface_t * x11_helper_get_bg_surface ( void );
/*@}*/
#endif
diff --git a/source/dialogs/window.c b/source/dialogs/window.c
index 13a43dee..5b2fd249 100644
--- a/source/dialogs/window.c
+++ b/source/dialogs/window.c
@@ -470,7 +470,7 @@ static void _window_mode_load_data ( Mode *sw, unsigned int cd )
( ( c->title != NULL ) ? strlen ( c->title ) : 0 ) + ( c->class ? strlen ( c->class ) : 0 ) + classfield + 50;
char *line = g_malloc ( len );
if ( !pd->config_i3_mode ) {
- uint32_t wmdesktop = 0;
+ uint32_t wmdesktop = 0;
// find client's desktop.
xcb_get_property_cookie_t cookie;
xcb_get_property_reply_t *r;
@@ -482,7 +482,7 @@ static void _window_mode_load_data ( Mode *sw, unsigned int cd )
if ( r && r->type == XCB_ATOM_CARDINAL ) {
wmdesktop = *( (uint32_t *) xcb_get_property_value ( r ) );
}
- if ( r && r->type != XCB_ATOM_CARDINAL) {
+ if ( r && r->type != XCB_ATOM_CARDINAL ) {
// Assume the client is on all desktops.
wmdesktop = 0xFFFFFFFF;
}
@@ -544,31 +544,32 @@ static ModeMode window_mode_result ( Mode *sw, int mretv, G_GNUC_UNUSED char **i
if ( rmpd->config_i3_mode ) {
// Hack for i3.
i3_support_focus_window ( rmpd->ids->array[selected_line] );
- } else {
+ }
+ else {
// Get the current desktop.
- unsigned int current_desktop = 0;
- xcb_get_property_cookie_t c = xcb_ewmh_get_current_desktop ( &xcb->ewmh, xcb->screen_nbr );
+ unsigned int current_desktop = 0;
+ xcb_get_property_cookie_t c = xcb_ewmh_get_current_desktop ( &xcb->ewmh, xcb->screen_nbr );
if ( !xcb_ewmh_get_current_desktop_reply ( &xcb->ewmh, c, &current_desktop, NULL ) ) {
current_desktop = 0;
}
// Get the desktop of the client to switch to
- uint32_t wmdesktop = 0;
+ uint32_t wmdesktop = 0;
xcb_get_property_cookie_t cookie;
xcb_get_property_reply_t *r;
- cookie = xcb_get_property (xcb->connection,
- 0,
- rmpd->ids->array[selected_line],
- xcb->ewmh._NET_WM_DESKTOP,
- XCB_ATOM_CARDINAL,
- 0,
- 1);
+ cookie = xcb_get_property ( xcb->connection,
+ 0,
+ rmpd->ids->array[selected_line],
+ xcb->ewmh._NET_WM_DESKTOP,
+ XCB_ATOM_CARDINAL,
+ 0,
+ 1 );
r = xcb_get_property_reply ( xcb->connection, cookie, NULL );
if ( r && r->type == XCB_ATOM_CARDINAL ) {
wmdesktop = *( (uint32_t *) xcb_get_property_value ( r ) );
}
- if ( r && r->type != XCB_ATOM_CARDINAL) {
+ if ( r && r->type != XCB_ATOM_CARDINAL ) {
// Assume the client is on all desktops.
wmdesktop = current_desktop;
}
@@ -576,10 +577,10 @@ static ModeMode window_mode_result ( Mode *sw, int mretv, G_GNUC_UNUSED char **i
// If we have to switch the desktop, do
if ( wmdesktop != current_desktop ) {
- xcb_ewmh_request_change_current_desktop(&xcb->ewmh,
- xcb->screen_nbr,
- wmdesktop,
- XCB_CURRENT_TIME);
+ xcb_ewmh_request_change_current_desktop ( &xcb->ewmh,
+ xcb->screen_nbr,
+ wmdesktop,
+ XCB_CURRENT_TIME );
}
// Activate the window
diff --git a/source/history.c b/source/history.c
index 07baef32..3b2de37a 100644
--- a/source/history.c
+++ b/source/history.c
@@ -99,7 +99,7 @@ static _element ** __history_get_element_list ( FILE *fd, unsigned int *length )
continue;
}
start++;
- if ( (l - (start-buffer)) < 3) {
+ if ( ( l - ( start - buffer ) ) < 3 ) {
continue;
}
// Resize and check.
diff --git a/source/view.c b/source/view.c
index a3d50cc6..99548077 100644
--- a/source/view.c
+++ b/source/view.c
@@ -517,18 +517,29 @@ static void check_is_ascii ( thread_state *t, G_GNUC_UNUSED gpointer user_data )
static void rofi_view_setup_fake_transparency ( void )
{
if ( CacheState.fake_bg == NULL ) {
- cairo_surface_t *s = cairo_xcb_surface_create ( xcb->connection,
- xcb_stuff_get_root_window ( xcb ),
- root_visual,
- xcb->screen->width_in_pixels,
- xcb->screen->height_in_pixels );
-
- CacheState.fake_bg = cairo_image_surface_create ( CAIRO_FORMAT_ARGB32, CacheState.mon.w, CacheState.mon.h );
- cairo_t *dr = cairo_create ( CacheState.fake_bg );
- cairo_set_source_surface ( dr, s, -CacheState.mon.x, -CacheState.mon.y );
- cairo_paint ( dr );
- cairo_destroy ( dr );
- cairo_surface_destroy ( s );
+ cairo_surface_t *s = NULL;
+ /**
+ * Select Background to use for fake transparency.
+ * Current options: 'screenshot','background'
+ */
+ if ( g_strcmp0 ( config.fake_background, "screenshot" ) == 0 ) {
+ s = cairo_xcb_surface_create ( xcb->connection,
+ xcb_stuff_get_root_window ( xcb ),
+ root_visual,
+ xcb->screen->width_in_pixels,
+ xcb->screen->height_in_pixels );
+ }
+ else if ( g_strcmp0 ( config.fake_background, "background" ) == 0 ) {
+ s = x11_helper_get_bg_surface ();
+ }
+ if ( s != NULL ) {
+ CacheState.fake_bg = cairo_image_surface_create ( CAIRO_FORMAT_ARGB32, CacheState.mon.w, CacheState.mon.h );
+ cairo_t *dr = cairo_create ( CacheState.fake_bg );
+ cairo_set_source_surface ( dr, s, -CacheState.mon.x, -CacheState.mon.y );
+ cairo_paint ( dr );
+ cairo_destroy ( dr );
+ cairo_surface_destroy ( s );
+ }
TICK_N ( "Fake transparency" );
}
}
@@ -612,7 +623,6 @@ void __create_window ( MenuFlags menu_flags )
}
}
-
/**
* @param state Internal state of the menu.
*
@@ -1806,7 +1816,7 @@ void rofi_view_workers_initialize ( void )
}
// If error occured during setup of pool, tell user and exit.
if ( error != NULL ) {
- fprintf ( stderr, "Failed to setup thread pool: '%s'", error->message );
+ fprintf ( stderr, "Failed to setup thread pool: '%s'", error->message );
g_error_free ( error );
exit ( EXIT_FAILURE );
}
diff --git a/source/x11-helper.c b/source/x11-helper.c
index 9ccb5871..b6c0b232 100644
--- a/source/x11-helper.c
+++ b/source/x11-helper.c
@@ -33,6 +33,7 @@
#include <stdint.h>
#include <glib.h>
#include <cairo.h>
+#include <cairo-xcb.h>
#include <xcb/xcb.h>
#include <xcb/xinerama.h>
@@ -83,6 +84,47 @@ xcb_atom_t netatoms[NUM_NETATOMS];
const char *netatom_names[] = { EWMH_ATOMS ( ATOM_CHAR ) };
static unsigned int x11_mod_masks[NUM_X11MOD];
+static xcb_pixmap_t get_root_pixmap ( xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_atom_t atom )
+{
+ xcb_get_property_cookie_t cookie;
+ xcb_get_property_reply_t *reply;
+ xcb_pixmap_t *rootpixmap = NULL;
+
+ cookie = xcb_get_property ( c,
+ 0,
+ screen->root,
+ atom,
+ XCB_ATOM_PIXMAP,
+ 0,
+ 1 );
+
+ reply = xcb_get_property_reply ( c, cookie, NULL );
+
+ if ( reply &&
+ ( xcb_get_property_value_length ( reply ) == sizeof ( xcb_pixmap_t ) ) ) {
+ rootpixmap = (xcb_pixmap_t *) xcb_get_property_value ( reply );
+ }
+ else {
+ *rootpixmap = XCB_NONE;
+ }
+
+ free ( reply );
+
+ return *rootpixmap;
+}
+
+cairo_surface_t * x11_helper_get_bg_surface ( void )
+{
+ xcb_pixmap_t pm = get_root_pixmap ( xcb->connection, xcb->screen, netatoms[ESETROOT_PMAP_ID] );
+ if ( pm == XCB_NONE ) {
+ return NULL;
+ }
+ return cairo_xcb_surface_create ( xcb->connection, pm, root_visual,
+ xcb->screen->width_in_pixels, xcb->screen->height_in_pixels );
+}
+
// retrieve a text property from a window
// technically we could use window_get_prop(), but this is better for character set support
char* window_get_text_prop ( xcb_window_t w, xcb_atom_t atom )
@@ -300,12 +342,12 @@ void monitor_active ( workarea *mon )
free ( r );
free ( t );
return;
- } else if ( config.monitor == -4 ){
+ }
+ else if ( config.monitor == -4 ) {
monitor_dimensions ( t->dst_x, t->dst_y, mon );
- free(r);
- free(t);
+ free ( r );
+ free ( t );
return;
-
}
}
free ( r );
diff --git a/source/xrmoptions.c b/source/xrmoptions.c
index 41d40495..d9d82b14 100644
--- a/source/xrmoptions.c
+++ b/source/xrmoptions.c
@@ -63,62 +63,113 @@ typedef struct
* Currently supports string, boolean and number (signed and unsigned).
*/
static XrmOption xrmOptions[] = {
- { xrm_String, "switchers", { .str = &config.modi }, NULL, "" },
- { xrm_String, "modi", { .str = &config.modi }, NULL, "Enabled modi" },
- { xrm_Number, "opacity", { .num = &config.window_opacity }, NULL, "Window opacity" },
- { xrm_SNumber, "width", { .snum = &config.menu_width }, NULL, "Window width" },
- { xrm_Number, "lines", { .num = &config.menu_lines }, NULL, "Number of lines" },
- { xrm_Number, "columns", { .num = &config.menu_columns }, NULL, "Number of columns" },
-
- { xrm_String, "font", { .str = &config.menu_font }, NULL, "Font to use" },
- { xrm_String, "color-normal", { .str = &config.color_normal }, NULL, "Color scheme for normal row" },
- { xrm_String, "color-urgent", { .str = &config.color_urgent }, NULL, "Color scheme for urgent row" },
- { xrm_String, "color-active", { .str = &config.color_active }, NULL, "Color scheme for active row" },
- { xrm_String, "color-window", { .str = &config.color_window }, NULL, "Color scheme window" },
-
- { xrm_Number, "borderwidth", { .num = &config.menu_bw }, NULL, "" },
- { xrm_Number, "bw", { .num = &config.menu_bw }, NULL, "Border width" },
-
- { xrm_Number, "location", { .num = &config.location }, NULL, "Location on screen" },
-
- { xrm_Number, "padding", { .num = &config.padding }, NULL, "Padding" },
- { xrm_SNumber, "yoffset", { .snum = &config.y_offset }, NULL, "Y-offset relative to location" },
- { xrm_SNumber, "xoffset", { .snum = &config.x_offset }, NULL, "X-offset relative to location" },
- { xrm_Boolean, "fixed-num-lines", { .num = &config.fixed_num_lines }, NULL, "Always show number of lines" },
-
- { xrm_String, "terminal", { .str = &config.terminal_emulator }, NULL, "Terminal to use" },
- { xrm_String, "ssh-client", { .str = &config.ssh_client }, NULL, "Ssh client to use" },
- { xrm_String, "ssh-command", { .str = &config.ssh_command }, NULL, "Ssh command to execute" },
- { xrm_String, "run-command", { .str = &config.run_command }, NULL, "Run command to execute" },
- { xrm_String, "run-list-command", { .str = &config.run_list_command }, NULL, "Command to get extra run targets" },
- { xrm_String, "run-shell-command", { .str = &config.run_shell_command }, NULL, "Run command to execute that runs in shell" },
-
- { xrm_Boolean, "disable-history", { .num = &config.disable_history }, NULL, "Disable history in run/ssh" },
- { xrm_Boolean, "levenshtein-sort", { .num = &config.levenshtein_sort }, NULL, "Use levenshtein sorting" },
- { xrm_Boolean, "case-sensitive", { .num = &config.case_sensitive }, NULL, "Set case-sensitivity" },
- { xrm_Boolean, "sidebar-mode", { .num = &config.sidebar_mode }, NULL, "Enable sidebar-mode" },
- { xrm_SNumber, "eh", { .snum = &config.element_height }, NULL, "Row height (in chars)" },
- { xrm_Boolean, "auto-select", { .num = &config.auto_select }, NULL, "Enable auto select mode" },
- { xrm_Boolean, "parse-hosts", { .num = &config.parse_hosts }, NULL, "Parse hosts file for ssh mode" },
- { xrm_Boolean, "parse-known-hosts", { .num = &config.parse_known_hosts }, NULL, "Parse known_hosts file for ssh mode" },
- { xrm_String, "combi-modi", { .str = &config.combi_modi }, NULL, "Set the modi to combine in combi mode" },
- { xrm_Boolean, "fuzzy", { .num = &config.fuzzy }, NULL, "Do a more fuzzy matching" },
- { xrm_Boolean, "glob", { .num = &config.glob }, NULL, "Use glob matching" },
- { xrm_Boolean, "regex", { .num = &config.regex }, NULL, "Use regex matching" },
- { xrm_Boolean, "tokenize", { .num = &config.tokenize }, NULL, "Tokenize input string" },
- { xrm_Number, "monitor", { .snum = &config.monitor }, NULL, "" },
+ { xrm_String, "switchers", { .str = &config.modi }, NULL,
+ "" },
+ { xrm_String, "modi", { .str = &config.modi }, NULL,
+ "Enabled modi" },
+ { xrm_Number, "opacity", { .num = &config.window_opacity }, NULL,
+ "Window opacity" },
+ { xrm_SNumber, "width", { .snum = &config.menu_width }, NULL,
+ "Window width" },
+ { xrm_Number, "lines", { .num = &config.menu_lines }, NULL,
+ "Number of lines" },
+ { xrm_Number, "columns", { .num = &config.menu_columns }, NULL,
+ "Number of columns" },
+
+ { xrm_String, "font", { .str = &config.menu_font }, NULL,
+ "Font to use" },
+ { xrm_String, "color-normal", { .str = &config.color_normal }, NULL,
+ "Color scheme for normal row" },
+ { xrm_String, "color-urgent", { .str = &config.color_urgent }, NULL,
+ "Color scheme for urgent row" },
+ { xrm_String, "color-active", { .str = &config.color_active }, NULL,
+ "Color scheme for active row" },
+ { xrm_String, "color-window", { .str = &config.color_window }, NULL,
+ "Color scheme window" },
+
+ { xrm_Number, "borderwidth", { .num = &config.menu_bw }, NULL,
+ "" },
+ { xrm_Number, "bw", { .num = &config.menu_bw }, NULL,
+ "Border width" },
+
+ { xrm_Number, "location", { .num = &config.location }, NULL,
+ "Location on screen" },
+
+ { xrm_Number, "padding", { .num = &config.padding }, NULL,
+ "Padding" },
+ { xrm_SNumber, "yoffset", { .snum = &config.y_offset }, NULL,
+ "Y-offset relative to location" },
+ { xrm_SNumber, "xoffset", { .snum = &config.x_offset }, NULL,
+ "X-offset relative to location" },
+ { xrm_Boolean, "fixed-num-lines", { .num = &config.fixed_num_lines }, NULL,
+ "Always show number of lines" },
+
+ { xrm_String, "terminal", { .str = &config.terminal_emulator }, NULL,
+ "Terminal to use" },
+ { xrm_String, "ssh-client", { .str = &config.ssh_client }, NULL,
+ "Ssh client to use" },
+ { xrm_String, "ssh-command", { .str = &config.ssh_command }, NULL,
+ "Ssh command to execute" },
+ { xrm_String, "run-command", { .str = &config.run_command }, NULL,
+ "Run command to execute" },
+ { xrm_String, "run-list-command", { .str = &config.run_list_command }, NULL,
+ "Command to get extra run targets" },
+ { xrm_String, "run-shell-command", { .str = &config.run_shell_command }, NULL,
+ "Run command to execute that runs in shell" },
+
+ { xrm_Boolean, "disable-history", { .num = &config.disable_history }, NULL,
+ "Disable history in run/ssh" },
+ { xrm_Boolean, "levenshtein-sort", { .num = &config.levenshtein_sort }, NULL,
+ "Use levenshtein sorting" },
+ { xrm_Boolean, "case-sensitive", { .num = &config.case_sensitive }, NULL,
+ "Set case-sensitivity" },
+ { xrm_Boolean, "sidebar-mode", { .num = &config.sidebar_mode }, NULL,
+ "Enable sidebar-mode" },
+ { xrm_SNumber, "eh", { .snum = &config.element_height }, NULL,
+ "Row height (in chars)" },
+ { xrm_Boolean, "auto-select", { .num = &config.auto_select }, NULL,
+ "Enable auto select mode" },
+ { xrm_Boolean, "parse-hosts", { .num = &config.parse_hosts }, NULL,
+ "Parse hosts file for ssh mode" },
+ { xrm_Boolean, "parse-known-hosts", { .num = &config.parse_known_hosts }, NULL,
+ "Parse known_hosts file for ssh mode" },
+ { xrm_String, "combi-modi", { .str = &config.combi_modi }, NULL,
+ "Set the modi to combine in combi mode" },
+ { xrm_Boolean, "fuzzy", { .num = &config.fuzzy }, NULL,
+ "Do a more fuzzy matching" },
+ { xrm_Boolean, "glob", { .num = &config.glob }, NULL,
+ "Use glob matching" },
+ { xrm_Boolean, "regex", { .num = &config.regex }, NULL,
+ "Use regex matching" },
+ { xrm_Boolean, "tokenize", { .num = &config.tokenize }, NULL,
+ "Tokenize input string" },
+ { xrm_Number, "monitor", { .snum = &config.monitor }, NULL,
+ "" },
/* Alias for dmenu compatibility. */
- { xrm_SNumber, "m", { .snum = &config.monitor }, NULL, "Monitor id to show on" },
- { xrm_Number, "line-margin", { .num = &config.line_margin }, NULL, "Margin between rows" },
- { xrm_String, "filter", { .str = &config.filter }, NULL, "Pre-set filter" },
- { xrm_String, "separator-style", { .str = &config.separator_style }, NULL, "Separator style (none, dash, solid)" },
- { xrm_Boolean, "hide-scrollbar", { .num = &config.hide_scrollbar }, NULL, "Hide scroll-bar" },
- { xrm_Boolean, "fullscreen", { .num = &config.fullscreen }, NULL, "Fullscreen" },
- { xrm_Boolean, "fake-transparency", { .num = &config.fake_transparency }, NULL, "Fake transparency" },
- { xrm_SNumber, "dpi", { .snum = &config.dpi }, NULL, "DPI" },
- { xrm_Number, "threads", { .num = &config.threads }, NULL, "Threads to use for string matching" },
- { xrm_Number, "scrollbar-width", { .num = &config.scrollbar_width }, NULL, "Scrollbar width" },
- { xrm_Number, "scroll-method", { .num = &config.scroll_method }, NULL, "Scrolling method. (0: Page, 1: Centered)" }
+ { xrm_SNumber, "m", { .snum = &config.monitor }, NULL,
+ "Monitor id to show on" },
+ { xrm_Number, "line-margin", { .num = &config.line_margin }, NULL,
+ "Margin between rows" },
+ { xrm_String, "filter", { .str = &config.filter }, NULL,
+ "Pre-set filter" },
+ { xrm_String, "separator-style", { .str = &config.separator_style }, NULL,
+ "Separator style (none, dash, solid)" },
+ { xrm_Boolean, "hide-scrollbar", { .num = &config.hide_scrollbar }, NULL,
+ "Hide scroll-bar" },
+ { xrm_Boolean, "fullscreen", { .num = &config.fullscreen }, NULL,
+ "Fullscreen" },
+ { xrm_Boolean, "fake-transparency", { .num = &config.fake_transparency }, NULL,
+ "Fake transparency" },
+ { xrm_SNumber, "dpi", { .snum = &config.dpi }, NULL,
+ "DPI" },
+ { xrm_Number, "threads", { .num = &config.threads }, NULL,
+ "Threads to use for string matching" },
+ { xrm_Number, "scrollbar-width", { .num = &config.scrollbar_width }, NULL,
+ "Scrollbar width" },
+ { xrm_Number, "scroll-method", { .num = &config.scroll_method }, NULL,
+ "Scrolling method. (0: Page, 1: Centered)" },
+ { xrm_String, "fake-background", { .str = &config.fake_background }, NULL,
+ "Background to use for fake transparency. (background or screenshot)" },
};
// Dynamic options.