Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
29f5c04
:wrench: chore(windows): migrate windowing system to gtk4 and ags v3
retrozinndev Jun 30, 2025
33e6ee2
:wrench: chore(scripts): migrate util scripts to gtk4 and ags v3
retrozinndev Jun 30, 2025
f98357f
:wrench: chore(gitignore): ignore pnpm-lock
retrozinndev Jul 6, 2025
8fd0095
:sparkles: chore: migrate all windows to gtk4 and ags v3
retrozinndev Jul 6, 2025
2df219e
:wrench: chore: add pnpm-workspace for dependency linking
retrozinndev Jul 6, 2025
3b03c43
:sparkles: chore: migrate runner and plugins to ags v3 and gtk4
retrozinndev Jul 6, 2025
7b758bd
:sparkles: chore: migrate bar widgets to ags v3 and gtk4
retrozinndev Jul 6, 2025
9db1d6f
:sparkles: chore: control-center and center-window widgets to gtk4 an…
retrozinndev Jul 6, 2025
b90a799
:sparkles: chore: migrate widgets to ags v3 and gtk4
retrozinndev Jul 6, 2025
246698c
:sparkles: chore: migrate shell to ags v3 and gtk4
retrozinndev Jul 6, 2025
2fb3b68
:boom: fix: correctly use centerbox with gtkbuilder types, fix styles
retrozinndev Jul 8, 2025
6de48dc
:recycle: refactor(icons): organize icons according to freedesktop specs
retrozinndev Jul 18, 2025
26778e9
:boom: fix(bar/media): play/pause not working when clicked
retrozinndev Jul 18, 2025
07d3074
:lipstick: chore(style, widget): update styles for gtk4 and fix some …
retrozinndev Jul 18, 2025
a06fb5f
:sparkles: feat: play system bell on volume change
retrozinndev Jul 18, 2025
5465f09
:wrench: chore(scripts/utils): support common arrays on `variableToBo…
retrozinndev Jul 19, 2025
b0ec47d
:boom: fix(popup-window): now it works as intended
retrozinndev Jul 23, 2025
6b667f5
:sparkles: chore: better window management
retrozinndev Jul 23, 2025
9a7857e
:lipstick: chore(style): fix some styles, update others to work on gtk4
retrozinndev Jul 23, 2025
69b098b
:lipstick: chore(style): also fix some global styles
retrozinndev Jul 23, 2025
467de22
:sparkles: chore(runner): try a new approach to show results, make pl…
retrozinndev Jul 23, 2025
2a8749c
:wrench: chore(app): update `Windows.isOpen()` function's name
retrozinndev Jul 23, 2025
8074221
:sparkles: feat: add `escapeUnintendedMarkup()`, `getChildren()` and …
retrozinndev Jul 23, 2025
612dcc6
:sparkles: feat(notifications): retrieve history from astal's notifd …
retrozinndev Jul 23, 2025
35e8821
:boom: fix(bar/media): unexistent player keeps selected instead of ju…
retrozinndev Jul 24, 2025
3708c6a
:sparkles: feat(bar/status): add support for dynamic network status icon
retrozinndev Jul 24, 2025
5254be2
:boom: fix(bar/workspaces): last application icon showing also on foc…
retrozinndev Jul 24, 2025
7f39eb4
:recycle: refactor(pages): rename `onClose` function/property to `act…
retrozinndev Jul 24, 2025
d721ea3
:sparkles: chore: make apps-window and floating notifications work be…
retrozinndev Jul 24, 2025
55de36c
:sparkles: chore: make tray item activate on primary button click and…
retrozinndev Jul 24, 2025
0ec7957
:boom: fix(center-window/big-media): gtkpicture not showing with albu…
retrozinndev Jul 24, 2025
f0b86a1
:boom: fix(control-center/tile): use ::onclicked signal for tile butt…
retrozinndev Jul 24, 2025
7b158b8
:boom: fix(control-center/notif-history): clean all button not doing …
retrozinndev Jul 24, 2025
d4c1fcf
:sparkles: chore: use util methods, improvements
retrozinndev Jul 24, 2025
3b59243
:sparkles: feat(center-window/big-media): add player select button
retrozinndev Jul 25, 2025
627ed10
:recycle: refactor(bar/media): move icon-getting method to a function…
retrozinndev Jul 25, 2025
03b1b64
:boom: fix(scripts/utils): `getChildren()` method not working, add `p…
retrozinndev Jul 26, 2025
e2b4af1
:boom: fix(custom-dialog): close popup if closeOnClick is enabled on …
retrozinndev Jul 26, 2025
5dad5de
:boom: fix(logout-menu): not showing closed state on window management
retrozinndev Jul 26, 2025
0efd1f4
:boom: fix(logout-menu): window status not changing after being close…
retrozinndev Jul 26, 2025
e25c233
:wrench: chore(arg-handler): more organized and supporting more argum…
retrozinndev Jul 26, 2025
3d64b7e
:wrench: chore(app, windows): create app scope disposed on app ::shut…
retrozinndev Jul 26, 2025
d3df0f0
:wrench: chore(bar/apps, bar/focused-client): use onClicked prop inst…
retrozinndev Jul 27, 2025
a67da99
:boom: fix(runner): result selection not working, scrolledwindow not …
retrozinndev Jul 27, 2025
ba56942
:boom: fix(media, big-media): only show button to copy media link if …
retrozinndev Jul 29, 2025
2276acc
:zap: chore: use floating numbers instead of integers on levelbar, si…
retrozinndev Jul 30, 2025
29ddc39
:zap: chore(popup-window): improvements on scope management + outside…
retrozinndev Jul 30, 2025
89851d4
:lipstick: chore(style): update styles
retrozinndev Jul 30, 2025
30109b0
:boom: chore(app): correcly use appScope and dispose
retrozinndev Jul 30, 2025
d952736
:wrench: chore(tsconfig): use recommended config
retrozinndev Jul 30, 2025
2c08716
:lipstick: chore(i18n/intl): better errors and logs
retrozinndev Jul 30, 2025
3492cb3
:boom: fix(runner/plugins/shell): description defined as boolean inst…
retrozinndev Jul 30, 2025
8e0bc42
:zap: perf(runner): code improvements
retrozinndev Jul 30, 2025
ca187a2
:sparkles: chore(scripts/utils, scripts/style-handler): add `filter()…
retrozinndev Jul 30, 2025
4db8ddf
:zap: perf(windows): better usage of scopes
retrozinndev Jul 30, 2025
607ed8f
:wrench: chore(background-window): add onCloseRequest method
retrozinndev Jul 30, 2025
7227c19
:boom: fix(bar/focused-client): str may not be null
retrozinndev Jul 30, 2025
22f9c38
:boom: fix(bar/status): use correct muted icon for source
retrozinndev Jul 30, 2025
d417eb8
:sparkles: chore(bar/workspaces): add revealer to special-workspaces/…
retrozinndev Jul 30, 2025
22a17e1
:boom: fix(control-center/page, control-center/pages): scope errors
retrozinndev Jul 30, 2025
91d2a0e
:boom: fix(hypr/scripts/color-picker): empty notification when no col…
retrozinndev Jul 30, 2025
ada9cbb
:wrench: chore(hypr/bindings, hypr/decorations): open shell if not ru…
retrozinndev Jul 30, 2025
fa40de9
:zap: perf(bar/tray): use gtkbox instead of gtkmenubutton, use popove…
retrozinndev Jul 30, 2025
50fe196
:boom: fix(center-window/big-media): progress bar not "hexpanding"
retrozinndev Jul 31, 2025
f30316f
:sparkles: feat(install, update-repo): allow standalone installation,…
retrozinndev Jul 31, 2025
9eb40e0
:lipstick: chore(pages): add `.selected` css class for highlighting p…
retrozinndev Aug 2, 2025
f553e3d
:sparkles: feat(center-window/big-media): carousel player controls
retrozinndev Aug 3, 2025
7265a9e
:sparkles: feat(arg-handler): add support for media management within…
retrozinndev Aug 3, 2025
1d5fe06
:wrench: chore(scripts/config): stop using singleton instance, add ty…
retrozinndev Aug 3, 2025
3083a58
:recycle: refactor(app): use single type/object declaration for gener…
retrozinndev Aug 3, 2025
2ec2c7a
:boom: fix(install): no utils script on standalone mode
retrozinndev Aug 3, 2025
6c71447
:boom: fix: incorrect usage of `uwsm check is-active` command on scri…
retrozinndev Aug 3, 2025
0018047
:boom: fix(update-repo): tried calling 'y' as a function lol
retrozinndev Aug 3, 2025
7122daa
:boom: fix(install): redirect stderr to null, so it doesn't panic
retrozinndev Aug 4, 2025
5a6d5b4
:books: docs(readme): change some things
retrozinndev Aug 5, 2025
d549ad9
:sparkles: chore: restructure the project, make it not use the astal …
retrozinndev Aug 6, 2025
908a009
:boom: fix(update-repo): create base directories instead of creating …
retrozinndev Aug 6, 2025
0e3a00e
:boom: fix(update-repo): only clean config_dirs instead of all the ou…
retrozinndev Aug 6, 2025
e8e42f7
:sparkles: build: use pnpm + shell scripts to build project
retrozinndev Aug 6, 2025
c6cc037
:books: docs(readme): change wallpapers section
retrozinndev Aug 6, 2025
5bb55e5
:wrench: chore(scripts/update-repo): move script to project scripts d…
retrozinndev Aug 8, 2025
ace73f5
:package: build: prepare to start using gresource
retrozinndev Aug 8, 2025
8b9c21c
:package: build(package): add build command back to `dev`
retrozinndev Aug 9, 2025
8aeed31
:wrench: chore: better implementation of the arg-handler, supporting …
retrozinndev Aug 9, 2025
e864173
:package: build(scripts/types): compile types in project's root direc…
retrozinndev Aug 9, 2025
fa23e65
:wrench: chore(config/hypr): use `colorshell` instead of `astal` in f…
retrozinndev Aug 9, 2025
ead5e11
:wrench: chore(scripts): better build script, stop current running in…
retrozinndev Aug 9, 2025
ade1816
:package: build(package): call shell directly instead of using pnpm
retrozinndev Aug 9, 2025
4df1a9e
:wrench: chore: implement gresource in application + global variables
retrozinndev Aug 9, 2025
33a7b96
:package: build: implement automated release-build script
retrozinndev Aug 10, 2025
fe9b5d7
:wrench: chore(env): fix version variable name
retrozinndev Aug 10, 2025
2265fdf
:package: build(package): add `build:release` script
retrozinndev Aug 10, 2025
fd58ebd
:boom: fix(widget/notification): actions is null
retrozinndev Aug 10, 2025
052854a
:boom: fix(runner): wrong scrolling positions, focus escaping to the …
retrozinndev Aug 10, 2025
7ba1b1d
:boom: fix(scripts/build): wrong variable name for gresoruce target
retrozinndev Aug 10, 2025
00be978
:wrench: chore(arg-handler): add option to display colorshell's version
retrozinndev Aug 10, 2025
8bea6e1
:sparkles: chore: compile styles via gresources, gicon support
retrozinndev Aug 10, 2025
e82eebc
:boom: fix(scripts/release): wrong gresource target
retrozinndev Aug 11, 2025
7bd159f
:boom: fix: can't convert non-null pointer to js value
retrozinndev Aug 11, 2025
a69ec99
:recycle: refactor: correctly organize resources in the resources dir…
retrozinndev Aug 11, 2025
231f454
:package: build(scripts/build): update gresources list file path
retrozinndev Aug 11, 2025
f7f7294
:boom: fix(resources): wrong path for main and apps-window stylesheets
retrozinndev Aug 11, 2025
eb4b5a8
:package: build(resources): add mixins and color stylesheets to list
retrozinndev Aug 12, 2025
0191afe
:wrench: chore: use a different approach to compile stylesheets
retrozinndev Aug 12, 2025
1e5aa0b
:package: build(resources): add svg suffix to alias for each icon
retrozinndev Aug 12, 2025
28c97fe
:recycle: refactor: rename src/scripts -> src/modules
retrozinndev Aug 12, 2025
be269da
:boom: fix(arg-handler): volume's toggle mute command requiring a value
retrozinndev Aug 12, 2025
3cd717b
:wrench: chore(package): bump to 2.0.0
retrozinndev Aug 12, 2025
344085e
:package: build(scripts): make `start` script to only do it's suppose…
retrozinndev Aug 12, 2025
cbfe5f1
:boom: fix(runner): results limit not working
retrozinndev Aug 12, 2025
550d463
:boom: fix(bar/media): check if player of index 0 is not null before …
retrozinndev Aug 13, 2025
3d22b00
:wrench: chore(control-center/pages/bluetooth): show adapter's addres…
retrozinndev Aug 14, 2025
4384f21
:wrench: chore(windows): add signal types
retrozinndev Aug 14, 2025
c7a6ec0
:sparkles: feat: add support for unix socket communication
retrozinndev Aug 14, 2025
0592784
:package: build(scripts/release): implement support for socket-based …
retrozinndev Aug 15, 2025
70cd2cc
:wrench: chore(config/hypr/bindings): escape hashtag char on wallpape…
retrozinndev Aug 15, 2025
a1e12d7
:books: docs(readme): update screenshots
retrozinndev Aug 15, 2025
6499e22
:books: docs(readme): add build guide
retrozinndev Aug 16, 2025
adb1587
:books: docs(readme): move installation guide to above the build guide
retrozinndev Aug 16, 2025
5006b86
:package: build(sync-config): remove from-the-script remote push feature
retrozinndev Aug 16, 2025
1167530
:recycle: refactor(scripts/update-repo): rename to scripts/sync-confi…
retrozinndev Aug 16, 2025
b999ba4
:wrench: chore(scripts, install): add support for the new build syste…
retrozinndev Aug 16, 2025
f635376
:wrench: chore: merge #15 and fix conflicts
retrozinndev Aug 16, 2025
4333eed
:boom: fix(install): wrong usage of condition checking
retrozinndev Aug 17, 2025
17ef14c
:boom: fix(install): correctly check if it's in standalone mode
retrozinndev Aug 17, 2025
cd5b527
:boom: fix(install): trying to copy configuration from non-existent d…
retrozinndev Aug 17, 2025
dcbd3dc
:boom: fix(install): check variable emptiness instead of boolean checks
retrozinndev Aug 17, 2025
932e0a4
:boom: fix(install): enter project root directory before building
retrozinndev Aug 17, 2025
265045c
:sparkles: feat: add support for desktop entry
retrozinndev Aug 17, 2025
b5b621a
:wrench: chore(resources): use double quotes instead of single quotes…
retrozinndev Aug 17, 2025
e6a1d22
:books: docs(readme): support dark theme in star history
retrozinndev Aug 17, 2025
b52dedf
:boom: fix(scripts): issues with shell's desktop entry
retrozinndev Aug 17, 2025
90f71a6
:boom: fix(install): check for first argument instead of all of them
retrozinndev Aug 17, 2025
1fa6c01
:wrench: chore(hypr/scripts/exec): support executing desktop entries …
retrozinndev Aug 17, 2025
39a052c
:wrench: chore(scripts/sync-config): use utils script functions
retrozinndev Aug 17, 2025
74968ff
:sparkles: feat: add user face to control center if available
retrozinndev Aug 18, 2025
ddc5121
:sparkles: feat(control-center/tiles): update tiles look and structure
retrozinndev Aug 18, 2025
238fde6
:books: docs(readme): update screenshots and readme
retrozinndev Aug 18, 2025
6716881
:books: docs(readme): fix markdown :stuck_out_tongue:
retrozinndev Aug 18, 2025
26087c2
:boom: fix(control-center/tile): label expanding control center size
retrozinndev Aug 18, 2025
db73023
:sparkles: feat(center-window): pause selected player if space key is…
retrozinndev Aug 18, 2025
49ded11
:boom: fix(clipboard): issues with special characters on `Clipboard.c…
retrozinndev Aug 18, 2025
4fc2986
:boom: fix(control-center/tiles/night-light): not turning back on aft…
retrozinndev Aug 19, 2025
48ee49d
:boom: fix(scripts/release): build showing "command -v" output
retrozinndev Aug 19, 2025
8ed04b6
:wrench: chore: add default wallpaper + default config, remove drun a…
retrozinndev Aug 23, 2025
0dbf598
:wrench: chore(config/hypr/scripts/gen-pywal): better way to generate…
retrozinndev Aug 23, 2025
c52ae5d
:boom: fix(hypr/scripts/gen-pywal): replace ~ with HOME
retrozinndev Aug 23, 2025
6933cc8
:wrench: chore(hypr/scripts/gen-pywal): reload hyprland config after …
retrozinndev Aug 23, 2025
7d89911
:zap: perf: remove unused module `Xdp-1.0`
retrozinndev Aug 23, 2025
d77f6ef
:boom: fix(i18n/intl): setting to unavailable language
retrozinndev Aug 23, 2025
070d86b
:boom: fix(i18n/intl): use `Array.includes()` instead of index
retrozinndev Aug 23, 2025
1d574cc
:books: docs(readme): update wallpapers section
retrozinndev Aug 23, 2025
106a93a
:boom: fix(hypr/decorations): blur flickerings
retrozinndev Aug 25, 2025
9057a23
:wrench: chore(app): new config key `workspaces.hide_if_single`, disa…
retrozinndev Aug 26, 2025
bc2b851
:wrench: chore(widget/bar/workspaces): add new feature to hide if the…
retrozinndev Aug 26, 2025
18cda23
:wrench: chore(modules/config): use function overloading to make expe…
retrozinndev Aug 26, 2025
e84f5f0
:sparkles: feat: add backlight support
retrozinndev Aug 26, 2025
dd98e34
:sparkles: feat(backlight): add page widget for backlight feature
retrozinndev Aug 26, 2025
ab4014a
:package: build(scripts/start): call quit from colorshell instance an…
retrozinndev Aug 26, 2025
e765a33
:wrench: chore(app): print newline after string in cli's RemoteCaller
retrozinndev Aug 26, 2025
f25996d
:wrench: chore(modules/backlight): better implementation
retrozinndev Aug 27, 2025
47152e7
:wrench: chore(modules/backlight): init default backlight on scan()
retrozinndev Aug 27, 2025
744d155
:boom: fix(modules/backlight): can't access lexical declaration
retrozinndev Aug 28, 2025
09568ac
:boom: fix(modules/backlight): use paramspec instead of read-only $gtype
retrozinndev Aug 28, 2025
f213d99
:wrench: chore(modules/backlight, modules/config): fix property name …
retrozinndev Aug 28, 2025
ef95217
:boom: fix(modules/backlight): use jsobject instead of object param spec
retrozinndev Aug 28, 2025
d72d041
:wrench: chore(control-center/pages/backlight): load the default back…
retrozinndev Aug 28, 2025
524995e
:wrench: chore(hypr/bindings): specify backlight class on brightness …
retrozinndev Aug 28, 2025
aef372d
:wrench: chore(modules/config): notify :entries when calling `setProp…
retrozinndev Aug 29, 2025
56d8736
:wrench: chore(window/floating-notifications): bring back hold on hov…
retrozinndev Aug 29, 2025
d096072
:sparkles: feat(modules/notifications, osd): pause notification timeo…
retrozinndev Aug 31, 2025
74be468
:boom: fix(osd): info not updating correctly
retrozinndev Aug 31, 2025
52ee836
:boom: fix(osd): create function is implicitly ran on gnim component
retrozinndev Aug 31, 2025
0e3f8d5
📜 license: change to BSD 3-Clause
retrozinndev Aug 31, 2025
082a1af
📜 license: change to BSD-3-Clause
retrozinndev Aug 31, 2025
8b96ba9
:wrench: chore: better implementation of the media copy link feature,…
retrozinndev Sep 1, 2025
4b682ee
:wrench: chore(hypr/scripts/exec): use `uwsm-app` for faster apps sta…
retrozinndev Sep 3, 2025
4b208bc
:wrench: chore(hypr/autostart): initialize wayland app daemon before …
retrozinndev Sep 4, 2025
a28ac3c
:boom: fix(hypr/autostart): colorshell not starting correctly
retrozinndev Sep 14, 2025
206880c
:sparkles: feat(runner/plugin-kill): add plugin to quickly kill hyprl…
retrozinndev Sep 14, 2025
cb01765
:boom: fix(notification): image expanding with text content
retrozinndev Sep 16, 2025
7f3e66c
:sparkles: feat: a lot of new stuff!
retrozinndev Sep 25, 2025
ba83c67
:recycle: refactor: reorganize windows and widgets in a modular way
retrozinndev Sep 25, 2025
2e8b1f8
:books: docs(readme): remove `libastal-meta` from development-only de…
retrozinndev Sep 25, 2025
e07ef2e
:wrench: chore(modules/bluetooth): also select default adapter on blu…
retrozinndev Sep 25, 2025
c8364c9
:wrench: chore(modules/bluetooth): save last default adapter in user …
retrozinndev Sep 25, 2025
30e0f24
:boom: fix: config being declared after its usage
retrozinndev Sep 26, 2025
e1a3e65
:wrench: chore: general improvements
retrozinndev Sep 27, 2025
6d55afb
:wrench: chore(hypr/scripts): drop save/load-hyprsunset.sh scripts in…
retrozinndev Sep 27, 2025
de3a1e2
:boom: fix(modules/recording): minutes count is wrong
retrozinndev Sep 27, 2025
8f73e01
:wrench: chore(osd, modules/utils): better `OSDMode` implementation, …
retrozinndev Sep 27, 2025
6018d6d
:boom: fix(modules/nightlight): set temperature if identity is disabled
retrozinndev Sep 28, 2025
914d949
:wrench: chore(modules/utils, osd): use `secureBaseBinding()` for osd…
retrozinndev Sep 28, 2025
087bafb
:boom: fix(osd): use `OSDMode` as a parameter instead of function
retrozinndev Sep 28, 2025
3c919c9
:wrench: chore(app): use new `createSubscription()` with `secureBaseB…
retrozinndev Sep 28, 2025
c4eb2a8
:globe_with_meridians: feat(i18n): add translations for media controls
retrozinndev Oct 2, 2025
b835de7
:boom: fix: slow start
retrozinndev Oct 4, 2025
76f90c4
:wrench: chore: use retrozinndev/gnim-utils for extra function in uti…
retrozinndev Oct 6, 2025
1996ab8
:books: docs(readme): update features
retrozinndev Oct 6, 2025
14a3855
:wrench: chore: start new cli development, use pnpm's built-in github…
retrozinndev Oct 7, 2025
62d7fd5
:zap: perf(modules/media): better implementation
retrozinndev Oct 7, 2025
6793a68
:boom: fix(bar/media): connecting to dummy player
retrozinndev Oct 8, 2025
4861337
:wrench: chore(control-center/tiles): better implementation for the n…
retrozinndev Oct 17, 2025
571f2be
:boom: fix(control-center/tiles): can't enable networking after disab…
retrozinndev Oct 17, 2025
40c6154
:boom: fix(control-center/tiles): couldn't enable network after disab…
retrozinndev Oct 18, 2025
a7402a8
:wrench: chore(control-center/tiles): remove log output from network …
retrozinndev Oct 18, 2025
44e68a0
:wrench: chore(install): install and update project deps before build
retrozinndev Oct 18, 2025
7feffef
:wrench: chore(install): update default branch to `ryo`
retrozinndev Oct 23, 2025
26a0202
Merge branch 'ryo' into gtk4-ags3
retrozinndev Oct 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
node_modules/
@types/
build/

pnpm-lock.yaml
*.log
41 changes: 24 additions & 17 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
MIT License
BSD 3-Clause License

Copyright (c) 2024 João Dias
Copyright (c) 2025, João Dias (retrozinndev)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
123 changes: 90 additions & 33 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,75 @@
# colorshell
<p>(previously retrozinndev/Hyprland-Dots)</p>

> [!note]
> The [AGS v3](https://github.com/aylur/ags/blob/main) version is already done! You can try it out in the branch [`gtk4-ags3`](https://github.com/retrozinndev/colorshell/blob/gtk4-ags3). <br>
> The updated version will be merged into the main branch as soon as AGS v3 reaches a stable release(tagged release).

> [!note]
> My personal dotfiles are now on [retrozinndev/Hyprland-Dots](https://github.com/retrozinndev/Hyprland-Dots)

My Hyprland Desktop Shell that I love to keep improving every day! 🤩 <br>
This is the repository for the colorshell desktop shell, made for Hyprland with [TypeScript], [GTK4], [AGS], [Gnim], and some of the [Astal] libraries.

This is the repository for my desktop shell, made with [GTK], [Astal] and [AGS] + [TypeScript]. <br>
It really took me a lot of time to make this, so please star the repo if you like it! :star:

## 🌄 Screenshots
![Kitty](repo/shots/kitty.png)
![Widgets](repo/shots/control-center-runner.png)
![Runner](repo/shots/clock-window.png)
![Browser](repo/shots/browser.png)
<div align="center">
<img src="./repo/shots/desktop.png" alt="desktop" width="49%" />
<img src="./repo/shots/runner.png" alt="Runner" width="49%" />
<img src="./repo/shots/center-window-control-center.png" alt="Control Center & Center Window" width="49%" />
<img src="./repo/shots/kitty.png" alt="Kitty" width="49%" />

<p align="right">
<i>more screenshots on <a href="repo/shots"><code>repo/shots</code></a></i>
</p>
</div>

## 🎨 Colors
All the shell colors are dynamically generated from your wallpaper!
This is possible by using [pywal16](fork of the archived [pywal](https://github.com/dylanaraps/pywal) project), a cli tool to generate color schemes on the fly.

This is possible by using [pywal16], a fork of the archived [pywal](https://github.com/dylanaraps/pywal) project.
It's a cli tool to generate color schemes from an image.

## 🖼️ Wallpapers
When you're at the [Installation](#%EF%B8%8F-installation) process, you can choose whether you want to install the wallpapers or not. <br>
If you chose to not, either define the `$WALLPAPERS` variable in your hyprland user configuration to your wallpapers folder, or create the `~/wallpapers` directory.
These are not included in the shell anymore, because the repository was getting too big in size.
So you'll have to add it in your own.

You can select any of the images inside `~/wallpapers` by pressing <kbd>SUPER</kbd> + <kbd>W</kbd> or by accessing the
Control Center and clicking in the image icon on top.
You can add more wallpapers either by adding your custom images to `~/wallpapers` or by defining `WALLPAPERS`
in your `hypr/user/environment`, pointing to the custom location.

### ℹ️ Source
None of the wallpapers available in this repo are made by me! You can find sources inside the [`WALLPAPERS.md`](/WALLPAPERS.md) file. (it took me a lot of time to make this sources list 😭)
Also, you can select any of the images inside `~/wallpapers` by pressing
<kbd>SUPER</kbd> + <kbd>W</kbd> or by accessing the Control Center and clicking in the image
icon on top.

### ✔️ What's included in this shell
## ✨ Features
<details>

- Pretty Top-Bar
- Apps button(basically the "start menu", opens the full-screen app launcher)
- Workspace indicator(contains icon of last used application on each)
- Focused Client(Window) information(title, class and icon)
- Apps(basically the "start menu", opens the full-screen app launcher)
- Workspaces indicator
- Focused Client(window) information(title, class and icon)
- Clock(with date)
- Media(shows only when media is being played)
- Media
- Change current player by scrolling on top of the widget or by opening the
Center Window and scrolling the player
- Only available when there's media playing
- Tray(Applications running in the background)
- Status (volume information, bluetooth, network and notification status)
- Control Center
- Volume Controls (Microphone and Speaker)
- Volume Mixer(per-app volume)
- Sliders
- Speaker volume
- Microphone sensitivity
- Brightness amount
- Pages(the thing that shows up when you click the arrow on a tile)
- Bluetooth devices
- Network devices
- Night Light controls
- Brightness options
- Tiles
- Screen Recording
- Bluetooth
- Night Light
- Network(wifi needs work, i don't have wifi in my machine)
- Don't Disturb(disables notification popups)
- Center Window(clock, calendar + media management)
- OSD (On-screen Display)
- Brightness(when changed)
- Volume(when changed)
- Notifications with support for application actions + Notification History
- Localization(see [🌐 Internationalization](#-internationalization) for available languages)
- Application Runner with support for plugins ([anyrun](https://github.com/anyrun-org/anyrun)-like)
Expand All @@ -64,9 +78,9 @@ None of the wallpapers available in this repo are made by me! You can find sourc
- Wallpapers(`#`): Search and select to change wallpaper
- Media(`:`): Control playing media
- Search(`?`): Search something on the internet with your default browser
- Gnome-like application list
- Support for your multiple monitors
- Dynamic support for [UWSM](https://github.com/Vladimir-csp/uwsm)(dinamically enabled if current session is using UWSM)
- Dynamic support for [UWSM](https://github.com/Vladimir-csp/uwsm)(apps will use uwsm if current session is using it)
</details>

## ⌨️ Binds
You can see default bindings and usage information on the [Wiki/Usage] page!
Expand All @@ -85,18 +99,59 @@ You can do so by forking this repository, translating the shell in your fork and
## ⚙️ Installation
See the Installation Guide on [Wiki/Installation].

## 🛠️ Development
This project uses `pnpm` to manage packages and running scripts.
To build the shell, run a development build or make a release build, you can use the project's integrated scripts.<br>
The most complicated ones have a help flag, so you can learn from there.

### Dependencies
These are development-only dependencies(by package name on AUR):
- `aylurs-gtk-shell-git`

Plus, you also need the packages listed in [Wiki/Dependencies]!

### Building
In a common build, the shell's gresource(icons and sass) will be targeted to the build output directory by default.
If you want to ship it, you likely want to use the `pnpm build:release` command.
```zsh
pnpm build -d # remove the -d flag if you don't want a development build
```
If you want to ship the build(or install it on your local machine), you'll likely prefer a release build:
(the `build:release` command targets the gresource to `$XDG_DATA_HOME/colorshell/resources.gresource` by default)
```zsh
pnpm build:release
```
Don't forget to install the gresource to the actual target directory! Or else it'll not find the resource file and will fail
to load custom assets.<br>
Also, the environment variables are only actually used at runtime! It's passed as a literal string in the bash
variable format, then when the shell runs, it understands that it's an environment variable and replaces it with it's value.

### Testing/Running the project
```zsh
pnpm dev
```
or if you actually only want to run the current build instead of building again:
```
pnpm start
```

## ❗ Issues
Having issues? Please create a [new Issue] here, I'll be happy to help you out!

## 📜 License
This repo is licensed under the [MIT License], project is made and maintained by [retrozinndev](https://github.com/retrozinndev).
This repo is licensed under the [BSD 3-clause] license, project is made and maintained by [retrozinndev](https://github.com/retrozinndev).

## 🌠 Stargazers
<div align="center">

[![Star History Chart](https://api.star-history.com/svg?repos=retrozinndev/colorshell&type=Date)](https://www.star-history.com/#retrozinndev/colorshell&Date)
<br>
<p align="center">Thanks to everyone who starred my project! 💖</p>
<a href="https://www.star-history.com/#retrozinndev/colorshell&Date">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=retrozinndev/colorshell&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=retrozinndev/colorshell&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=retrozinndev/colorshell&type=Date" />
</picture>
</a>
<br>
<p align="center">Thanks to everyone who starred my project! 💖</p>
</div>

<!-- References of other projects -->
Expand All @@ -106,12 +161,14 @@ This repo is licensed under the [MIT License], project is made and maintained by
[nushell]: https://nushell.sh
[kitty]: https://sw.kovidgoyal.net/kitty
[ags]: https://aylur.github.io/ags
[gnim]: https://aylur.github.io/gnim
[astal]: https://aylur.github.io/astal
[typescript]: https://typescriptlang.org
[gtk4]: https://www.gtk.org
[gtk]: https://www.gtk.org

<!-- Web refs -->
[mit license]: https://en.wikipedia.org/wiki/MIT_License
[bsd 3-clause]: https://en.wikipedia.org/wiki/BSD_licenses#4-clause_license_(original_%22BSD_License%22)

<!-- Tabs -->
[wiki]: https://github.com/retrozinndev/colorshell/wiki
Expand Down
Loading