diff options
author | Quentin Glidic <sardemff7+git@sardemff7.net> | 2017-05-28 00:21:57 +0200 |
---|---|---|
committer | Quentin Glidic <sardemff7+git@sardemff7.net> | 2017-05-28 00:21:57 +0200 |
commit | 04faad945a56380d41cdf3757c23b918bedf1e9b (patch) | |
tree | bfc1654e4e1dab43da8f6fef81d6e41bf614f6cf | |
parent | 21982db45041604b645f73dc0c9b8a3914adb49d (diff) | |
parent | f1261e181c888c212c860dcd77a4f7ccb0053ffa (diff) |
Merge branch 'master' into wip/meson
Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
54 files changed, 2203 insertions, 810 deletions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 85fadd14..adf51bc6 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,9 +1,11 @@ # Creating an issue -When reporting bugs keep in mind that the people working on it do this unpaid, in their free time and as a hobby. So be -polite and helpful. Bug reports that demand, contain insults to this or other projects, or have a general unfriendly -tone will be closed without discussion. Everybody has it own way of working; What might be the norm for you, might not -be for others. Therefore be verbose in your description. +When reporting bugs keep in mind that the people working on it do this unpaid, +in their free time and as a hobby. So be polite and helpful. Bug reports that +demand, contain insults to this or other projects, or have a general unfriendly +tone will be closed without discussion. Everybody has it own way of working; +What might be the norm for you, might not be for others. Therefore be verbose in +your description. Before creating an issue: @@ -21,17 +23,30 @@ When reporting bugs include the following information: * A proper title for others to search for. * Be exact. +When adding comments to an issue make sure: + +* It is relevant to the issue. +* It contributes to solving the issue. +* Use :+1: :-1: emojis instead of replying 'me too' or 'I also have this.' + + +Issue high-jacking, e.g. adding a request/issue to an existing issue, is very +disruptive. +Please create a new issue, if it is similar it will be marked duplicate. + The issue tracker is not for: * Questions. * Writing complaints. -These topics belong on [FORUM](https://reddit.com/r/qtools//), [IRC](https://webchat.freenode.net/?channels=#rofi), -frequently asked questions will be added to the [F.A.Q](https://github.com/DaveDavenport/rofi/wiki#faq) on the -[wiki](https://github.com/DaveDavenport/rofi/wiki). +These topics belong on [FORUM](https://reddit.com/r/qtools//), +[IRC](https://webchat.freenode.net/?channels=#rofi), frequently asked questions +will be added to the [F.A.Q](https://github.com/DaveDavenport/rofi/wiki#faq) on +the [wiki](https://github.com/DaveDavenport/rofi/wiki). -Questions filled in on the bug tracker will be marked `question`, locked and closed. If the question is clear, I -normally try to provide an answer. +Questions filled in on the bug tracker will be marked `question`, locked and +closed. If the question is clear, I normally try to provide an answer. -**Please do not submit reports related to wayland, see [here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for -more information.** +**Please do not submit reports related to wayland, see +[here](https://github.com/DaveDavenport/rofi/wiki/Wayland) for more +information.** diff --git a/.travis.yml b/.travis.yml index 948d224b..98b07ef3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -81,6 +81,7 @@ before_script: script: - ninja -C build - ninja -C build test + - ./theme_parser_test - ulimit -c unlimited - ninja -C build test-x - ninja -C build doc/html 2>&1 > doxygen.log diff --git a/Makefile.am b/Makefile.am index a5b9de78..d839ac06 100644 --- a/Makefile.am +++ b/Makefile.am @@ -60,6 +60,7 @@ SOURCES=\ source/widgets/scrollbar.c\ source/xrmoptions.c\ source/x11-helper.c\ + source/css-colors.c\ source/dialogs/run.c\ source/dialogs/ssh.c\ source/dialogs/drun.c\ @@ -82,6 +83,7 @@ SOURCES=\ include/timings.h\ include/history.h\ include/theme.h\ + include/css-colors.h\ include/default-theme.h\ include/widgets/box.h\ include/widgets/container.h\ @@ -319,6 +321,7 @@ widget_test_SOURCES=\ source/widgets/widget.c\ source/widgets/textbox.c\ source/theme.c\ + source/css-colors.c\ source/helper.c\ source/x11-helper.c\ config/config.c\ @@ -334,7 +337,9 @@ box_test_SOURCES=\ lexer/theme-parser.y\ lexer/theme-lexer.l\ source/theme.c\ + source/css-colors.c\ include/theme.h\ + include/css-colors.h\ test/box-test.c scrollbar_test_LDADD=$(textbox_test_LDADD) @@ -345,7 +350,9 @@ scrollbar_test_SOURCES=\ lexer/theme-parser.y\ lexer/theme-lexer.l\ source/theme.c\ + source/css-colors.c\ include/theme.h\ + include/css-colors.h\ test/scrollbar-test.c textbox_test_SOURCES=\ @@ -354,6 +361,7 @@ textbox_test_SOURCES=\ lexer/theme-parser.y\ lexer/theme-lexer.l\ source/theme.c\ + source/css-colors.c\ source/helper.c\ source/x11-helper.c\ config/config.c\ @@ -382,6 +390,7 @@ theme_parser_test_SOURCES=\ include/helper.h\ include/helper-theme.h\ include/theme.h\ + include/css-colors.h\ include/xrmoptions.h\ source/xrmoptions.c\ source/x11-helper.c\ @@ -389,6 +398,7 @@ theme_parser_test_SOURCES=\ lexer/theme-parser.c\ lexer/theme-parser.h\ source/theme.c\ + source/css-colors.c\ test/theme-parser-test.c endif @@ -530,9 +540,13 @@ test-x: $(bin_PROGRAMS) echo "Test dmenu glob" $(top_srcdir)/test/run_test.sh 216 $(top_srcdir)/test/run_glob_test.sh $(top_builddir) echo "Test issue 333" - $(top_srcdir)/test/run_test.sh 221 $(top_srcdir)/test/run_issue333_test.sh $(top_builddir) + $(top_srcdir)/test/run_test.sh 217 $(top_srcdir)/test/run_issue333_test.sh $(top_builddir) echo "Test help output" - $(top_srcdir)/test/run_test.sh 212 $(top_srcdir)/test/help_output_test.sh $(top_builddir) $(top_srcdir) + $(top_srcdir)/test/run_test.sh 218 $(top_srcdir)/test/help_output_test.sh $(top_builddir) $(top_srcdir) + echo "Test theme output" + $(top_srcdir)/test/run_test.sh 219 $(top_srcdir)/test/default_theme_test.sh $(top_builddir) $(top_srcdir) + echo "Test theme convert output" + $(top_srcdir)/test/run_test.sh 220 $(top_srcdir)/test/convert_old_theme_test.sh $(top_builddir) $(top_srcdir) test-x1: $(bin_PROGRAMS) echo "Test dmenu-normal-window" diff --git a/configure.ac b/configure.ac index 21f21161..0445e422 100644 --- a/configure.ac +++ b/configure.ac @@ -101,6 +101,7 @@ AC_CHECK_FUNC([fcntl],, AC_MSG_ERROR("Could not find fcntl")) AC_CHECK_FUNC([setlocale],,AC_MSG_ERROR("Could not find setlocale")) AC_CHECK_FUNC([atexit],, AC_MSG_ERROR("Could not find atexit in c library")) AC_CHECK_FUNC([glob],, AC_MSG_ERROR("Could not find glob in c library")) +AC_CHECK_FUNC([toupper],, AC_MSG_ERROR("Could not find toupper in c library")) AC_CHECK_HEADER([math.h],, AC_MSG_ERROR("Could not find math.h header file")) AC_SEARCH_LIBS([floor],[m],, AC_MSG_ERROR("Could not find floor in math library")) @@ -117,10 +118,14 @@ dnl PKG_CONFIG based dependencies dnl --------------------------------------------------------------------- PKG_CHECK_MODULES([glib], [glib-2.0 >= 2.40 gio-unix-2.0 gmodule-2.0]) GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon >= 0.5.0 xkbcommon-x11 xcb-ewmh xcb-icccm xcb-xrm xcb-randr xcb-xinerama]) +PKG_CHECK_EXISTS([xkbcommon >= 0.7.0], [AC_DEFINE([XkBCOMMON_HAS_CONSUMED2], [1], [If xkbcommon has the consumed2 API])]) PKG_CHECK_MODULES([pango], [pango pangocairo]) PKG_CHECK_MODULES([cairo], [cairo cairo-xcb]) PKG_CHECK_MODULES([libsn], [libstartup-notification-1.0 ]) +dnl --------------------------------------------------------------------- +dnl check - Unit testing. +dnl --------------------------------------------------------------------- AC_ARG_ENABLE([check], AS_HELP_STRING([--disable-check], [Build with checks using check library (default: enabled)])) AS_IF([test "x${enable_check}" != "xno"], [ PKG_CHECK_MODULES([check],[check >= 0.11.0], [HAVE_CHECK=1]) ]) diff --git a/doc/default_theme.rasi b/doc/default_theme.rasi new file mode 100644 index 00000000..23c33889 --- /dev/null +++ b/doc/default_theme.rasi @@ -0,0 +1,115 @@ +* { + foreground: rgba ( 0, 43, 54, 100 % ); + selected-normal-foreground: @lightbg; + normal-foreground: @foreground; + red: rgba ( 220, 50, 47, 100 % ); + alternate-normal-background: @lightbg; + blue: rgba ( 38, 139, 210, 100 % ); + selected-urgent-foreground: @background; + urgent-foreground: @red; + alternate-urgent-background: @lightbg; + active-foreground: @blue; + lightbg: rgba ( 238, 232, 213, 100 % ); + selected-active-foreground: @background; + alternate-normal-foreground: @foreground; + alternate-active-background: @lightbg; + bordercolor: @foreground; + background: rgba ( 253, 246, 227, 100 % ); + normal-background: @background; + lightfg: rgba ( 88, 104, 117, 100 % ); + selected-normal-background: @lightfg; + separatorcolor: @foreground; + spacing: 2; + urgent-background: @background; + alternate-urgent-foreground: @red; + selected-urgent-background: @red; + alternate-active-foreground: @blue; + selected-active-background: @blue; + active-background: @background; +} +#window { + border: 1; + foreground: @foreground; + background: rgba ( 0, 0, 0, 0 % ); + padding: 5; +} +#window.box { + foreground: @bordercolor; + background: @background; +} +#window.mainbox { + border: 0; + padding: 0; +} +#window.mainbox.message.box { + border: 1px dash 0px 0px ; + foreground: @separatorcolor; + padding: 2px 0px 0px ; +} +#window.mainbox.message.normal { + foreground: @foreground; +} +#window.mainbox.listview { + fixed-height: 0; + border: 1px dash 0px 0px ; + padding: 2px 0px 0px ; +} +#window.mainbox.listview.element { + border: 0; +} +#window.mainbox.listview.element.normal.normal { + foreground: @normal-foreground; + background: @normal-background; +} +#window.mainbox.listview.element.normal.urgent { + foreground: @urgent-foreground; + background: @urgent-background; +} +#window.mainbox.listview.element.normal.active { + foreground: @active-foreground; + background: @active-background; +} +#window.mainbox.listview.element.selected.normal { + foreground: @selected-normal-foreground; + background: @selected-normal-background; +} +#window.mainbox.listview.element.selected.urgent { + foreground: @selected-urgent-foreground; + background: @selected-urgent-background; +} +#window.mainbox.listview.element.selected.active { + foreground: @selected-active-foreground; + background: @selected-active-background; +} +#window.mainbox.listview.element.alternate.normal { + foreground: @alternate-normal-foreground; + background: @alternate-normal-background; +} +#window.mainbox.listview.element.alternate.urgent { + foreground: @alternate-urgent-foreground; + background: @alternate-urgent-background; +} +#window.mainbox.listview.element.alternate.active { + foreground: @alternate-active-foreground; + background: @alternate-active-background; +} +#window.mainbox.listview.scrollbar { + border: 0; + padding: 0; +} +#window.mainbox.sidebar.box { + border: 1px dash 0px 0px ; +} +#window.mainbox.sidebar.button.selected { + foreground: @selected-normal-foreground; + background: @selected-normal-background; +} +#window.mainbox.inputbar { + spacing: 0; +} +#window.mainbox.inputbar.box { + border: 0px ; +} +#window.mainbox.inputbar.normal { + foreground: @foreground; +} diff --git a/doc/old-theme-convert-input.theme b/doc/old-theme-convert-input.theme new file mode 100644 index 00000000..eb4d2d4d --- /dev/null +++ b/doc/old-theme-convert-input.theme @@ -0,0 +1,15 @@ +! ------------------------------------------------------------------------------ +! ROFI Color theme +! User: qball +! Copyright: Dave Davenport +! ------------------------------------------------------------------------------ +! "Color scheme for normal row" Set from: File +rofi.color-normal: argb:00000000, #dbdfbc, argb:00000000, #dbdfbc, #02143f +! "Color scheme for urgent row" Set from: File +rofi.color-urgent: argb:00000000, #ff81ff, argb:00000000, #ff817f, #02143f +! "Color scheme for active row" Set from: File +rofi.color-active: argb:00000000, #8ac4ff, argb:00000000, #8ac4ff, #02143f +! "Color scheme window" Set from: File +rofi.color-window: argb:dd000021, #dbdfbc, #dbdfbc +! "Separator style (none, dash, solid)" Set from: XResources +rofi.separator-style: solid diff --git a/doc/old-theme-convert-output.rasi b/doc/old-theme-convert-output.rasi new file mode 100644 index 00000000..3d03e77c --- /dev/null +++ b/doc/old-theme-convert-output.rasi @@ -0,0 +1,115 @@ +* { + foreground: rgba ( 219, 223, 188, 100 % ); + selected-normal-foreground: rgba ( 2, 20, 63, 100 % ); + normal-foreground: @foreground; + red: rgba ( 220, 50, 47, 100 % ); + alternate-normal-background: rgba ( 0, 0, 0, 0 % ); + blue: rgba ( 38, 139, 210, 100 % ); + selected-urgent-foreground: rgba ( 2, 20, 63, 100 % ); + urgent-foreground: rgba ( 255, 129, 255, 100 % ); + alternate-urgent-background: rgba ( 0, 0, 0, 0 % ); + active-foreground: rgba ( 138, 196, 255, 100 % ); + lightbg: rgba ( 238, 232, 213, 100 % ); + selected-active-foreground: rgba ( 2, 20, 63, 100 % ); + alternate-normal-foreground: @foreground; + alternate-active-background: rgba ( 0, 0, 0, 0 % ); + bordercolor: rgba ( 219, 223, 188, 100 % ); + background: rgba ( 0, 0, 33, 87 % ); + normal-background: rgba ( 0, 0, 0, 0 % ); + lightfg: rgba ( 88, 104, 117, 100 % ); + selected-normal-background: rgba ( 219, 223, 188, 100 % ); + separatorcolor: rgba ( 219, 223, 188, 100 % ); + spacing: 2; + urgent-background: rgba ( 0, 0, 0, 0 % ); + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: rgba ( 255, 129, 127, 100 % ); + alternate-active-foreground: @active-foreground; + selected-active-background: rgba ( 138, 196, 255, 100 % ); + active-background: rgba ( 0, 0, 0, 0 % ); +} +#window { + border: 1; + foreground: @foreground; + background: rgba ( 0, 0, 0, 0 % ); + padding: 5; +} +#window.box { + foreground: @bordercolor; + background: @background; +} +#window.mainbox { + border: 0; + padding: 0; +} +#window.mainbox.message.box { + border: 1px dash 0px 0px ; + foreground: @separatorcolor; + padding: 2px 0px 0px ; +} +#window.mainbox.message.normal { + foreground: @foreground; +} +#window.mainbox.listview { + fixed-height: 0; + border: 1px dash 0px 0px ; + padding: 2px 0px 0px ; +} +#window.mainbox.listview.element { + border: 0; +} +#window.mainbox.listview.element.normal.normal { + foreground: @normal-foreground; + background: @normal-background; +} +#window.mainbox.listview.element.normal.urgent { + foreground: @urgent-foreground; + background: @urgent-background; +} +#window.mainbox.listview.element.normal.active { + foreground: @active-foreground; + background: @active-background; +} +#window.mainbox.listview.element.selected.normal { + foreground: @selected-normal-foreground; + background: @selected-normal-background; +} +#window.mainbox.listview.element.selected.urgent { + foreground: @selected-urgent-foreground; + background: @selected-urgent-background; +} +#window.mainbox.listview.element.selected.active { + foreground: @selected-active-foreground; + background: @selected-active-background; +} +#window.mainbox.listview.element.alternate.normal { + foreground: @alternate-normal-foreground; + background: @alternate-normal-background; +} +#window.mainbox.listview.element.alternate.urgent { + foreground: @alternate-urgent-foreground; + background: @alternate-urgent-background; +} +#window.mainbox.listview.element.alternate.active { + foreground: @alternate-active-foreground; + background: @alternate-active-background; +} +#window.mainbox.listview.scrollbar { + border: 0; + padding: 0; +} +#window.mainbox.sidebar.box { + border: 1px dash 0px 0px ; +} +#window.mainbox.sidebar.button.selected { + foreground: @selected-normal-foreground; + background: @selected-normal-background; +} +#window.mainbox.inputbar { + spacing: 0; +} +#window.mainbox.inputbar.box { + border: 0px ; +} +#window.mainbox.inputbar.normal { + foreground: @foreground; +} diff --git a/doc/rofi-theme-manpage.markdown b/doc/rofi-theme-manpage.markdown index 5a32f46e..f6eb2ef9 100644 --- a/doc/rofi-theme-manpage.markdown +++ b/doc/rofi-theme-manpage.markdown @@ -238,31 +238,66 @@ dynamic: false; ## Color -* Format: `#{HEX}{6}` -* Format: `#{HEX}{8}` -* Format: `rgb({INTEGER},{INTEGER},{INTEGER})` -* Format: `rgba({INTEGER},{INTEGER},{INTEGER}, {REAL})` +**rofi** supports the color formats as specified in the CSS standard (1,2,3 and some of CSS 4) + +* Format: `#{HEX}{3}` (rgb) +* Format: `#{HEX}{4}` (rgba) +* Format: `#{HEX}{6}` (rrggbb) +* Format: `#{HEX}{8}` (rrggbbaa) +* Format: `rgb[a]({INTEGER},{INTEGER},{INTEGER}[, {PERCENTAGE}])` +* Format: `rgb[a]({INTEGER}%,{INTEGER}%,{INTEGER}%[, {PERCENTAGE}])` +* Format: `hsl[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [{PERCENTAGE}])` +* Format: `hwb[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [{PERCENTAGE}])` +* Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE} ])` +* Format: `{named-color} [ / {PERCENTAGE} ]` + +The in CSS 4 proposed white-space format is also supported. + +The different values are: + + * `{HEX}` is a hexidecimal number ('0-9a-f' case insensitive). + * `{INTEGER}` value can be between 0 and 255 or 0-100 when representing percentage. + * `{ANGLE}` 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% + * `{named-color}` Is one of the following colors: + + AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown, + BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan, + DarkGoldenRod, DarkGray, DarkGrey, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen, DarkOrange, DarkOrchid, DarkRed, + DarkSalmon, DarkSeaGreen, DarkSlateBlue, DarkSlateGray, DarkSlateGrey, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue, + DimGray, DimGrey, DodgerBlue, FireBrick, FloralWhite, ForestGreen, Fuchsia, Gainsboro, GhostWhite, Gold, GoldenRod, + Gray, Grey, Green, GreenYellow, HoneyDew, HotPink, IndianRed, Indigo, Ivory, Khaki, Lavender, LavenderBlush, LawnGreen, + LemonChiffon, LightBlue, LightCoral, LightCyan, LightGoldenRodYellow, LightGray, LightGrey, LightGreen, LightPink, + LightSalmon, LightSeaGreen, LightSkyBlue, LightSlateGray, LightSlateGrey, LightSteelBlue, LightYellow, Lime, LimeGreen, + Linen, Magenta, Maroon, MediumAquaMarine, MediumBlue, MediumOrchid, MediumPurple, MediumSeaGreen, MediumSlateBlue, + MediumSpringGreen, MediumTurquoise, MediumVioletRed, MidnightBlue, MintCream, MistyRose, Moccasin, NavajoWhite, Navy, + OldLace, Olive, OliveDrab, Orange, OrangeRed, Orchid, PaleGoldenRod, PaleGreen, PaleTurquoise, PaleVioletRed, + PapayaWhip, PeachPuff, Peru, Pink, Plum, PowderBlue, Purple, RebeccaPurple, Red, RosyBrown, RoyalBlue, SaddleBrown, + Salmon, SandyBrown, SeaGreen, SeaShell, Sienna, Silver, SkyBlue, SlateBlue, SlateGray, SlateGrey, Snow, SpringGreen, + SteelBlue, Tan, Teal, Thistle, Tomato, Turquoise, Violet, Wheat, White, WhiteSmoke, Yellow, YellowGreen -Where '{HEX}' is a hexidecimal number ('0-9a-f'). The '{INTEGER}' value can be between 0 and 255, the '{Real}' value -between 0.0 and 1.0. - -The first formats specify the color as RRGGBB (R = red, G = green, B = Blue), the second adds an alpha (A) channel: -AARRGGBB. For example: ``` background: #FF0000; foreground: rgba(0,0,1, 0.5); +text: SeaGreen; ``` ## Text style -* Format: `(bold|italic|underline|none)` +* Format: `(bold|italic|underline|strikethrough|none)` -Text style indicates how the text should be displayed. None indicates no style +Text style indicates how the highlighted text is emphasised. None indicates no emphasis should be applied. + * `bold`: make the text thicker then the surrounding text. + * `italic`: put the highlighted text in script type (slanted). + * `underline`: put a line under the highlighted text. + * `strikethrough`: put a line through the highlighted text. + * `small caps`: emphasise the text using capitalization. + ## Line style * Format: `(dash|solid)` diff --git a/doc/rofi-theme.5 b/doc/rofi-theme.5 index bbbe7241..21f8877c 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\-MANPAGE" "" "April 2017" "" "" +.TH "ROFI\-THEME\-MANPAGE" "" "May 2017" "" "" . .SH "NAME" \fBrofi\-theme\fR \- Rofi theme format files @@ -360,26 +360,65 @@ dynamic: false; .IP "" 0 . .SH "Color" +\fBrofi\fR supports the color formats as specified in the CSS standard (1,2,3 and some of CSS 4) . .IP "\(bu" 4 -Format: \fB#{HEX}{6}\fR +Format: \fB#{HEX}{3}\fR (rgb) . .IP "\(bu" 4 -Format: \fB#{HEX}{8}\fR +Format: \fB#{HEX}{4}\fR (rgba) . .IP "\(bu" 4 |