Feat/task runner ci #162
@@ -18,7 +18,7 @@ jobs:
|
|||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install Docker CLI
|
- 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
|
- name: Login to registry
|
||||||
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.aramjonghu.dev --username aramjonghu --password-stdin
|
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.aramjonghu.dev --username aramjonghu --password-stdin
|
||||||
|
|||||||
+22
-21
@@ -17,46 +17,47 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \
|
find . \( -name '*.cpp' -o -name '*.h' -o -name '*.hpp' \) \
|
||||||
-not -path './build/*' \
|
-not -path './build/*' \
|
||||||
-exec clang-format -i --style=file {} +
|
-exec clang-format --dry-run -Werror --style=file {} +
|
||||||
git diff --exit-code && echo "clang-format: passed"
|
|
||||||
|
|
||||||
build:
|
build & lint:
|
||||||
runs-on: alpine
|
runs-on: alpine
|
||||||
container:
|
container:
|
||||||
image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest
|
image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Configure
|
- name: Cache CMake build
|
||||||
run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release
|
uses: actions/cache@v4
|
||||||
|
|
||||||
- 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
|
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
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
|
- name: Configure
|
||||||
run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release
|
run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: ninja -C build
|
run: ninja -C build
|
||||||
|
env:
|
||||||
|
CMAKE_CXX_COMPILER_LAUNCHER: ccache
|
||||||
|
|
||||||
- name: clang-tidy
|
- name: clang-tidy
|
||||||
run: |
|
run: |
|
||||||
sed -i 's/-mno-direct-extern-access //g' build/compile_commands.json
|
sed -i 's/-mno-direct-extern-access //g' build/compile_commands.json
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
run-clang-tidy -p build -j $(nproc) -header-filter="Plugins/.*" 2>&1 | \
|
run-clang-tidy -p build -j "$(nproc)" \
|
||||||
grep -v 'Suppressed\|non-user\|non-system\|unknown argument.*mno-direct\|Found compiler error\|warnings generated\.\|^Use -header-filter'
|
-source-filter="^$(pwd)/Plugins/" \
|
||||||
|
-header-filter=".*Plugins/.*" \
|
||||||
|
-removed-arg=-mno-direct-extern-access
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
fmt:
|
fmt & lint:
|
||||||
runs-on: alpine
|
runs-on: alpine
|
||||||
container: node:26-alpine
|
container: node:26-alpine
|
||||||
|
|
||||||
@@ -24,20 +24,6 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "No JS/TS files found"
|
echo "No JS/TS files found"
|
||||||
fi
|
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
|
- name: ESLint
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$(find . \( -iname "*.js" -o -iname "*.jsx" -o -iname "*.ts" -o -iname "*.tsx" -o -iname "*.mjs" -o -iname "*.cjs" \) -print -quit)" ]; then
|
if [ -n "$(find . \( -iname "*.js" -o -iname "*.jsx" -o -iname "*.ts" -o -iname "*.tsx" -o -iname "*.mjs" -o -iname "*.cjs" \) -print -quit)" ]; then
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
static:
|
fmt & lint:
|
||||||
runs-on: debian
|
runs-on: debian
|
||||||
container: node:26-trixie-slim
|
container: node:26-trixie-slim
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
. .venv/bin/activate
|
. .venv/bin/activate
|
||||||
ruff check .
|
ruff check .
|
||||||
|
|
||||||
verify:
|
test & nuitka build:
|
||||||
if: always()
|
if: always()
|
||||||
runs-on: debian
|
runs-on: debian
|
||||||
container: node:26-trixie-slim
|
container: node:26-trixie-slim
|
||||||
@@ -64,4 +64,4 @@ jobs:
|
|||||||
- name: Nuitka module check
|
- name: Nuitka module check
|
||||||
run: |
|
run: |
|
||||||
. .venv/bin/activate
|
. .venv/bin/activate
|
||||||
nuitka --module --include-package=zshell cli/src/zshell/
|
nuitka --module --include-package=zshell cli/src/zshell/
|
||||||
|
|||||||
+11
-99
@@ -4,9 +4,9 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
clippy & fmt:
|
||||||
runs-on: alpine
|
runs-on: alpine
|
||||||
container: node:26-alpine
|
container: node:26-alpine # keep node image for checkout to work
|
||||||
env:
|
env:
|
||||||
CARGO_HOME: ${{ github.workspace }}/.cargo
|
CARGO_HOME: ${{ github.workspace }}/.cargo
|
||||||
|
|
||||||
@@ -16,34 +16,29 @@ jobs:
|
|||||||
|
|
||||||
- name: Cache cargo packages
|
- name: Cache cargo packages
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
env:
|
|
||||||
cache-name: cache-cargo-packages
|
|
||||||
with:
|
with:
|
||||||
path: |
|
path: |
|
||||||
.cargo/registry
|
.cargo/registry
|
||||||
.cargo/git
|
.cargo/git
|
||||||
target
|
target
|
||||||
key: rust-build-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }}
|
key: rust-build-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
rust-${{ runner.os }}-build-${{ env.cache-name }}-
|
rust-${{ runner.os }}-cargo-
|
||||||
rust-${{ runner.os }}-build-
|
|
||||||
rust-
|
|
||||||
|
|
||||||
- name: Install tools
|
- name: Install tools
|
||||||
run: |
|
run: |
|
||||||
apk add --no-cache \
|
apk add --no-cache git cargo rust rust-clippy rustfmt
|
||||||
git \
|
|
||||||
cargo \
|
|
||||||
rust
|
|
||||||
|
|
||||||
- name: Cargo check
|
- name: Clippy (with compile check)
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then
|
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then
|
||||||
|
status=0
|
||||||
for manifest in $(find . -name "Cargo.toml"); do
|
for manifest in $(find . -name "Cargo.toml"); do
|
||||||
cargo check --manifest-path "$manifest" && \
|
cargo clippy --manifest-path "$manifest" -- -D warnings && \
|
||||||
echo "$manifest: check passed" || \
|
echo "$manifest: Clippy passed" || \
|
||||||
{ echo "$manifest: check failed"; exit 1; }
|
{ echo "$manifest: Clippy failed"; status=1; }
|
||||||
done
|
done
|
||||||
|
exit $status
|
||||||
elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then
|
elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then
|
||||||
echo "Rust files found but no Cargo.toml"
|
echo "Rust files found but no Cargo.toml"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -51,39 +46,6 @@ jobs:
|
|||||||
echo "No Rust project found"
|
echo "No Rust project found"
|
||||||
fi
|
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
|
- name: Format check
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then
|
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then
|
||||||
@@ -100,53 +62,3 @@ jobs:
|
|||||||
else
|
else
|
||||||
echo "No Rust project found"
|
echo "No Rust project found"
|
||||||
fi
|
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
|
|
||||||
status=0
|
|
||||||
for manifest in $(find . -name "Cargo.toml"); do
|
|
||||||
cargo clippy --manifest-path "$manifest" --all-targets --all-features -- -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
|
|
||||||
echo "No Rust project found"
|
|
||||||
fi
|
|
||||||
|
|||||||
+22
-10
@@ -1,23 +1,35 @@
|
|||||||
**/__pycache__/
|
|
||||||
./result/
|
./result/
|
||||||
.pyre/
|
.pyre/
|
||||||
.cache/
|
|
||||||
.venv/
|
|
||||||
.qmlls.ini
|
|
||||||
build/
|
|
||||||
compile_commands.json
|
|
||||||
testpython
|
|
||||||
pkg/
|
pkg/
|
||||||
*.tar.*
|
*.tar.*
|
||||||
uv.lock
|
|
||||||
.qtcreator/
|
|
||||||
dist/
|
dist/
|
||||||
**/target/
|
**/target/
|
||||||
**/test-plugins/
|
**/test-plugins/
|
||||||
**/Charts/
|
**/Charts/
|
||||||
network-dev/
|
network-dev/
|
||||||
**/zshell.build/
|
|
||||||
**/zshell.dist/
|
**/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/
|
.opencode/
|
||||||
run-agent.sh
|
run-agent.sh
|
||||||
AGENTS.md
|
AGENTS.md
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ Item {
|
|||||||
strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth
|
strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth
|
||||||
|
|
||||||
Behavior on strokeColor {
|
Behavior on strokeColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathAngleArc {
|
PathAngleArc {
|
||||||
@@ -84,8 +83,7 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Anim on waveProgress {
|
Anim on waveProgress {
|
||||||
id: waveProgAnim
|
id: waveProgAnim
|
||||||
|
|||||||
@@ -160,8 +160,7 @@ Item {
|
|||||||
Behavior on color {
|
Behavior on color {
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ MultiEffect {
|
|||||||
colorization: 1
|
colorization: 1
|
||||||
|
|
||||||
Behavior on colorizationColor {
|
Behavior on colorizationColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ ClippingRectangle {
|
|||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ ClippingWrapperRectangle {
|
|||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,8 +124,7 @@ ProgressBar {
|
|||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
||||||
Behavior on implicitWidth {
|
Behavior on implicitWidth {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: implicitWidth = Qt.binding(() => parent.width * root.visualPosition)
|
Component.onCompleted: implicitWidth = Qt.binding(() => parent.width * root.visualPosition)
|
||||||
@@ -222,8 +221,7 @@ ProgressBar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Anim on waveProgress {
|
Anim on waveProgress {
|
||||||
duration: root.waveDuration
|
duration: root.waveDuration
|
||||||
|
|||||||
@@ -105,20 +105,16 @@ Switch {
|
|||||||
width: height
|
width: height
|
||||||
|
|
||||||
Behavior on end1 {
|
Behavior on end1 {
|
||||||
PropAnim {
|
PropAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on end2 {
|
Behavior on end2 {
|
||||||
PropAnim {
|
PropAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on start1 {
|
Behavior on start1 {
|
||||||
PropAnim {
|
PropAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on start2 {
|
Behavior on start2 {
|
||||||
PropAnim {
|
PropAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapePath {
|
ShapePath {
|
||||||
@@ -134,8 +130,7 @@ Switch {
|
|||||||
strokeWidth: 16 * 0.15
|
strokeWidth: 16 * 0.15
|
||||||
|
|
||||||
Behavior on strokeColor {
|
Behavior on strokeColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathLine {
|
PathLine {
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ Text {
|
|||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on text {
|
Behavior on text {
|
||||||
enabled: root.animate
|
enabled: root.animate
|
||||||
@@ -33,8 +32,7 @@ Text {
|
|||||||
type: Anim.FastEffects
|
type: Anim.FastEffects
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyAction {
|
PropertyAction {}
|
||||||
}
|
|
||||||
|
|
||||||
TAnim {
|
TAnim {
|
||||||
target: root
|
target: root
|
||||||
|
|||||||
@@ -65,8 +65,7 @@ Image {
|
|||||||
value: root.source
|
value: root.source
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyAction {
|
PropertyAction {}
|
||||||
}
|
|
||||||
|
|
||||||
ScriptAction {
|
ScriptAction {
|
||||||
script: root.maybeStartInAnim()
|
script: root.maybeStartInAnim()
|
||||||
|
|||||||
@@ -138,7 +138,10 @@ Item {
|
|||||||
const t = (tlo + thi) / 2;
|
const t = (tlo + thi) / 2;
|
||||||
const u = 1 - t;
|
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;
|
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
|
// Part of the curve left/right of a cut x, including the cut point
|
||||||
|
|||||||
@@ -64,8 +64,7 @@ MaterialShape {
|
|||||||
to: 360
|
to: 360
|
||||||
}
|
}
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ElapsedTimer {
|
ElapsedTimer {
|
||||||
|
|||||||
@@ -47,12 +47,10 @@ Item {
|
|||||||
implicitWidth: vertical ? elideText.implicitHeight : elideText.implicitWidth
|
implicitWidth: vertical ? elideText.implicitHeight : elideText.implicitWidth
|
||||||
|
|
||||||
Behavior on leftFadeStrength {
|
Behavior on leftFadeStrength {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on rightFadeStrength {
|
Behavior on rightFadeStrength {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onHeightChanged: resetMarquee()
|
onHeightChanged: resetMarquee()
|
||||||
|
|||||||
@@ -102,8 +102,7 @@ Row {
|
|||||||
topLeftRadius: rad
|
topLeftRadius: rad
|
||||||
|
|
||||||
Behavior on rad {
|
Behavior on rad {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
StateLayer {
|
StateLayer {
|
||||||
@@ -127,12 +126,10 @@ Row {
|
|||||||
text: "expand_more"
|
text: "expand_more"
|
||||||
|
|
||||||
Behavior on anchors.horizontalCenterOffset {
|
Behavior on anchors.horizontalCenterOffset {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on rotation {
|
Behavior on rotation {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,7 @@ Item {
|
|||||||
onValuesChanged: root.flagChanged()
|
onValuesChanged: root.flagChanged()
|
||||||
}
|
}
|
||||||
|
|
||||||
ToastWrapper {
|
ToastWrapper {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
component ToastWrapper: MouseArea {
|
component ToastWrapper: MouseArea {
|
||||||
@@ -86,12 +85,10 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on scale {
|
Behavior on scale {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: modelData.lock(this)
|
Component.onCompleted: modelData.lock(this)
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ Shape {
|
|||||||
strokeWidth: 0
|
strokeWidth: 0
|
||||||
|
|
||||||
Behavior on fillColor {
|
Behavior on fillColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathSvg {
|
PathSvg {
|
||||||
|
|||||||
@@ -141,7 +141,6 @@ Singleton {
|
|||||||
|
|
||||||
BeatTracker {
|
BeatTracker {
|
||||||
id: beatTracker
|
id: beatTracker
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PwObjectTracker {
|
PwObjectTracker {
|
||||||
|
|||||||
+1
-2
@@ -295,8 +295,7 @@ Singleton {
|
|||||||
Component {
|
Component {
|
||||||
id: apComp
|
id: apComp
|
||||||
|
|
||||||
AccessPoint {
|
AccessPoint {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
|
|||||||
+2
-5
@@ -1081,15 +1081,13 @@ Singleton {
|
|||||||
Component {
|
Component {
|
||||||
id: commandProc
|
id: commandProc
|
||||||
|
|
||||||
CommandProcess {
|
CommandProcess {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: apComp
|
id: apComp
|
||||||
|
|
||||||
AccessPoint {
|
AccessPoint {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
@@ -1310,7 +1308,6 @@ Singleton {
|
|||||||
}
|
}
|
||||||
stdout: StdioCollector {
|
stdout: StdioCollector {
|
||||||
id: stdoutCollector
|
id: stdoutCollector
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onExited: code => {
|
onExited: code => {
|
||||||
|
|||||||
@@ -164,8 +164,7 @@ Singleton {
|
|||||||
Component {
|
Component {
|
||||||
id: notifComp
|
id: notifComp
|
||||||
|
|
||||||
Notif {
|
Notif {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
component Notif: QtObject {
|
component Notif: QtObject {
|
||||||
|
|||||||
@@ -46,8 +46,7 @@ Item {
|
|||||||
strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth
|
strokeWidth: Math.min(1, remainingArc.sweepAngle) * root.strokeWidth
|
||||||
|
|
||||||
Behavior on strokeColor {
|
Behavior on strokeColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathAngleArc {
|
PathAngleArc {
|
||||||
@@ -84,8 +83,7 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Anim on waveProgress {
|
Anim on waveProgress {
|
||||||
id: waveProgAnim
|
id: waveProgAnim
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ ClippingRectangle {
|
|||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ Text {
|
|||||||
textFormat: Text.PlainText
|
textFormat: Text.PlainText
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on text {
|
Behavior on text {
|
||||||
enabled: root.animate
|
enabled: root.animate
|
||||||
@@ -33,8 +32,7 @@ Text {
|
|||||||
type: Anim.FastEffects
|
type: Anim.FastEffects
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyAction {
|
PropertyAction {}
|
||||||
}
|
|
||||||
|
|
||||||
TAnim {
|
TAnim {
|
||||||
target: root
|
target: root
|
||||||
|
|||||||
@@ -65,8 +65,7 @@ Image {
|
|||||||
value: root.source
|
value: root.source
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyAction {
|
PropertyAction {}
|
||||||
}
|
|
||||||
|
|
||||||
ScriptAction {
|
ScriptAction {
|
||||||
script: root.maybeStartInAnim()
|
script: root.maybeStartInAnim()
|
||||||
|
|||||||
@@ -64,8 +64,7 @@ MaterialShape {
|
|||||||
to: 360
|
to: 360
|
||||||
}
|
}
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ElapsedTimer {
|
ElapsedTimer {
|
||||||
|
|||||||
@@ -200,6 +200,5 @@ Singleton {
|
|||||||
|
|
||||||
ElapsedTimer {
|
ElapsedTimer {
|
||||||
id: timer
|
id: timer
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ ShellRoot {
|
|||||||
|
|
||||||
GreeterState {
|
GreeterState {
|
||||||
id: greeter
|
id: greeter
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GreeterSurface {
|
GreeterSurface {
|
||||||
|
|||||||
@@ -69,8 +69,7 @@ Singleton {
|
|||||||
|
|
||||||
model: Quickshell.screens
|
model: Quickshell.screens
|
||||||
|
|
||||||
Monitor {
|
Monitor {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ Singleton {
|
|||||||
implicitHeight: 0
|
implicitHeight: 0
|
||||||
implicitWidth: 0
|
implicitWidth: 0
|
||||||
|
|
||||||
mask: Region {
|
mask: Region {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,8 +50,7 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Behavior on offsetScale {
|
Behavior on offsetScale {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on x {
|
Behavior on x {
|
||||||
enabled: !root.horizontal || root.offsetScale < 1
|
enabled: !root.horizontal || root.offsetScale < 1
|
||||||
|
|||||||
@@ -26,20 +26,15 @@ StackView {
|
|||||||
initialItem: SubMenu {
|
initialItem: SubMenu {
|
||||||
handle: root.trayItem
|
handle: root.trayItem
|
||||||
}
|
}
|
||||||
popEnter: NoAnim {
|
popEnter: NoAnim {}
|
||||||
}
|
popExit: NoAnim {}
|
||||||
popExit: NoAnim {
|
pushEnter: NoAnim {}
|
||||||
}
|
pushExit: NoAnim {}
|
||||||
pushEnter: NoAnim {
|
|
||||||
}
|
|
||||||
pushExit: NoAnim {
|
|
||||||
}
|
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: subMenuComp
|
id: subMenuComp
|
||||||
|
|
||||||
SubMenu {
|
SubMenu {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
component NoAnim: Transition {
|
component NoAnim: Transition {
|
||||||
@@ -59,12 +54,10 @@ StackView {
|
|||||||
spacing: Tokens.spacing.extraSmall
|
spacing: Tokens.spacing.extraSmall
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on scale {
|
Behavior on scale {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: shown = true
|
Component.onCompleted: shown = true
|
||||||
|
|||||||
@@ -307,12 +307,10 @@ CustomMouseArea {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on x {
|
Behavior on x {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on y {
|
Behavior on y {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onTodayItemChanged: {
|
onTodayItemChanged: {
|
||||||
|
|||||||
@@ -77,8 +77,7 @@ Item {
|
|||||||
implicitSize: height
|
implicitSize: height
|
||||||
|
|
||||||
Behavior on clampedVal {
|
Behavior on clampedVal {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialIcon {
|
MaterialIcon {
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ Item {
|
|||||||
Repeater {
|
Repeater {
|
||||||
id: shapes
|
id: shapes
|
||||||
|
|
||||||
DriftingShape {
|
DriftingShape {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FrameAnimation {
|
FrameAnimation {
|
||||||
@@ -80,8 +79,7 @@ Item {
|
|||||||
shape: root.shapePool[Math.floor(Math.random() * root.shapePool.length)]
|
shape: root.shapePool[Math.floor(Math.random() * root.shapePool.length)]
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ Item {
|
|||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
|
|
||||||
Behavior on fallbackColor {
|
Behavior on fallbackColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
layer.effect: MultiEffect {
|
layer.effect: MultiEffect {
|
||||||
blurMax: 1
|
blurMax: 1
|
||||||
|
|||||||
@@ -54,14 +54,12 @@ Item {
|
|||||||
Behavior on x {
|
Behavior on x {
|
||||||
enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath)
|
enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath)
|
||||||
|
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on y {
|
Behavior on y {
|
||||||
enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath)
|
enabled: !mouseArea.drag.active && !root.isSnapping && !root.iconsRoot.selectedIcons.includes(root.filePath)
|
||||||
|
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
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
|
y: (root.iconsRoot.selectedIcons.includes(root.filePath) && root.iconsRoot.dragLeader !== "" && root.iconsRoot.dragLeader !== root.filePath) ? root.iconsRoot.groupDragY : 0
|
||||||
}
|
}
|
||||||
transitions: Transition {
|
transitions: Transition {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onXChanged: {
|
onXChanged: {
|
||||||
@@ -208,8 +205,7 @@ Item {
|
|||||||
radius: Tokens.rounding.small
|
radius: Tokens.rounding.small
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,8 +264,7 @@ Item {
|
|||||||
radius: Tokens.rounding.small
|
radius: Tokens.rounding.small
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,8 +82,7 @@ CustomRect {
|
|||||||
Loader {
|
Loader {
|
||||||
active: isSeparator
|
active: isSeparator
|
||||||
|
|
||||||
sourceComponent: DockSeparator {
|
sourceComponent: DockSeparator {}
|
||||||
}
|
|
||||||
|
|
||||||
anchors {
|
anchors {
|
||||||
fill: parent
|
fill: parent
|
||||||
|
|||||||
Executable → Regular
+1
-2
@@ -41,8 +41,7 @@ CarouselView {
|
|||||||
tileHeight: focalWidth / 16 * 9
|
tileHeight: focalWidth / 16 * 9
|
||||||
|
|
||||||
delegate: Component {
|
delegate: Component {
|
||||||
WallpaperTile {
|
WallpaperTile {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onDestruction: Wallpapers.stopPreview()
|
Component.onDestruction: Wallpapers.stopPreview()
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ Searcher {
|
|||||||
|
|
||||||
model: Config.launcher.actions.values.filter(a => (a.enabled ?? true) && (Config.launcher.enableDangerousActions || !(a.dangerous ?? false)))
|
model: Config.launcher.actions.values.filter(a => (a.enabled ?? true) && (Config.launcher.enableDangerousActions || !(a.dangerous ?? false)))
|
||||||
|
|
||||||
Action {
|
Action {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
component Action: QtObject {
|
component Action: QtObject {
|
||||||
|
|||||||
@@ -131,8 +131,7 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ ClipRect {
|
|||||||
radius: Tokens.rounding.largeIncreased
|
radius: Tokens.rounding.largeIncreased
|
||||||
|
|
||||||
Behavior on animPerc {
|
Behavior on animPerc {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Contents {
|
Contents {
|
||||||
|
|||||||
@@ -51,8 +51,7 @@ CustomRect {
|
|||||||
value: Memory.percentage
|
value: Memory.percentage
|
||||||
|
|
||||||
Behavior on clampedVal {
|
Behavior on clampedVal {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|||||||
@@ -81,8 +81,7 @@ Item {
|
|||||||
|
|
||||||
active: Config.dashboard.performance.showStorage
|
active: Config.dashboard.performance.showStorage
|
||||||
|
|
||||||
sourceComponent: StorageCard {
|
sourceComponent: StorageCard {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WrappedLoader {
|
WrappedLoader {
|
||||||
@@ -90,8 +89,7 @@ Item {
|
|||||||
|
|
||||||
active: Config.dashboard.performance.showMemory
|
active: Config.dashboard.performance.showMemory
|
||||||
|
|
||||||
sourceComponent: MemoryCard {
|
sourceComponent: MemoryCard {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WrappedLoader {
|
WrappedLoader {
|
||||||
@@ -99,8 +97,7 @@ Item {
|
|||||||
|
|
||||||
active: Config.dashboard.performance.showVram
|
active: Config.dashboard.performance.showVram
|
||||||
|
|
||||||
sourceComponent: VramCard {
|
sourceComponent: VramCard {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WrappedLoader {
|
WrappedLoader {
|
||||||
@@ -108,8 +105,7 @@ Item {
|
|||||||
|
|
||||||
active: Config.dashboard.performance.showNetwork && !vramCard.active
|
active: Config.dashboard.performance.showNetwork && !vramCard.active
|
||||||
|
|
||||||
sourceComponent: NetworkCard {
|
sourceComponent: NetworkCard {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,8 +114,7 @@ Item {
|
|||||||
|
|
||||||
active: Config.dashboard.performance.showNetwork && vramCard.active
|
active: Config.dashboard.performance.showNetwork && vramCard.active
|
||||||
|
|
||||||
sourceComponent: NetworkCard {
|
sourceComponent: NetworkCard {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,8 +122,7 @@ Item {
|
|||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
active: Battery.isLaptop && Config.dashboard.performance.showBattery
|
active: Battery.isLaptop && Config.dashboard.performance.showBattery
|
||||||
|
|
||||||
sourceComponent: BatteryTank {
|
sourceComponent: BatteryTank {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,7 @@ CustomRect {
|
|||||||
topRightRadius: first ? Tokens.rounding.largeIncreased : Tokens.rounding.extraSmall
|
topRightRadius: first ? Tokens.rounding.largeIncreased : Tokens.rounding.extraSmall
|
||||||
|
|
||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomRect {
|
CustomRect {
|
||||||
|
|||||||
@@ -26,8 +26,7 @@ CustomRect {
|
|||||||
state: expanded ? "expanded" : ""
|
state: expanded ? "expanded" : ""
|
||||||
|
|
||||||
Behavior on implicitHeight {
|
Behavior on implicitHeight {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
states: State {
|
states: State {
|
||||||
name: "expanded"
|
name: "expanded"
|
||||||
@@ -116,8 +115,7 @@ CustomRect {
|
|||||||
anchors.topMargin: Tokens.spacing.extraSmall
|
anchors.topMargin: Tokens.spacing.extraSmall
|
||||||
shouldBeActive: root.expanded
|
shouldBeActive: root.expanded
|
||||||
|
|
||||||
sourceComponent: ExpandedBody {
|
sourceComponent: ExpandedBody {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
component ExpandedBody: ColumnLayout {
|
component ExpandedBody: ColumnLayout {
|
||||||
|
|||||||
@@ -58,18 +58,15 @@ LazyListView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on scale {
|
Behavior on scale {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on x {
|
Behavior on x {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on y {
|
Behavior on y {
|
||||||
enabled: notif.LazyListView.ready
|
enabled: notif.LazyListView.ready
|
||||||
|
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onPositionChanged: event => {
|
onPositionChanged: event => {
|
||||||
|
|||||||
@@ -52,8 +52,7 @@ CustomRect {
|
|||||||
radius: Tokens.rounding.large
|
radius: Tokens.rounding.large
|
||||||
|
|
||||||
Behavior on implicitHeight {
|
Behavior on implicitHeight {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onDestruction: {
|
Component.onDestruction: {
|
||||||
@@ -155,8 +154,7 @@ CustomRect {
|
|||||||
spacing: root.expanded ? Math.round(Tokens.spacing.extraSmall) : 0
|
spacing: root.expanded ? Math.round(Tokens.spacing.extraSmall) : 0
|
||||||
|
|
||||||
Behavior on spacing {
|
Behavior on spacing {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
@@ -214,12 +212,10 @@ CustomRect {
|
|||||||
text: "expand_more"
|
text: "expand_more"
|
||||||
|
|
||||||
Behavior on Layout.topMargin {
|
Behavior on Layout.topMargin {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on rotation {
|
Behavior on rotation {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,18 +59,15 @@ LazyListView {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Behavior on scale {
|
Behavior on scale {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on x {
|
Behavior on x {
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Behavior on y {
|
Behavior on y {
|
||||||
enabled: notif.LazyListView.ready
|
enabled: notif.LazyListView.ready
|
||||||
|
|
||||||
Anim {
|
Anim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Component.onCompleted: modelData?.lock(this)
|
Component.onCompleted: modelData?.lock(this)
|
||||||
|
|||||||
@@ -17,8 +17,7 @@ ShapePath {
|
|||||||
strokeWidth: -1
|
strokeWidth: -1
|
||||||
|
|
||||||
Behavior on fillColor {
|
Behavior on fillColor {
|
||||||
CAnim {
|
CAnim {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PathLine {
|
PathLine {
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ void BlobInvertedRect::outerCornerRadii(float out[4]) const {
|
|||||||
const auto base = std::min(static_cast<float>(m_outerRadius), maxR);
|
const auto base = std::min(static_cast<float>(m_outerRadius), maxR);
|
||||||
out[0] = std::min(
|
out[0] = std::min(
|
||||||
m_outerTopRightRadius >= 0 ? static_cast<float>(m_outerTopRightRadius)
|
m_outerTopRightRadius >= 0 ? static_cast<float>(m_outerTopRightRadius)
|
||||||
: base,
|
: base,
|
||||||
maxR);
|
maxR);
|
||||||
out[1] = std::min(
|
out[1] = std::min(
|
||||||
m_outerBottomRightRadius >= 0
|
m_outerBottomRightRadius >= 0
|
||||||
|
|||||||
@@ -60,11 +60,15 @@ class BlobInvertedRect : public BlobShape {
|
|||||||
void setOuterRadius(qreal v);
|
void setOuterRadius(qreal v);
|
||||||
|
|
||||||
// Per-corner outer radii. -1 falls back to outerRadius (mirrors BlobRect).
|
// 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);
|
void setOuterTopLeftRadius(qreal v);
|
||||||
|
|
||||||
[[nodiscard]] qreal outerTopRightRadius() const { return m_outerTopRightRadius; }
|
[[nodiscard]] qreal outerTopRightRadius() const {
|
||||||
|
return m_outerTopRightRadius;
|
||||||
|
}
|
||||||
|
|
||||||
void setOuterTopRightRadius(qreal v);
|
void setOuterTopRightRadius(qreal v);
|
||||||
|
|
||||||
|
|||||||
@@ -240,8 +240,7 @@ void BlobShape::updatePolish() {
|
|||||||
m_cachedInvertedRadius = 0;
|
m_cachedInvertedRadius = 0;
|
||||||
memset(m_cachedInvertedOuter, 0, sizeof(m_cachedInvertedOuter));
|
memset(m_cachedInvertedOuter, 0, sizeof(m_cachedInvertedOuter));
|
||||||
memset(m_cachedInvertedInner, 0, sizeof(m_cachedInvertedInner));
|
memset(m_cachedInvertedInner, 0, sizeof(m_cachedInvertedInner));
|
||||||
memset(
|
memset(m_cachedInvertedOuterRadii, 0, sizeof(m_cachedInvertedOuterRadii));
|
||||||
m_cachedInvertedOuterRadii, 0, sizeof(m_cachedInvertedOuterRadii));
|
|
||||||
|
|
||||||
auto* inv = m_group->invertedRect();
|
auto* inv = m_group->invertedRect();
|
||||||
if (inv) {
|
if (inv) {
|
||||||
|
|||||||
@@ -653,7 +653,8 @@ void WallpaperDb::queueMetadata(
|
|||||||
existingCache.isEmpty() ? "" : ", existing blob");
|
existingCache.isEmpty() ? "" : ", existing blob");
|
||||||
|
|
||||||
m_queue.append(
|
m_queue.append(
|
||||||
MetadataJob{entry, entry->path(), isVideo, existingCache, existingPoster});
|
MetadataJob{
|
||||||
|
entry, entry->path(), isVideo, existingCache, existingPoster});
|
||||||
|
|
||||||
if (!m_queueTimer.isActive()) {
|
if (!m_queueTimer.isActive()) {
|
||||||
m_queueTimer.start();
|
m_queueTimer.start();
|
||||||
@@ -771,8 +772,8 @@ void WallpaperDb::runMetadataJob(const MetadataJob& job) {
|
|||||||
|
|
||||||
QByteArray poster = job.existingPoster;
|
QByteArray poster = job.existingPoster;
|
||||||
if (poster.isEmpty()) {
|
if (poster.isEmpty()) {
|
||||||
poster =
|
poster = job.isVideo ? videoPosterBytes(job.path, cacheSize)
|
||||||
job.isVideo ? videoPosterBytes(job.path, cacheSize) : cache;
|
: cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
result.cache = cache;
|
result.cache = cache;
|
||||||
|
|||||||
@@ -110,8 +110,8 @@ class WallpaperDb : public QObject {
|
|||||||
|
|
||||||
[[nodiscard]] static QString thumbnailUrl(const QString& path);
|
[[nodiscard]] static QString thumbnailUrl(const QString& path);
|
||||||
|
|
||||||
Q_INVOKABLE QVariantMap crop(const QString& path, const QString& screen)
|
Q_INVOKABLE QVariantMap
|
||||||
const;
|
crop(const QString& path, const QString& screen) const;
|
||||||
Q_INVOKABLE void setCrop(
|
Q_INVOKABLE void setCrop(
|
||||||
const QString& path, const QString& screen, const QVariantMap& crop);
|
const QString& path, const QString& screen, const QVariantMap& crop);
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ QString VideoTranscoder::codecName(const QString& path) const {
|
|||||||
|
|
||||||
if (!probe.waitForFinished(2000) || probe.exitCode() != 0) {
|
if (!probe.waitForFinished(2000) || probe.exitCode() != 0) {
|
||||||
qWarning(transcodeLog) << "WallpaperService: ffprobe failed for" << path
|
qWarning(transcodeLog) << "WallpaperService: ffprobe failed for" << path
|
||||||
<< "(exit" << probe.exitCode() << ")";
|
<< "(exit" << probe.exitCode() << ")";
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ void VideoTranscoder::start(const QString& src, const QString& dst) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
qWarning(transcodeLog) << "WallpaperService: transcoding" << src << "->"
|
qWarning(transcodeLog) << "WallpaperService: transcoding" << src << "->"
|
||||||
<< dst;
|
<< dst;
|
||||||
|
|
||||||
proc->setProgram("nice");
|
proc->setProgram("nice");
|
||||||
proc->setArguments({
|
proc->setArguments({
|
||||||
|
|||||||
@@ -72,11 +72,9 @@ void WallpaperObject::syncCrop(const QVariantMap& crop) {
|
|||||||
const qreal y = crop.value("y").toDouble();
|
const qreal y = crop.value("y").toDouble();
|
||||||
const qreal width = crop.contains("width") ? crop.value("width").toDouble()
|
const qreal width = crop.contains("width") ? crop.value("width").toDouble()
|
||||||
: 1.0;
|
: 1.0;
|
||||||
const qreal height = crop.contains("height")
|
const qreal height =
|
||||||
? crop.value("height").toDouble()
|
crop.contains("height") ? crop.value("height").toDouble() : 1.0;
|
||||||
: 1.0;
|
const qreal z = crop.contains("zoom") ? crop.value("zoom").toDouble() : 1.0;
|
||||||
const qreal z =
|
|
||||||
crop.contains("zoom") ? crop.value("zoom").toDouble() : 1.0;
|
|
||||||
|
|
||||||
const bool prev = m_pushEnabled;
|
const bool prev = m_pushEnabled;
|
||||||
m_pushEnabled = false;
|
m_pushEnabled = false;
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ Singleton {
|
|||||||
|
|
||||||
model: Quickshell.screens
|
model: Quickshell.screens
|
||||||
|
|
||||||
ScreenState {
|
ScreenState {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+25
-53
@@ -1,56 +1,28 @@
|
|||||||
FROM archlinux:latest
|
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 ffmpeg mpv \
|
||||||
|
qt6-base qt6-declarative qt6-shadertools qt6-5compat \
|
||||||
|
qt6-canvaspainter qt6-wayland qt5-wayland mpv \
|
||||||
|
libqalculate pipewire aubio cava lm_sensors glib2 \
|
||||||
|
&& pacman -Scc --noconfirm
|
||||||
|
|
||||||
# Build toolchain
|
RUN pacman -Syu --noconfirm \
|
||||||
RUN pacman -S --noconfirm \
|
&& pacman -S --needed --noconfirm \
|
||||||
base-devel \
|
sudo meson autoconf-archive python-tqdm \
|
||||||
cmake \
|
&& useradd -m builder \
|
||||||
ninja \
|
&& printf '%s\n' 'builder ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/builder \
|
||||||
clang \
|
&& chmod 0440 /etc/sudoers.d/builder \
|
||||||
lld \
|
&& for i in 1 2 3 4 5; do \
|
||||||
nodejs \
|
rm -rf /tmp/libcava; \
|
||||||
tree-sitter \
|
if git clone --depth 1 https://aur.archlinux.org/libcava.git /tmp/libcava; then break; fi; \
|
||||||
jkqtplotter \
|
sleep 5; \
|
||||||
cmark-gfm \
|
done \
|
||||||
git
|
&& test -d /tmp/libcava/.git \
|
||||||
|
&& chown -R builder:builder /tmp/libcava \
|
||||||
# Qt6
|
&& su builder -c "cd /tmp/libcava && makepkg -si --noconfirm" \
|
||||||
RUN pacman -S --noconfirm \
|
&& rm -rf /tmp/libcava /etc/sudoers.d/builder \
|
||||||
qt6-base \
|
&& userdel -r builder \
|
||||||
qt6-declarative \
|
&& pacman -Scc --noconfirm
|
||||||
qt6-shadertools \
|
|
||||||
qt6-5compat \
|
|
||||||
qt6-canvaspainter
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
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
|
||||||
|
|
||||||
|
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 "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 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"
|
||||||
|
@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 "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"
|
||||||
|
@echo "fmt-make formats the makefile using mbake (in case you like spaces instead of tabs)"
|
||||||
|
|
||||||
|
build:
|
||||||
|
$(BUILD)
|
||||||
|
|
||||||
|
install:
|
||||||
|
$(INSTALL)
|
||||||
|
|
||||||
|
compile:
|
||||||
|
$(COMPILE)
|
||||||
|
|
||||||
|
# C++
|
||||||
|
cpp-fmt:
|
||||||
|
$(CPPFMT)
|
||||||
|
|
||||||
|
cpp-lint:
|
||||||
|
$(CPPLINT)
|
||||||
|
|
||||||
|
cpp-compile:
|
||||||
|
$(NONUITKA)
|
||||||
|
|
||||||
|
# Python
|
||||||
|
py-fmt:
|
||||||
|
ruff format
|
||||||
|
|
||||||
|
py-lint:
|
||||||
|
ruff check ./cli
|
||||||
|
|
||||||
|
py-check:
|
||||||
|
basedpyright
|
||||||
|
|
||||||
|
py-test:
|
||||||
|
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
|
||||||
|
qml-fmt:
|
||||||
|
find -name '*.qml' -exec /usr/lib/qt6/bin/qmlformat -i {} +
|
||||||
|
|
||||||
|
# Full checks
|
||||||
|
check-cpp:
|
||||||
|
$(MAKE) cpp-fmt
|
||||||
|
$(MAKE) cpp-lint
|
||||||
|
$(MAKE) compile
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
fmt-make:
|
||||||
|
mbake format makefile
|
||||||
Reference in New Issue
Block a user