diff --git a/Changelog b/Changelog index a872a629..bb56241d 100644 --- a/Changelog +++ b/Changelog @@ -1,4 +1,4 @@ -v1.5.0 (dev): +v1.5.0: - [Theme] Accept integer notation for double properties. (#752) - [View] Theme textboxes are vertically sized and horizontal wrapped. (#754) - Rofi 1.4.2 doesn't capture ←, ↑, →, ↓ binding to keys to work in combination with Mode_switch (#744) diff --git a/Examples/test_script_mode.sh b/Examples/test_script_mode.sh index 61e29141..a58ef83e 100755 --- a/Examples/test_script_mode.sh +++ b/Examples/test_script_mode.sh @@ -1,17 +1,28 @@ #!/usr/bin/env bash -echo -en "\x00prompt\x1ftesting\n" -echo -en "\0urgent\x1f0,2\n" -echo -en "\0active\x1f1\n" -echo -en "\0markup-rows\x1ftrue\n" -echo -en "\0message\x1fSpecial boldmessage\n" - -echo "aap" -echo "noot" -echo "mies" -echo "testing" -echo "Bold" -if [ -n "$@" ] +if [ x"$@" = x"quit" ] then - echo "$@" + exit 0 +fi + +if [ "$@" ] +then + for a in {1..10} + do + echo "$a" + done + echo "quit" +else + echo -en "\x00prompt\x1ftesting\n" + echo -en "\0urgent\x1f0,2\n" + echo -en "\0active\x1f1\n" + echo -en "\0markup-rows\x1ftrue\n" + echo -en "\0message\x1fSpecial boldmessage\n" + + echo "aap" + echo "noot" + echo "mies" + echo "testing" + echo "Bold" + echo "quit" fi diff --git a/INSTALL.md b/INSTALL.md index e4da8f99..e59366af 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -191,7 +191,9 @@ apt install rofi **Please note that the latest version of rofi in Ubuntu 16.04 is extremely outdated (v0.15.11)** -This will cause issues with newer scripts (i.e. with clerk) and we recommend to manually download and install the deb file for zesty instead. You can find the deb on [ubuntu's launchpad page for rofi](https://launchpad.net/ubuntu/+source/rofi). +This will cause issues with newer scripts (i.e. with clerk) and misses important updates and bug-fixes. +Newer versions of Rofi however requires versions of xcb-util-xrm and libxkbcommon that are not available in the 16.04 repositories. +These need to be manually installed before rofi can be installed either via source code or Zesty version from the [ubuntu's launchpad page for rofi](https://launchpad.net/ubuntu/+source/rofi). ### Fedora diff --git a/Makefile.am b/Makefile.am index efa65c4b..ab22637b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -195,6 +195,7 @@ themedir=$(pkgdatadir)/themes/ theme_DATA=\ themes/Adapta-Nokto.rasi\ themes/Arc.rasi\ + themes/Arc-Dark.rasi\ themes/DarkBlue.rasi\ themes/Pop-Dark.rasi\ themes/Indego.rasi\ @@ -206,6 +207,7 @@ theme_DATA=\ themes/c64.rasi\ themes/dmenu.rasi\ themes/glue_pro_blue.rasi\ + themes/gruvbox-common.rasi\ themes/gruvbox-dark-hard.rasi\ themes/gruvbox-dark-soft.rasi\ themes/gruvbox-dark.rasi\ diff --git a/README.md b/README.md index b164c24d..a80e71fa 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ For the full list of key bindings, see: `rofi -show keys` or `rofi -help`. There are currently three methods of setting configuration options: - * Local configuration. Normally, depending on XDG, in `~/.local/rofi/config`. This uses the Xresources format. + * Local configuration. Normally, depending on XDG, in `~/.config/rofi/config`. This uses the Xresources format. * Xresources: A method of storing key values in the Xserver. See [here](https://en.wikipedia.org/wiki/X_resources) for more information. * Command line options: Arguments are passed to **Rofi**. diff --git a/configure.ac b/configure.ac index 9357964e..f71dafc7 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rofi], [1.4.99-dev], [https://github.com/DaveDavenport/rofi/],[],[https://reddit.com/r/qtools/]) +AC_INIT([rofi], [1.5.0-dev], [https://github.com/DaveDavenport/rofi/],[],[https://reddit.com/r/qtools/]) AC_CONFIG_SRCDIR([source/rofi.c]) AC_CONFIG_HEADER([config.h]) diff --git a/doc/rofi-theme.5 b/doc/rofi-theme.5 index c4ea5408..0f8a34b2 100644 --- a/doc/rofi-theme.5 +++ b/doc/rofi-theme.5 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "ROFI\-THEME" "5" "December 2017" "" "" +.TH "ROFI\-THEME" "5" "February 2018" "" "" . .SH "NAME" \fBrofi\-theme\fR \- Rofi theme format files @@ -118,7 +118,7 @@ It is advised to define the \fIglobal properties section\fR on top of the file t .IP "" 0 . .P -If there are mulitple sections with the same name, they are merged\. Duplicate properties are overwritten and the last parsed entry kept\. +If there are multiple sections with the same name, they are merged\. Duplicate properties are overwritten and the last parsed entry kept\. . .SH "Global properties section" A theme can have one or more global properties sections\. If there is more than one, they will be merged\. @@ -169,7 +169,7 @@ element normal normal, button { .IP "" 0 . .P -Each section inherits the global properties\. Properties can be explicitely inherited from there parent with the \fBinherit\fR keyword\. In the following example: +Each section inherits the global properties\. Properties can be explicitly inherited from their parent with the \fBinherit\fR keyword\. In the following example: . .IP "" 4 . @@ -221,7 +221,7 @@ The properties in a section consist of: .IP "" 0 . .P -Both fields are manditory for a property\. +Both fields are mandatory for a property\. . .P The \fBidentifier\fR names the specified property\. Identifiers can consist of any combination of numbers, letters and \'\-\'\. It must not contain any whitespace\. The structure of the \fBvalue\fR defines the type of the property\. The current parser does not define or enforce a certain type of a particular \fBidentifier\fR\. When used, values with the wrong type that cannot be converted are ignored\. @@ -419,7 +419,7 @@ The white\-space format proposed in CSS4 is also supported\. The different values are: . .IP "\(bu" 4 -\fB{HEX}\fR is a hexidecimal number (\'0\-9a\-f\' case insensitive)\. +\fB{HEX}\fR is a hexadecimal number (\'0\-9a\-f\' case insensitive)\. . .IP "\(bu" 4 \fB{INTEGER}\fR value can be between 0 and 255 or 0\-100 when representing percentage\. @@ -888,7 +888,7 @@ nametotextbox selected\.active { .IP "" 0 . .P -Sets all selected textboxes marked active to the given foreground and background color\. Note that a state modifies the original element, it therefor contains all the properties of that element\. +Sets all selected textboxes marked active to the given foreground and background color\. Note that a state modifies the original element, it therefore contains all the properties of that element\. . .SS "Scrollbar" The scrollbar uses the \fBhandle\fR state when drawing the small scrollbar handle\. This allows the colors used for drawing the handle to be set independently\. @@ -1073,7 +1073,7 @@ The current layout of \fBrofi\fR is structured as follows: | | |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| | | | | | | | |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| | | -| | | sidebar {BOX:horizontal} | | | +| | | sidebar {BOX:horizontal} | | | | | | |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| | | | | | | | Button | | Button | | Button | | Button | | | | | | | |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-| |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| | | | diff --git a/doc/rofi-theme.5.markdown b/doc/rofi-theme.5.markdown index 6bcc28c5..655f640e 100644 --- a/doc/rofi-theme.5.markdown +++ b/doc/rofi-theme.5.markdown @@ -87,7 +87,7 @@ make inheritance of properties clearer. } ``` -If there are mulitple sections with the same name, they are merged. Duplicate properties are overwritten and the last +If there are multiple sections with the same name, they are merged. Duplicate properties are overwritten and the last parsed entry kept. ## Global properties section @@ -129,7 +129,7 @@ element normal normal, button { } ``` -Each section inherits the global properties. Properties can be explicitely inherited from there parent with the +Each section inherits the global properties. Properties can be explicitly inherited from their parent with the `inherit` keyword. In the following example: @@ -165,7 +165,7 @@ The properties in a section consist of: {identifier}: {value}; ``` -Both fields are manditory for a property. +Both fields are mandatory for a property. The `identifier` names the specified property. Identifiers can consist of any combination of numbers, letters and '-'. It must not contain any whitespace. @@ -265,7 +265,7 @@ The white-space format proposed in CSS4 is also supported. The different values are: - * `{HEX}` is a hexidecimal number ('0-9a-f' case insensitive). + * `{HEX}` is a hexadecimal number ('0-9a-f' case insensitive). * `{INTEGER}` value can be between 0 and 255 or 0-100 when representing percentage. * `{ANGLE}` is the angle on the color wheel, can be in `deg`, `rad`, `grad` or `turn`. When no unit is specified, degrees is assumed. * `{PERCENTAGE}` can be between 0-1.0, or 0%-100% @@ -549,7 +549,7 @@ nametotextbox selected.active { ``` Sets all selected textboxes marked active to the given foreground and background color. -Note that a state modifies the original element, it therefor contains all the properties of that element. +Note that a state modifies the original element, it therefore contains all the properties of that element. ### Scrollbar @@ -686,7 +686,7 @@ The current layout of **rofi** is structured as follows: | | |-----------------------------------------------------------------------------| | | | | | | | |---------------------------------------------------------------------------| | | -| | | sidebar {BOX:horizontal} | | | +| | | sidebar {BOX:horizontal} | | | | | | |---------------| |---------------| |--------------| |---------------| | | | | | | | Button | | Button | | Button | | Button | | | | | | | |---------------| |---------------| |--------------| |---------------| | | | diff --git a/meson.build b/meson.build index b98f5c2a..c5cfbe53 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('rofi', 'c', - version: '1.4.99-dev', + version: '1.5.0-dev', meson_version: '>=0.39.1', license: [ 'MIT' ], default_options: [ @@ -218,6 +218,7 @@ install_man( install_data( 'themes/Adapta-Nokto.rasi', 'themes/Arc.rasi', + 'themes/Arc-Dark.rasi', 'themes/DarkBlue.rasi', 'themes/Pop-Dark.rasi', 'themes/Indego.rasi', @@ -229,6 +230,7 @@ install_data( 'themes/c64.rasi', 'themes/dmenu.rasi', 'themes/glue_pro_blue.rasi', + 'themes/gruvbox-common.rasi', 'themes/gruvbox-dark-hard.rasi', 'themes/gruvbox-dark-soft.rasi', 'themes/gruvbox-dark.rasi', diff --git a/source/dialogs/script.c b/source/dialogs/script.c index 9daf1354..4f53ee3e 100644 --- a/source/dialogs/script.c +++ b/source/dialogs/script.c @@ -78,7 +78,7 @@ static void parse_header_entry ( Mode *sw, char *line, ssize_t length ) char *value = line + length_key + 1; if ( strcasecmp ( line, "message" ) == 0 ) { g_free ( pd->message ); - pd->message = g_strdup ( value ); + pd->message = strlen(value)? g_strdup ( value ):NULL; } else if ( strcasecmp ( line, "prompt" ) == 0 ) { g_free ( pd->prompt ); @@ -187,6 +187,19 @@ static unsigned int script_mode_get_num_entries ( const Mode *sw ) return rmpd->cmd_list_length; } +static void script_mode_reset_highlight ( Mode *sw ) +{ + ScriptModePrivateData *rmpd = (ScriptModePrivateData *) sw->private_data; + + rmpd->num_urgent_list = 0; + g_free ( rmpd->urgent_list ); + rmpd->urgent_list = NULL; + rmpd->num_active_list = 0; + g_free ( rmpd->active_list ); + rmpd->active_list = NULL; + +} + static ModeMode script_mode_result ( Mode *sw, int mretv, char **input, unsigned int selected_line ) { ScriptModePrivateData *rmpd = (ScriptModePrivateData *) sw->private_data; @@ -204,9 +217,11 @@ static ModeMode script_mode_result ( Mode *sw, int mretv, char **input, unsigned retv = ( mretv & MENU_LOWER_MASK ); } else if ( ( mretv & MENU_OK ) && rmpd->cmd_list[selected_line] != NULL ) { + script_mode_reset_highlight ( sw ); new_list = execute_executor ( sw, rmpd->cmd_list[selected_line], &new_length ); } else if ( ( mretv & MENU_CUSTOM_INPUT ) && *input != NULL && *input[0] != '\0' ) { + script_mode_reset_highlight ( sw ); new_list = execute_executor ( sw, *input, &new_length ); } diff --git a/source/dialogs/ssh.c b/source/dialogs/ssh.c index 8b20ccb8..4f9bb46f 100644 --- a/source/dialogs/ssh.c +++ b/source/dialogs/ssh.c @@ -433,6 +433,20 @@ static unsigned int ssh_mode_get_num_entries ( const Mode *sw ) const SSHModePrivateData *rmpd = (const SSHModePrivateData *) mode_get_private_data ( sw ); return rmpd->hosts_list_length; } +/** + * @param sw Object handle to the SSH Mode object + * + * Cleanup the SSH Mode. Free all allocated memory and NULL the private data pointer. + */ +static void ssh_mode_destroy ( Mode *sw ) +{ + SSHModePrivateData *rmpd = (SSHModePrivateData *) mode_get_private_data ( sw ); + if ( rmpd != NULL ) { + g_strfreev ( rmpd->hosts_list ); + g_free ( rmpd ); + mode_set_private_data ( sw, NULL ); + } +} /** * @param sw Object handle to the SSH Mode object @@ -465,29 +479,14 @@ static ModeMode ssh_mode_result ( Mode *sw, int mretv, char **input, unsigned in } else if ( ( mretv & MENU_ENTRY_DELETE ) && rmpd->hosts_list[selected_line] ) { delete_ssh ( rmpd->hosts_list[selected_line] ); - g_strfreev ( rmpd->hosts_list ); - rmpd->hosts_list_length = 0; - rmpd->hosts_list = NULL; // Stay retv = RELOAD_DIALOG; + ssh_mode_destroy ( sw ); + ssh_mode_init ( sw ); } return retv; } -/** - * @param sw Object handle to the SSH Mode object - * - * Cleanup the SSH Mode. Free all allocated memory and NULL the private data pointer. - */ -static void ssh_mode_destroy ( Mode *sw ) -{ - SSHModePrivateData *rmpd = (SSHModePrivateData *) mode_get_private_data ( sw ); - if ( rmpd != NULL ) { - g_strfreev ( rmpd->hosts_list ); - g_free ( rmpd ); - mode_set_private_data ( sw, NULL ); - } -} /** * @param sw Object handle to the SSH Mode object diff --git a/source/xcb.c b/source/xcb.c index 72a30152..2d8069c9 100644 --- a/source/xcb.c +++ b/source/xcb.c @@ -62,6 +62,11 @@ #include "timings.h" #include + +/** Minimal randr prefered for running rofi (1.5) */ +#define RANDR_PREF_MAJOR_VERSION 1 +#define RANDR_PREF_MINOR_VERSION 5 + /** Checks if the if x and y is inside rectangle. */ #define INTERSECT( x, y, x1, y1, w1, h1 ) ( ( ( ( x ) >= ( x1 ) ) && ( ( x ) < ( x1 + w1 ) ) ) && ( ( ( y ) >= ( y1 ) ) && ( ( y ) < ( y1 + h1 ) ) ) ) WindowManagerQuirk current_window_manager = WM_EWHM; @@ -99,25 +104,25 @@ const char *netatom_names[] = { EWMH_ATOMS ( ATOM_CHAR ) }; cairo_surface_t *x11_helper_get_screenshot_surface ( void ) { return cairo_xcb_surface_create ( xcb->connection, - xcb_stuff_get_root_window (), root_visual, - xcb->screen->width_in_pixels, xcb->screen->height_in_pixels ); + xcb_stuff_get_root_window (), root_visual, + xcb->screen->width_in_pixels, xcb->screen->height_in_pixels ); } static xcb_pixmap_t get_root_pixmap ( xcb_connection_t *c, - xcb_screen_t *screen, - xcb_atom_t atom ) + xcb_screen_t *screen, + xcb_atom_t atom ) { xcb_get_property_cookie_t cookie; xcb_get_property_reply_t *reply; xcb_pixmap_t rootpixmap = XCB_NONE; cookie = xcb_get_property ( c, - 0, - screen->root, - atom, - XCB_ATOM_PIXMAP, - 0, - 1 ); + 0, + screen->root, + atom, + XCB_ATOM_PIXMAP, + 0, + 1 ); reply = xcb_get_property_reply ( c, cookie, NULL ); @@ -138,7 +143,7 @@ cairo_surface_t * x11_helper_get_bg_surface ( void ) return NULL; } return cairo_xcb_surface_create ( xcb->connection, pm, root_visual, - xcb->screen->width_in_pixels, xcb->screen->height_in_pixels ); + xcb->screen->width_in_pixels, xcb->screen->height_in_pixels ); } // retrieve a text property from a window @@ -234,6 +239,51 @@ static workarea * x11_get_monitor_from_output ( xcb_randr_output_t out ) return retv; } +#if ( ( (XCB_RANDR_MAJOR_VERSION >= RANDR_PREF_MAJOR_VERSION ) && (XCB_RANDR_MINOR_VERSION >= RANDR_PREF_MINOR_VERSION ) ) \ + || XCB_RANDR_MAJOR_VERSION > RANDR_PREF_MAJOR_VERSION ) +/** + * @param mon The randr monitor to parse. + * + * Create monitor based on xrandr monitor id. + * + * @returns A workarea representing the monitor mon + */ +static workarea *x11_get_monitor_from_randr_monitor ( xcb_randr_monitor_info_t *mon ) +{ + // Query to the name of the monitor. + xcb_generic_error_t *err; + xcb_get_atom_name_cookie_t anc = xcb_get_atom_name(xcb->connection, mon->name); + xcb_get_atom_name_reply_t *atom_reply = xcb_get_atom_name_reply( xcb->connection, anc, &err); + if (err != NULL) { + g_warning ("Could not get RandR monitor name: X11 error code %d\n", err->error_code); + free(err); + return NULL; + } + workarea *retv = g_malloc0 ( sizeof ( workarea ) ); + + // Is primary monitor. + retv->primary = mon->primary; + + // Position and size. + retv->x = mon->x; + retv->y = mon->y; + retv->w = mon->width; + retv->h = mon->height; + + // Physical + retv->mw = mon->width_in_millimeters; + retv->mh = mon->height_in_millimeters; + + // Name + retv->name = g_strdup_printf("%.*s", xcb_get_atom_name_name_length(atom_reply), xcb_get_atom_name_name(atom_reply)); + + // Free name atom. + free ( atom_reply ); + + return retv; +} +#endif + static int x11_is_extension_present ( const char *extension ) { xcb_query_extension_cookie_t randr_cookie = xcb_query_extension ( xcb->connection, strlen ( extension ), extension ); @@ -250,18 +300,18 @@ static int x11_is_extension_present ( const char *extension ) static void x11_build_monitor_layout_xinerama () { xcb_xinerama_query_screens_cookie_t screens_cookie = xcb_xinerama_query_screens_unchecked ( - xcb->connection - ); + xcb->connection + ); xcb_xinerama_query_screens_reply_t *screens_reply = xcb_xinerama_query_screens_reply ( - xcb->connection, - screens_cookie, - NULL - ); + xcb->connection, + screens_cookie, + NULL + ); xcb_xinerama_screen_info_iterator_t screens_iterator = xcb_xinerama_query_screens_screen_info_iterator ( - screens_reply - ); + screens_reply + ); for (; screens_iterator.rem > 0; xcb_xinerama_screen_info_next ( &screens_iterator ) ) { workarea *w = g_malloc0 ( sizeof ( workarea ) ); @@ -301,40 +351,75 @@ static void x11_build_monitor_layout () } g_debug ( "Query RANDR for monitor layout." ); - xcb_randr_get_screen_resources_current_reply_t *res_reply; - xcb_randr_get_screen_resources_current_cookie_t src; - src = xcb_randr_get_screen_resources_current ( xcb->connection, xcb->screen->root ); - res_reply = xcb_randr_get_screen_resources_current_reply ( xcb->connection, src, NULL ); - if ( !res_reply ) { - return; //just report error - } - int mon_num = xcb_randr_get_screen_resources_current_outputs_length ( res_reply ); - xcb_randr_output_t *ops = xcb_randr_get_screen_resources_current_outputs ( res_reply ); - - // Get primary. - xcb_randr_get_output_primary_cookie_t pc = xcb_randr_get_output_primary ( xcb->connection, xcb->screen->root ); - xcb_randr_get_output_primary_reply_t *pc_rep = xcb_randr_get_output_primary_reply ( xcb->connection, pc, NULL ); - - for ( int i = mon_num - 1; i >= 0; i-- ) { - workarea *w = x11_get_monitor_from_output ( ops[i] ); - if ( w ) { - w->next = xcb->monitors; - xcb->monitors = w; - if ( pc_rep && pc_rep->output == ops[i] ) { - w->primary = TRUE; + g_debug ( "Randr XCB api version: %d.%d.", XCB_RANDR_MAJOR_VERSION, XCB_RANDR_MINOR_VERSION ); +#if ( ( ( XCB_RANDR_MAJOR_VERSION == RANDR_PREF_MAJOR_VERSION ) && (XCB_RANDR_MINOR_VERSION >= RANDR_PREF_MINOR_VERSION ) ) \ + || XCB_RANDR_MAJOR_VERSION > RANDR_PREF_MAJOR_VERSION ) + xcb_randr_query_version_cookie_t cversion = xcb_randr_query_version(xcb->connection, + RANDR_PREF_MAJOR_VERSION, RANDR_PREF_MINOR_VERSION); + xcb_randr_query_version_reply_t *rversion = xcb_randr_query_version_reply( xcb->connection, cversion, NULL ); + if ( rversion ) { + g_debug ( "Found randr version: %d.%d", rversion->major_version, rversion->minor_version ); + // Check if we are 1.5 and up. + if ( ( ( rversion->major_version == XCB_RANDR_MAJOR_VERSION ) && (rversion->minor_version >= XCB_RANDR_MINOR_VERSION ) ) || + ( rversion->major_version > XCB_RANDR_MAJOR_VERSION ) ){ + xcb_randr_get_monitors_cookie_t t = xcb_randr_get_monitors( xcb->connection, xcb->screen->root, 1 ); + xcb_randr_get_monitors_reply_t *mreply = xcb_randr_get_monitors_reply ( xcb->connection, t, NULL ); + if( mreply ) { + xcb_randr_monitor_info_iterator_t iter = xcb_randr_get_monitors_monitors_iterator ( mreply ); + while ( iter.rem > 0 ) { + workarea *w = x11_get_monitor_from_randr_monitor ( iter.data ); + if ( w ) { + w->next = xcb->monitors; + xcb->monitors = w; + } + xcb_randr_monitor_info_next (&iter); + } + free ( mreply ); } } + free ( rversion ); } +#endif + + // If no monitors found. + if ( xcb->monitors == NULL ) { + xcb_randr_get_screen_resources_current_reply_t *res_reply; + xcb_randr_get_screen_resources_current_cookie_t src; + src = xcb_randr_get_screen_resources_current ( xcb->connection, xcb->screen->root ); + res_reply = xcb_randr_get_screen_resources_current_reply ( xcb->connection, src, NULL ); + if ( !res_reply ) { + return; //just report error + } + int mon_num = xcb_randr_get_screen_resources_current_outputs_length ( res_reply ); + xcb_randr_output_t *ops = xcb_randr_get_screen_resources_current_outputs ( res_reply ); + + // Get primary. + xcb_randr_get_output_primary_cookie_t pc = xcb_randr_get_output_primary ( xcb->connection, xcb->screen->root ); + xcb_randr_get_output_primary_reply_t *pc_rep = xcb_randr_get_output_primary_reply ( xcb->connection, pc, NULL ); + + for ( int i = mon_num - 1; i >= 0; i-- ) { + workarea *w = x11_get_monitor_from_output ( ops[i] ); + if ( w ) { + w->next = xcb->monitors; + xcb->monitors = w; + if ( pc_rep && pc_rep->output == ops[i] ) { + w->primary = TRUE; + } + } + } + // If exists, free primary output reply. + if ( pc_rep ) { + free ( pc_rep ); + } + free ( res_reply ); + + } + // Number monitor int index = 0; for ( workarea *iter = xcb->monitors; iter; iter = iter->next ) { iter->monitor_id = index++; } - // If exists, free primary output reply. - if ( pc_rep ) { - free ( pc_rep ); - } - free ( res_reply ); } void display_dump_monitor_layout ( void ) @@ -352,13 +437,13 @@ void display_dump_monitor_layout ( void ) printf ( "%s size%s: %d,%d\n", ( is_term ) ? color_bold : "", is_term ? color_reset : "", iter->w, iter->h ); if ( iter->mw > 0 && iter->mh > 0 ) { printf ( "%s size%s: %dmm,%dmm dpi: %.0f,%.0f\n", - ( is_term ) ? color_bold : "", - is_term ? color_reset : "", - iter->mw, - iter->mh, - iter->w * 25.4 / (double) iter->mw, - iter->h * 25.4 / (double) iter->mh - ); + ( is_term ) ? color_bold : "", + is_term ? color_reset : "", + iter->mw, + iter->mh, + iter->w * 25.4 / (double) iter->mw, + iter->h * 25.4 / (double) iter->mh + ); } printf ( "\n" ); } @@ -556,7 +641,7 @@ static int monitor_active_from_id ( int mon_id, workarea *mon ) if ( xcb_ewmh_get_desktop_viewport_reply ( &xcb->ewmh, c, &vp, NULL ) ) { if ( current_desktop < vp.desktop_viewport_len ) { monitor_dimensions ( vp.desktop_viewport[current_desktop].x, - vp.desktop_viewport[current_desktop].y, mon ); + vp.desktop_viewport[current_desktop].y, mon ); xcb_ewmh_get_desktop_viewport_reply_wipe ( &vp ); return TRUE; } @@ -675,28 +760,28 @@ static gboolean x11_button_to_nk_bindings_button ( guint32 x11_button, NkBinding { switch ( x11_button ) { - case 1: - *button = NK_BINDINGS_MOUSE_BUTTON_PRIMARY; - break; - case 3: - *button = NK_BINDINGS_MOUSE_BUTTON_SECONDARY; - break; - case 2: - *button = NK_BINDINGS_MOUSE_BUTTON_MIDDLE; - break; - case 8: - *button = NK_BINDINGS_MOUSE_BUTTON_BACK; - break; - case 9: - *button = NK_BINDINGS_MOUSE_BUTTON_FORWARD; - break; - case 4: - case 5: - case 6: - case 7: - return FALSE; - default: - *button = NK_BINDINGS_MOUSE_BUTTON_EXTRA + x11_button; + case 1: + *button = NK_BINDINGS_MOUSE_BUTTON_PRIMARY; + break; + case 3: + *button = NK_BINDINGS_MOUSE_BUTTON_SECONDARY; + break; + case 2: + *button = NK_BINDINGS_MOUSE_BUTTON_MIDDLE; + break; + case 8: + *button = NK_BINDINGS_MOUSE_BUTTON_BACK; + break; + case 9: + *button = NK_BINDINGS_MOUSE_BUTTON_FORWARD; + break; + case 4: + case 5: + case 6: + case 7: + return FALSE; + default: + *button = NK_BINDINGS_MOUSE_BUTTON_EXTRA + x11_button; } return TRUE; } @@ -706,20 +791,20 @@ static gboolean x11_button_to_nk_bindings_scroll ( guint32 x11_button, NkBinding *steps = 1; switch ( x11_button ) { - case 4: - *steps = -1; - /* fallthrough */ - case 5: - *axis = NK_BINDINGS_SCROLL_AXIS_VERTICAL; - break; - case 6: - *steps = -1; - /* fallthrough */ - case 7: - *axis = NK_BINDINGS_SCROLL_AXIS_HORIZONTAL; - break; - default: - return FALSE; + case 4: + *steps = -1; + /* fallthrough */ + case 5: + *axis = NK_BINDINGS_SCROLL_AXIS_VERTICAL; + break; + case 6: + *steps = -1; + /* fallthrough */ + case 7: + *axis = NK_BINDINGS_SCROLL_AXIS_HORIZONTAL; + break; + default: + return FALSE; } return TRUE; } @@ -736,93 +821,93 @@ static void main_loop_x11_event_handler_view ( xcb_generic_event_t *event ) switch ( event->response_type & ~0x80 ) { - case XCB_EXPOSE: - rofi_view_frame_callback (); - break; - case XCB_CONFIGURE_NOTIFY: - { - xcb_configure_notify_event_t *xce = (xcb_configure_notify_event_t *) event; - rofi_view_temp_configure_notify ( state, xce ); - break; - } - case XCB_MOTION_NOTIFY: - { - if ( config.click_to_exit == TRUE ) { - xcb->mouse_seen = TRUE; - } - xcb_motion_notify_event_t *xme = (xcb_motion_notify_event_t *) event; - rofi_view_handle_mouse_motion ( state, xme->event_x, xme->event_y ); - break; - } - case XCB_BUTTON_PRESS: - { - xcb_button_press_event_t *bpe = (xcb_button_press_event_t *) event; - NkBindingsMouseButton button; - NkBindingsScrollAxis axis; - gint32 steps; - - xcb->last_timestamp = bpe->time; - rofi_view_handle_mouse_motion ( state, bpe->event_x, bpe->event_y ); - if ( x11_button_to_nk_bindings_button ( bpe->detail, &button ) ) - nk_bindings_seat_handle_button ( xcb->bindings_seat, NULL, button, NK_BINDINGS_BUTTON_STATE_PRESS, bpe->time ); - else if ( x11_button_to_nk_bindings_scroll ( bpe->detail, &axis, &steps) ) - nk_bindings_seat_handle_scroll ( xcb->bindings_seat, NULL, axis, steps ); - break; - } - case XCB_BUTTON_RELEASE: - { - xcb_button_release_event_t *bre = (xcb_button_release_event_t *) event; - NkBindingsMouseButton button; - - xcb->last_timestamp = bre->time; - if ( x11_button_to_nk_bindings_button ( bre->detail, &button ) ) - nk_bindings_seat_handle_button ( xcb->bindings_seat, NULL, button, NK_BINDINGS_BUTTON_STATE_RELEASE, bre->time ); - if ( config.click_to_exit == TRUE ) { - if ( !xcb->mouse_seen ) { - rofi_view_temp_click_to_exit ( state, bre->event ); + case XCB_EXPOSE: + rofi_view_frame_callback (); + break; + case XCB_CONFIGURE_NOTIFY: + { + xcb_configure_notify_event_t *xce = (xcb_configure_notify_event_t *) event; + rofi_view_temp_configure_notify ( state, xce ); + break; } - xcb->mouse_seen = FALSE; - } - break; - } - // Paste event. - case XCB_SELECTION_NOTIFY: - rofi_view_paste ( state, (xcb_selection_notify_event_t *) event ); - break; - case XCB_KEYMAP_NOTIFY: - { - xcb_keymap_notify_event_t *kne = (xcb_keymap_notify_event_t *) event; - for ( gint32 by = 0; by < 31; ++by ) { - for ( gint8 bi = 0; bi < 7; ++bi ) { - if ( kne->keys[by] & ( 1 << bi ) ) { - // X11 keycodes starts at 8 - nk_bindings_seat_handle_key ( xcb->bindings_seat, NULL, ( 8 * by + bi ) + 8, NK_BINDINGS_KEY_STATE_PRESSED ); + case XCB_MOTION_NOTIFY: + { + if ( config.click_to_exit == TRUE ) { + xcb->mouse_seen = TRUE; } + xcb_motion_notify_event_t *xme = (xcb_motion_notify_event_t *) event; + rofi_view_handle_mouse_motion ( state, xme->event_x, xme->event_y ); + break; } - } - break; - } - case XCB_KEY_PRESS: - { - xcb_key_press_event_t *xkpe = (xcb_key_press_event_t *) event; - gchar *text; + case XCB_BUTTON_PRESS: + { + xcb_button_press_event_t *bpe = (xcb_button_press_event_t *) event; + NkBindingsMouseButton button; + NkBindingsScrollAxis axis; + gint32 steps; - xcb->last_timestamp = xkpe->time; - text = nk_bindings_seat_handle_key_with_modmask ( xcb->bindings_seat, NULL, xkpe->state, xkpe->detail, NK_BINDINGS_KEY_STATE_PRESS ); - if ( text != NULL ) { - rofi_view_handle_text ( state, text ); - } - break; - } - case XCB_KEY_RELEASE: - { - xcb_key_release_event_t *xkre = (xcb_key_release_event_t *) event; - xcb->last_timestamp = xkre->time; - nk_bindings_seat_handle_key ( xcb->bindings_seat, NULL, xkre->detail, NK_BINDINGS_KEY_STATE_RELEASE ); - break; - } - default: - break; + xcb->last_timestamp = bpe->time; + rofi_view_handle_mouse_motion ( state, bpe->event_x, bpe->event_y ); + if ( x11_button_to_nk_bindings_button ( bpe->detail, &button ) ) + nk_bindings_seat_handle_button ( xcb->bindings_seat, NULL, button, NK_BINDINGS_BUTTON_STATE_PRESS, bpe->time ); + else if ( x11_button_to_nk_bindings_scroll ( bpe->detail, &axis, &steps) ) + nk_bindings_seat_handle_scroll ( xcb->bindings_seat, NULL, axis, steps ); + break; + } + case XCB_BUTTON_RELEASE: + { + xcb_button_release_event_t *bre = (xcb_button_release_event_t *) event; + NkBindingsMouseButton button; + + xcb->last_timestamp = bre->time; + if ( x11_button_to_nk_bindings_button ( bre->detail, &button ) ) + nk_bindings_seat_handle_button ( xcb->bindings_seat, NULL, button, NK_BINDINGS_BUTTON_STATE_RELEASE, bre->time ); + if ( config.click_to_exit == TRUE ) { + if ( !xcb->mouse_seen ) { + rofi_view_temp_click_to_exit ( state, bre->event ); + } + xcb->mouse_seen = FALSE; + } + break; + } + // Paste event. + case XCB_SELECTION_NOTIFY: + rofi_view_paste ( state, (xcb_selection_notify_event_t *) event ); + break; + case XCB_KEYMAP_NOTIFY: + { + xcb_keymap_notify_event_t *kne = (xcb_keymap_notify_event_t *) event; + for ( gint32 by = 0; by < 31; ++by ) { + for ( gint8 bi = 0; bi < 7; ++bi ) { + if ( kne->keys[by] & ( 1 << bi ) ) { + // X11 keycodes starts at 8 + nk_bindings_seat_handle_key ( xcb->bindings_seat, NULL, ( 8 * by + bi ) + 8, NK_BINDINGS_KEY_STATE_PRESSED ); + } + } + } + break; + } + case XCB_KEY_PRESS: + { + xcb_key_press_event_t *xkpe = (xcb_key_press_event_t *) event; + gchar *text; + + xcb->last_timestamp = xkpe->time; + text = nk_bindings_seat_handle_key_with_modmask ( xcb->bindings_seat, NULL, xkpe->state, xkpe->detail, NK_BINDINGS_KEY_STATE_PRESS ); + if ( text != NULL ) { + rofi_view_handle_text ( state, text ); + } + break; + } + case XCB_KEY_RELEASE: + { + xcb_key_release_event_t *xkre = (xcb_key_release_event_t *) event; + xcb->last_timestamp = xkre->time; + nk_bindings_seat_handle_key ( xcb->bindings_seat, NULL, xkre->detail, NK_BINDINGS_KEY_STATE_RELEASE ); + break; + } + default: + break; } rofi_view_maybe_update ( state ); } @@ -845,28 +930,28 @@ static gboolean main_loop_x11_event_handler ( xcb_generic_event_t *ev, G_GNUC_UN if ( type == xcb->xkb.first_event ) { switch ( ev->pad0 ) { - case XCB_XKB_MAP_NOTIFY: - { - struct xkb_keymap *keymap = xkb_x11_keymap_new_from_device ( nk_bindings_seat_get_context ( xcb->bindings_seat ), xcb->connection, xcb->xkb.device_id, 0 ); - struct xkb_state *state = xkb_x11_state_new_from_device ( keymap, xcb->connection, xcb->xkb.device_id ); - nk_bindings_seat_update_keymap ( xcb->bindings_seat, keymap, state ); - xkb_keymap_unref ( keymap ); - xkb_state_unref ( state ); - break; - } - case XCB_XKB_STATE_NOTIFY: - { - xcb_xkb_state_notify_event_t *ksne = (xcb_xkb_state_notify_event_t *) ev; - nk_bindings_seat_update_mask ( xcb->bindings_seat, NULL, - ksne->baseMods, - ksne->latchedMods, - ksne->lockedMods, - ksne->baseGroup, - ksne->latchedGroup, - ksne->lockedGroup ); - rofi_view_maybe_update ( rofi_view_get_active () ); - break; - } + case XCB_XKB_MAP_NOTIFY: + { + struct xkb_keymap *keymap = xkb_x11_keymap_new_from_device ( nk_bindings_seat_get_context ( xcb->bindings_seat ), xcb->connection, xcb->xkb.device_id, 0 ); + struct xkb_state *state = xkb_x11_state_new_from_device ( keymap, xcb->connection, xcb->xkb.device_id ); + nk_bindings_seat_update_keymap ( xcb->bindings_seat, keymap, state ); + xkb_keymap_unref ( keymap ); + xkb_state_unref ( state ); + break; + } + case XCB_XKB_STATE_NOTIFY: + { + xcb_xkb_state_notify_event_t *ksne = (xcb_xkb_state_notify_event_t *) ev; + nk_bindings_seat_update_mask ( xcb->bindings_seat, NULL, + ksne->baseMods, + ksne->latchedMods, + ksne->lockedMods, + ksne->baseGroup, + ksne->latchedGroup, + ksne->lockedGroup ); + rofi_view_maybe_update ( rofi_view_get_active () ); + break; + } } return G_SOURCE_CONTINUE; } @@ -886,7 +971,7 @@ static int take_pointer ( xcb_window_t w, int iters ) exit ( EXIT_FAILURE ); } xcb_grab_pointer_cookie_t cc = xcb_grab_pointer ( xcb->connection, 1, w, XCB_EVENT_MASK_BUTTON_RELEASE, - XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, w, XCB_NONE, XCB_CURRENT_TIME ); + XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC, w, XCB_NONE, XCB_CURRENT_TIME ); xcb_grab_pointer_reply_t *r = xcb_grab_pointer_reply ( xcb->connection, cc, NULL ); if ( r ) { if ( r->status == XCB_GRAB_STATUS_SUCCESS ) { @@ -912,8 +997,8 @@ static int take_keyboard ( xcb_window_t w, int iters ) exit ( EXIT_FAILURE ); } xcb_grab_keyboard_cookie_t cc = xcb_grab_keyboard ( xcb->connection, - 1, w, XCB_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, - XCB_GRAB_MODE_ASYNC ); + 1, w, XCB_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, + XCB_GRAB_MODE_ASYNC ); xcb_grab_keyboard_reply_t *r = xcb_grab_keyboard_reply ( xcb->connection, cc, NULL ); if ( r ) { if ( r->status == XCB_GRAB_STATUS_SUCCESS ) { @@ -977,7 +1062,7 @@ static void x11_helper_discover_window_manager ( void ) { xcb_window_t wm_win = 0; xcb_get_property_cookie_t cc = xcb_ewmh_get_supporting_wm_check_unchecked ( &xcb->ewmh, - xcb_stuff_get_root_window () ); + xcb_stuff_get_root_window () ); if ( xcb_ewmh_get_supporting_wm_check_reply ( &xcb->ewmh, cc, &wm_win, NULL ) ) { xcb_ewmh_get_utf8_strings_reply_t wtitle; @@ -1027,7 +1112,7 @@ gboolean display_setup ( GMainLoop *main_loop, NkBindings *bindings ) TICK_N ( "Setup XCB" ); if ( xkb_x11_setup_xkb_extension ( xcb->connection, XKB_X11_MIN_MAJOR_XKB_VERSION, XKB_X11_MIN_MINOR_XKB_VERSION, - XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS, NULL, NULL, &xcb->xkb.first_event, NULL ) < 0 ) { + XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS, NULL, NULL, &xcb->xkb.first_event, NULL ) < 0 ) { g_warning ( "cannot setup XKB extension!" ); return FALSE; } @@ -1069,11 +1154,11 @@ gboolean display_setup ( GMainLoop *main_loop, NkBindings *bindings ) .stateDetails = required_state_details, }; xcb_xkb_select_events ( xcb->connection, xcb->xkb.device_id, required_events, /* affectWhich */ - 0, /* clear */ - required_events, /* selectAll */ - required_map_parts, /* affectMap */ - required_map_parts, /* map */ - &details ); + 0, /* clear */ + required_events, /* selectAll */ + required_map_parts, /* affectMap */ + required_map_parts, /* map */ + &details ); xcb->bindings_seat = nk_bindings_seat_new ( bindings, XKB_CONTEXT_NO_FLAGS ); struct xkb_keymap *keymap = xkb_x11_keymap_new_from_device ( nk_bindings_seat_get_context ( xcb->bindings_seat ), xcb->connection, xcb->xkb.device_id, XKB_KEYMAP_COMPILE_NO_FLAGS ); diff --git a/subprojects/libnkutils b/subprojects/libnkutils index 1f0e3b3d..463b7e19 160000 --- a/subprojects/libnkutils +++ b/subprojects/libnkutils @@ -1 +1 @@ -Subproject commit 1f0e3b3d12aa39d9f01c4b0bc9a2de34e79184c5 +Subproject commit 463b7e19a569d748a49a65ab16b0b95009e12ba1 diff --git a/themes/Adapta-Nokto.rasi b/themes/Adapta-Nokto.rasi index fdbe95b8..bc69bb10 100644 --- a/themes/Adapta-Nokto.rasi +++ b/themes/Adapta-Nokto.rasi @@ -132,3 +132,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/Arc-Dark.rasi b/themes/Arc-Dark.rasi new file mode 100644 index 00000000..5f5cf399 --- /dev/null +++ b/themes/Arc-Dark.rasi @@ -0,0 +1,146 @@ +/************************************************ + * ROFI Color theme + * User: leofa + * Copyright: 2017 leofa + ***********************************************/ + +* { + selected-normal-foreground: rgba ( 249, 249, 249, 100 % ); + foreground: rgba ( 196, 203, 212, 100 % ); + normal-foreground: @foreground; + alternate-normal-background: rgba ( 64, 69, 82, 59 % ); + red: rgba ( 220, 50, 47, 100 % ); + selected-urgent-foreground: rgba ( 249, 249, 249, 100 % ); + blue: rgba ( 38, 139, 210, 100 % ); + urgent-foreground: rgba ( 204, 102, 102, 100 % ); + alternate-urgent-background: rgba ( 75, 81, 96, 90 % ); + active-foreground: rgba ( 101, 172, 255, 100 % ); + lightbg: rgba ( 238, 232, 213, 100 % ); + selected-active-foreground: rgba ( 249, 249, 249, 100 % ); + alternate-active-background: rgba ( 75, 81, 96, 89 % ); + background: rgba ( 45, 48, 59, 95 % ); + alternate-normal-foreground: @foreground; + normal-background: @background; + lightfg: rgba ( 88, 104, 117, 100 % ); + selected-normal-background: rgba ( 64, 132, 214, 100 % ); + border-color: rgba ( 124, 131, 137, 100 % ); + spacing: 2; + separatorcolor: rgba ( 29, 31, 33, 100 % ); + urgent-background: rgba ( 29, 31, 33, 17 % ); + selected-urgent-background: rgba ( 165, 66, 66, 100 % ); + alternate-urgent-foreground: @urgent-foreground; + background-color: rgba ( 0, 0, 0, 0 % ); + alternate-active-foreground: @active-foreground; + active-background: rgba ( 29, 31, 33, 17 % ); + selected-active-background: rgba ( 68, 145, 237, 100 % ); +} +#window { + background-color: @background; + border: 1; + padding: 5; +} +#mainbox { + border: 0; + padding: 0; +} +#message { + border: 2px 0px 0px ; + border-color: @separatorcolor; + padding: 1px ; +} +#textbox { + text-color: @foreground; +} +#listview { + fixed-height: 0; + border: 2px 0px 0px ; + border-color: @separatorcolor; + spacing: 2px ; + scrollbar: true; + padding: 2px 0px 0px ; +} +#element { + border: 0; + padding: 1px ; +} +#element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} +#element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} +#element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} +#element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +#element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} +#element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} +#element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} +#element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} +#element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} +#scrollbar { + width: 4px ; + border: 0; + handle-color: @normal-foreground; + handle-width: 8px ; + padding: 0; +} +#sidebar { + border: 2px 0px 0px ; + border-color: @separatorcolor; +} +#button { + spacing: 0; + text-color: @normal-foreground; +} +#button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} +#inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/Arc.rasi b/themes/Arc.rasi index 48d83ec5..7d065755 100644 --- a/themes/Arc.rasi +++ b/themes/Arc.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/DarkBlue.rasi b/themes/DarkBlue.rasi index 977720af..ef073f36 100644 --- a/themes/DarkBlue.rasi +++ b/themes/DarkBlue.rasi @@ -35,24 +35,24 @@ active-background: rgba ( 0, 0, 208, 0 % ); selected-active-background: rgba ( 138, 196, 255, 100 % ); } -window { +#window { background-color: @background; border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; } -message { +#message { border: 2px 0px 0px ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 2px 0px 0px ; border-color: @separatorcolor; @@ -60,81 +60,83 @@ listview { scrollbar: true; padding: 2px 0px 0px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 4px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; - children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; } -case-indicator { +#case-indicator { spacing: 0; text-color: @normal-foreground; } -entry { +#entry { spacing: 0; text-color: @normal-foreground; } -prompt, button{ +#prompt, button{ spacing: 0; text-color: @normal-foreground; } -textbox-prompt-sep { - expand: false; - str: ":"; - text-color: @normal-foreground; - margin: 0px 0.3000em 0.0000em 0.0000em ; +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; } diff --git a/themes/Indego.rasi b/themes/Indego.rasi index 3fa8ea3b..5381a0ae 100644 --- a/themes/Indego.rasi +++ b/themes/Indego.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/Monokai.rasi b/themes/Monokai.rasi index 37f47b5e..c8d3c5fe 100644 --- a/themes/Monokai.rasi +++ b/themes/Monokai.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/Paper.rasi b/themes/Paper.rasi index 3d58ce9a..41f4f410 100644 --- a/themes/Paper.rasi +++ b/themes/Paper.rasi @@ -130,3 +130,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/Pop-Dark.rasi b/themes/Pop-Dark.rasi index 53e6af45..81425fa9 100644 --- a/themes/Pop-Dark.rasi +++ b/themes/Pop-Dark.rasi @@ -111,3 +111,12 @@ text-color: @foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/android_notification.rasi b/themes/android_notification.rasi index 957c1912..856da89c 100644 --- a/themes/android_notification.rasi +++ b/themes/android_notification.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/arthur.rasi b/themes/arthur.rasi index 061b33ec..db57659f 100644 --- a/themes/arthur.rasi +++ b/themes/arthur.rasi @@ -66,7 +66,7 @@ configuration { highlight: underline bold #ffffff; transparent: rgba(0,0,0,0); - font: "Sauce Code Powerline Medium 10"; + font: "Source Code Pro 10"; } #window { location: center; @@ -95,7 +95,7 @@ configuration { background-color: @tcyan; } #message { - font: "Sauce Code Powerline ExtraLight 8"; + font: "Source Code Pro 8"; color: @black; } @@ -106,12 +106,15 @@ configuration { border: 2px 2px 2px 2px; border-radius: 15px 15px 0px 0px; border-color: @foreground; - font: "Sauce Code Pro 18"; + font: "Source Code Pro 18"; } #entry,prompt,case-indicator { text-font: inherit; text-color:inherit; } +#prompt { + margin: 0px 0.3em 0em 0em ; +} #listview { padding: 8px; border-radius: 0px 0px 15px 15px; diff --git a/themes/blue.rasi b/themes/blue.rasi index 49e8d1a8..17cbdfc8 100644 --- a/themes/blue.rasi +++ b/themes/blue.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/c64.rasi b/themes/c64.rasi index 8c3c0957..ef99ba49 100644 --- a/themes/c64.rasi +++ b/themes/c64.rasi @@ -35,27 +35,27 @@ active-background: rgba ( 0, 57, 255, 100 % ); selected-active-background: rgba ( 79, 128, 255, 100 % ); } -window { +#window { font: "Topaz-8 10"; background-color: #4E7FFF; border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; margin: 40; background-color: #003AFF; } -message { +#message { border: 1px dash 0px dash ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 0px 0px 0px 0px ; border-color: @separatorcolor; @@ -63,81 +63,83 @@ listview { scrollbar: false; padding: 5px 5px 5px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 0px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -textbox-prompt-colon { +#textbox-prompt-colon { expand: false; str: ":"; - margin: 0px 0.3000em 0.0000em 0.0000em ; - text-color: inherit; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; } diff --git a/themes/glue_pro_blue.rasi b/themes/glue_pro_blue.rasi index 4eb777c0..fa46e08d 100644 --- a/themes/glue_pro_blue.rasi +++ b/themes/glue_pro_blue.rasi @@ -34,24 +34,24 @@ active-background: rgba ( 57, 57, 57, 100 % ); selected-active-background: rgba ( 38, 139, 210, 100 % ); } -window { +#window { background-color: rgba ( 57, 57, 57, 95 % ); border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; } -message { +#message { border: 1px dash 0px 0px ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 2px dash 0px 0px ; border-color: @separatorcolor; @@ -59,85 +59,87 @@ listview { scrollbar: true; padding: 2px 0px 0px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 4px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -button { +#button { background-color: @background; text-color: @foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -textbox-prompt-colon { +#textbox-prompt-colon { expand: false; str: ":"; - margin: 0px 0.3000em 0.0000em 0.0000em ; - text-color: inherit; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; } diff --git a/themes/gruvbox-common.rasi b/themes/gruvbox-common.rasi new file mode 100644 index 00000000..f7a168d9 --- /dev/null +++ b/themes/gruvbox-common.rasi @@ -0,0 +1,127 @@ +/* ========================================================================== + File: gruvbox-common.rasi + Desc: Shared rules between all gruvbox themes + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:06:47 PST -0800 + ========================================================================== */ + +window { + background-color: @background; + border: 2; + padding: 2; +} + +mainbox { + border: 0; + padding: 0; +} + +message { + border: 2px 0 0; + border-color: @separatorcolor; + padding: 1px; +} + +textbox { + highlight: @highlight; + text-color: @foreground; +} + +listview { + border: 2px solid 0 0; + padding: 2px 0 0; + border-color: @separatorcolor; + spacing: 2px; + scrollbar: @scrollbar; +} + +element { + border: 0; + padding: 2px; +} + +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} + +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} + +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} + +scrollbar { + width: 4px; + border: 0; + handle-color: @scrollbar-handle; + handle-width: 8px; + padding: 0; +} + +sidebar { + border: 2px 0 0; + border-color: @separatorcolor; +} + +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 2px; + children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; +} + +case-indicator, +entry, +prompt, +button { + spacing: 0; + text-color: @normal-foreground; +} + +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +textbox-prompt-sep { + expand: false; + str: ":"; + text-color: @normal-foreground; + margin: 0 0.3em 0 0; +} diff --git a/themes/gruvbox-dark-hard.rasi b/themes/gruvbox-dark-hard.rasi index a2b0ea66..f09507e6 100644 --- a/themes/gruvbox-dark-hard.rasi +++ b/themes/gruvbox-dark-hard.rasi @@ -1,140 +1,62 @@ -/********************************************************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox*dark*hard.theme - * Desc: Gruvbox dark (hard contrast) color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox*rofi - * Modified: Sat Oct 22 2016 03:12:10 PDT *0700 - **********************************************************/ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-dark-hard.rasi + Desc: Gruvbox dark (hard contrast) color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:04:26 PST -0800 + ========================================================================== */ * { - selected-normal-foreground: rgba ( 251, 241, 199, 100 % ); - foreground: rgba ( 235, 219, 178, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox dark colors */ + gruvbox-dark-bg0-hard: #1d2021; + gruvbox-dark-bg0: #282828; + gruvbox-dark-bg2: #504945; + gruvbox-dark-fg0: #fbf1c7; + gruvbox-dark-fg1: #ebdbb2; + gruvbox-dark-red-dark: #cc241d; + gruvbox-dark-red-light: #fb4934; + gruvbox-dark-yellow-dark: #d79921; + gruvbox-dark-yellow-light: #fabd2f; + gruvbox-dark-gray: #a89984; + + /* Theme colors */ + background: @gruvbox-dark-bg0-hard; + background-color: @background; + foreground: @gruvbox-dark-fg1; + border-color: @gruvbox-dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 40, 40, 40, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 29, 32, 33, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 29, 32, 33, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 29, 32, 33, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 29, 32, 33, 100 % ); - alternate-active-background: rgba ( 215, 153, 33, 100 % ); - background: rgba ( 29, 32, 33, 100 % ); - bordercolor: rgba ( 168, 153, 132, 100 % ); + alternate-normal-background: @gruvbox-dark-bg0; alternate-normal-foreground: @foreground; - normal-background: rgba ( 29, 32, 33, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 80, 73, 69, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 168, 153, 132, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-dark-bg2; + selected-normal-foreground: @gruvbox-dark-fg0; + + active-background: @gruvbox-dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 215, 153, 33, 100 % ); - selected-active-background: rgba ( 250, 189, 47, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-dark-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/gruvbox-dark-soft.rasi b/themes/gruvbox-dark-soft.rasi index 91bdff69..d080824a 100644 --- a/themes/gruvbox-dark-soft.rasi +++ b/themes/gruvbox-dark-soft.rasi @@ -1,139 +1,62 @@ -/********************************************************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox*dark*soft.theme - * Desc: Gruvbox dark (soft contrast) color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox*rofi - * Modified: Sat Oct 22 2016 03:12:10 PDT *0700 - **********************************************************/ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-dark-soft.rasi + Desc: Gruvbox dark (soft contrast) color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:04:37 PST -0800 + ========================================================================== */ + * { - selected-normal-foreground: rgba ( 251, 241, 199, 100 % ); - foreground: rgba ( 235, 219, 178, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox dark colors */ + gruvbox-dark-bg0-soft: #32302f; + gruvbox-dark-bg1: #3c3836; + gruvbox-dark-bg3: #665c54; + gruvbox-dark-fg0: #fbf1c7; + gruvbox-dark-fg1: #ebdbb2; + gruvbox-dark-red-dark: #cc241d; + gruvbox-dark-red-light: #fb4934; + gruvbox-dark-yellow-dark: #d79921; + gruvbox-dark-yellow-light: #fabd2f; + gruvbox-dark-gray: #a89984; + + /* Theme colors */ + background: @gruvbox-dark-bg0-soft; + background-color: @background; + foreground: @gruvbox-dark-fg1; + border-color: @gruvbox-dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 60, 56, 54, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 50, 48, 47, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 50, 48, 47, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 50, 48, 47, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 50, 48, 47, 100 % ); - alternate-active-background: rgba ( 215, 153, 33, 100 % ); - background: rgba ( 50, 48, 47, 100 % ); - bordercolor: rgba ( 168, 153, 132, 100 % ); + alternate-normal-background: @gruvbox-dark-bg1; alternate-normal-foreground: @foreground; - normal-background: rgba ( 50, 48, 47, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 102, 92, 84, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 168, 153, 132, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-dark-bg3; + selected-normal-foreground: @gruvbox-dark-fg0; + + active-background: @gruvbox-dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 215, 153, 33, 100 % ); - selected-active-background: rgba ( 250, 189, 47, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-dark-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/gruvbox-dark.rasi b/themes/gruvbox-dark.rasi index 90e4f0b7..6bec1275 100644 --- a/themes/gruvbox-dark.rasi +++ b/themes/gruvbox-dark.rasi @@ -1,139 +1,62 @@ -/********************************************************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox*dark.theme - * Desc: Gruvbox dark color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox*rofi - * Modified: Sat Oct 22 2016 03:12:10 PDT *0700 - **********************************************************/ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-dark.rasi + Desc: Gruvbox dark color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 04:08:43 PST -0800 + ========================================================================== */ + * { - selected-normal-foreground: rgba ( 251, 241, 199, 100 % ); - foreground: rgba ( 235, 219, 178, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox dark colors */ + gruvbox-dark-bg0: #282828; + gruvbox-dark-bg0-soft: #32302f; + gruvbox-dark-bg3: #665c54; + gruvbox-dark-fg0: #fbf1c7; + gruvbox-dark-fg1: #ebdbb2; + gruvbox-dark-red-dark: #cc241d; + gruvbox-dark-red-light: #fb4934; + gruvbox-dark-yellow-dark: #d79921; + gruvbox-dark-yellow-light: #fabd2f; + gruvbox-dark-gray: #a89984; + + /* Theme colors */ + background: @gruvbox-dark-bg0; + background-color: @background; + foreground: @gruvbox-dark-fg1; + border-color: @gruvbox-dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 50, 48, 47, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 40, 40, 40, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 40, 40, 40, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 40, 40, 40, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 40, 40, 40, 100 % ); - alternate-active-background: rgba ( 215, 153, 33, 100 % ); - background: rgba ( 40, 40, 40, 100 % ); - bordercolor: rgba ( 168, 153, 132, 100 % ); + alternate-normal-background: @gruvbox-dark-bg0-soft; alternate-normal-foreground: @foreground; - normal-background: rgba ( 40, 40, 40, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 102, 92, 84, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 168, 153, 132, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-dark-bg3; + selected-normal-foreground: @gruvbox-dark-fg0; + + active-background: @gruvbox-dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 215, 153, 33, 100 % ); - selected-active-background: rgba ( 250, 189, 47, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-dark-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/gruvbox-light-hard.rasi b/themes/gruvbox-light-hard.rasi index 2db85cb9..e0efe33f 100644 --- a/themes/gruvbox-light-hard.rasi +++ b/themes/gruvbox-light-hard.rasi @@ -1,140 +1,62 @@ -/******************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox-light-hard.theme - * Desc: Gruvbox light (hard contrast) color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox-rofi - * Modified: Sat Oct 22 2016 03:11:32 PDT -0700 - */ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-light-hard.rasi + Desc: Gruvbox light (hard contrast) color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:04:48 PST -0800 + ========================================================================== */ * { - selected-normal-foreground: rgba ( 40, 40, 40, 100 % ); - foreground: rgba ( 60, 56, 54, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox light colors */ + gruvbox-light-bg0-hard: #f9f5d7; + gruvbox-light-bg0: #fbf1c7; + gruvbox-light-bg1: #ebdbb2; + gruvbox-light-fg0: #282828; + gruvbox-light-fg1: #3c3836; + gruvbox-light-red-dark: #9d0006; + gruvbox-light-red-light: #cc241d; + gruvbox-light-yellow-dark: #b57614; + gruvbox-light-yellow-light: #d79921; + gruvbox-light-gray: #7c6f64; + + /* Theme colors */ + background: @gruvbox-light-bg0-hard; + background-color: @background; + foreground: @gruvbox-light-fg1; + border-color: @gruvbox-light-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 251, 241, 199, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 253, 244, 193, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 253, 244, 193, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 253, 244, 193, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 253, 244, 193, 100 % ); - alternate-active-background: rgba ( 181, 118, 20, 100 % ); - background: rgba ( 249, 245, 215, 100 % ); - bordercolor: rgba ( 124, 111, 100, 100 % ); + alternate-normal-background: @gruvbox-light-bg0; alternate-normal-foreground: @foreground; - normal-background: rgba ( 249, 245, 215, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 235, 219, 178, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 124, 111, 100, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-light-bg1; + selected-normal-foreground: @gruvbox-light-fg0; + + active-background: @gruvbox-light-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 181, 118, 20, 100 % ); - selected-active-background: rgba ( 215, 153, 33, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-light-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-light-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-light-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/gruvbox-light-soft.rasi b/themes/gruvbox-light-soft.rasi index bfb083cb..43ddb6b4 100644 --- a/themes/gruvbox-light-soft.rasi +++ b/themes/gruvbox-light-soft.rasi @@ -1,139 +1,62 @@ -/******************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox-light-soft.theme - * Desc: Gruvbox light (soft contrast) color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox-rofi - * Modified: Sat Oct 22 2016 03:11:32 PDT -0700 - */ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-light-soft.rasi + Desc: Gruvbox light (soft contrast) color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:05:38 PST -0800 + ========================================================================== */ + * { - selected-normal-foreground: rgba ( 40, 40, 40, 100 % ); - foreground: rgba ( 60, 56, 54, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox light colors */ + gruvbox-light-bg0-soft: #f2e5bc; + gruvbox-light-bg1: #ebdbb2; + gruvbox-light-bg2: #d5c4a1; + gruvbox-light-fg0: #282828; + gruvbox-light-fg1: #3c3836; + gruvbox-light-red-dark: #9d0006; + gruvbox-light-red-light: #cc241d; + gruvbox-light-yellow-dark: #b57614; + gruvbox-light-yellow-light: #d79921; + gruvbox-light-gray: #7c6f64; + + /* Theme colors */ + background: @gruvbox-light-bg0-soft; + background-color: @background; + foreground: @gruvbox-light-fg1; + border-color: @gruvbox-light-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 235, 219, 178, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 242, 229, 188, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 242, 229, 188, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 242, 229, 188, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 242, 229, 188, 100 % ); - alternate-active-background: rgba ( 181, 118, 20, 100 % ); - background: rgba ( 242, 229, 188, 100 % ); - bordercolor: rgba ( 124, 111, 100, 100 % ); + alternate-normal-background: @gruvbox-light-bg1; alternate-normal-foreground: @foreground; - normal-background: rgba ( 242, 229, 188, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 213, 196, 161, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 124, 111, 100, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-light-bg2; + selected-normal-foreground: @gruvbox-light-fg0; + + active-background: @gruvbox-light-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 181, 118, 20, 100 % ); - selected-active-background: rgba ( 215, 153, 33, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-light-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-light-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-light-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/gruvbox-light.rasi b/themes/gruvbox-light.rasi index deb3a57f..f8041564 100644 --- a/themes/gruvbox-light.rasi +++ b/themes/gruvbox-light.rasi @@ -1,139 +1,62 @@ -/******************* - * Rofi color theme - * - * Based on the Gruvbox color scheme for Vim by morhetz - * https://github.com/morhetz/gruvbox - * - * File: gruvbox-light.theme - * Desc: Gruvbox light color theme for Rofi - * Author: bardisty - * Source: https://github.com/bardisty/gruvbox-rofi - * Modified: Sat Oct 22 2016 03:11:32 PDT -0700 - */ +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: gruvbox-light.rasi + Desc: Gruvbox light color theme for rofi + Author: bardisty + Source: https://github.com/bardisty/gruvbox-rofi + Modified: Mon Feb 12 2018 06:06:06 PST -0800 + ========================================================================== */ + * { - selected-normal-foreground: rgba ( 40, 40, 40, 100 % ); - foreground: rgba ( 60, 56, 54, 100 % ); + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox light colors */ + gruvbox-light-bg0: #fbf1c7; + gruvbox-light-bg0-soft: #f2e5bc; + gruvbox-light-bg2: #d5c4a1; + gruvbox-light-fg0: #282828; + gruvbox-light-fg1: #3c3836; + gruvbox-light-gray: #7c6f64; + gruvbox-light-red-dark: #9d0006; + gruvbox-light-red-light: #cc241d; + gruvbox-light-yellow-dark: #b57614; + gruvbox-light-yellow-light: #d79921; + + /* Theme colors */ + background: @gruvbox-light-bg0; + background-color: @background; + foreground: @gruvbox-light-fg1; + border-color: @gruvbox-light-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; normal-foreground: @foreground; - alternate-normal-background: rgba ( 242, 229, 188, 100 % ); - red: rgba ( 220, 50, 47, 100 % ); - selected-urgent-foreground: rgba ( 251, 241, 199, 100 % ); - blue: rgba ( 38, 139, 210, 100 % ); - urgent-foreground: rgba ( 251, 241, 199, 100 % ); - alternate-urgent-background: rgba ( 204, 36, 29, 100 % ); - active-foreground: rgba ( 251, 241, 199, 100 % ); - lightbg: rgba ( 238, 232, 213, 100 % ); - selected-active-foreground: rgba ( 251, 241, 199, 100 % ); - alternate-active-background: rgba ( 181, 118, 20, 100 % ); - background: rgba ( 251, 241, 199, 100 % ); - bordercolor: rgba ( 124, 111, 100, 100 % ); + alternate-normal-background: @gruvbox-light-bg0-soft; alternate-normal-foreground: @foreground; - normal-background: rgba ( 251, 241, 199, 100 % ); - lightfg: rgba ( 88, 104, 117, 100 % ); - selected-normal-background: rgba ( 213, 196, 161, 100 % ); - border-color: @foreground; - spacing: 2; - separatorcolor: rgba ( 124, 111, 100, 100 % ); - urgent-background: rgba ( 204, 36, 29, 100 % ); - selected-urgent-background: rgba ( 251, 73, 52, 100 % ); - alternate-urgent-foreground: @urgent-foreground; - background-color: rgba ( 0, 0, 0, 0 % ); + selected-normal-background: @gruvbox-light-bg2; + selected-normal-foreground: @gruvbox-light-fg0; + + active-background: @gruvbox-light-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; alternate-active-foreground: @active-foreground; - active-background: rgba ( 181, 118, 20, 100 % ); - selected-active-background: rgba ( 215, 153, 33, 100 % ); -} -#window { - background-color: @background; - border: 1; - padding: 5; -} -#mainbox { - border: 0; - padding: 0; -} -#message { - border: 1px dash 0px 0px ; - border-color: @separatorcolor; - padding: 1px ; -} -#textbox { - text-color: @foreground; -} -#listview { - fixed-height: 0; - border: 2px dash 0px 0px ; - border-color: @separatorcolor; - spacing: 2px ; - scrollbar: true; - padding: 2px 0px 0px ; -} -#element { - border: 0; - padding: 1px ; -} -#element.normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} -#element.normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} -#element.normal.active { - background-color: @active-background; - text-color: @active-foreground; -} -#element.selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#element.selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} -#element.selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} -#element.alternate.normal { - background-color: @alternate-normal-background; - text-color: @alternate-normal-foreground; -} -#element.alternate.urgent { - background-color: @alternate-urgent-background; - text-color: @alternate-urgent-foreground; -} -#element.alternate.active { - background-color: @alternate-active-background; - text-color: @alternate-active-foreground; -} -#scrollbar { - width: 4px ; - border: 0; - handle-width: 8px ; - padding: 0; -} -#sidebar { - border: 2px dash 0px 0px ; - border-color: @separatorcolor; -} -#button.selected { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; -} -#inputbar { - spacing: 0; - text-color: @normal-foreground; - padding: 1px ; -} -#case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -#entry { - spacing: 0; - text-color: @normal-foreground; -} -#prompt { - spacing: 0; - text-color: @normal-foreground; + selected-active-background: @gruvbox-light-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @gruvbox-light-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @gruvbox-light-red-light; + selected-urgent-foreground: @urgent-foreground; } + +@import "gruvbox-common.rasi" + diff --git a/themes/lb.rasi b/themes/lb.rasi index 39a9032a..bbbec82b 100644 --- a/themes/lb.rasi +++ b/themes/lb.rasi @@ -131,3 +131,12 @@ spacing: 0; text-color: @normal-foreground; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/paper-float.rasi b/themes/paper-float.rasi index c2cdd7a7..d9b62c74 100644 --- a/themes/paper-float.rasi +++ b/themes/paper-float.rasi @@ -115,3 +115,12 @@ #button selected { text-color: #4271AEFF; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/purple.rasi b/themes/purple.rasi index ee579cd2..f85e6577 100644 --- a/themes/purple.rasi +++ b/themes/purple.rasi @@ -34,24 +34,24 @@ active-background: rgba ( 47, 30, 46, 15 % ); selected-active-background: rgba ( 129, 91, 164, 33 % ); } -window { +#window { background-color: @background; border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; } -message { +#message { border: 1px dash 0px 0px ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 2px dash 0px 0px ; border-color: @separatorcolor; @@ -59,81 +59,83 @@ listview { scrollbar: true; padding: 2px 0px 0px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 4px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -textbox-prompt-colon { +#textbox-prompt-colon { expand: false; str: ":"; - margin: 0px 0.3000em 0.0000em 0.0000em ; - text-color: inherit; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; } diff --git a/themes/sidebar.rasi b/themes/sidebar.rasi index 68e4e87b..1d71a9b3 100644 --- a/themes/sidebar.rasi +++ b/themes/sidebar.rasi @@ -42,23 +42,32 @@ highlight: bold #ffffff; } #window { - height: 100%; - width: 30em; + fullscreen: true; location: west; anchor: west; border: 0px 2px 0px 0px; text-color: @lightwhite; + + orientation: horizontal; + children: [mainbox, dummy]; +} + +#dummy { + expand: true; } #sidebar { border: 2px 0px 0px 0px; background-color: @lightblack; - padding: 4px; + padding: 10px; } #button selected { border-color: @lightgreen; text-color: @lightgreen; } +#entry { + width: 20em; +} #inputbar { background-color: @lightblack; text-color: @lightgreen; @@ -66,7 +75,7 @@ border: 0px 0px 2px 0px; } #mainbox { - expand: true; + expand: false; background-color: #1c1c1cee; spacing: 1em; } @@ -100,3 +109,12 @@ background-color: @lightred; text-color: @dark; } +#inputbar { + children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; +} +#textbox-prompt-colon { + expand: false; + str: ":"; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; +} diff --git a/themes/solarized.rasi b/themes/solarized.rasi index 0de6d2a6..34ce0b1c 100644 --- a/themes/solarized.rasi +++ b/themes/solarized.rasi @@ -34,24 +34,24 @@ active-background: rgba ( 0, 43, 55, 100 % ); selected-active-background: rgba ( 0, 54, 66, 100 % ); } -window { +#window { background-color: @background; border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; } -message { +#message { border: 1px dash 0px 0px ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 2px dash 0px 0px ; border-color: @separatorcolor; @@ -59,81 +59,83 @@ listview { scrollbar: true; padding: 2px 0px 0px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 4px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -textbox-prompt-colon { +#textbox-prompt-colon { expand: false; str: ":"; - margin: 0px 0.3000em 0.0000em 0.0000em ; - text-color: inherit; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; } diff --git a/themes/solarized_alternate.rasi b/themes/solarized_alternate.rasi index 58843149..886248ca 100644 --- a/themes/solarized_alternate.rasi +++ b/themes/solarized_alternate.rasi @@ -34,24 +34,24 @@ active-background: rgba ( 0, 43, 55, 100 % ); selected-active-background: rgba ( 0, 142, 212, 100 % ); } -window { +#window { background-color: @background; border: 1; padding: 5; } -mainbox { +#mainbox { border: 0; padding: 0; } -message { +#message { border: 1px dash 0px 0px ; border-color: @separatorcolor; padding: 1px ; } -textbox { +#textbox { text-color: @foreground; } -listview { +#listview { fixed-height: 0; border: 2px dash 0px 0px ; border-color: @separatorcolor; @@ -59,81 +59,83 @@ listview { scrollbar: true; padding: 2px 0px 0px ; } -element { +#element { border: 0; padding: 1px ; } -element.normal.normal { +#element.normal.normal { background-color: @normal-background; text-color: @normal-foreground; } -element.normal.urgent { +#element.normal.urgent { background-color: @urgent-background; text-color: @urgent-foreground; } -element.normal.active { +#element.normal.active { background-color: @active-background; text-color: @active-foreground; } -element.selected.normal { +#element.selected.normal { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -element.selected.urgent { +#element.selected.urgent { background-color: @selected-urgent-background; text-color: @selected-urgent-foreground; } -element.selected.active { +#element.selected.active { background-color: @selected-active-background; text-color: @selected-active-foreground; } -element.alternate.normal { +#element.alternate.normal { background-color: @alternate-normal-background; text-color: @alternate-normal-foreground; } -element.alternate.urgent { +#element.alternate.urgent { background-color: @alternate-urgent-background; text-color: @alternate-urgent-foreground; } -element.alternate.active { +#element.alternate.active { background-color: @alternate-active-background; text-color: @alternate-active-foreground; } -scrollbar { +#scrollbar { width: 4px ; border: 0; handle-width: 8px ; padding: 0; } -sidebar { +#sidebar { border: 2px dash 0px 0px ; border-color: @separatorcolor; } -button.selected { +#button.selected { background-color: @selected-normal-background; text-color: @selected-normal-foreground; } -inputbar { +#inputbar { spacing: 0; text-color: @normal-foreground; padding: 1px ; +} +#case-indicator { + spacing: 0; + text-color: @normal-foreground; +} +#entry { + spacing: 0; + text-color: @normal-foreground; +} +#prompt { + spacing: 0; + text-color: @normal-foreground; +} +#inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } -case-indicator { - spacing: 0; - text-color: @normal-foreground; -} -entry { - spacing: 0; - text-color: @normal-foreground; -} -prompt { - spacing: 0; - text-color: @normal-foreground; -} -textbox-prompt-colon { +#textbox-prompt-colon { expand: false; str: ":"; - margin: 0px 0.3000em 0.0000em 0.0000em ; - text-color: inherit; + margin: 0px 0.3em 0em 0em ; + text-color: @normal-foreground; }