dots-hyprland icon indicating copy to clipboard operation
dots-hyprland copied to clipboard

Correct sdata/deps-info.md

Open clsty opened this issue 2 months ago • 2 comments

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 rsync provides command rsync which 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.

clsty avatar Oct 02 '25 00:10 clsty

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.

end-4 avatar Oct 04 '25 10:10 end-4

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.

clsty avatar Oct 04 '25 11:10 clsty

@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).

clsty avatar Nov 11 '25 03:11 clsty