dots-hyprland
dots-hyprland copied to clipboard
Correct sdata/deps-info.md
The install script has newly added design for different distros, see
https://github.com/end-4/dots-hyprland-wiki/blob/3a7b22bb11e2a237cd20d3a06ef9b4c3fcfbfff5/src/content/docs/en/ii-qs/01.setup.md?plain=1#L32-L46
However this porting work will be huge. To make it easier, we need a scriptdata/deps-info.md which contains the following info for each dependency:
- What does it provide and where is it needed? e.g. package
rsyncprovides commandrsyncwhich is used when copying files, used by the install.sh - The URL of the Arch/AUR (or other distro's) package page of this package.
- The URL of git repo of source code of this package.
- The URL of document page of this package about build/installation.
- Extra notes if needed.
As you can see from dist-arch/ the number of dependencies are so big for human. That's why I think AI agent is suitable for this work. But I still do not have access to high quality AI agent. I need your help on this. Thanks in advance.
Note:
- Some fields above may be blank, for example some package is built locally and does not have a distro package page. Or some package may do not need a document page, e.g. fonts. It's OK.
- Every URL must be valid.
- Please avoid using markdown table since it is hard to maintain.
P.S. We also need a GitHub Action monitoring dist-arch/ so that any changes made to the dep list will trigger notification that deps-info.md needs update.
AI is not going to be perfect. I tried with copilot in vscode and it gave me this: (A lot is missing)
Prompt
Take a look at the pkgbuilds dist-arch directory (recursive) to see what dependencies there are, then the code in the repo, to generate a deps-info.md into this buffer detailing what each dependency is for
Result
deps-info.md
Meta-packages (from dist-arch/install-deps.sh)
- illogical-impulse-basic
- Purpose: Core shell tooling used by scripts (general CLI utilities, build helpers, JSON processing, etc.).
- illogical-impulse-audio
- Purpose: Audio stack (e.g., PipeWire/WirePlumber, mixers, control UIs) used by widgets and desktop integrations.
- illogical-impulse-backlight
- Purpose: Screen brightness control utilities (e.g., brightnessctl).
- illogical-impulse-fonts-themes
- Purpose: Fonts and themes used across the shell/widgets (Noto, emoji fonts, icon themes, GTK/Qt themes).
- illogical-impulse-kde
- Purpose: KDE integration bits (dialogs, theming helpers, optional browser integration).
- illogical-impulse-portal
- Purpose: Desktop portals (e.g., xdg-desktop-portal and Wayland compositor-specific portals).
- illogical-impulse-python
- Purpose: Python 3 and libs for repo Python scripts and virtualenv activation.
- illogical-impulse-screencapture
- Purpose: Screenshot/recording tools on Wayland (e.g., grim, slurp, wf-recorder or similar).
- illogical-impulse-toolkit
- Purpose: General utilities used by scripts (jq, imagemagick, bc, etc.).
- illogical-impulse-widgets
- Purpose: Runtime deps for Quickshell widgets and supporting tools used in the UI modules.
- illogical-impulse-hyprland
- Purpose: Hyprland compositor and related tools (hyprland, hyprctl, hypridle, hyprlock, hyprcursor, portals).
- illogical-impulse-microtex-git
- Purpose: MicroTeX-related setup used by this config (custom packaging).
- illogical-impulse-bibata-modern-classic-bin (optional)
- Purpose: Bibata Modern Classic mouse cursor theme (installed only if not present).
Concrete dependencies inferred from repository scripts
- hyprland (provides hyprctl)
- Purpose: Compositor
- jq
- Used by: switchwall.sh (JSON parsing), multiple scripts reading config.json, hyprctl -j output.
- Purpose: JSON parsing and transformation.
- matugen (AUR)
- Used by: switchwall.sh to generate Material You colors from image or color input.
- Purpose: Color extraction and scheme generation.
- python (python3) + virtualenv (python-virtualenv)
- Used by: switchwall.sh activates $ILLOGICAL_IMPULSE_VIRTUAL_ENV and runs generate_colors_material.py.
- Purpose: Color processing
- imagemagick (identify)
- Used by: switchwall.sh to probe image width/height to suggest upscaling.
- Purpose: Image metadata inspection.
- bc
- Used by: switchwall.sh for simple arithmetic on cursor coordinates.
- Purpose: Shell-friendly math.
- xdg-user-dirs (xdg-user-dir)
- Used by: switchwall.sh to locate Pictures folder.
- Purpose: XDG directories resolution.
- libnotify (notify-send)
- Used by: switchwall.sh to interactively prompt actions (install/open apps) via notifications.
- Purpose: Desktop notifications with actions.
- hyprpicker (AUR)
- Used by: switchwall.sh for picking colors from screen when --color is passed without hex.
- Purpose: On-screen color picker (Wayland).
- mpvpaper (AUR)
- Used by: switchwall.sh to set video wallpapers per monitor.
- Purpose: Video wallpaper playback under Wayland.
- ffmpeg
- Used by: switchwall.sh to extract a frame from videos to derive colors and thumbnails.
- Purpose: Video frame extraction and media handling.
- kitty
- Used by: switchwall.sh to run interactive installs or external tools in a terminal (kitty -1 ...).
- Purpose: Terminal emulator integration.
- kdialog (KDE)
- Used by: switchwall.sh to open a file picker for choosing wallpapers.
- Purpose: GUI file selection dialog.
- glib2 (gsettings) + dconf
- Used by: switchwall.sh to set GNOME interface color-scheme and GTK theme.
- Purpose: System settings manipulation.
- kde-material-you-colors (wrapper script path under $XDG_CONFIG_HOME/matugen/templates/kde/)
- Used by: switchwall.sh handle_kde_material_you_colors to sync KDE color scheme.
- Purpose: KDE scheme generation/synchronization.
- yay (or yay-bin from AUR)
- Used by: dist-arch/install-deps.sh to build/install local PKGBUILDs and dependencies.
- Purpose: AUR helper used by installer.
- base-devel, git, makepkg (core Arch tooling)
- Used by: dist-arch/install-deps.sh and update.sh for building AUR/PKGBUILD packages and repository management.
- Purpose: Build toolchain and VCS for packaging.
Notes
- Some Hyprland-adjacent packages appear in a legacy removal list as -git variants (e.g., hypridle, hyprlock, xdg-desktop-portal-hyprland). This suggests the meta-packages likely standardized on stable repo versions now.
- Exact package lists per meta-package should be verified against the PKGBUILD files in dist-arch/*; the above is aligned with how the code uses these tools.
Thanks. I see, we can only perfect it manually then. Maybe bit by bit.
The priority is not high. I will start doing this when possible.
@end-4 I closed this issue since the basic target is done.
In future when modifying the dependency, please also update sdata/deps-info.md so that we can keep information about why a dependency is needed and how it's been actually used.
This is also important for properly porting dist-arch into dist-* (e.g. fedora, gentoo, nix).