# Hyprland for debian

Here we have a number of scripts to build the dependencies for hyprland tiling
wayland compositor.

Our goal is to have a 'debian' way to build these packages using gitbuildpackage
to update from upstream, apply patches in a patch queue branch and output debian
packages which can be added to the gitea package repo using the automate/utils
helper scripts.

NB. We have a working example from salsa in [/space/code_repositories/hyprland/](https://salsa.debian.org/debian/hyprland/)
that successfully built the 0.36 and upgraded to 0.39.1 using these watch files
which were missing from the salsa [hyperland](https://salsa.debian.org/debian/hyprland)
and [hyperlang](https://salsa.debian.org/debian/hyprlang) repos:

```bash
conf_print_debian-watch_hyprland() {
cat <<-'EOF'
  version=4

  opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/hyprland-$1\.tar\.gz/ \
    https://github.com/hyprwm/hyprland/tags .*/v?(\d\S*)\.tar\.gz
EOF
}
# conf_print_debian-watch_hyprland | sudo tee debian/watch
```

This is now included in the salsa hyperlang repo:

```bash
conf_print_debian-watch_hyprlang() {
cat <<-'EOF' | tee debian/watch
  version=4

  opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/hyprlang-$1\.tar\.gz/ \
    https://github.com/hyprwm/hyprlang/tags .*/v?(\d\S*)\.tar\.gz
EOF
}
# conf_print_debian-watch_hyprlang | sudo tee debian/watch
```

From phind:

```bash
version=4
opts="searchmode=html, filenamemangle=s/.+\/v?(\d+\.\d+)\.tar\.gz/hyprland-protocols-$1.tar.gz/"
https://github.com/hyprwm/hyprland-protocols/tags .*/v?(\d+\.\d+)\.tar\.gz

```

```bash

Version: 5
Template: Github
Owner: hyprwm
Project: hyprland-protocols
Filename-Mangle: s/$/@PACKAGE@-$1.tar.gz/; s/v//
```

From salsa repo:

```bash
version=4
opts="searchmode=html" \
  https://github.com/hyprwm/hyprland-protocols/tags \
  https://github.com/hyprwm/hyprland-protocols/archive/refs/tags/v(\d+)\.(\d+).tar\.gz
```

```bash
Version: 5
Template: Github
Owner: hyprwm
Project: hyprland-protocols
```

This did not work for 0.4.0 or 0.4.1

## resulting packages

the hyprland build provides:

- hyprland
- hyprland-common
- hyprland-completitions (locally added)
- hyprland-dev

the hyperlang build provides:

- hyprlang
- libhyprlang-dev
- libhyprlang2

dpkg -i libudis86-0_0+20221013-1_amd64.deb
dpkg -i udcli_0+20221013-1_amd64.deb
dpkg -i hyprwayland-scanner_0.3.10-1_amd64.deb
dpkg -i libhyprlang2_0.5.2-1_amd64.deb
dpkg -i libhyprcursor0_0.1.9-1_amd64.deb
dpkg -i libhyprutils0_0.1.5-1_amd64.deb
dpkg -i hyprcursor-util_0.1.9-1_amd64.deb
dpkg -i hyprland-protocols_0.3.0-1_all.deb
dpkg -i hyprland_0.41.2+ds-1_amd64.deb
dpkg -i hyprland-backgrounds_0.41.2+ds-1_all.deb
dpkg -i hyprpaper_0.7.0-1_amd64.deb
so far we have manually updated these from the debian source directory with uscan command from the devscripts package:

```bash

conf_print_debian-watch_hyprland | sudo tee debian/watch
uscan --no-download --verbose
uscan
while dquilt push; do dquilt refresh; done
dch
```

```bash
UPSTREAM_VERSION="0.3.0"
LOCAL_VERSION="1"
gbp import-orig --uscan
gbp pqapply
gbp dch -N ${UPSTREAM_VERSION}-${LOCAL_VERSION} -R
git add .
git commit -m "Update debian/changelog for version ${UPSTREAM_VERSION)-${LOCAL_VERSION}"
```

## build sequence for build from git

NB these scripts only build a debianized upstream git packages, better to fix
the salsa packages.

- [hyprwayland-scanner](https://salsa.debian.org/debian/hyprland-protocols) - available in debian unstable

  001_hyprwayland-scanner.sh [hyprwayland-scanner - A Hyprland implementation of wayland-scanner, in and for C++.](https://github.com/hyprwm/hyprwayland-scanner)

- [hyprutils](https://salsa.debian.org/NyxTrail/hyprutils) available in debian

  003_hyprutils.sh [hyprutils - Hyprutils is a small C++ library for utilities used across the Hypr\* ecosystem.](https://github.com/hyprwm/hyprutils)

- [hyprlang](https://salsa.debian.org/NyxTrail/hyprlang) available in debian

  005_hyprlang.sh [hyprlang - The official implementation library for the hypr config language.](https://github.com/hyprwm/hyprlang)

- [hypcursor](https://salsa.debian.org/NyxTrail/hyprcursor) available in debian

  007_hyprcursor.sh [hyprcursor - The hyprland cursor format, library and utilities.](https://github.com/hyprwm/hyprcursor)

- [hyprland-protocols](https://salsa.debian.org/debian/hyprland-protocols) - available in debian unstable

  010_hyprland-protocols.sh [hyprland-protocols - Wayland protocol extensions for Hyprland](https://github.com/hyprwm/hyprland-protocols)

- [hyprland](https://salsa.debian.org/NyxTrail/hyprland) available in debian

  020_hyprland.sh [Hyprland - Hyprland is a highly customizable dynamic tiling Wayland compositor that doesn't sacrifice on its looks.](https://github.com/hyprwm/Hyprland)

And a bonus - dot files to configure a pretty hypr (not working yet):

- [hyprpaper](https://github.com/hyprwm/hyprpaper) - wallpaper utility for Hyprland with the ability to dynamically change wallpapers through sockets.

- hyprdots

  025_hyprland-hyprdots.sh [hyprland dotfiles to be converted from arch.](https://github.com/prasanthrangan/hyprdots)

### gitbuildpackage script automate/020_hyprland.sh
