diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ec6ae5c..2a769b3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: env: COLOR: "ON" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: ${{ github.event.inputs.ref }} - name: Install Dependencies @@ -48,7 +48,7 @@ jobs: python3-xcbgen \ libuv1-dev \ xcb-proto - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: true ref: ${{ github.event.inputs.ref }} @@ -115,7 +115,7 @@ jobs: if [ "$POLYBAR_BUILD_TYPE" = "tests" ]; then sudo apt-get install -y lcov fi - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: submodules: true ref: ${{ github.event.inputs.ref }} @@ -125,7 +125,7 @@ jobs: run: ./common/ci/configure.sh - name: Build run: | - cd $BUILD_DIR + cd "$BUILD_DIR" make - name: Collect initial coverage if: ${{ matrix.polybar_build_type == 'tests' }} @@ -134,17 +134,17 @@ jobs: - name: Tests if: ${{ matrix.polybar_build_type == 'tests' }} run: | - cd $BUILD_DIR + cd "$BUILD_DIR" make check - name: Collect coverage if: ${{ matrix.polybar_build_type == 'tests' }} run: | lcov --capture --no-external --directory . -o cov_tests.info lcov --add-tracefile cov_base.info --add-tracefile cov_tests.info -o cov_total.info - lcov --remove cov_total.info ${PWD}'/build/*' ${PWD}'/tests/*' ${PWD}'/lib/*' -o cov.info + lcov --remove cov_total.info "${PWD}/build/*" "${PWD}/tests/*" "${PWD}/lib/*" -o cov.info - name: Upload Coverage if: ${{ matrix.polybar_build_type == 'tests' }} - uses: codecov/codecov-action@v2 + uses: codecov/codecov-action@v3 with: flags: unittests files: ./cov.info diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3a8d34c5..4ac2f512 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,9 +31,11 @@ jobs: RELEASE_TAG=${GITHUB_REF#refs/tags/} fi echo "Publishing Version $RELEASE_TAG" - echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV" - echo "POLYBAR_DIR=polybar-$RELEASE_TAG" >> "$GITHUB_ENV" - echo "POLYBAR_ARCHIVE=polybar-$RELEASE_TAG.tar.gz" >> "$GITHUB_ENV" + { + echo "RELEASE_TAG=$RELEASE_TAG" + echo "POLYBAR_DIR=polybar-$RELEASE_TAG" + echo "POLYBAR_ARCHIVE=polybar-$RELEASE_TAG.tar.gz" + } >> "$GITHUB_ENV" # Checks out the target tag - uses: actions/checkout@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index a901db9c..5703aaac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,10 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Breaking -- `custom/script`: now doesn't hide failing script if it's output is not changing ([`#2636`](https://github.com/polybar/polybar/issues/2636)). Somewhat similar behaviour can be imitated with `format-fail`, if necessary. +- `custom/script`: + - now doesn't hide failing script if it's output is not changing ([`#2636`](https://github.com/polybar/polybar/issues/2636)). Somewhat similar behaviour can be imitated with `format-fail`, if necessary. + - If the `exec` command produced no output and exited with a non-zero exit code the module is no longer completely empty, but just has an empty `%output%` token. If you relied on this behavior to hide the module under certain circumstances, make sure the script exits with an exit code of zero. ([`#2857`](https://github.com/polybar/polybar/discussions/2857), [`#2861`](https://github.com/polybar/polybar/pull/2861)) ### Build -- Respect `CMAKE_INSTALL_PREFIX` when installing default config ([`#2770`](https://github.com/polybar/polybar/pull/2770)) +- Respect `CMAKE_INSTALL_PREFIX` when installing default config ([`#2770`](https://github.com/polybar/polybar/pull/2770), [`#2917`](https://github.com/polybar/polybar/pull/2917)) +- Change default `CMAKE_INSTALL_PREFIX` to `/usr`. Installations with default flags will now go into `/usr` instead of `/usr/local` ([`#2917`](https://github.com/polybar/polybar/pull/2917)) - Bump C++ version to C++17 ([`#2847`](https://github.com/polybar/polybar/pull/2847)) ### Deprecated @@ -33,6 +36,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `enable-struts` option in bar section to enable/disable struts ([`#2769`](https://github.com/polybar/polybar/issues/2769), [`#2844`](https://github.com/polybar/polybar/pull/2844)) by [@VanillaViking](https://github.com/VanillaViking). ### Changed +- `custom/script`: + - No longer produces a completely empty module if the `exec` command failed. It only produces an empty module if the script had a zero exit code. ([`#2857`](https://github.com/polybar/polybar/discussions/2857), [`#2861`](https://github.com/polybar/polybar/pull/2861)) + - Bumped the script polling interval (not related to the `interval` setting) to decrease wakeups. Polybar may take slightly longer to shut down. [`#2879`](https://github.com/polybar/polybar/pull/2879) - `internal/fs`: Use `/` as a fallback if no mountpoints are specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2705`](https://github.com/polybar/polybar/pull/2705)) - `internal/backlight`: - Detect backlight if none specified ([`#2572`](https://github.com/polybar/polybar/issues/2572), [`#2728`](https://github.com/polybar/polybar/pull/2728)) @@ -49,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Error reporting for deprecated config values ([`#2724`](https://github.com/polybar/polybar/issues/2724)) - Also monitor include-files for changes when --reload is set ([`#675`](https://github.com/polybar/polybar/issues/675), [`#2759`](https://github.com/polybar/polybar/pull/2759)) - `internal/xwindow`: module does not crash when a tag is not provided in format ([`#2826`](https://github.com/polybar/polybar/issues/2826), [`#2833`](https://github.com/polybar/polybar/pull/2833)) by [@VanillaViking](https://github.com/VanillaViking) +- `internal/i3`: module errors when i3 has negative gaps ([`#2888`](https://github.com/polybar/polybar/issues/2888), [`#2889`](https://github.com/polybar/polybar/pull/2889)) ## [3.6.3] - 2022-05-04 ### Fixed diff --git a/CMakeLists.txt b/CMakeLists.txt index 0979f8af..acb58b6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,14 @@ else() set(APP_VERSION "${version_txt}") endif() +# Set the default installation prefix to /usr +# Otherwise the default value is /usr/local which causes the default config +# file to be installed to /usr/local/etc, with /usr, cmake has special handling +# for this. +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Project-default installation prefix" FORCE) +endif() + list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${PROJECT_SOURCE_DIR}/cmake/common @@ -60,10 +68,9 @@ if(BUILD_TESTS) add_subdirectory(tests) endif() - if(BUILD_CONFIG) install(FILES ${CMAKE_SOURCE_DIR}/doc/config.ini - DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/${PROJECT_NAME} + DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/${PROJECT_NAME} COMPONENT config) endif() diff --git a/cmake/05-summary.cmake b/cmake/05-summary.cmake index 5f71936f..c649647d 100644 --- a/cmake/05-summary.cmake +++ b/cmake/05-summary.cmake @@ -13,11 +13,12 @@ if (BUILD_DOC) endif() message(STATUS " Install Paths:") -message_colored(STATUS " PREFIX: ${CMAKE_INSTALL_PREFIX}" "32") -message_colored(STATUS " BINDIR: ${CMAKE_INSTALL_FULL_BINDIR}" "32") -message_colored(STATUS " DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}" "32") -message_colored(STATUS " DOCDIR: ${CMAKE_INSTALL_FULL_DOCDIR}" "32") -message_colored(STATUS " MANDIR: ${CMAKE_INSTALL_FULL_MANDIR}" "32") +message_colored(STATUS " PREFIX: ${CMAKE_INSTALL_PREFIX}" "32") +message_colored(STATUS " BINDIR: ${CMAKE_INSTALL_FULL_BINDIR}" "32") +message_colored(STATUS " DATADIR: ${CMAKE_INSTALL_FULL_DATADIR}" "32") +message_colored(STATUS " DOCDIR: ${CMAKE_INSTALL_FULL_DOCDIR}" "32") +message_colored(STATUS " MANDIR: ${CMAKE_INSTALL_FULL_MANDIR}" "32") +message_colored(STATUS " SYSCONFDIR: ${CMAKE_INSTALL_FULL_SYSCONFDIR}" "32") message(STATUS " Targets:") colored_option(" polybar" BUILD_POLYBAR) diff --git a/lib/i3ipcpp b/lib/i3ipcpp index 86ddf710..85b444c0 160000 --- a/lib/i3ipcpp +++ b/lib/i3ipcpp @@ -1 +1 @@ -Subproject commit 86ddf7102c6903ae0cc543071e2d375403fc0727 +Subproject commit 85b444c06267fbae8e9e06877cae6f03b42acbfb diff --git a/src/adapters/script_runner.cpp b/src/adapters/script_runner.cpp index 92dcbc11..c7ffb26a 100644 --- a/src/adapters/script_runner.cpp +++ b/src/adapters/script_runner.cpp @@ -109,7 +109,7 @@ script_runner::interval script_runner::run() { * For non-tailed scripts, we only use the first line. However, to ensure interruptability when the module shuts * down, we still need to continue polling. */ - if (io_util::poll_read(fd, 25) && !got_output) { + if (io_util::poll_read(fd, 250) && !got_output) { changed = set_output(cmd.readline()); got_output = true; } @@ -155,7 +155,7 @@ script_runner::interval script_runner::run_tail() { assert(fd != -1); while (!m_stopping && cmd.is_running() && !io_util::poll(fd, POLLHUP, 0)) { - if (io_util::poll_read(fd, 25)) { + if (io_util::poll_read(fd, 250)) { auto changed = set_output(cmd.readline()); if (changed) { diff --git a/src/modules/script.cpp b/src/modules/script.cpp index ecdb0f0a..4ff9bebf 100644 --- a/src/modules/script.cpp +++ b/src/modules/script.cpp @@ -93,7 +93,7 @@ namespace modules { m_exit_status = data.exit_status; - if (data.output.empty()) { + if (data.output.empty() && m_exit_status == 0) { return ""; } diff --git a/src/x11/xresources.cpp b/src/x11/xresources.cpp index 49d4aa2e..4f4e5d53 100644 --- a/src/x11/xresources.cpp +++ b/src/x11/xresources.cpp @@ -1,5 +1,7 @@ #include "x11/xresources.hpp" +#include "common.hpp" + POLYBAR_NS template <>