Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
425 commits
Select commit Hold shift + click to select a range
e8ffd51
fix: window mask regions during overshoot
soramanew Mar 27, 2026
2c5e433
fix: clean up notif wrapper and format
soramanew Mar 27, 2026
49695f8
audio: add default output sink cycle ipc (#1200)
PixelKhaos Mar 27, 2026
f2d023b
fix: osd hover area + popup notif osd/session dodging
soramanew Mar 27, 2026
14437cc
fix: remove osd and session wrapper hacks
soramanew Mar 27, 2026
c4399ef
fix: launcher anim
soramanew Mar 27, 2026
ff57473
fix: account for bottom panel offset when checking hover
soramanew Mar 27, 2026
0f5d2dd
feat: fade in/out drawers
soramanew Mar 27, 2026
e855506
fix: sidebar bulge at connection with utilities
soramanew Mar 27, 2026
b739e74
ci: add qt shadertools dep to ci image
soramanew Mar 27, 2026
5a4dbf1
Merge branch 'main' into sdfs
soramanew Mar 27, 2026
611f8de
fix: sidebar close anim & gap w/ utilities
soramanew Mar 27, 2026
42a1f34
chore: fix property-override linter warnings
soramanew Mar 28, 2026
be53c42
chore: fix format
soramanew Mar 28, 2026
edf1c15
Merge branch 'main' into sdfs
soramanew Mar 28, 2026
04efa4d
feat: make utils anim to sidebar width
soramanew Mar 28, 2026
6cdecb8
fix: sidebar gap with utils due to deform
soramanew Mar 28, 2026
99dec4e
chore: fix format
soramanew Mar 28, 2026
4ed5449
fix: animate background colour
soramanew Mar 28, 2026
c670302
chore: format c++
soramanew Mar 28, 2026
9337944
ci: use 2 separate jobs for format
soramanew Mar 28, 2026
c64119a
fix: YouTube thumbnail fallback for missing mpris:artUrl (#1347)
Mestane Mar 28, 2026
ab4070a
Merge branch 'main' into sdfs
soramanew Mar 28, 2026
e32e1fd
feat: disable reloads for installed shell
soramanew Mar 28, 2026
793cc82
feat: set hypr blur configs dynamically
soramanew Mar 28, 2026
552c2e1
Merge branch 'main' into sdfs
soramanew Mar 28, 2026
980dd0b
fix: nix duplicate property set
soramanew Mar 28, 2026
b5f7616
fix: weather not using system timezone (#1346)
Chujo58 Mar 28, 2026
c588794
feat: fullscreen notification & toasts overlay (#1276)
PixelKhaos Mar 29, 2026
5c59e44
feat: VPN fixes & improvements (#1116)
PixelKhaos Mar 29, 2026
1f3656c
fix: performance cpu/gpu name overlapping usage
soramanew Mar 29, 2026
3bdffca
feat: c++ visualiser
soramanew Mar 29, 2026
b57d596
Merge branch 'main' into sdfs
soramanew Mar 29, 2026
3fe54c5
feat: add c-p and c-n to vim bindings (#1325)
chea-vuthearith Mar 30, 2026
36aac87
feat: add option to change notif dock placeholder (#1190)
YanamiRei Mar 31, 2026
a2a6397
fix: guard pw timer & stream for null
soramanew Apr 2, 2026
4714fe8
feat: use logging categories
soramanew Apr 2, 2026
2dffd4f
Merge branch 'main' into sdfs
soramanew Apr 2, 2026
c2221a6
fix: use height scaled region for top panel detection
soramanew Apr 2, 2026
ffe9bb8
fix: notif image and vpn serialisation (#1370)
Mestane Apr 2, 2026
9fa8895
fix: reset lyrics when player is killed (#1359)
Mestane Apr 2, 2026
736eda6
feat: c++ resizable list view component
soramanew Apr 2, 2026
9e35e93
fix: model change sigabrt crash + resize anim
soramanew Apr 2, 2026
dfc5bcf
fix: preserve VPN interface and command fields (#1373)
PixelKhaos Apr 2, 2026
2acd8f1
fix: don't recreate all delegates on model change
soramanew Apr 2, 2026
0252be3
fix: delegate size not being tracked after rearrange
soramanew Apr 2, 2026
051b8ca
fix: move anim logic to qml
soramanew Apr 2, 2026
f924dbf
feat: show battery status in Bluetooth popout (#1130)
evertiro Apr 3, 2026
916b702
fix: use visible height to calc contentHeight
soramanew Apr 3, 2026
faaae7b
chore: format
soramanew Apr 3, 2026
cf8b68b
fix: add null guards to notifs
soramanew Apr 3, 2026
20983ff
feat: replace notif group list with lazy list view
soramanew Apr 3, 2026
ea776c2
fix: lazy list view spacing + debounce relayout
soramanew Apr 3, 2026
700ad61
feat: listview async delegate creation and destruction
soramanew Apr 3, 2026
1c09222
fix: only destroy delegates when visually out of viewport
soramanew Apr 3, 2026
8f3f1b9
feat: map listview delegates to indexes
soramanew Apr 3, 2026
0880932
fix: qFuzzyCompare + 1.0
soramanew Apr 3, 2026
2fbdfad
fix: notif group collapse lag
soramanew Apr 3, 2026
b83ac6e
feat: use curve for notif clear all anim
soramanew Apr 3, 2026
5b153fd
fix: batch clear all notifs to prevent blocking
soramanew Apr 3, 2026
009c551
Merge branch 'main' into cxx-listview
soramanew Apr 3, 2026
a40b1c2
fix: use bound component context
soramanew Apr 3, 2026
673b096
fix: iface -> interface in VPN service (#1376)
PixelKhaos Apr 6, 2026
ffa7d88
ci: use clang format dry-run -Werror
soramanew Apr 6, 2026
612f828
fix: don't loader variants
soramanew Apr 6, 2026
0e50b62
refactor: move drawers window -> ContentWindow.qml
soramanew Apr 6, 2026
c126075
chore: clean out legacy background code
soramanew Apr 6, 2026
ed33b3d
dev: update direnv watch paths
soramanew Apr 6, 2026
31e29c1
fix: blob sdf rect-rect edge sink
soramanew Apr 7, 2026
9ce0224
fix: reduce deform amount
soramanew Apr 7, 2026
d778734
fix: remove sminNoBulge cause useless
soramanew Apr 7, 2026
77ab4b8
fix: blobs ignoring updates if moving too slow
soramanew Apr 7, 2026
293b6f4
feat: expressive effects -> slow spatial
soramanew Apr 7, 2026
df27c93
feat: improve popouts
soramanew Apr 8, 2026
ec4a15c
fix: undef warning in winfo
soramanew Apr 8, 2026
ff5c46a
fix: don't exclude panels from group based on size
soramanew Apr 8, 2026
b138023
fix: prevent deform gap between bar and popouts
soramanew Apr 8, 2026
eaa6aef
fix: popout transition anim
soramanew Apr 8, 2026
e1e0c31
refactor: move popout position logic to wrapper
soramanew Apr 8, 2026
7f0acf1
chore: fix linter warnings
soramanew Apr 8, 2026
bd35b2b
Merge branch 'main' into sdfs
soramanew Apr 8, 2026
c623b9b
fix: osd and session bulges
soramanew Apr 8, 2026
aa2b08d
Merge pull request #1331 from caelestia-dots/sdfs
soramanew Apr 8, 2026
1d6919b
Merge branch 'main' into cxx-listview
soramanew Apr 9, 2026
c7a943b
fix: close notif group notifs in batches
soramanew Apr 9, 2026
0682397
fix: watch transform for changes + async dock list
soramanew Apr 9, 2026
3f72dde
fix: lazy list view overshoot
soramanew Apr 9, 2026
1223b53
fix: prevent cacheBuffer from extending viewport over height
soramanew Apr 9, 2026
82f177f
fix: increase cache buffers to reduce visual glitches
soramanew Apr 9, 2026
8fbf85d
fix: notif list viewport jumping around on delegate creation
soramanew Apr 9, 2026
e3b3a66
fix: notif fileview warnings on first launch
soramanew Apr 9, 2026
9145f83
fix: remove dead list view anim code
soramanew Apr 9, 2026
cc54d9b
fix: remove unnecessary qml context creation
soramanew Apr 9, 2026
e6c1248
fix: no need to disconnect signal
soramanew Apr 9, 2026
2efe1a9
fix: layout delegates after configurable delay
soramanew Apr 9, 2026
b0aeee8
fix: allow viewport to be outside of bounds
soramanew Apr 9, 2026
ac65b78
fix: reduce notif group list cache buffer
soramanew Apr 9, 2026
7a82ca4
fix: account for closing notifs in group preview
soramanew Apr 9, 2026
e234990
fix: don't play add/remove anim on old delegates
soramanew Apr 9, 2026
c629eaa
fix: don't add delegate to layout until ready delay finish
soramanew Apr 9, 2026
e3d2ffd
fix: remove previewHidden from notif groups
soramanew Apr 9, 2026
6cd5758
fix: animate viewport tracking and fix condition
soramanew Apr 9, 2026
0844013
feat: animate delegates in from visual position
soramanew Apr 9, 2026
0e07176
Merge pull request #1375 from caelestia-dots/cxx-listview
soramanew Apr 10, 2026
d530e20
feat: add c++ settings
soramanew Apr 10, 2026
8d73d60
fix: move scale back to normal config
soramanew Apr 10, 2026
f7aec30
fix: use private constructor for singleton
soramanew Apr 10, 2026
ff1bde8
fix: expose config types to qml properly
soramanew Apr 10, 2026
4ff97c8
fix: crash/block on qml engine reload
soramanew Apr 10, 2026
f4b851b
feat: advanced -> tokens
soramanew Apr 11, 2026
9f8fd7d
feat: make tokens separate singleton
soramanew Apr 11, 2026
a932a68
feat: add config scope
soramanew Apr 11, 2026
71f27bb
feat: add per monitor configs
soramanew Apr 11, 2026
9a8c5ec
feat: add debug logging
soramanew Apr 11, 2026
f15b234
fix: create tokens singleton when global config is created
soramanew Apr 11, 2026
08cc492
fix: ensure tokens are not bound multiple times
soramanew Apr 11, 2026
a53aff3
feat: expose default configs to qml
soramanew Apr 11, 2026
edf6184
fix: retry reading file before warn
soramanew Apr 11, 2026
8f51502
fix: use qobject parent
soramanew Apr 11, 2026
e283ee2
fix: fully qualify Q_PROPERTY types
soramanew Apr 11, 2026
d5d6f70
feat: add load/save + fail signals
soramanew Apr 11, 2026
4f2b901
fix: signal and emit macros -> keywords
soramanew Apr 11, 2026
324acb4
fix: ensure singletons exist when evaluating attached props
soramanew Apr 11, 2026
0429650
feat: Tokens attached object points to Config.appearance
soramanew Apr 11, 2026
3a37d77
feat: replace qml config module with c++ module
soramanew Apr 11, 2026
2b2d5a4
feat: move size tokens to subobject
soramanew Apr 11, 2026
b5dcd07
fix: use correct size tokens in QML
soramanew Apr 11, 2026
1801208
feat: add proper anim tokens to Tokens
soramanew Apr 11, 2026
d99fefd
fix: use correct anim tokens in QML
soramanew Apr 11, 2026
ba95924
fix: dashboard showXXX confs in the wrong file
soramanew Apr 11, 2026
9cf3ad4
fix: broken config uses + move gif speed adjustments to Config.general
soramanew Apr 11, 2026
f65723a
feat: never destroy config singletons
soramanew Apr 11, 2026
71dd7b4
chore: format QML imports
soramanew Apr 11, 2026
ae8d344
fix: qualify attached props on non-Item components
soramanew Apr 11, 2026
37b61fe
chore: update readme
soramanew Apr 11, 2026
9be9ec1
fix: per monitor configs
soramanew Apr 11, 2026
31d7a77
fix: popouts anims, should not be per-monitor
soramanew Apr 11, 2026
93b5fb5
feat: make all configs sparse
soramanew Apr 11, 2026
746d1af
feat: allow resetting options
soramanew Apr 11, 2026
9b1b33a
feat: remove file prefix on signals
soramanew Apr 11, 2026
697784a
fix: remove key from loaded keys on sync
soramanew Apr 11, 2026
72e0a21
refactor: move file logic to RootConfig + to own file
soramanew Apr 11, 2026
24367df
feat: add config load/fail toasts
soramanew Apr 11, 2026
1ad6f65
fix: don't emit until final retry
soramanew Apr 11, 2026
b987a39
feat: debounce reloads
soramanew Apr 11, 2026
3e1b235
feat: watch parent dirs recursively for changes
soramanew Apr 11, 2026
ef00097
feat: improve error toasts
soramanew Apr 11, 2026
ee9dce0
fix: propagate per monitor overlay signals to main
soramanew Apr 11, 2026
5a13cc2
feat: add unknown option toasts
soramanew Apr 11, 2026
bea72b4
feat: emit signals on startup
soramanew Apr 11, 2026
41ba4f6
feat: add per monitor enabled prop
soramanew Apr 11, 2026
3d012e8
chore: remove old Config.save()
soramanew Apr 11, 2026
42b9e57
fix: use singleton for conf writes
soramanew Apr 11, 2026
fc1b3ca
chore: remove unused import
soramanew Apr 11, 2026
644e706
refactor: move attached types to own files
soramanew Apr 11, 2026
dd15b1d
refactor: static -> anonymous namespace
soramanew Apr 11, 2026
f1fb68c
feat: add auto save on option changes
soramanew Apr 11, 2026
7b13772
chore: add not per-mon opts to readme
soramanew Apr 12, 2026
1385ca1
feat: add warning on global options using per-mon confs
soramanew Apr 12, 2026
e16a70b
fix: don't sync global props
soramanew Apr 12, 2026
129b063
refactor: move inline getter impls to cpp file
soramanew Apr 12, 2026
b8d17ad
fix: use global config for global properties
soramanew Apr 12, 2026
8f579a1
fix: ignore most operations if global only
soramanew Apr 12, 2026
666d451
fix: global config use for rest of global props
soramanew Apr 12, 2026
03c1e50
feat: print full option path in warning
soramanew Apr 12, 2026
0432c47
fix: anims should not be per monitor
soramanew Apr 12, 2026
5cef79d
feat: warn on per monitor confs being accessed without scope
soramanew Apr 12, 2026
2f5fcfa
fix: move more properties to global only
soramanew Apr 12, 2026
7e4b14f
fix: per monitor props not having ancestor scope
soramanew Apr 12, 2026
bbba6e1
fix: global transparency
soramanew Apr 12, 2026
8883156
fix: add lock config scope
soramanew Apr 12, 2026
8c8d196
feat: use QQuickAttachedPropertyPropagator
soramanew Apr 12, 2026
9de094b
fix: suppress warnings before component is complete
soramanew Apr 12, 2026
06ad45d
fix: more non global access warnings
soramanew Apr 12, 2026
6a91535
fix: don't suppress warnings on non Item components
soramanew Apr 12, 2026
8106aca
fix: even more non global access
soramanew Apr 13, 2026
16a77f0
chore: remove unused import
soramanew Apr 13, 2026
3cffc1f
fix: even MORE non global access
soramanew Apr 13, 2026
0571adc
fix: add back list option defaults
soramanew Apr 13, 2026
982bb97
fix: EVEN MORE non global access
soramanew Apr 13, 2026
8765170
chore: update readme global opts
soramanew Apr 13, 2026
455c4c5
chore: remove unnecessary id
soramanew Apr 13, 2026
b1401c1
feat: border rounding only affect outer corners
soramanew Apr 13, 2026
50c4eaf
feat: add border smoothing option
soramanew Apr 13, 2026
c517b71
fix: utilities recording modal bg
soramanew Apr 13, 2026
0eaca37
Merge pull request #1392 from caelestia-dots/feat/cxx-settings
soramanew Apr 14, 2026
90528c5
fix: remove config install from cmake
soramanew Apr 14, 2026
7df53a0
feat: add anim type shorthand + anchor anim
soramanew Apr 15, 2026
d675478
refactor: use new anim type prop
soramanew Apr 15, 2026
921c619
refactor: use new AnchorAnim component
soramanew Apr 15, 2026
20dca09
chore: remove unused imports
soramanew Apr 15, 2026
6e234d6
refactor: use signals instead of functions
soramanew Apr 17, 2026
4ed029f
chore: format
soramanew Apr 17, 2026
a6ce668
chore: .. imports -> qs.components
soramanew Apr 17, 2026
850d9fc
feat: forward declare where possible
soramanew Apr 17, 2026
f68fb78
feat: use pch to speed up builds
soramanew Apr 17, 2026
a6a51a0
fix: dash tab hover
soramanew Apr 17, 2026
2bb2819
fix: don't use easingCurve type
soramanew Apr 19, 2026
ec8ce65
feat: m3 expressive menus
soramanew Apr 19, 2026
d97bbb3
chore: format
soramanew Apr 19, 2026
b0d5700
fix: state layer ripple
soramanew Apr 19, 2026
31c484b
fix: wrap media position by length (#1410)
soramanew Apr 19, 2026
92276be
ci: update stable branch on release (#1414)
soramanew Apr 19, 2026
fffe6f4
fix: sidebar notif group height anim
soramanew Apr 19, 2026
b004eda
feat: improve sidebar notif expand anim
soramanew Apr 19, 2026
89cb3b9
fix: don't cache icons + fix bg colour when transparent image
soramanew Apr 19, 2026
f77ba92
feat: add deform scale config option
soramanew Apr 19, 2026
45d7cdf
fix: clamp blob radii at half min dimension
soramanew Apr 20, 2026
cc77522
chore: add deformScale to example config
soramanew Apr 20, 2026
68a3362
fix: control center outer rounding
soramanew Apr 20, 2026
b94ee8d
fix: unstretch kuru
soramanew Apr 20, 2026
03d2e98
feat: use default env + drop expensive fonts
soramanew Apr 22, 2026
f6e2345
feat: add monitor management pane and identifier overlay
devalentineomonya Apr 22, 2026
9be727d
fix: interaction blocking at edges when fullscreen
soramanew Apr 26, 2026
53dd959
feat: always expire notifs if fullscreen
soramanew Apr 26, 2026
411e013
feat: use image provider for caching
soramanew Apr 27, 2026
4f1f609
fix: use QSaveFile for atomic writes
soramanew Apr 27, 2026
1f7aeec
fix: specify sourceSize as a single prop
soramanew Apr 27, 2026
b4d490a
fix: use original image if requested size is invalid
soramanew Apr 27, 2026
8e373ce
feat: split caching into separate service
soramanew Apr 27, 2026
5b88995
fix: initial 0 size on launcher wallpaper item
soramanew Apr 27, 2026
f843250
fix: blob exclusion being ignored at corner blends
soramanew Apr 27, 2026
6777ad0
chore: remove old CachingImageManager
soramanew Apr 27, 2026
dea8efc
fix: handle hidpi properly
soramanew Apr 27, 2026
775d0a8
fix: handle hidpi for rest of sourceSize uses
soramanew Apr 27, 2026
665d784
feat: calculate size from source when single dim requested
soramanew Apr 27, 2026
a2b7ce6
Merge pull request #1431 from caelestia-dots/feat/cache-image-provider
soramanew Apr 29, 2026
d4b98de
fix: slight border showing when fullscreen
soramanew Apr 30, 2026
bcd7f6f
feat: display on overlay layer only when fs
soramanew Apr 30, 2026
87a4528
fix: allow interacting with notifs and osd in fs
soramanew Apr 30, 2026
a06fa38
fix: close detached popout on fs
soramanew Apr 30, 2026
dfbd082
feat: add showOverFullscreen option + disable by default
soramanew Apr 30, 2026
efc0875
fix: allow non-ascii chars in passwords
soramanew Apr 30, 2026
e872bc5
ci: fix update flake workflow
soramanew May 2, 2026
a394012
[CI] chore: update flake
github-actions[bot] May 2, 2026
4e9e1f4
ci: update action versions
soramanew May 2, 2026
e056d7b
[CI] chore: update flake
github-actions[bot] May 3, 2026
97ec598
fix: add Global to app properties (#1447)
dark3txr May 4, 2026
5d1fa5c
chore: add crash issue template
soramanew May 4, 2026
54cdd80
chore: set crash report url to ours
soramanew May 4, 2026
4763a69
fix: lock screencopy not working
soramanew May 6, 2026
859c76a
Fixed closeAnim.start() so it only runs after the file is saved and s…
devalentineomonya May 10, 2026
2ca4ad4
[CI] chore: update flake
github-actions[bot] May 10, 2026
cf18cea
[CI] chore: update flake
github-actions[bot] May 17, 2026
2f7ab5e
[CI] chore: update flake
github-actions[bot] May 24, 2026
922d4a7
recover local changes
devalentineomonya May 24, 2026
778cdd5
Some clean up
devalentineomonya May 24, 2026
648790a
Merge remote-tracking branch 'origin/main' into integrated
devalentineomonya May 24, 2026
d0524da
feat: enhance dashboard and taskbar panes with section navigation and…
devalentineomonya Jun 2, 2026
fd0bc89
chore: update subproject commit reference in shell
devalentineomonya Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .envrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ if has nix; then
fi

shopt -s globstar
watch_file assets/cpp/**/*.cpp
watch_file assets/cpp/**/*.hpp
watch_file plugin/**/*.cpp
watch_file plugin/**/*.hpp
watch_file plugin/**/*.qml
watch_file plugin/**/*.vert
watch_file plugin/**/*.frag
watch_file **/CMakeLists.txt

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_COMPILER=clazy -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DDISTRIBUTOR=direnv
Expand Down
57 changes: 57 additions & 0 deletions .github/ISSUE_TEMPLATE/crash.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Crash report
description: Report a crash
labels: ["bug", "crash"]
type: "Bug"
title: "[CRASH] "
body:
- type: textarea
attributes:
label: What caused the crash
description: |
Any information likely to help debug the crash. What were you doing when the crash occurred,
what changes did you make, can you get it to happen again?

- type: upload
attributes:
label: Report file
description: Attach `report.txt` here.
validations:
required: true

- type: upload
attributes:
label: Log file
description: |
Attach `log.qslog.log` here. If it is too big to upload, compress it.

You can preview the log if you'd like using `qs log <path-to-log> -r '*=true'`.
validations:
required: true

- type: textarea
attributes:
label: "Version info"
description: Run `caelestia -v` and paste the result below.
value: |
<details><summary>Version info</summary>

```
<!-- Run `caelestia -v` and paste the result here! -->
```

</details>
validations:
required: true

- type: checkboxes
attributes:
label: Reminder
options:
- label: I've successfully updated to the latest versions following the [updating guide](https://github.com/caelestia-dots/caelestia?tab=readme-ov-file#updating).
required: false
- label: I've successfully updated the system packages to the latest.
required: false
- label: I agree that it's usually impossible for others to help me without my logs.
required: true
- label: I've ticked the checkboxes without reading their contents
required: false
38 changes: 38 additions & 0 deletions .github/workflows/check-format.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Check formatting

on:
push:
branches:
- main
pull_request:

jobs:
check-qml:
runs-on: ubuntu-latest
container:
image: ghcr.io/${{ github.repository_owner }}/shell-arch-env:latest

steps:
- uses: actions/checkout@v6

- name: Check QML format
shell: fish {0}
run: |
for file in (string match -v 'build/*' **.qml)
/usr/lib/qt6/bin/qmlformat $file | diff -u $file - || exit 1
end
python3 scripts/qml-lint-conventions.py

check-cpp:
runs-on: ubuntu-latest
container:
image: ghcr.io/${{ github.repository_owner }}/shell-arch-env:latest

steps:
- uses: actions/checkout@v6

- name: Check C++ format
shell: fish {0}
run: |
find plugin extras -name '*.cpp' -o -name '*.hpp' \
| xargs clang-format --dry-run --Werror
43 changes: 43 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Lint code

on:
push:
branches:
- main
pull_request:

jobs:
lint:
runs-on: ubuntu-latest

container:
image: ghcr.io/${{ github.repository_owner }}/shell-arch-env:latest

steps:
- uses: actions/checkout@v6

- name: Build
run: |
# Set version and git rev for CI build so we don't call git
cmake -B build -G Ninja -DCMAKE_CXX_COMPILER=clazy -DCMAKE_CXX_FLAGS=-Werror -DVERSION= -DGIT_REVISION=
cmake --build build

- name: Lint QML
shell: fish {0}
run: |
# Generate tooling
touch .qmlls.ini
QT_QPA_PLATFORM=offscreen QML2_IMPORT_PATH="$PWD/build/qml:$QML2_IMPORT_PATH" timeout 2 qs -p .

# Construct linter args
set -l build_dir (grep -oP "(?<=buildDir=\")(.*)(?=\")" .qmlls.ini)
set -l import_paths (grep -oP "(?<=importPaths=\")(.*)(?=\")" .qmlls.ini | string split :)
set -l args -I $build_dir
for path in $import_paths
set -a args -I $path
end
set -l qml_files (string match -vr '(build|modules/controlcenter)/.*' **.qml)

# Lint
set -l lint_out (/usr/lib/qt6/bin/qmllint --import disable $args $qml_files 2>&1 | tee /dev/stderr)
test -z "$lint_out" || exit 1
9 changes: 7 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Create release
on:
push:
tags:
- 'v*'
- "v*"

jobs:
build-and-release:
Expand All @@ -13,7 +13,7 @@ jobs:
contents: write

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Create packages
run: |
Expand All @@ -35,3 +35,8 @@ jobs:
caelestia-shell-${{ github.ref_name }}.tar.gz
caelestia-shell-latest.tar.gz
generate_release_notes: true

- name: Update stable branch
run: |
git branch -f stable "$GITHUB_SHA"
git push origin stable --force
23 changes: 15 additions & 8 deletions .github/workflows/update-flake-inputs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,33 @@ name: Update flake inputs
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'
- cron: "0 0 * * 0"

jobs:
update-flake:
runs-on: ubuntu-latest

permissions:
contents: write

steps:
- uses: actions/checkout@v4
- name: Generate app token
id: app-token
uses: actions/create-github-app-token@v3
with:
client-id: ${{ secrets.CLIENT_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}

- uses: actions/checkout@v6
with:
token: ${{ steps.app-token.outputs.token }}

- name: Install Nix
uses: nixbuild/nix-quick-install-action@v31
uses: nixbuild/nix-quick-install-action@v34
with:
nix_conf: |
keep-env-derivations = true
keep-outputs = true

- name: Restore and save Nix store
uses: nix-community/cache-nix-action@v6
uses: nix-community/cache-nix-action@v7
with:
# restore and save a cache using this key
primary-key: nix-${{ hashFiles('**/*.nix', '**/flake.lock') }}
Expand Down Expand Up @@ -78,8 +84,9 @@ jobs:

- name: Commit and push changes
if: steps.check.outputs.modified == 'true'
uses: EndBug/add-and-commit@v9
uses: EndBug/add-and-commit@v10
with:
github_token: ${{ steps.app-token.outputs.token }}
add: flake.lock
default_author: github_actions
message: "[CI] chore: update flake"
46 changes: 46 additions & 0 deletions .github/workflows/update-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Update Docker CI image

on:
workflow_dispatch:
schedule:
- cron: "0 0 * * 0"

permissions:
packages: write

jobs:
build-image:
runs-on: ubuntu-latest

steps:
- uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Write Dockerfile
run: |
cat > /tmp/Dockerfile <<EOF
FROM archlinux:latest
RUN pacman -Syu --needed --noconfirm sudo base-devel cmake ninja fish git clazy qt6-declarative qt6-shadertools python libpipewire aubio libqalculate && \
useradd -m builder && \
echo 'builder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
sudo -u builder git clone https://aur.archlinux.org/yay-bin.git /home/builder/yay-bin && \
cd /home/builder/yay-bin && \
sudo -u builder makepkg -si --noconfirm && \
sudo -u builder yay -S --noconfirm quickshell-git libcava && \
sudo -u builder yay -Yc --noconfirm && \
pacman -Rns --noconfirm yay-bin && \
sed -i '/builder ALL=(ALL) NOPASSWD:ALL/d' /etc/sudoers && \
userdel -r builder && \
pacman -Scc --noconfirm
EOF

- name: Build and push
uses: docker/build-push-action@v7
with:
context: .
file: /tmp/Dockerfile
push: true
tags: ghcr.io/${{ github.repository_owner }}/shell-arch-env:latest
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
/.qmlls.ini
build/
.cache/
logs
10 changes: 8 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,14 @@ if("plugin" IN_LIST ENABLE_MODULES)
endif()

if("shell" IN_LIST ENABLE_MODULES)
foreach(dir assets components config modules services utils)
foreach(dir assets components modules services utils)
install(DIRECTORY ${dir} DESTINATION "${INSTALL_QSCONFDIR}")
endforeach()
install(FILES shell.qml LICENSE DESTINATION "${INSTALL_QSCONFDIR}")

file(READ shell.qml SHELL_QML)
string(REPLACE "settings.watchFiles: true" "settings.watchFiles: false" SHELL_QML "${SHELL_QML}")
file(WRITE "${CMAKE_BINARY_DIR}/qml/shell.qml" "${SHELL_QML}")
install(FILES "${CMAKE_BINARY_DIR}/qml/shell.qml" DESTINATION "${INSTALL_QSCONFDIR}")

install(FILES LICENSE DESTINATION "${INSTALL_QSCONFDIR}")
endif()
Loading