Package Details: kanshi-git 1.5.1.r6.g0602cd3-1

Git Clone URL: https://aur.archlinux.org/kanshi-git.git (read-only, click to copy)
Package Base: kanshi-git
Description: Dynamic output configuration for Wayland WMs
Upstream URL: https://git.sr.ht/~emersion/kanshi
Keywords: sway wayland
Licenses: MIT
Conflicts: kanshi
Provides: kanshi
Submitter: lowercase
Maintainer: pychuang
Last Packager: pychuang
Votes: 9
Popularity: 0.007709
First Submitted: 2019-03-19 14:21 (UTC)
Last Updated: 2024-02-04 22:37 (UTC)

Latest Comments

1 2 3 Next › Last »

pychuang commented on 2024-02-04 22:44 (UTC)

Thanks @vikbar54.9 and @yrlf. Let me know if there's any issues!

yrlf commented on 2024-02-04 21:54 (UTC) (edited on 2024-02-04 21:56 (UTC) by yrlf)

As @vikbar54.9 said, please add libscfg-git to depends.

Also, the versioning scheme in this package does not fit the Arch Linux VCS package guidelines. The version should usually contain the latest upstream version before the disambiguation tag with revision count and git hash, to be able to compare upstream versions and development versions easily.

Additionally, the provides entry can be set to also include the version.

Here is a patch that fixes all three issues in the PKGBUILD:

diff --git a/PKGBUILD b/PKGBUILD
index 2fcd064..aee8401 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,16 +1,16 @@
 # Maintainer: Pi-Yueh Chuang <pychuang@pm.me>
 # Contributor: Ben Widawsky <ben@bwidawsk.net>
 pkgname=kanshi-git
-pkgver=r107.992c195
+pkgver=1.5.1.r6.g0602cd3
 pkgrel=1
 pkgdesc="Dynamic output configuration for Wayland WMs"
 arch=(x86_64)
 url="https://git.sr.ht/~emersion/kanshi"
 license=('MIT')
 groups=()
-depends=('wayland' 'libvarlink')
+depends=('wayland' 'libvarlink' 'libscfg-git')
 makedepends=('git' 'meson' 'ninja' 'scdoc' 'wlroots>=0.7')
-provides=("${pkgname%-git}")
+provides=("${pkgname%-git}=${pkgver%%.r*}")
 conflicts=("${pkgname%-git}")
 replaces=()
 backup=()
@@ -25,7 +25,7 @@ md5sums=('SKIP' '204747a0d0e0dd77d0e4f88f229c9c28')

 pkgver() {
     cd "$srcdir/${pkgname%-git}"
-    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
+    git describe --long --tags --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
 }

 build() {

vikbar54.9 commented on 2024-02-03 19:23 (UTC)

It requires libscfg now, otherwise it errors out on not finding scfg runtime dependecy.

pychuang commented on 2021-02-24 18:58 (UTC) (edited on 2021-02-24 19:00 (UTC) by pychuang)

This package comes with a systemd unit file that is not supported by the upstream. To enable the unit, run $ systemctl --user enable kanshi.service. Some notes:

  1. This unit won't automatically start unless graphical-session.target has already started. Though on many users' systems, graphical-session.target always starts under Sway, Sway actually does not activate graphical-session.target by default. The graphical-session.target may be activated silently by some other applications/units or by explicit exec command in the Sway config.
  2. Many other X11 window managers or Wayland compositors also activate graphical-session.target. This says, if you sometimes use other WM, like gnome or kde, kanshi.service will also automatically start (and then fail because kanshi is a Sway-only application).

The best practice is to create your own sway-session.target, and modify (or create your own) the kanshi.service to be wanted by sway-session.target. See the Wiki at Sway's GitHub and also ArchWiki:

gmy commented on 2021-02-22 23:43 (UTC)

Despite that service might not fit into each and every setup, I was pretty happy to find service units to be included in some other packages while switching to systemd as the only apps startup manager for Sway. Current setup has been my only daily driver for a few weeks already, so I thought, that someone else could also benefit from having similar service units added to the packages, which don't yet provide one.

For example, gammastep, being a community package and wlroots-specific, does include a user service and uses graphical-session.target:

~ $ yay -Q | grep gammastep
gammastep 2.0.7-1
~ $ yay -Ql gammastep | grep service
gammastep /usr/lib/systemd/user/gammastep-indicator.service
gammastep /usr/lib/systemd/user/gammastep.service
~ $ cat /usr/lib/systemd/user/gammastep.service | head -4
[Unit]
Description=Display colour temperature adjustment
PartOf=graphical-session.target
After=graphical-session.target

Same applies to flashfocus-git. Mako also includes a service, althought it's service is not attached to any target.

pychuang commented on 2021-02-19 15:24 (UTC)

@lowercase I would suggest putting the kanshi service unit under /usr/lib/systemd/user or /etc/systemd/user because graphical-session.target is a user-space unit (launched with --user flag). And sway-session.target should be something depending on graphical-session.target.

@gmy I'm not sure how many Wayland WMs support wlr-output-management, but at least kanshi does not work with gnome's Wayland session. Also, graphical-session.target runs even under X11 WMs, i.e., not just Wayland WMs use graphical-session.target. I think that's probably why Arch's official kanshi package and other Sway-specific utilities (like swayidle) do not include a service file.

I'm thinking about including either @lowercase's or @gmy's systemd unit in this package and adding documentation in wiki or somewhere to let users know about the caveats.

gmy commented on 2021-02-19 13:57 (UTC) (edited on 2021-02-19 14:01 (UTC) by gmy)

@pychuang, @lowercase, but how kanshi is related specifically to sway? Shouldn't it support any wayland WM?

kanshi can be used on Wayland compositors supporting the wlr-output-management protocol.

https://github.com/emersion/kanshi

Also, isn't it up to user to deside whether enable systemd service or not? And, isn't it disabled by default?

AFAIK, even if service file gets installed with the package, user won't see any differences, until he/she enables it. Also, user is free to override it or change.

lowercase commented on 2021-02-19 13:54 (UTC)

Heya,

just looked around and there is indeed an aur package that implements the necessary service unit. Here is my proposal: https://gist.github.com/mattiasgiese/d0c9054daf562ea8aae106cce2e02a4b

lowercase commented on 2021-02-19 13:41 (UTC)

Heya,

sorry for the late reply. As pychuang indicated it is tricky to just pump a systemd-unit that would only work in a specific setting. A sway-session.target would indeed make sense, but that should be implemented in the respective sway packages first.