mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-06 15:29:27 -05:00
3.3 KiB
3.3 KiB
Contributing
- Please, please, please, make multiple PRs if you have many features/fixes, and don't shove your personal changes along with the PR, including changed defaults
- We can accept features that we do not personally want, but in that case we will ask you to make it configurable/optionally loaded.
- If you want to start working on something big to contribute, it might be a good idea to ask first to not waste your effort (but if you've already done it for yourself, it doesn't hurt to submit).
Translations
See dots/.config/quickshell/ii/translations/tools
Code
Dynamic loading
- If something's not always necessary, especially when guarded by a config option to enable/disable, put it in a
Loader- Note that you will need to declare positioning properties (like
anchors) in theLoader, not thesourceComponent - When something that's to be dynamically loaded doesn't affect its parent layout, you can have a fading animation by using FadeLoader and set the
shownprop instead ofactiveandvisible
- Note that you will need to declare positioning properties (like
Practical concerns
- Make sure what you add does not require significant resources for a minor purpose or harm usability just for the sake of looking nice. The dotfiles must remain practical for daily driving.
- If there is something really fancy and impractical anyway, add a config option for it and make sure it's disabled by default (example: constantly rotating background clock)
Style
- Spaces
- Space properties and children data into meaningful groups. (but of course, don't use 2+ blanks in a row)
- Put spaces between text and operators:
if (condition) { ... } else { ... }instead ofif(condition){ ... }else{ ... }
- As you can see, it's pretty easy to use lots of nesting. There's no hard limit, end-4 himself nests a lot too, but avoid/mitigate that:
- Prefer early return: Use something like
if (!condition) return; doStuff();instead ofif (condition) { doStuff() } - If you feel it's a bother to refractor something into a new file, remember there's
componentto declare reusable components in the same file.
- Prefer early return: Use something like
Setting up
The following instruction assumes that you have an Arch(-based) Linux system.
Complete
Might not be necessary depending on what you change, but this is recommended.
- Install the dotfiles (if you don't wanna replace your stuff completely, do it on a new user).
- Make changes, copy changes to a fork, create PR.
Partially working shell
Most stuff in the shell will work but not everything.
- Install Hyprland and the development version of Quickshell (
yay -S hyprland quickshell-git). - Copy
dots/.config/quickshellfolder to your home directory.
Extra setup for Quickshell
- Quickshell-specific LSP setup: Run
touch ~/.config/quickshell/ii/.qmlls.inifor proper LSP support. - Hint for VSCode: Get the official "Qt Qml" extension, go to its settings and change custom exe path to
/usr/bin/qmlls6.
Python
If your changes involves using python package or script, please use the virtual environment created by uv as described in sdata/uv/README.md.
Running
- Launch Hyprland (not the "uwsm-managed" one)
- For the shell:
- Open
~/.config/quickshell/iiin your code editor. - In a terminal run
pkill qs; qs -c iito start the shell in the terminal (for logs). - Make edits in the opened folder. Changes are reloaded live.
- Open