Commit Graph

147 Commits

Author SHA1 Message Date
Filip Banák
4ded401aab
Add initial support for an escape character (#2361)
Add a config parser method which, for now, deals only with escaping the
literal backslash character and logs an error message to inform the user
of the coming change.

The error message includes a properly escaped value for the user.

As a result of introducing an escape character('\'):

  - Warn the user of any unescaped backslashes, as they will not be
    treated as a literal character in the future

  - For now, still treat a single backslash as a literal character

  - Treat two consecutive backslashes as a single properly escaped
    literal backslash

Also:
  - Add documentation about the escape character to polybar(5) manpage
  - Add info about the escape character to changelog
  - Add testcases for ParseLineKeyTest
  - Add new test ParseEscapedValueTest

Resolves: First step in #2354

Improve value parsing

 - Take value arg in as an rvalue reference and move parsed value back
 - Remove unnecessary if statement
 - Rename function
 - Improve error message
 - Improve function description
 - Format

Add escape character documentation to manpages

Add information about the escape character to the polybar(5) manpage.

Add info about the esacape character to changelog

Add test cases for ParseLineKeyTest

Fix ParseLineKeyTest test cases

Also make config parser method parse_escaped_value private.

Add tests for escaped_value_parser method

Also remove unsued include statement

Simplify parse_escaped_value in config_parser

Remove unnecessary escaped value generation, so we do not have to keep
track of index differences.

Fix ParseEscapedValueTest test cases

Fix parse_escaped_value

Add more test cases for ParseLineKeyTest

Update CHANGELOG.md

Co-authored-by: Patrick Ziegler <p.ziegler96@gmail.com>

Adress review

 - Adjust documentation
 - Small code changes

Improve parse_escaped_value

Add initial support for an escape character

Add a config parser method which, for now, deals only with escaping the
literal backslash character and logs an error message to inform the user
of the coming change.

The error message includes a properly escaped value for the user.

As a result of introducing an escape character('\'):

 - Warn the user of any unescaped backslashes, as they will not be
   treated as a literal character in the future

 - For now, still treat a single backslash as a literal character

 - Treat two consecutive backslashes as a single properly escaped
   literal backslash

Resolves: First step in #2354

Improve value parsing

 - Take value arg in as an rvalue reference and move parsed value back
 - Remove unnecessary if statement
 - Rename function
 - Improve error message
 - Improve function description
 - Format

Add info about the esacape character to changelog

Add test cases for ParseLineKeyTest

Fix ParseLineKeyTest test cases

Also make config parser method parse_escaped_value private.

Add tests for escaped_value_parser method

Also remove unsued include statement

Simplify parse_escaped_value in config_parser

Remove unnecessary escaped value generation, so we do not have to keep
track of index differences.

Fix ParseEscapedValueTest test cases

Add more test cases for ParseLineKeyTest

Adress review

 - Adjust documentation
 - Small code changes

Remove duplicate testcase from ParseLineKeyTest

Add initial support for an escape character

Add a config parser method which, for now, deals only with escaping the
literal backslash character and logs an error message to inform the user
of the coming change.

The error message includes a properly escaped value for the user.

As a result of introducing an escape character('\'):

 - Warn the user of any unescaped backslashes, as they will not be
   treated as a literal character in the future

 - For now, still treat a single backslash as a literal character

 - Treat two consecutive backslashes as a single properly escaped
   literal backslash

Resolves: First step in #2354

Improve value parsing

 - Take value arg in as an rvalue reference and move parsed value back
 - Remove unnecessary if statement
 - Rename function
 - Improve error message
 - Improve function description
 - Format

Fix ParseLineKeyTest test cases

Also make config parser method parse_escaped_value private.

Remove duplicate testcase from ParseLineKeyTest
2021-01-26 19:16:29 +01:00
patrick96
ad2d3652f9 Add items for milestones and readthedocs to release workflow 2021-01-07 20:48:04 +01:00
patrick96
3ac93845fc Install changelog file as part of the documentation 2021-01-07 20:48:04 +01:00
patrick96
50b567f070 sphinx: Turn on nit-picky mode 2021-01-07 20:48:04 +01:00
patrick96
ca8fbe5c86 doc: Exclude .buildinfo file from installation
The file contains information about the build itself (hashed) and is not
really useful.
2021-01-07 20:48:04 +01:00
patrick96
b49f325e1e doc: Add language to code-blocks 2020-12-24 12:46:02 +01:00
patrick96
ddfec6fc8f build: Add option to enable/disable html/manpages 2020-12-24 02:20:38 +01:00
patrick96
923d9ae061 Add cmake files for configuring individual targets
This makes the code a bit less messy. We barely need if(BUILD_...)
guards inside the cmake files, just the root CMakeLists.txt.
2020-12-24 02:20:38 +01:00
patrick96
c24a6999a4 refactor(cmake): Allow targets to be enabled individually
Each major target of polybar can now be enabled/disabled while
configuring (even polybar itself).

The cmake code specific to each target will only run if the target is
enabled.

This allows us to for example just build the documentation without
having to run all the cmake code related to compilation or having the
polybar dependencies installed (other than sphinx).
2020-12-24 02:20:38 +01:00
patrick96
16b2970bd7 build: Bump cmake version to 3.5.0
This includes the changes from polybar/xpp#30 which also updates the
minimum cmake version in the xpp submodule
2020-12-24 02:20:38 +01:00
Kamui
89a723a4d9
feat(config): Try to load config.ini (#2324)
* Added .ini extension check to default config

* Added change to changelog and man page

* Added change to changelog and man page

* removed .vscode folder

* removed new lines in changelog
2020-12-23 17:52:30 +01:00
patrick96
218911c463
Merge remote-tracking branch 'origin/hotfix/3.5.3' 2020-12-23 17:42:12 +01:00
Patrick Ziegler
1bf89e8b76
fix(docs): Support out-of-tree builds (#2312)
Searching up from the conf.py only works if it is inside the repository
and not for out-of-tree builds (because conf.py gets configured in the
build directory).
2020-12-17 14:02:48 +01:00
Patrick Ziegler
cec463e830
doc: Don't use git for checking version number (#2311)
If git is not available (and it doesn't have to be when building from a
source archive) building the documentation fails because we use
`git rev-parse` to determine whether a certain version is unreleased.

We now use the version.txt file to do this check

This uses the packaging library, but this should not introduce a new
dependency because sphinx depends on setuptools which also depends on
that library.

Fixes #2309
2020-12-17 05:12:09 +01:00
Patrick Ziegler
d63bf294b7
Adopt "keep a changelog" (#2308)
* Adopt keep a changelog

Ref: https://keepachangelog.com/en/1.0.0/

* Add changelog to release and contributing docs

* Use H2 for automatically added Download section

The individual changelog subsections use H3 and the changelog section
uses H2, so the Download section should use the same heading

* Add already present changes to changelog

* Mention changelog issue references in CONTRIBUTING.md
2020-12-16 16:04:10 +01:00
Patrick Ziegler
1168ef36a0
github: Add action to create release archive (#2277)
Whenever a release is published, this action will create a release
archive and update the release body with a download section.

This also integrates the suggestions from #2276

Resolves #2276
2020-12-06 18:16:17 +01:00
Patrick Ziegler
26a9bc5964
fix(doc): Typo (#2257)
Thanks to u/TheNextPoetician for reporting on reddit

Ref: https://www.reddit.com/r/Polybar/comments/k4llsx/typo_in_the_man_page/
2020-12-01 17:12:02 +01:00
patrick96
1afb333858 doc(actions): Point user to doc when using legacy actions 2020-11-26 20:53:53 +01:00
patrick96
0a1b58a2ed doc(actions): Finish migration documentation 2020-11-26 20:53:53 +01:00
patrick96
c427ec06d7 doc(actions): Finish list of available actions 2020-11-26 20:53:53 +01:00
patrick96
5e64361ed8 doc(actions): Start supported actions table 2020-11-26 20:53:53 +01:00
patrick96
d45ae7954a doc: Finish legacy action migration table 2020-11-26 20:53:53 +01:00
patrick96
1d9365e74f doc: Allow using rtd theme locally 2020-11-26 20:53:53 +01:00
patrick96
3e4f8d402e doc: Initial action documentation 2020-11-26 20:53:53 +01:00
patrick96
c34f013e5f doc: Reflect config fallback in config
This should reflect the changes from #2026
2020-11-23 13:16:37 +01:00
patrick96
df15a4062a doc: Write new release workflow
We now use OneFlow [1] for releases 3.5.0 and onwards.

Closes #1780

[1]: https://www.endoflineblog.com/oneflow-a-git-branching-model-and-workflow
2020-11-22 23:32:41 +01:00
patrick96
91e31317a7 doc: Set SPHINX_BUILD in standalone doc builds
If we build only the documentation by invoking `cmake` on the `doc`
folder, the `SPHINX_BUILD` variable is not set and instead of

```
sphinx-build -b html ...
```

it will just execute

```
-b html ...
```

This produces an error but doesn't fail the build because apparently if
the command starts with a dash an error is non-fatal.

Fixes #2191
2020-10-03 15:37:17 +02:00
Patrick Ziegler
b0e9e3ff61
doc: Add '(unreleased)' tag for unreleased versions (#2118)
The tag is added to the 'deprecated', 'versionadded', and the
'versionchanged' directives.
2020-06-07 21:54:04 +02:00
patrick96
cae3848030 logger: Add default logging level 'notice'
Between info and warning. Should be for things the user should be aware
of but not imply anything has to be done about it.
2020-04-22 00:38:31 +02:00
patrick96
fbbb5922da doc: Reword -m and -M description 2020-04-21 23:59:01 +02:00
patrick96
2edd8275ff Add -M CLI argument to display cloned monitors
Works the same as -m but doesn't purge cloned monitors
2020-04-21 23:59:01 +02:00
patrick96
fab8437ff1 doc: Write syntax definition in polybar.5 2020-02-21 16:17:12 +01:00
patrick96
0b713047aa doc: Allow custom SPHINX_BUILD 2020-02-21 16:17:12 +01:00
Patrick Ziegler
5a695c7065
doc: Update links to https (#2012) 2020-02-21 15:39:39 +01:00
patrick96
85721d3d10 doc: Write page for package maintainers. 2019-12-28 21:53:44 +01:00
patrick96
7f09784548 doc: Add Gitter room
The Gitter room https://gitter.im/polybar/polybar should serve a similar
purpose as the IRC room with the benefit that messages persist and can
be received when offline.

From now on gitter should be the place where the polybar community
lives. Reddit is great for asking longer questions in the style of a
forum but not so great for quick back and forth conversations. IRC is
better in that aspect but has the serious downside that you have to stay
connected to get an answer and messages are not logged (only by your
client).

Both reddit and IRC are here to stay and I will still check them
regularly, but we should encourage people to join gitter.
2019-11-28 11:12:22 +01:00
Rune Morling
43556b5d92 cmake: Use GNUInstallDirs (#1818)
* Use GNUInstallDirs instead of hardcoded paths

This change should be a no-op in the normal case and at the same time make it
easier to customise polybar builds on systems with special needs.

* Avoid creating /usr/share/doc/polybar/polybar/*

* Include GNUInstallDirs for the doc target itself

* cmake: Don't try to set CMAKE_INSTALL_* variables

Since we include GNUInstallDirs all these variables are already set

* cmake: Print install directories in summary

* fix(cmake): Make doc-only work like normal build

This is kind of a dirty hack to force CMAKE_INSTALL_DOCDIR to use
`polybar` as the project name when only polybar-doc is built.

Maybe it is wiser at some point to be able to do a doc only build (and
install) that can be done from the top level project. Then we would also
not need to include GNUInstallDirs here
2019-06-24 18:08:59 +02:00
patrick96
7724c4dccb rtd: Use provided version string on rtd
@APP_VERSION@ isn't available on rtd because it doesn't configure the
entire project
2019-05-17 17:03:51 +02:00
patrick96
4c0117528e build: Allow doc to build as its own project
We can now build the docs without having to have installed all
dependencies for polybar.
2019-05-10 08:14:02 +02:00
patrick96
4cc836fa66 migration: Update URLs
jaagr/polybar -> polybar/polybar

Travis changed their url for new projects to travis-ci.com
2019-05-08 12:20:33 +02:00
patrick96
01b326c10f move shell completion to contrib folder
Now the doc folder is exclusively for documentation
2019-04-24 08:11:27 +02:00
patrick96
bfaeb71cb8 build: create config even when docs are disabled
Fixes #1733
2019-04-24 08:11:27 +02:00
patrick96
d1fe97b90f git: Clean up gitignore
Each directory is responsible for ignoring files
2019-04-08 09:01:48 +02:00
patrick96
72db0538e1 doc: Add copyright 2019-04-05 23:43:37 +02:00
patrick96
bbdcbee068 doc: Make conf.py work on readthedocs
rtd scans the project for a conf.py file so we cannot name it conf.py.in
unless we get rtd to run cmake before building.

The easier option is to have doc/conf.py be the file used by rtd and all
other builds use cmake to first configure it.
2019-04-05 23:43:37 +02:00
patrick96
3111bee143 doc: Remove sphinx theme from readme
For local previews the sphinx_rtd_theme is not used, only in read the
docs.
2019-04-05 23:43:37 +02:00
patrick96
5b7bb2514e refactor(doc): Enable only if sphinx is available 2019-04-05 23:43:37 +02:00
patrick96
a1cccef251 refactor(doc): Use default theme for local builds
The sphinx_rtd_theme takes up about 7.8MB because it includes a lot of
fonts. The default theme only takes 600KB
2019-04-05 23:43:37 +02:00
patrick96
754673bff8 refactor(cmake): Make documentation optional 2019-04-05 23:43:37 +02:00
patrick96
2c42bae09f refactor(doc): Use cmake APP_VERSION in conf.py
This also moves the doc generation completely into cmake (no more
Makefile).

To generate the docs the project needs to first be configured and then
`make doc` can be run.

The approach used is leaned on the cmake's project own use of Sphinx:
Utilities/Sphinx/CMakeLists.txt
2019-04-05 23:43:37 +02:00
patrick96
800d24c92f doc: Add readme with local preview instructions 2019-04-05 23:43:37 +02:00
patrick96
166f704e58 doc: Install rst based man pages 2019-04-05 23:43:37 +02:00
patrick96
1e361fa9ca doc: Add manpage as rst file
This allows us to also have the manual as part of the generated html
documentation.

The syntax is also easier to use.

Right now the man page installed on the system is not replaced with the
rst file, this will come in a later step
2019-04-05 23:43:37 +02:00
patrick96
c841bd512c doc: Build doc with cmake
Run `make doc` inside the cmake build folder.

The html output is installed to
${CMAKE_INSTALL_PREFIX}/share/doc/polybar
2019-04-05 23:43:37 +02:00
patrick96
7809be8d58 doc: Setup in-repo documentation 2019-04-05 23:43:37 +02:00
Joost Sijm
8ca36d9e16 typo: replace 'alot' with 'a lot' (#1634)
This is bothering me alot
2019-01-29 17:54:38 +01:00
Benno Fünfstück
061fe83b2f feat(background_manager): option to disable pseudo-transparency
This adds a new config option to select between pseudo transparency and real transparency.
2018-10-04 15:52:03 +02:00
Benno Fünfstück
59c0ccef50 fix(tray): remove tray-transparent option
This option is no longer necessary because the tray background color can now
simply be set to any (semi-)transparent color (just like the bar background).
2018-10-04 15:52:03 +02:00
x70b1
4b8cd8f616 config: Add figlet polybar banner (#1281) 2018-06-14 00:05:36 +02:00
Alex Mayer
73e4b4ac08 Fix Color Hex Values 2018-05-22 17:01:18 -07:00
Christoph Schiessl
ee5dfbbf59 feat(battery): add animation-discharging 2018-05-02 11:44:55 +02:00
patrick96
a9014e31dc refactor(temp): Mark %temperature% token as deprecated 2018-02-15 18:50:59 -08:00
Patrick Ziegler
0849d05469 fix(docs): Use correct alsa module name (#1030) 2018-02-15 18:49:04 -08:00
patrick96
295297500d docs: Add pulseaudio sample config 2018-02-15 17:43:47 -08:00
NBonaparte
e16227ca43 refactor(alsa): rename and move volume -> alsa 2018-01-23 14:33:11 +01:00
NBonaparte
6e8b9dea29 fix(pulseaudio): Move pulseaudio to separate module 2018-01-20 12:37:41 -08:00
NBonaparte
4f15f42f2c fix(build): Only use one volume backend 2018-01-20 12:37:41 -08:00
Patrick Ziegler
d8414c6ec5 feat(i3): Add workspace separator (#938)
Puts a label-separator node between workspaces on the bar. Since the
separator uses a label it can be configured like any other label

Closes: #929
2018-01-06 16:19:02 -08:00
Patrick Ziegler
a7eb7b3576 feat(bspwm): Add workspace separator (#942)
Same as the i3 workspace separator
2018-01-06 16:18:09 -08:00
Roberto Santalla
705f14c413 Add minimum width to CPU percentage
It's quite obscure where to find that you can set a minimum width for tokens, and CPU usage will oscillate between 0-9 and 10+ quite frequently. I think that adding this to the example config will help users to find out that this feature exists, and avoid this annoying default.
2017-09-30 20:20:41 +02:00
NBonaparte
60f8451b34 fix(docs): Add cursor options to example 2017-09-17 13:17:04 -07:00
Patrick Ziegler
8c1ba8358d feat(menu): Add expand-right option (#658)
expand-right defaults to true to preserve the current functionality
If set to false, the items in the menu will be added to the left of the
toggle label (instead of the right side)

Should resolve the issue discussed in #655
2017-08-29 13:25:41 -07:00
Olmo Kramer
3f5141bf22 bash completion 2017-05-19 17:02:47 +02:00
Michael Carlberg
b6c5563b0b feat(ipc): Add visibility commands 2017-05-12 17:55:05 +02:00
Michael Carlberg
042d385015 fix(i3): Add state descriptions 2017-01-27 03:23:42 +01:00
Michael Carlberg
00d6fc9646 fix(cmake): Invalid path 2017-01-26 20:36:00 +01:00
Michael Carlberg
76c657db70 fix(cmake): Specify configure_file dest 2017-01-26 20:33:13 +01:00
Michael Carlberg
43a17c3b36 refactor(cmake): Cleanup 2017-01-26 17:39:50 +01:00
Michael Carlberg
5535a75bef docs: Update example config 2017-01-26 02:34:37 +01:00
Michael Carlberg
37d0a0e57b refactor(cmake): Cleanup 2017-01-25 23:28:25 +01:00
Michael Carlberg
9d589fa5a7 fix(docs): Update example config 2017-01-25 15:58:58 +01:00
Michael Carlberg
681a4b7935 fix(docs): Update example config 2017-01-24 13:32:56 +01:00
Michael Carlberg
c656ccd701 fix(docs): Update example config font 2017-01-24 13:17:13 +01:00
Michael Carlberg
e126a669d8 fix(docs): Update example config 2017-01-24 11:59:10 +01:00
Michael Carlberg
3292cea786 refactor(tokens): Move token suffix to configuration 2017-01-14 18:00:35 +01:00
Michael Carlberg
e20150e6ca feat(cmake): Query fonts 2017-01-14 00:05:54 +01:00
Michael Carlberg
cabdb4f8d5 feat(zsh): Compdef for polybar-msg 2017-01-13 07:28:21 +01:00
Michael Carlberg
99e432cae7 fix(zsh): Disable incompatible flags 2017-01-13 07:27:49 +01:00
Michael Carlberg
3714884660 fix(zsh): Add missing flags 2017-01-13 06:01:20 +01:00
Michael Carlberg
184a1c5281 fix(zsh): Allow bar name at any pos 2017-01-13 05:02:41 +01:00
Michael Carlberg
385572ec64 feat(xrandr): Support for monitors
Refs #280
2017-01-13 03:52:57 +01:00
Michael Carlberg
2cde3f31a0 fix(config): Comply to parameter naming scheme 2017-01-12 18:09:56 +01:00
Michael Carlberg
30f516dd7d fix(formatting): Make formats parse specs as-is
This removes the spacing tinkering when parsing format specs.
The following example uses the old behavoir:

    format-test = <label-foo>  <label-bar>
    format-breaks = <label-foo><label-bar>/<bar-test>

`format-test` would replace all occurences of ' ' with the
a space string with defined `spacing` as its width. `format-breaks` would
not validate as the tags where split with ' ' as delimiter.

All that nonsense has been removed and each tag is extracted as is.
The `spacing` parameter can still be used to apply N extra whitespaces
between the tags, but it is now 0 by default.
2017-01-11 02:43:37 +01:00
Michael Carlberg
b8545cbbd1 cmake: Install zsh compdef 2017-01-01 21:40:03 +01:00
Michael Carlberg
a4f77dd840 feat(zsh): Add completion script 2016-12-31 06:06:36 +01:00
Michael Carlberg
99764b930e git: Untrack generated config 2016-12-23 20:41:18 +01:00
Michael Carlberg
92424f0d49 refactor(cmake): Install components 2016-12-23 18:10:19 +01:00