From 0e23b18f72615b67ad71c80e194bc1afed153bab Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 02:44:45 +0200 Subject: [PATCH 01/22] fix(ci): missing dependency wayland-scanner --- ci/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/Dockerfile b/ci/Dockerfile index d1b3965..c585b6d 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -21,7 +21,8 @@ RUN pacman -S --noconfirm \ qt6-declarative \ qt6-shadertools \ qt6-5compat \ - qt6-canvaspainter + qt6-canvaspainter \ + hyprwayland-scanner # Project-specific dependencies RUN pacman -S --noconfirm \ From e50a28b8772415909969895417d26e73a7a16855 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 02:44:45 +0200 Subject: [PATCH 02/22] refactor(workflows): combined steps where it makes sense --- .gitea/workflows/cpp.yml | 20 +------ .gitea/workflows/js-ts.yml | 16 +----- .gitea/workflows/python.yml | 6 +- .gitea/workflows/rust.yml | 107 +++++++----------------------------- 4 files changed, 26 insertions(+), 123 deletions(-) diff --git a/.gitea/workflows/cpp.yml b/.gitea/workflows/cpp.yml index 90eb487..b1158ab 100644 --- a/.gitea/workflows/cpp.yml +++ b/.gitea/workflows/cpp.yml @@ -20,28 +20,10 @@ jobs: -exec clang-format -i --style=file {} + git diff --exit-code && echo "clang-format: passed" - build: + build & lint: runs-on: alpine container: image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Configure - run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release - - - name: Build - run: ninja -C build - - clang-tidy: - runs-on: alpine - container: - image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest - steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.gitea/workflows/js-ts.yml b/.gitea/workflows/js-ts.yml index 639adaf..ce8672f 100644 --- a/.gitea/workflows/js-ts.yml +++ b/.gitea/workflows/js-ts.yml @@ -4,7 +4,7 @@ on: pull_request: jobs: - fmt: + fmt & lint: runs-on: alpine container: node:26-alpine @@ -24,20 +24,6 @@ jobs: else echo "No JS/TS files found" fi - - lint: - runs-on: alpine - container: node:26-alpine - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install tools - run: | - apk add --no-cache \ - git - - name: ESLint run: | if [ -n "$(find . \( -iname "*.js" -o -iname "*.jsx" -o -iname "*.ts" -o -iname "*.tsx" -o -iname "*.mjs" -o -iname "*.cjs" \) -print -quit)" ]; then diff --git a/.gitea/workflows/python.yml b/.gitea/workflows/python.yml index 06377a8..ac44cd9 100644 --- a/.gitea/workflows/python.yml +++ b/.gitea/workflows/python.yml @@ -7,7 +7,7 @@ on: pull_request: jobs: - static: + fmt & lint: runs-on: debian container: node:26-trixie-slim @@ -33,7 +33,7 @@ jobs: . .venv/bin/activate ruff check . - verify: + test & nuitka build: if: always() runs-on: debian container: node:26-trixie-slim @@ -64,4 +64,4 @@ jobs: - name: Nuitka module check run: | . .venv/bin/activate - nuitka --module --include-package=zshell cli/src/zshell/ \ No newline at end of file + nuitka --module --include-package=zshell cli/src/zshell/ diff --git a/.gitea/workflows/rust.yml b/.gitea/workflows/rust.yml index da2d4bf..a1e9e38 100644 --- a/.gitea/workflows/rust.yml +++ b/.gitea/workflows/rust.yml @@ -3,8 +3,9 @@ name: Rust on: pull_request: +# jobs can be separated if we integrate tests jobs: - build: + build, clippy & fmt: runs-on: alpine container: node:26-alpine env: @@ -34,7 +35,9 @@ jobs: apk add --no-cache \ git \ cargo \ - rust + rust \ + rust-clippy \ + rustfmt - name: Cargo check run: | @@ -50,90 +53,6 @@ jobs: else echo "No Rust project found" fi - - fmt: - runs-on: alpine - container: node:26-alpine - env: - CARGO_HOME: ${{ github.workspace }}/.cargo - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache cargo packages - uses: actions/cache@v4 - env: - cache-name: cache-cargo-packages - with: - path: | - .cargo/registry - .cargo/git - target - key: rust-fmt-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - rust-${{ runner.os }}-build-${{ env.cache-name }}- - rust-${{ runner.os }}-build- - rust- - - - name: Install tools - run: | - apk add --no-cache \ - git \ - cargo \ - rust \ - rustfmt - - - name: Format check - run: | - if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then - status=0 - for manifest in $(find . -name "Cargo.toml"); do - cargo fmt --manifest-path "$manifest" --check && \ - echo "$manifest: formatting OK" || \ - { echo "$manifest: needs formatting"; status=1; } - done - exit $status - elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then - echo "Rust files found but no Cargo.toml" - exit 1 - else - echo "No Rust project found" - fi - - clippy: - runs-on: alpine - container: node:26-alpine - env: - CARGO_HOME: ${{ github.workspace }}/.cargo - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache cargo packages - uses: actions/cache@v4 - env: - cache-name: cache-cargo-packages - with: - path: | - .cargo/registry - .cargo/git - target - key: rust-clippy-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - rust-${{ runner.os }}-build-${{ env.cache-name }}- - rust-${{ runner.os }}-build- - rust- - - - name: Install tools - run: | - apk add --no-cache \ - git \ - cargo \ - rust \ - rust-clippy - - name: Clippy run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then @@ -150,3 +69,19 @@ jobs: else echo "No Rust project found" fi + - name: Format check + run: | + if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then + status=0 + for manifest in $(find . -name "Cargo.toml"); do + cargo fmt --manifest-path "$manifest" --check && \ + echo "$manifest: formatting OK" || \ + { echo "$manifest: needs formatting"; status=1; } + done + exit $status + elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then + echo "Rust files found but no Cargo.toml" + exit 1 + else + echo "No Rust project found" + fi From 5db2718b04d5691a919da4aaa98464ec08c92ad9 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 03:09:34 +0200 Subject: [PATCH 03/22] ci: rework Dockerfile image + buildx dep added --- .gitea/workflows/ci-image.yml | 2 +- ci/Dockerfile | 79 +++++++++++------------------------ 2 files changed, 26 insertions(+), 55 deletions(-) diff --git a/.gitea/workflows/ci-image.yml b/.gitea/workflows/ci-image.yml index 3ee05f3..147a3df 100644 --- a/.gitea/workflows/ci-image.yml +++ b/.gitea/workflows/ci-image.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Install Docker CLI - run: apk add --no-cache docker-cli + run: apk add --no-cache docker-cli docker-cli-buildx - name: Login to registry run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.aramjonghu.dev --username aramjonghu --password-stdin diff --git a/ci/Dockerfile b/ci/Dockerfile index c585b6d..7241bdd 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -1,57 +1,28 @@ FROM archlinux:latest -RUN pacman -Syyu --noconfirm +RUN pacman -Syu --noconfirm \ + && pacman -S --needed --noconfirm \ + base-devel cmake ninja clang lld nodejs tree-sitter \ + jkqtplotter cmark-gfm git wayland-protocols \ + qt6-base qt6-declarative qt6-shadertools qt6-5compat \ + qt6-canvaspainter qt6-wayland qt5-wayland\ + libqalculate pipewire aubio cava lm_sensors glib2 \ + && pacman -Scc --noconfirm -# Build toolchain -RUN pacman -S --noconfirm \ - base-devel \ - cmake \ - ninja \ - clang \ - lld \ - nodejs \ - tree-sitter \ - jkqtplotter \ - cmark-gfm \ - git - -# Qt6 -RUN pacman -S --noconfirm \ - qt6-base \ - qt6-declarative \ - qt6-shadertools \ - qt6-5compat \ - qt6-canvaspainter \ - hyprwayland-scanner - -# Project-specific dependencies -RUN pacman -S --noconfirm \ - libqalculate \ - pipewire \ - aubio \ - cava \ - lm_sensors \ - glib2 - -# AUR: libcava (provides development headers for cava) -RUN pacman -Syu --noconfirm && \ - pacman -S --needed --noconfirm \ - sudo \ - meson \ - autoconf-archive \ - python-tqdm && \ - useradd -m builder && \ - echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers - -RUN for i in 1 2 3 4 5; do \ - rm -rf /tmp/libcava && \ - git clone --depth 1 https://aur.archlinux.org/libcava.git /tmp/libcava && \ - break || sleep 5; \ - done && \ - test -d /tmp/libcava/.git && \ - chown -R builder /tmp/libcava - -RUN su builder -c "cd /tmp/libcava && makepkg -si --noconfirm" && \ - rm -rf /tmp/libcava && \ - userdel -r builder && \ - sed -i '/^builder/d' /etc/sudoers +RUN pacman -Syu --noconfirm \ + && pacman -S --needed --noconfirm \ + sudo meson autoconf-archive python-tqdm \ + && useradd -m builder \ + && printf '%s\n' 'builder ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/builder \ + && chmod 0440 /etc/sudoers.d/builder \ + && for i in 1 2 3 4 5; do \ + rm -rf /tmp/libcava; \ + if git clone --depth 1 https://aur.archlinux.org/libcava.git /tmp/libcava; then break; fi; \ + sleep 5; \ + done \ + && test -d /tmp/libcava/.git \ + && chown -R builder:builder /tmp/libcava \ + && su builder -c "cd /tmp/libcava && makepkg -si --noconfirm" \ + && rm -rf /tmp/libcava /etc/sudoers.d/builder \ + && userdel -r builder \ + && pacman -Scc --noconfirm From e12a047da2be7228d815ade649c2aac8ccfb59fa Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 03:09:34 +0200 Subject: [PATCH 04/22] format(clang): make cpp-fmt result --- Plugins/ZShell/Blobs/blobinvertedrect.cpp | 2 +- Plugins/ZShell/Blobs/blobinvertedrect.hpp | 8 ++++++-- Plugins/ZShell/Blobs/blobshape.cpp | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Plugins/ZShell/Blobs/blobinvertedrect.cpp b/Plugins/ZShell/Blobs/blobinvertedrect.cpp index 0e4336c..800d975 100644 --- a/Plugins/ZShell/Blobs/blobinvertedrect.cpp +++ b/Plugins/ZShell/Blobs/blobinvertedrect.cpp @@ -218,7 +218,7 @@ void BlobInvertedRect::outerCornerRadii(float out[4]) const { const auto base = std::min(static_cast(m_outerRadius), maxR); out[0] = std::min( m_outerTopRightRadius >= 0 ? static_cast(m_outerTopRightRadius) - : base, + : base, maxR); out[1] = std::min( m_outerBottomRightRadius >= 0 diff --git a/Plugins/ZShell/Blobs/blobinvertedrect.hpp b/Plugins/ZShell/Blobs/blobinvertedrect.hpp index 60121d0..d3e1fb9 100644 --- a/Plugins/ZShell/Blobs/blobinvertedrect.hpp +++ b/Plugins/ZShell/Blobs/blobinvertedrect.hpp @@ -60,11 +60,15 @@ class BlobInvertedRect : public BlobShape { void setOuterRadius(qreal v); // Per-corner outer radii. -1 falls back to outerRadius (mirrors BlobRect). - [[nodiscard]] qreal outerTopLeftRadius() const { return m_outerTopLeftRadius; } + [[nodiscard]] qreal outerTopLeftRadius() const { + return m_outerTopLeftRadius; + } void setOuterTopLeftRadius(qreal v); - [[nodiscard]] qreal outerTopRightRadius() const { return m_outerTopRightRadius; } + [[nodiscard]] qreal outerTopRightRadius() const { + return m_outerTopRightRadius; + } void setOuterTopRightRadius(qreal v); diff --git a/Plugins/ZShell/Blobs/blobshape.cpp b/Plugins/ZShell/Blobs/blobshape.cpp index 33fd5b4..59978a3 100644 --- a/Plugins/ZShell/Blobs/blobshape.cpp +++ b/Plugins/ZShell/Blobs/blobshape.cpp @@ -240,8 +240,7 @@ void BlobShape::updatePolish() { m_cachedInvertedRadius = 0; memset(m_cachedInvertedOuter, 0, sizeof(m_cachedInvertedOuter)); memset(m_cachedInvertedInner, 0, sizeof(m_cachedInvertedInner)); - memset( - m_cachedInvertedOuterRadii, 0, sizeof(m_cachedInvertedOuterRadii)); + memset(m_cachedInvertedOuterRadii, 0, sizeof(m_cachedInvertedOuterRadii)); auto* inv = m_group->invertedRect(); if (inv) { From ef4d849b4b5df9f928817826484097bb86ad5eef Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 03:09:34 +0200 Subject: [PATCH 05/22] feat(makefile): makefile build & install + progress on cpp and py --- makefile | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 makefile diff --git a/makefile b/makefile new file mode 100644 index 0000000..c7d3ce6 --- /dev/null +++ b/makefile @@ -0,0 +1,36 @@ +BUILD ?= cmake -B build -G Ninja +INSTALL ?= $(BUILD) \ + && ninja -C build \ + && sudo ninja -C build install + +.DEFAULT_GOAL := help + +help: + @echo "build cmake builds into build directory" + +build: + $(BUILD) + +install: + $(INSTALL) + +# TODO: Anything below is not ready + +cpp-fmt: + find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \ + -not -path './build/*' \ + -exec clang-format -i --style=file {} + + +# cpp-lint needs adjustments in ci and here + +py-fmt: + ruff format --check + +py-lint: + ruff check ./cli + +py-check: + basedpyright + +py-test: + python -m pytest ./cli/src/tests/ -v From 1364b5ed1aed05c27ae74cc8c40b2b303fc6f45e Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 23 Oct 2026 16:52:22 +0200 Subject: [PATCH 06/22] feat(makefile): C++, Python, and Rust checks included (incomplete) --- makefile | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 9 deletions(-) diff --git a/makefile b/makefile index c7d3ce6..79920f3 100644 --- a/makefile +++ b/makefile @@ -1,12 +1,34 @@ -BUILD ?= cmake -B build -G Ninja -INSTALL ?= $(BUILD) \ - && ninja -C build \ - && sudo ninja -C build install +BUILD ?= cmake -B build -G Ninja +NINJA ?= ninja -C build +COMPILE ?= $(BUILD) && $(NINJA) +INSTALL ?= $(BUILD) && $(NINJA) && sudo ninja -C build install + +CPPFMT ?= find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -not -path './build/*' -exec clang-format -i --style=file {} + + +NUITKA ?= nuitka --module --include-package=zshell cli/src/zshell/ --output-dir=cli/ .DEFAULT_GOAL := help +# string is misaligned to align when run in terminal help: - @echo "build cmake builds into build directory" + @echo "build cmake builds into build directory" + @echo "install cmake builds, compiles and installs into filesystem" + @echo "compile cmake builds and compiles C++ code" + @echo "cpp-fmt format C++ code with clang-format" + @echo "cpp-lint lint check C++ code with clang-tidy" + @echo "cpp-compile alias to make compile" + @echo "py-fmt format Python code with ruff" + @echo "py-lint lint check Python code with ruff" + @echo "py-check lsp and typecheck all Python code using Basedpyright" + @echo "py-test run all Python tests using Pytest" + @echo "py-compile compiles Python code using Nuitka" + @echo "rs-compile compiles Rust code" + @echo "rs-format formats Rust code with Rustfmt" + @echo "rs-lint lint check Rust code with Clippy" + @echo "rs-test runs all Rust tests" + @echo "check-cpp runs all C++ checks" + @echo "check-py runs all Python checks" + @echo "check-rs runs all Rust checks" build: $(BUILD) @@ -14,15 +36,21 @@ build: install: $(INSTALL) +compile: + $(COMPILE) + # TODO: Anything below is not ready +# C++ cpp-fmt: - find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \ - -not -path './build/*' \ - -exec clang-format -i --style=file {} + + $(CPPFMT) # cpp-lint needs adjustments in ci and here +cpp-compile: + $(COMPILE) + +# Python py-fmt: ruff format --check @@ -33,4 +61,43 @@ py-check: basedpyright py-test: - python -m pytest ./cli/src/tests/ -v + python -m pytest ./cli/tests/ -v + +# Want to use gcc, clang or zig C compiler instead? Output directory? +py-compile: + $(NUITKA) + +# Rust +rs-compile: + cd ./zshell-img-tools/ && cargo run + +rs-fmt: + cd ./zshell-img-tools/ && cargo fmt && echo "formatted!" + +rs-lint: + cd ./zshell-img-tools/ && cargo clippy + +rs-test: + cd ./zshell-img-tools/ && cargo test + +# Qml + + +# Full checks +check-cpp: + $(MAKE) cpp-fmt + $(MAKE) cpp-lint + $(MAKE) install + +check-rs: + $(MAKE) rs-fmt + $(MAKE) rs-lint + $(MAKE) rs-test + $(MAKE) rs-compile + +check-py: + $(MAKE) py-fmt + $(MAKE) py-lint + $(MAKE) py-test + $(MAKE) py-check + $(MAKE) py-compile From 24825250bbffd77b408bb3ddaaad4f7b57b36a33 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sat, 24 Oct 2026 00:50:47 +0200 Subject: [PATCH 07/22] feat(makefile): added qmlformat + install -> compile in cpp step --- makefile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 79920f3..9702f76 100644 --- a/makefile +++ b/makefile @@ -26,6 +26,7 @@ help: @echo "rs-format formats Rust code with Rustfmt" @echo "rs-lint lint check Rust code with Clippy" @echo "rs-test runs all Rust tests" + @echo "qml-fmt format QML code with qmlformat" @echo "check-cpp runs all C++ checks" @echo "check-py runs all Python checks" @echo "check-rs runs all Rust checks" @@ -81,13 +82,14 @@ rs-test: cd ./zshell-img-tools/ && cargo test # Qml - +qml-fmt: + find -name '*.qml' -exec /usr/lib/qt6/bin/qmlformat -i {} + # Full checks check-cpp: $(MAKE) cpp-fmt $(MAKE) cpp-lint - $(MAKE) install + $(MAKE) compile check-rs: $(MAKE) rs-fmt From 012d2777c2750b1d2cb95823f77a287ed794d1d2 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 01:32:33 +0200 Subject: [PATCH 08/22] chore(Dockerfile): add future dependencies --- ci/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/Dockerfile b/ci/Dockerfile index 7241bdd..a590ac3 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -3,9 +3,9 @@ FROM archlinux:latest RUN pacman -Syu --noconfirm \ && pacman -S --needed --noconfirm \ base-devel cmake ninja clang lld nodejs tree-sitter \ - jkqtplotter cmark-gfm git wayland-protocols \ + jkqtplotter cmark-gfm git wayland-protocols ffmpeg mpv \ qt6-base qt6-declarative qt6-shadertools qt6-5compat \ - qt6-canvaspainter qt6-wayland qt5-wayland\ + qt6-canvaspainter qt6-wayland qt5-wayland \ libqalculate pipewire aubio cava lm_sensors glib2 \ && pacman -Scc --noconfirm From 163370354a9c0589e26dd648e0ca8ac4eb4a1631 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 01:39:13 +0200 Subject: [PATCH 09/22] fix(clang-tidy): make cpp-lint has proper clang-tidy check --- makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index 9702f76..c264942 100644 --- a/makefile +++ b/makefile @@ -4,6 +4,7 @@ COMPILE ?= $(BUILD) && $(NINJA) INSTALL ?= $(BUILD) && $(NINJA) && sudo ninja -C build install CPPFMT ?= find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -not -path './build/*' -exec clang-format -i --style=file {} + +CPPLINT ?= run-clang-tidy -p build -j "$$(nproc)" -source-filter="^$$(pwd)/Plugins/" -header-filter=".*Plugins/.*" -removed-arg=-mno-direct-extern-access NUITKA ?= nuitka --module --include-package=zshell cli/src/zshell/ --output-dir=cli/ @@ -46,7 +47,8 @@ compile: cpp-fmt: $(CPPFMT) -# cpp-lint needs adjustments in ci and here +cpp-lint: + $(CPPLINT) cpp-compile: $(COMPILE) From 34585a639b648a742a36d33b5ce1816ea5dd566c Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 02:46:19 +0200 Subject: [PATCH 10/22] chore(gitignore): nuitka compile files ignored and categorized --- .gitignore | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c6ff3ec..af40aa1 100644 --- a/.gitignore +++ b/.gitignore @@ -16,8 +16,13 @@ dist/ **/test-plugins/ **/Charts/ network-dev/ -**/zshell.build/ **/zshell.dist/ + +# Nuitka compile +**/zshell.pyi +**/zshell.cpython-* +**/zshell.build/ + .opencode/ run-agent.sh AGENTS.md From b86f8653968cf5e758f150818447d2894cb4eb34 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 02:02:49 +0100 Subject: [PATCH 11/22] chore(gitignore): ordering known files and directories --- .gitignore | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index af40aa1..7935e69 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,7 @@ -**/__pycache__/ ./result/ .pyre/ -.cache/ -.venv/ -.qmlls.ini -build/ -compile_commands.json -testpython pkg/ *.tar.* -uv.lock -.qtcreator/ dist/ **/target/ **/test-plugins/ @@ -18,11 +9,27 @@ dist/ network-dev/ **/zshell.dist/ +# Qml +.qtcreator/ +.qmlls.ini + +# CMake compile artifacts +.cache/ +compile_commands.json +build/ + +# Python +uv.lock +testpython +.venv/ +**/__pycache__/ + # Nuitka compile **/zshell.pyi **/zshell.cpython-* **/zshell.build/ +# Agents stuff .opencode/ run-agent.sh AGENTS.md From 630b05ff2c8bf47405c3380bc15958e964660523 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 02:19:20 +0100 Subject: [PATCH 12/22] feat(makefile): added no nuitka option for cpp-compile task --- makefile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/makefile b/makefile index c264942..a4ec05a 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,5 @@ BUILD ?= cmake -B build -G Ninja +NONUITKA ?= cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_MODULES="plugin;shell;m3shapes" NINJA ?= ninja -C build COMPILE ?= $(BUILD) && $(NINJA) INSTALL ?= $(BUILD) && $(NINJA) && sudo ninja -C build install @@ -17,7 +18,7 @@ help: @echo "compile cmake builds and compiles C++ code" @echo "cpp-fmt format C++ code with clang-format" @echo "cpp-lint lint check C++ code with clang-tidy" - @echo "cpp-compile alias to make compile" + @echo "cpp-compile similar to make compile, but excludes Nuitka from compiling python" @echo "py-fmt format Python code with ruff" @echo "py-lint lint check Python code with ruff" @echo "py-check lsp and typecheck all Python code using Basedpyright" @@ -41,8 +42,6 @@ install: compile: $(COMPILE) -# TODO: Anything below is not ready - # C++ cpp-fmt: $(CPPFMT) @@ -51,7 +50,7 @@ cpp-lint: $(CPPLINT) cpp-compile: - $(COMPILE) + $(NONUITKA) # Python py-fmt: From 9e97569467ba63daaf49a5014a320be3c5fa8fec Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Sun, 25 Oct 2026 02:25:02 +0100 Subject: [PATCH 13/22] fix(ci): cpp clang-tidy now properly reads non-build files only --- .gitea/workflows/cpp.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/cpp.yml b/.gitea/workflows/cpp.yml index b1158ab..cca38ae 100644 --- a/.gitea/workflows/cpp.yml +++ b/.gitea/workflows/cpp.yml @@ -40,5 +40,7 @@ jobs: run: | sed -i 's/-mno-direct-extern-access //g' build/compile_commands.json set -o pipefail - run-clang-tidy -p build -j $(nproc) -header-filter="Plugins/.*" 2>&1 | \ - grep -v 'Suppressed\|non-user\|non-system\|unknown argument.*mno-direct\|Found compiler error\|warnings generated\.\|^Use -header-filter' + run-clang-tidy -p build -j "$(nproc)" \ + -source-filter="^$(pwd)/Plugins/" \ + -header-filter=".*Plugins/.*" \ + -removed-arg=-mno-direct-extern-access From fda39fc4c0f04602ad4175a2d8587d2143e89f63 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 02:19:50 +0100 Subject: [PATCH 14/22] feat(makefile): adds a make formatter as task runner --- makefile | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/makefile b/makefile index a4ec05a..17a224f 100644 --- a/makefile +++ b/makefile @@ -1,13 +1,13 @@ -BUILD ?= cmake -B build -G Ninja -NONUITKA ?= cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_MODULES="plugin;shell;m3shapes" -NINJA ?= ninja -C build -COMPILE ?= $(BUILD) && $(NINJA) -INSTALL ?= $(BUILD) && $(NINJA) && sudo ninja -C build install +BUILD ?= cmake -B build -G Ninja +NONUITKA ?= cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_MODULES="plugin;shell;m3shapes" +NINJA ?= ninja -C build +COMPILE ?= $(BUILD) && $(NINJA) +INSTALL ?= $(BUILD) && $(NINJA) && sudo ninja -C build install -CPPFMT ?= find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -not -path './build/*' -exec clang-format -i --style=file {} + -CPPLINT ?= run-clang-tidy -p build -j "$$(nproc)" -source-filter="^$$(pwd)/Plugins/" -header-filter=".*Plugins/.*" -removed-arg=-mno-direct-extern-access +CPPFMT ?= find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) -not -path './build/*' -exec clang-format -i --style=file {} + +CPPLINT ?= run-clang-tidy -p build -j "$$(nproc)" -source-filter="^$$(pwd)/Plugins/" -header-filter=".*Plugins/.*" -removed-arg=-mno-direct-extern-access -NUITKA ?= nuitka --module --include-package=zshell cli/src/zshell/ --output-dir=cli/ +NUITKA ?= nuitka --module --include-package=zshell cli/src/zshell/ --output-dir=cli/ .DEFAULT_GOAL := help @@ -32,6 +32,7 @@ help: @echo "check-cpp runs all C++ checks" @echo "check-py runs all Python checks" @echo "check-rs runs all Rust checks" + @echo "fmt-make formats the makefile using mbake (in case you like spaces instead of tabs)" build: $(BUILD) @@ -104,3 +105,6 @@ check-py: $(MAKE) py-test $(MAKE) py-check $(MAKE) py-compile + +fmt-make: + mbake format makefile From ab4a662013d63ed3d9b106d4d584f658c4922a06 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 02:46:16 +0100 Subject: [PATCH 15/22] ci(cpp): introduce caching cmake and build + format optimization --- .gitea/workflows/cpp.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/cpp.yml b/.gitea/workflows/cpp.yml index cca38ae..f990c90 100644 --- a/.gitea/workflows/cpp.yml +++ b/.gitea/workflows/cpp.yml @@ -17,8 +17,7 @@ jobs: run: | find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \ -not -path './build/*' \ - -exec clang-format -i --style=file {} + - git diff --exit-code && echo "clang-format: passed" + -exec clang-format --dry-run -Werror --style=file {} + build & lint: runs-on: alpine @@ -30,11 +29,29 @@ jobs: with: fetch-depth: 0 + - name: Cache CMake build + uses: actions/cache@v4 + with: + path: build + key: cpp-build-${{ hashFiles('CMakeLists.txt', '**/CMakeLists.txt') }} + restore-keys: | + cpp-build- + + - name: Cache ccache + uses: actions/cache@v4 + with: + path: ~/.ccache + key: ccache-${{ runner.os }}-${{ github.sha }} + restore-keys: | + ccache-${{ runner.os }}- + - name: Configure run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release - name: Build run: ninja -C build + env: + CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: clang-tidy run: | From 388482c6202b991b04cbf0c7c525ac0f1b228b20 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 02:46:16 +0100 Subject: [PATCH 16/22] ci(rust): fixes and optimizations - removes cargo check since the clippy step builds already - image switched to rust:alpine - less correctness during build for speedier compilation --- .gitea/workflows/rust.yml | 40 +++++++++------------------------------ 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/.gitea/workflows/rust.yml b/.gitea/workflows/rust.yml index a1e9e38..4c84f7e 100644 --- a/.gitea/workflows/rust.yml +++ b/.gitea/workflows/rust.yml @@ -3,11 +3,10 @@ name: Rust on: pull_request: -# jobs can be separated if we integrate tests jobs: - build, clippy & fmt: + clippy & fmt: runs-on: alpine - container: node:26-alpine + container: rust:alpine env: CARGO_HOME: ${{ github.workspace }}/.cargo @@ -17,48 +16,26 @@ jobs: - name: Cache cargo packages uses: actions/cache@v4 - env: - cache-name: cache-cargo-packages with: path: | .cargo/registry .cargo/git target - key: rust-build-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }} + key: rust-build-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - rust-${{ runner.os }}-build-${{ env.cache-name }}- - rust-${{ runner.os }}-build- - rust- + rust-${{ runner.os }}-cargo- - name: Install tools run: | - apk add --no-cache \ - git \ - cargo \ - rust \ - rust-clippy \ - rustfmt + apk add --no-cache git + rustup component add clippy rustfmt - - name: Cargo check - run: | - if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then - for manifest in $(find . -name "Cargo.toml"); do - cargo check --manifest-path "$manifest" && \ - echo "$manifest: check passed" || \ - { echo "$manifest: check failed"; exit 1; } - done - elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then - echo "Rust files found but no Cargo.toml" - exit 1 - else - echo "No Rust project found" - fi - - name: Clippy + - name: Clippy (with compile check) run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then status=0 for manifest in $(find . -name "Cargo.toml"); do - cargo clippy --manifest-path "$manifest" --all-targets --all-features -- -D warnings && \ + cargo clippy --manifest-path "$manifest" -- -D warnings && \ echo "$manifest: Clippy passed" || \ { echo "$manifest: Clippy failed"; status=1; } done @@ -69,6 +46,7 @@ jobs: else echo "No Rust project found" fi + - name: Format check run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then From 82c307de1194a9685f1215282d2608453a24a430 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 02:50:39 +0100 Subject: [PATCH 17/22] fix(Dockerfile): adds mpv dep --- ci/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/Dockerfile b/ci/Dockerfile index a590ac3..310f217 100644 --- a/ci/Dockerfile +++ b/ci/Dockerfile @@ -5,7 +5,7 @@ RUN pacman -Syu --noconfirm \ base-devel cmake ninja clang lld nodejs tree-sitter \ jkqtplotter cmark-gfm git wayland-protocols ffmpeg mpv \ qt6-base qt6-declarative qt6-shadertools qt6-5compat \ - qt6-canvaspainter qt6-wayland qt5-wayland \ + qt6-canvaspainter qt6-wayland qt5-wayland mpv \ libqalculate pipewire aubio cava lm_sensors glib2 \ && pacman -Scc --noconfirm From b279c5d664cbf5c6547b39ffa254eb602bdb4a1e Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 22:44:12 +0100 Subject: [PATCH 18/22] fix(makefile): ruff fmt is now not just a check --- makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/makefile b/makefile index 17a224f..24eff84 100644 --- a/makefile +++ b/makefile @@ -55,7 +55,7 @@ cpp-compile: # Python py-fmt: - ruff format --check + ruff format py-lint: ruff check ./cli @@ -107,4 +107,4 @@ check-py: $(MAKE) py-compile fmt-make: - mbake format makefile + mbake format makefile \ No newline at end of file From 516ec9dd54bda468f51416f8c465dc6cc7a9c66d Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 22:44:12 +0100 Subject: [PATCH 19/22] chore(format): format files that were unformatted --- Components/CircularProgress.qml | 6 ++---- Components/ColorArcPicker.qml | 3 +-- Components/Coloriser.qml | 3 +-- Components/CustomClippingRect.qml | 3 +-- Components/CustomClippingWrapperRect.qml | 3 +-- Components/CustomProgressBar.qml | 6 ++---- Components/CustomSwitch.qml | 15 +++++--------- Components/CustomText.qml | 6 ++---- Components/FadeImage.qml | 3 +-- Components/LineGraph.qml | 5 ++++- Components/LoadingIndicator.qml | 3 +-- Components/MarqueeText.qml | 6 ++---- Components/SplitButton.qml | 9 +++------ Components/Toast/Toasts.qml | 9 +++------ Components/WavyTopRect.qml | 3 +-- Daemons/Audio.qml | 1 - Daemons/Network.qml | 3 +-- Daemons/Nmcli.qml | 7 ++----- Daemons/NotifServer.qml | 3 +-- Greeter/Components/CircularProgress.qml | 6 ++---- Greeter/Components/CustomClippingRect.qml | 3 +-- Greeter/Components/CustomText.qml | 6 ++---- Greeter/Components/FadeImage.qml | 3 +-- Greeter/Components/LoadingIndicator.qml | 3 +-- Greeter/Helpers/Weather.qml | 1 - Greeter/shell.qml | 1 - Helpers/Brightness.qml | 3 +-- Helpers/IdleInhibitor.qml | 3 +-- Modules/Bar/Popouts/ClipWrapper.qml | 3 +-- Modules/Bar/Popouts/TrayMenuPopout.qml | 21 +++++++------------- Modules/Dashboard/Dash/Calendar.qml | 6 ++---- Modules/Dashboard/Dash/Resources.qml | 3 +-- Modules/Dashboard/Media/BackgroundShapes.qml | 6 ++---- Modules/Dashboard/Media/CoverArt.qml | 3 +-- Modules/DesktopIcons/DesktopIconDelegate.qml | 15 +++++--------- Modules/Dock/Parts/DockAppButton.qml | 3 +-- Modules/Launcher/CarouselView.qml | 3 +-- Modules/Launcher/Services/Actions.qml | 3 +-- Modules/Osd/Content.qml | 3 +-- Modules/Resources/Cards/BatteryTank.qml | 3 +-- Modules/Resources/Cards/MemoryCard.qml | 3 +-- Modules/Resources/Content.qml | 18 ++++++----------- Modules/Settings/Common/ConnectedRect.qml | 3 +-- Modules/Sidebar/Notif.qml | 6 ++---- Modules/Sidebar/NotifDockList.qml | 9 +++------ Modules/Sidebar/NotifGroup.qml | 12 ++++------- Modules/Sidebar/NotifGroupList.qml | 9 +++------ Modules/Sidebar/Utils/Background.qml | 3 +-- Plugins/ZShell/Models/wallpaperdb.cpp | 7 ++++--- Plugins/ZShell/Models/wallpaperdb.hpp | 4 ++-- Plugins/ZShell/Wallpaper/videotranscoder.cpp | 4 ++-- Plugins/ZShell/Wallpaper/wallpaperobject.cpp | 8 +++----- Services/ShellState.qml | 3 +-- 53 files changed, 100 insertions(+), 187 deletions(-) mode change 100755 => 100644 Modules/Launcher/CarouselView.qml diff --git a/Components/CircularProgress.qml b/Components/CircularProgress.qml index 59b1bf5..e753280 100644 --- a/Components/CircularProgress.qml +++ b/Components/CircularProgress.qml @@ -46,8 +46,7 @@ Item { strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth Behavior on strokeColor { - CAnim { - } + CAnim {} } PathAngleArc { @@ -84,8 +83,7 @@ Item { } } Behavior on color { - CAnim { - } + CAnim {} } Anim on waveProgress { id: waveProgAnim diff --git a/Components/ColorArcPicker.qml b/Components/ColorArcPicker.qml index 43b9c34..de580e1 100644 --- a/Components/ColorArcPicker.qml +++ b/Components/ColorArcPicker.qml @@ -160,8 +160,7 @@ Item { Behavior on color { enabled: false - CAnim { - } + CAnim {} } } diff --git a/Components/Coloriser.qml b/Components/Coloriser.qml index 77bdf8d..4de1dca 100644 --- a/Components/Coloriser.qml +++ b/Components/Coloriser.qml @@ -8,7 +8,6 @@ MultiEffect { colorization: 1 Behavior on colorizationColor { - CAnim { - } + CAnim {} } } diff --git a/Components/CustomClippingRect.qml b/Components/CustomClippingRect.qml index 9498a06..dc4c75a 100644 --- a/Components/CustomClippingRect.qml +++ b/Components/CustomClippingRect.qml @@ -7,7 +7,6 @@ ClippingRectangle { color: "transparent" Behavior on color { - CAnim { - } + CAnim {} } } diff --git a/Components/CustomClippingWrapperRect.qml b/Components/CustomClippingWrapperRect.qml index 0ff1995..7913be1 100644 --- a/Components/CustomClippingWrapperRect.qml +++ b/Components/CustomClippingWrapperRect.qml @@ -7,7 +7,6 @@ ClippingWrapperRectangle { color: "transparent" Behavior on color { - CAnim { - } + CAnim {} } } diff --git a/Components/CustomProgressBar.qml b/Components/CustomProgressBar.qml index c9666f5..0c20724 100644 --- a/Components/CustomProgressBar.qml +++ b/Components/CustomProgressBar.qml @@ -124,8 +124,7 @@ ProgressBar { anchors.left: parent.left Behavior on implicitWidth { - Anim { - } + Anim {} } Component.onCompleted: implicitWidth = Qt.binding(() => parent.width * root.visualPosition) @@ -222,8 +221,7 @@ ProgressBar { } } Behavior on color { - CAnim { - } + CAnim {} } Anim on waveProgress { duration: root.waveDuration diff --git a/Components/CustomSwitch.qml b/Components/CustomSwitch.qml index bb25a54..b6a13530 100644 --- a/Components/CustomSwitch.qml +++ b/Components/CustomSwitch.qml @@ -105,20 +105,16 @@ Switch { width: height Behavior on end1 { - PropAnim { - } + PropAnim {} } Behavior on end2 { - PropAnim { - } + PropAnim {} } Behavior on start1 { - PropAnim { - } + PropAnim {} } Behavior on start2 { - PropAnim { - } + PropAnim {} } ShapePath { @@ -134,8 +130,7 @@ Switch { strokeWidth: 16 * 0.15 Behavior on strokeColor { - CAnim { - } + CAnim {} } PathLine { diff --git a/Components/CustomText.qml b/Components/CustomText.qml index 5445f5f..e8ee2b8 100644 --- a/Components/CustomText.qml +++ b/Components/CustomText.qml @@ -20,8 +20,7 @@ Text { textFormat: Text.PlainText Behavior on color { - CAnim { - } + CAnim {} } Behavior on text { enabled: root.animate @@ -33,8 +32,7 @@ Text { type: Anim.FastEffects } - PropertyAction { - } + PropertyAction {} TAnim { target: root diff --git a/Components/FadeImage.qml b/Components/FadeImage.qml index 79617aa..786e3a8 100644 --- a/Components/FadeImage.qml +++ b/Components/FadeImage.qml @@ -65,8 +65,7 @@ Image { value: root.source } - PropertyAction { - } + PropertyAction {} ScriptAction { script: root.maybeStartInAnim() diff --git a/Components/LineGraph.qml b/Components/LineGraph.qml index c16a1a6..8445963 100644 --- a/Components/LineGraph.qml +++ b/Components/LineGraph.qml @@ -138,7 +138,10 @@ Item { const t = (tlo + thi) / 2; const u = 1 - t; const y = u * u * u * p1.y + 3 * u * u * t * c1y + 3 * u * t * t * c2y + t * t * t * p2.y; - return { x: targetX, y }; + return { + x: targetX, + y + }; } // Part of the curve left/right of a cut x, including the cut point diff --git a/Components/LoadingIndicator.qml b/Components/LoadingIndicator.qml index 2e1132a..21ceaea 100644 --- a/Components/LoadingIndicator.qml +++ b/Components/LoadingIndicator.qml @@ -64,8 +64,7 @@ MaterialShape { to: 360 } Behavior on color { - CAnim { - } + CAnim {} } ElapsedTimer { diff --git a/Components/MarqueeText.qml b/Components/MarqueeText.qml index 7d3d12d..aac13df 100644 --- a/Components/MarqueeText.qml +++ b/Components/MarqueeText.qml @@ -47,12 +47,10 @@ Item { implicitWidth: vertical ? elideText.implicitHeight : elideText.implicitWidth Behavior on leftFadeStrength { - Anim { - } + Anim {} } Behavior on rightFadeStrength { - Anim { - } + Anim {} } onHeightChanged: resetMarquee() diff --git a/Components/SplitButton.qml b/Components/SplitButton.qml index 9f54950..ad60e97 100644 --- a/Components/SplitButton.qml +++ b/Components/SplitButton.qml @@ -102,8 +102,7 @@ Row { topLeftRadius: rad Behavior on rad { - Anim { - } + Anim {} } StateLayer { @@ -127,12 +126,10 @@ Row { text: "expand_more" Behavior on anchors.horizontalCenterOffset { - Anim { - } + Anim {} } Behavior on rotation { - Anim { - } + Anim {} } } } diff --git a/Components/Toast/Toasts.qml b/Components/Toast/Toasts.qml index 0c47503..d5f190c 100644 --- a/Components/Toast/Toasts.qml +++ b/Components/Toast/Toasts.qml @@ -44,8 +44,7 @@ Item { onValuesChanged: root.flagChanged() } - ToastWrapper { - } + ToastWrapper {} } component ToastWrapper: MouseArea { @@ -86,12 +85,10 @@ Item { } } Behavior on opacity { - Anim { - } + Anim {} } Behavior on scale { - Anim { - } + Anim {} } Component.onCompleted: modelData.lock(this) diff --git a/Components/WavyTopRect.qml b/Components/WavyTopRect.qml index 90052f3..718d171 100644 --- a/Components/WavyTopRect.qml +++ b/Components/WavyTopRect.qml @@ -20,8 +20,7 @@ Shape { strokeWidth: 0 Behavior on fillColor { - CAnim { - } + CAnim {} } PathSvg { diff --git a/Daemons/Audio.qml b/Daemons/Audio.qml index beac345..72e3aea 100644 --- a/Daemons/Audio.qml +++ b/Daemons/Audio.qml @@ -141,7 +141,6 @@ Singleton { BeatTracker { id: beatTracker - } PwObjectTracker { diff --git a/Daemons/Network.qml b/Daemons/Network.qml index 5604e1c..0dcb7a9 100644 --- a/Daemons/Network.qml +++ b/Daemons/Network.qml @@ -295,8 +295,7 @@ Singleton { Component { id: apComp - AccessPoint { - } + AccessPoint {} } Process { diff --git a/Daemons/Nmcli.qml b/Daemons/Nmcli.qml index 77fa771..d96a45f 100644 --- a/Daemons/Nmcli.qml +++ b/Daemons/Nmcli.qml @@ -1081,15 +1081,13 @@ Singleton { Component { id: commandProc - CommandProcess { - } + CommandProcess {} } Component { id: apComp - AccessPoint { - } + AccessPoint {} } Timer { @@ -1310,7 +1308,6 @@ Singleton { } stdout: StdioCollector { id: stdoutCollector - } onExited: code => { diff --git a/Daemons/NotifServer.qml b/Daemons/NotifServer.qml index 3360c8b..56a4070 100644 --- a/Daemons/NotifServer.qml +++ b/Daemons/NotifServer.qml @@ -164,8 +164,7 @@ Singleton { Component { id: notifComp - Notif { - } + Notif {} } component Notif: QtObject { diff --git a/Greeter/Components/CircularProgress.qml b/Greeter/Components/CircularProgress.qml index 59b1bf5..e753280 100644 --- a/Greeter/Components/CircularProgress.qml +++ b/Greeter/Components/CircularProgress.qml @@ -46,8 +46,7 @@ Item { strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth Behavior on strokeColor { - CAnim { - } + CAnim {} } PathAngleArc { @@ -84,8 +83,7 @@ Item { } } Behavior on color { - CAnim { - } + CAnim {} } Anim on waveProgress { id: waveProgAnim diff --git a/Greeter/Components/CustomClippingRect.qml b/Greeter/Components/CustomClippingRect.qml index 9498a06..dc4c75a 100644 --- a/Greeter/Components/CustomClippingRect.qml +++ b/Greeter/Components/CustomClippingRect.qml @@ -7,7 +7,6 @@ ClippingRectangle { color: "transparent" Behavior on color { - CAnim { - } + CAnim {} } } diff --git a/Greeter/Components/CustomText.qml b/Greeter/Components/CustomText.qml index 5445f5f..e8ee2b8 100644 --- a/Greeter/Components/CustomText.qml +++ b/Greeter/Components/CustomText.qml @@ -20,8 +20,7 @@ Text { textFormat: Text.PlainText Behavior on color { - CAnim { - } + CAnim {} } Behavior on text { enabled: root.animate @@ -33,8 +32,7 @@ Text { type: Anim.FastEffects } - PropertyAction { - } + PropertyAction {} TAnim { target: root diff --git a/Greeter/Components/FadeImage.qml b/Greeter/Components/FadeImage.qml index 79617aa..786e3a8 100644 --- a/Greeter/Components/FadeImage.qml +++ b/Greeter/Components/FadeImage.qml @@ -65,8 +65,7 @@ Image { value: root.source } - PropertyAction { - } + PropertyAction {} ScriptAction { script: root.maybeStartInAnim() diff --git a/Greeter/Components/LoadingIndicator.qml b/Greeter/Components/LoadingIndicator.qml index 2e1132a..21ceaea 100644 --- a/Greeter/Components/LoadingIndicator.qml +++ b/Greeter/Components/LoadingIndicator.qml @@ -64,8 +64,7 @@ MaterialShape { to: 360 } Behavior on color { - CAnim { - } + CAnim {} } ElapsedTimer { diff --git a/Greeter/Helpers/Weather.qml b/Greeter/Helpers/Weather.qml index 2254405..11cfae7 100644 --- a/Greeter/Helpers/Weather.qml +++ b/Greeter/Helpers/Weather.qml @@ -200,6 +200,5 @@ Singleton { ElapsedTimer { id: timer - } } diff --git a/Greeter/shell.qml b/Greeter/shell.qml index daedb80..0a8d24c 100644 --- a/Greeter/shell.qml +++ b/Greeter/shell.qml @@ -16,7 +16,6 @@ ShellRoot { GreeterState { id: greeter - } GreeterSurface { diff --git a/Helpers/Brightness.qml b/Helpers/Brightness.qml index 201a40a..09abce2 100644 --- a/Helpers/Brightness.qml +++ b/Helpers/Brightness.qml @@ -69,8 +69,7 @@ Singleton { model: Quickshell.screens - Monitor { - } + Monitor {} } Process { diff --git a/Helpers/IdleInhibitor.qml b/Helpers/IdleInhibitor.qml index 8aad68b..d3da4e3 100644 --- a/Helpers/IdleInhibitor.qml +++ b/Helpers/IdleInhibitor.qml @@ -33,8 +33,7 @@ Singleton { implicitHeight: 0 implicitWidth: 0 - mask: Region { - } + mask: Region {} } } diff --git a/Modules/Bar/Popouts/ClipWrapper.qml b/Modules/Bar/Popouts/ClipWrapper.qml index b9471f5..8f6ca3b 100644 --- a/Modules/Bar/Popouts/ClipWrapper.qml +++ b/Modules/Bar/Popouts/ClipWrapper.qml @@ -50,8 +50,7 @@ Item { } Behavior on offsetScale { - Anim { - } + Anim {} } Behavior on x { enabled: !root.horizontal || root.offsetScale < 1 diff --git a/Modules/Bar/Popouts/TrayMenuPopout.qml b/Modules/Bar/Popouts/TrayMenuPopout.qml index 4410c6f..3767486 100644 --- a/Modules/Bar/Popouts/TrayMenuPopout.qml +++ b/Modules/Bar/Popouts/TrayMenuPopout.qml @@ -26,20 +26,15 @@ StackView { initialItem: SubMenu { handle: root.trayItem } - popEnter: NoAnim { - } - popExit: NoAnim { - } - pushEnter: NoAnim { - } - pushExit: NoAnim { - } + popEnter: NoAnim {} + popExit: NoAnim {} + pushEnter: NoAnim {} + pushExit: NoAnim {} Component { id: subMenuComp - SubMenu { - } + SubMenu {} } component NoAnim: Transition { @@ -59,12 +54,10 @@ StackView { spacing: Tokens.spacing.extraSmall Behavior on opacity { - Anim { - } + Anim {} } Behavior on scale { - Anim { - } + Anim {} } Component.onCompleted: shown = true diff --git a/Modules/Dashboard/Dash/Calendar.qml b/Modules/Dashboard/Dash/Calendar.qml index 9d198ef..587c8a0 100644 --- a/Modules/Dashboard/Dash/Calendar.qml +++ b/Modules/Dashboard/Dash/Calendar.qml @@ -307,12 +307,10 @@ CustomMouseArea { } } Behavior on x { - Anim { - } + Anim {} } Behavior on y { - Anim { - } + Anim {} } onTodayItemChanged: { diff --git a/Modules/Dashboard/Dash/Resources.qml b/Modules/Dashboard/Dash/Resources.qml index 9b4a716..e7d6225 100644 --- a/Modules/Dashboard/Dash/Resources.qml +++ b/Modules/Dashboard/Dash/Resources.qml @@ -77,8 +77,7 @@ Item { implicitSize: height Behavior on clampedVal { - Anim { - } + Anim {} } MaterialIcon { diff --git a/Modules/Dashboard/Media/BackgroundShapes.qml b/Modules/Dashboard/Media/BackgroundShapes.qml index 1847944..fb8064c 100644 --- a/Modules/Dashboard/Media/BackgroundShapes.qml +++ b/Modules/Dashboard/Media/BackgroundShapes.qml @@ -33,8 +33,7 @@ Item { Repeater { id: shapes - DriftingShape { - } + DriftingShape {} } FrameAnimation { @@ -80,8 +79,7 @@ Item { shape: root.shapePool[Math.floor(Math.random() * root.shapePool.length)] Behavior on color { - CAnim { - } + CAnim {} } Behavior on opacity { Anim { diff --git a/Modules/Dashboard/Media/CoverArt.qml b/Modules/Dashboard/Media/CoverArt.qml index 6cb6f22..bc377b2 100644 --- a/Modules/Dashboard/Media/CoverArt.qml +++ b/Modules/Dashboard/Media/CoverArt.qml @@ -18,8 +18,7 @@ Item { layer.enabled: true Behavior on fallbackColor { - CAnim { - } + CAnim {} } layer.effect: MultiEffect { blurMax: 1 diff --git a/Modules/DesktopIcons/DesktopIconDelegate.qml b/Modules/DesktopIcons/DesktopIconDelegate.qml index 49b212c..9a4cae2 100644 --- a/Modules/DesktopIcons/DesktopIconDelegate.qml +++ b/Modules/DesktopIcons/DesktopIconDelegate.qml @@ -54,14 +54,12 @@ Item { Behavior on x { enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath) - Anim { - } + Anim {} } Behavior on y { enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath) - Anim { - } + Anim {} } Item { @@ -85,8 +83,7 @@ Item { y: (root.iconsRoot.selectedIcons.includes(root.filePath) && root.iconsRoot.dragLeader !== "" && root.iconsRoot.dragLeader !== root.filePath) ? root.iconsRoot.groupDragY : 0 } transitions: Transition { - Anim { - } + Anim {} } onXChanged: { @@ -208,8 +205,7 @@ Item { radius: Tokens.rounding.small Behavior on opacity { - Anim { - } + Anim {} } } @@ -268,8 +264,7 @@ Item { radius: Tokens.rounding.small Behavior on opacity { - Anim { - } + Anim {} } } } diff --git a/Modules/Dock/Parts/DockAppButton.qml b/Modules/Dock/Parts/DockAppButton.qml index d6ca2f0..40fe4f5 100644 --- a/Modules/Dock/Parts/DockAppButton.qml +++ b/Modules/Dock/Parts/DockAppButton.qml @@ -82,8 +82,7 @@ CustomRect { Loader { active: isSeparator - sourceComponent: DockSeparator { - } + sourceComponent: DockSeparator {} anchors { fill: parent diff --git a/Modules/Launcher/CarouselView.qml b/Modules/Launcher/CarouselView.qml old mode 100755 new mode 100644 index 3db4299..3353fe7 --- a/Modules/Launcher/CarouselView.qml +++ b/Modules/Launcher/CarouselView.qml @@ -41,8 +41,7 @@ CarouselView { tileHeight: focalWidth / 16 * 9 delegate: Component { - WallpaperTile { - } + WallpaperTile {} } Component.onDestruction: Wallpapers.stopPreview() diff --git a/Modules/Launcher/Services/Actions.qml b/Modules/Launcher/Services/Actions.qml index 135dbc3..7306e04 100644 --- a/Modules/Launcher/Services/Actions.qml +++ b/Modules/Launcher/Services/Actions.qml @@ -22,8 +22,7 @@ Searcher { model: Config.launcher.actions.values.filter(a => (a.enabled ?? true) && (Config.launcher.enableDangerousActions || !(a.dangerous ?? false))) - Action { - } + Action {} } component Action: QtObject { diff --git a/Modules/Osd/Content.qml b/Modules/Osd/Content.qml index e1ac3d9..55db017 100644 --- a/Modules/Osd/Content.qml +++ b/Modules/Osd/Content.qml @@ -131,8 +131,7 @@ Item { } } Behavior on opacity { - Anim { - } + Anim {} } } } diff --git a/Modules/Resources/Cards/BatteryTank.qml b/Modules/Resources/Cards/BatteryTank.qml index 7c26d63..1028855 100644 --- a/Modules/Resources/Cards/BatteryTank.qml +++ b/Modules/Resources/Cards/BatteryTank.qml @@ -15,8 +15,7 @@ ClipRect { radius: Tokens.rounding.largeIncreased Behavior on animPerc { - Anim { - } + Anim {} } Contents { diff --git a/Modules/Resources/Cards/MemoryCard.qml b/Modules/Resources/Cards/MemoryCard.qml index c2f8041..bb56af0 100644 --- a/Modules/Resources/Cards/MemoryCard.qml +++ b/Modules/Resources/Cards/MemoryCard.qml @@ -51,8 +51,7 @@ CustomRect { value: Memory.percentage Behavior on clampedVal { - Anim { - } + Anim {} } ColumnLayout { diff --git a/Modules/Resources/Content.qml b/Modules/Resources/Content.qml index 53909d5..4ac4893 100644 --- a/Modules/Resources/Content.qml +++ b/Modules/Resources/Content.qml @@ -81,8 +81,7 @@ Item { active: Config.dashboard.performance.showStorage - sourceComponent: StorageCard { - } + sourceComponent: StorageCard {} } WrappedLoader { @@ -90,8 +89,7 @@ Item { active: Config.dashboard.performance.showMemory - sourceComponent: MemoryCard { - } + sourceComponent: MemoryCard {} } WrappedLoader { @@ -99,8 +97,7 @@ Item { active: Config.dashboard.performance.showVram - sourceComponent: VramCard { - } + sourceComponent: VramCard {} } WrappedLoader { @@ -108,8 +105,7 @@ Item { active: Config.dashboard.performance.showNetwork && !vramCard.active - sourceComponent: NetworkCard { - } + sourceComponent: NetworkCard {} } } @@ -118,8 +114,7 @@ Item { active: Config.dashboard.performance.showNetwork && vramCard.active - sourceComponent: NetworkCard { - } + sourceComponent: NetworkCard {} } } @@ -127,8 +122,7 @@ Item { Layout.fillWidth: false active: Battery.isLaptop && Config.dashboard.performance.showBattery - sourceComponent: BatteryTank { - } + sourceComponent: BatteryTank {} } } diff --git a/Modules/Settings/Common/ConnectedRect.qml b/Modules/Settings/Common/ConnectedRect.qml index 04762a6..cdd5b0c 100644 --- a/Modules/Settings/Common/ConnectedRect.qml +++ b/Modules/Settings/Common/ConnectedRect.qml @@ -22,8 +22,7 @@ CustomRect { topRightRadius: first ? Tokens.rounding.largeIncreased : Tokens.rounding.extraSmall Behavior on opacity { - Anim { - } + Anim {} } CustomRect { diff --git a/Modules/Sidebar/Notif.qml b/Modules/Sidebar/Notif.qml index ae7a016..7a90f09 100644 --- a/Modules/Sidebar/Notif.qml +++ b/Modules/Sidebar/Notif.qml @@ -26,8 +26,7 @@ CustomRect { state: expanded ? "expanded" : "" Behavior on implicitHeight { - Anim { - } + Anim {} } states: State { name: "expanded" @@ -116,8 +115,7 @@ CustomRect { anchors.topMargin: Tokens.spacing.extraSmall shouldBeActive: root.expanded - sourceComponent: ExpandedBody { - } + sourceComponent: ExpandedBody {} } component ExpandedBody: ColumnLayout { diff --git a/Modules/Sidebar/NotifDockList.qml b/Modules/Sidebar/NotifDockList.qml index 759e6d9..a806139 100644 --- a/Modules/Sidebar/NotifDockList.qml +++ b/Modules/Sidebar/NotifDockList.qml @@ -58,18 +58,15 @@ LazyListView { } } Behavior on scale { - Anim { - } + Anim {} } Behavior on x { - Anim { - } + Anim {} } Behavior on y { enabled: notif.LazyListView.ready - Anim { - } + Anim {} } onPositionChanged: event => { diff --git a/Modules/Sidebar/NotifGroup.qml b/Modules/Sidebar/NotifGroup.qml index 4cb7b67..9e9cd3c 100644 --- a/Modules/Sidebar/NotifGroup.qml +++ b/Modules/Sidebar/NotifGroup.qml @@ -52,8 +52,7 @@ CustomRect { radius: Tokens.rounding.large Behavior on implicitHeight { - Anim { - } + Anim {} } Component.onDestruction: { @@ -155,8 +154,7 @@ CustomRect { spacing: root.expanded ? Math.round(Tokens.spacing.extraSmall) : 0 Behavior on spacing { - Anim { - } + Anim {} } RowLayout { @@ -214,12 +212,10 @@ CustomRect { text: "expand_more" Behavior on Layout.topMargin { - Anim { - } + Anim {} } Behavior on rotation { - Anim { - } + Anim {} } } } diff --git a/Modules/Sidebar/NotifGroupList.qml b/Modules/Sidebar/NotifGroupList.qml index b047878..3bf6c3e 100644 --- a/Modules/Sidebar/NotifGroupList.qml +++ b/Modules/Sidebar/NotifGroupList.qml @@ -59,18 +59,15 @@ LazyListView { } } Behavior on scale { - Anim { - } + Anim {} } Behavior on x { - Anim { - } + Anim {} } Behavior on y { enabled: notif.LazyListView.ready - Anim { - } + Anim {} } Component.onCompleted: modelData?.lock(this) diff --git a/Modules/Sidebar/Utils/Background.qml b/Modules/Sidebar/Utils/Background.qml index f312b26..7a873b3 100644 --- a/Modules/Sidebar/Utils/Background.qml +++ b/Modules/Sidebar/Utils/Background.qml @@ -17,8 +17,7 @@ ShapePath { strokeWidth: -1 Behavior on fillColor { - CAnim { - } + CAnim {} } PathLine { diff --git a/Plugins/ZShell/Models/wallpaperdb.cpp b/Plugins/ZShell/Models/wallpaperdb.cpp index ace438d..b70beb2 100644 --- a/Plugins/ZShell/Models/wallpaperdb.cpp +++ b/Plugins/ZShell/Models/wallpaperdb.cpp @@ -653,7 +653,8 @@ void WallpaperDb::queueMetadata( existingCache.isEmpty() ? "" : ", existing blob"); m_queue.append( - MetadataJob{entry, entry->path(), isVideo, existingCache, existingPoster}); + MetadataJob{ + entry, entry->path(), isVideo, existingCache, existingPoster}); if (!m_queueTimer.isActive()) { m_queueTimer.start(); @@ -771,8 +772,8 @@ void WallpaperDb::runMetadataJob(const MetadataJob& job) { QByteArray poster = job.existingPoster; if (poster.isEmpty()) { - poster = - job.isVideo ? videoPosterBytes(job.path, cacheSize) : cache; + poster = job.isVideo ? videoPosterBytes(job.path, cacheSize) + : cache; } result.cache = cache; diff --git a/Plugins/ZShell/Models/wallpaperdb.hpp b/Plugins/ZShell/Models/wallpaperdb.hpp index e41053d..b8cb4b1 100644 --- a/Plugins/ZShell/Models/wallpaperdb.hpp +++ b/Plugins/ZShell/Models/wallpaperdb.hpp @@ -110,8 +110,8 @@ class WallpaperDb : public QObject { [[nodiscard]] static QString thumbnailUrl(const QString& path); - Q_INVOKABLE QVariantMap crop(const QString& path, const QString& screen) - const; + Q_INVOKABLE QVariantMap + crop(const QString& path, const QString& screen) const; Q_INVOKABLE void setCrop( const QString& path, const QString& screen, const QVariantMap& crop); diff --git a/Plugins/ZShell/Wallpaper/videotranscoder.cpp b/Plugins/ZShell/Wallpaper/videotranscoder.cpp index 5e998ab..dfc1d55 100644 --- a/Plugins/ZShell/Wallpaper/videotranscoder.cpp +++ b/Plugins/ZShell/Wallpaper/videotranscoder.cpp @@ -50,7 +50,7 @@ QString VideoTranscoder::codecName(const QString& path) const { if (!probe.waitForFinished(2000) || probe.exitCode() != 0) { qWarning(transcodeLog) << "WallpaperService: ffprobe failed for" << path - << "(exit" << probe.exitCode() << ")"; + << "(exit" << probe.exitCode() << ")"; return {}; } @@ -120,7 +120,7 @@ void VideoTranscoder::start(const QString& src, const QString& dst) { }); qWarning(transcodeLog) << "WallpaperService: transcoding" << src << "->" - << dst; + << dst; proc->setProgram("nice"); proc->setArguments({ diff --git a/Plugins/ZShell/Wallpaper/wallpaperobject.cpp b/Plugins/ZShell/Wallpaper/wallpaperobject.cpp index 143a637..50ee9c6 100644 --- a/Plugins/ZShell/Wallpaper/wallpaperobject.cpp +++ b/Plugins/ZShell/Wallpaper/wallpaperobject.cpp @@ -72,11 +72,9 @@ void WallpaperObject::syncCrop(const QVariantMap& crop) { const qreal y = crop.value("y").toDouble(); const qreal width = crop.contains("width") ? crop.value("width").toDouble() : 1.0; - const qreal height = crop.contains("height") - ? crop.value("height").toDouble() - : 1.0; - const qreal z = - crop.contains("zoom") ? crop.value("zoom").toDouble() : 1.0; + const qreal height = + crop.contains("height") ? crop.value("height").toDouble() : 1.0; + const qreal z = crop.contains("zoom") ? crop.value("zoom").toDouble() : 1.0; const bool prev = m_pushEnabled; m_pushEnabled = false; diff --git a/Services/ShellState.qml b/Services/ShellState.qml index 7d48f4b..7c423f0 100644 --- a/Services/ShellState.qml +++ b/Services/ShellState.qml @@ -34,7 +34,6 @@ Singleton { model: Quickshell.screens - ScreenState { - } + ScreenState {} } } From 9d6cd909a5448fcd9a9f715994c3e762af2c7bd6 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 23:15:49 +0100 Subject: [PATCH 20/22] chore(gitignore): .cargo ignored --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 7935e69..b2b5a49 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,9 @@ network-dev/ compile_commands.json build/ +# Cargo home (CI sets CARGO_HOME inside the workspace) +.cargo/ + # Python uv.lock testpython From dd64d6947d63aa09adeda0b010051295afcf8273 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Fri, 30 Oct 2026 23:15:49 +0100 Subject: [PATCH 21/22] fix(ci): format properly checks written code only + minor optimisations --- .gitea/workflows/rust.yml | 73 +++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 29 deletions(-) diff --git a/.gitea/workflows/rust.yml b/.gitea/workflows/rust.yml index 4c84f7e..9e840b4 100644 --- a/.gitea/workflows/rust.yml +++ b/.gitea/workflows/rust.yml @@ -11,6 +11,16 @@ jobs: CARGO_HOME: ${{ github.workspace }}/.cargo steps: + - name: Install node for actions + run: | + apk add --no-cache nodejs git + + - name: Install rust components + run: | + rustup component add clippy rustfmt + cargo clippy --version + rustfmt --version + - name: Checkout uses: actions/checkout@v4 @@ -25,41 +35,46 @@ jobs: restore-keys: | rust-${{ runner.os }}-cargo- - - name: Install tools - run: | - apk add --no-cache git - rustup component add clippy rustfmt - - name: Clippy (with compile check) run: | - if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then - status=0 - for manifest in $(find . -name "Cargo.toml"); do - cargo clippy --manifest-path "$manifest" -- -D warnings && \ - echo "$manifest: Clippy passed" || \ - { echo "$manifest: Clippy failed"; status=1; } - done - exit $status - elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then - echo "Rust files found but no Cargo.toml" - exit 1 - else + manifests=$(find . \( -name .cargo -o -name .git -o -name target \) -prune -o -name Cargo.toml -print) + if [ -z "$manifests" ]; then + if [ -n "$(find . \( -name .cargo -o -name target \) -prune -o -name '*.rs' -print -quit)" ]; then + echo "Rust files found but no Cargo.toml" + exit 1 + fi echo "No Rust project found" + exit 0 fi + status=0 + for manifest in $manifests; do + if (cd "$(dirname "$manifest")" && cargo clippy --all-targets --locked -- -D warnings); then + echo "$manifest: Clippy passed" + else + echo "$manifest: Clippy failed" + status=1 + fi + done + exit $status - name: Format check run: | - if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then - status=0 - for manifest in $(find . -name "Cargo.toml"); do - cargo fmt --manifest-path "$manifest" --check && \ - echo "$manifest: formatting OK" || \ - { echo "$manifest: needs formatting"; status=1; } - done - exit $status - elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then - echo "Rust files found but no Cargo.toml" - exit 1 - else + manifests=$(find . \( -name .cargo -o -name .git -o -name target \) -prune -o -name Cargo.toml -print) + if [ -z "$manifests" ]; then + if [ -n "$(find . \( -name .cargo -o -name target \) -prune -o -name '*.rs' -print -quit)" ]; then + echo "Rust files found but no Cargo.toml" + exit 1 + fi echo "No Rust project found" + exit 0 fi + status=0 + for manifest in $manifests; do + if (cd "$(dirname "$manifest")" && cargo fmt --check); then + echo "$manifest: formatting OK" + else + echo "$manifest: needs formatting" + status=1 + fi + done + exit $status From 51ec6a7939ae9b353d545647c42f6c16223facf0 Mon Sep 17 00:00:00 2001 From: AramJonghu Date: Mon, 2 Nov 2026 01:37:47 +0100 Subject: [PATCH 22/22] feat(makefile): format all cmake files + make fmt rename --- makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/makefile b/makefile index 24eff84..81a6ad0 100644 --- a/makefile +++ b/makefile @@ -32,7 +32,8 @@ help: @echo "check-cpp runs all C++ checks" @echo "check-py runs all Python checks" @echo "check-rs runs all Rust checks" - @echo "fmt-make formats the makefile using mbake (in case you like spaces instead of tabs)" + @echo "make-fmt formats the makefile using mbake (in case you like spaces instead of tabs)" + @echo "cmake-fmt format CMake files with gersemi" build: $(BUILD) @@ -106,5 +107,8 @@ check-py: $(MAKE) py-check $(MAKE) py-compile -fmt-make: - mbake format makefile \ No newline at end of file +make-fmt: + mbake format makefile + +cmake-fmt: + gersemi -i . \ No newline at end of file