# Contributing Contributions are welcome and encouraged. To contribute fork this repository, make your changes, and open a pull request. ## Setup Install [prek](https://prek.j178.dev/) then activate pre-commit hooks: ```bash prek install ``` ### Nix Development Shell If you have Nix installed with flakes enabled, you can use the provided development shell which includes all necessary dependencies: ```bash nix develop ``` This will provide: - Go 1.24 toolchain (go, gopls, delve, go-tools) and GNU Make - Quickshell and required QML packages - Properly configured QML2_IMPORT_PATH The dev shell automatically creates the `.qmlls.ini` file in the `quickshell/` directory. ## VSCode Setup This is a monorepo, the easiest thing to do is to open an editor in either `quickshell`, `core`, or both depending on which part of the project you are working on. ### QML (`quickshell` directory) 1. Install the [QML Extension](https://doc.qt.io/vscodeext/) 2. Configure `ctrl+shift+p` -> user preferences (json) with qmlls path ```json { "qt-qml.doNotAskForQmllsDownload": true, "qt-qml.qmlls.customExePath": "/usr/lib/qt6/bin/qmlls" } ``` 3. Create empty `.qmlls.ini` file in `quickshell/` directory ```bash cd quickshell touch .qmlls.ini ``` 4. Restart dms to generate the `.qmlls.ini` file 5. Make your changes, test, and open a pull request. ### I18n/Localization When adding user-facing strings, ensure they are wrapped in `I18n.tr()` with context, for example. ```qml import qs.Common Text { text: I18n.tr("Hello World", " Hello world greeting that appears on the lock screen") } ``` Preferably, try to keep new terms to a minimum and re-use existing terms where possible. See `quickshell/translations/en.json` for the list of existing terms. (This isn't always possible obviously, but instead of using `Auto-connect` you would use `Autoconnect` since it's already translated) ### GO (`core` directory) 1. Install the [Go Extension](https://code.visualstudio.com/docs/languages/go) 2. Ensure code is formatted with `make fmt` 3. Add appropriate test coverage and ensure tests pass with `make test` 4. Run `go mod tidy` 5. Open pull request ## Pull request Include screenshots/video if applicable in your pull request if applicable, to visualize what your change is affecting.