fix(portal): screen-capture script, portal backend, swaync autostart
screen-capture.sh was a single non-executable line containing a `slur` typo, so it never ran and nothing referenced it; rewritten as a working region capture to ~/Pictures plus clipboard. xdg-desktop-portal/portals.conf pins the wlr backend for sway, and swaync is pulled in via graphical-session.target.wants so the portal's Requisite=graphical-session.target is satisfied (the reason screen sharing previously never started).
This commit is contained in:
1 parent
b08cd84158
commit
77470bd03e
3 files changed
+55
-2
No files matched your search
Regular → Executable
+32
-2
@@ -1,3 +1,33 @@
|
||||
#!/bin/bash
|
||||
#!/bin/sh
|
||||
# Region screenshot -> ~/Pictures + clipboard.
|
||||
#
|
||||
# This file used to contain a single broken line (`slur`, and it was not
|
||||
# executable): the typo meant `slurp` never ran, and nothing referenced it
|
||||
# anyway -- the $mod+shift+p keybind in config.d/keybinds has its own inline
|
||||
# pipeline. Fixed and kept as the shared implementation so the behaviour is
|
||||
# identical wherever it gets wired up.
|
||||
#
|
||||
# Usage: screen-capture.sh [region|output|full] (default: region)
|
||||
# (no "window" mode: slurp offers region, `-o` output and `-p` point selection
|
||||
# only -- it cannot pick a window)
|
||||
|
||||
slur
|
||||
set -u
|
||||
|
||||
outdir="${XDG_PICTURES_DIR:-$HOME/Pictures}"
|
||||
mkdir -p "$outdir"
|
||||
file="$outdir/$(date +%F-%H%M%S).png"
|
||||
|
||||
case "${1:-region}" in
|
||||
region) geom=$(slurp) || exit 1 # Esc cancels
|
||||
[ -n "$geom" ] || exit 1
|
||||
grim -g "$geom" "$file" ;;
|
||||
output) geom=$(slurp -o -f '%g') || exit 1 # pick a monitor
|
||||
[ -n "$geom" ] || exit 1
|
||||
grim -g "$geom" "$file" ;;
|
||||
full) grim "$file" ;;
|
||||
*) echo "usage: $(basename "$0") [region|output|full]" >&2; exit 2 ;;
|
||||
esac
|
||||
|
||||
[ -s "$file" ] || { echo "capture failed" >&2; exit 1; }
|
||||
wl-copy < "$file"
|
||||
notify-send -i "$file" "Screenshot saved" "$file"
|
||||
@@ -0,0 +1 @@
|
||||
/usr/lib/systemd/user/swaync.service
|
||||
@@ -0,0 +1,22 @@
|
||||
# Portal implementation pinning for the SWAY session.
|
||||
#
|
||||
# Without this file xdg-desktop-portal fell back to the deprecated `UseIn` key
|
||||
# and picked hyprland.portal at random ("Choosing hyprland.portal ... via the
|
||||
# deprecated UseIn key"), while the sway config also started the wlr portal --
|
||||
# two implementations registered at once.
|
||||
#
|
||||
# Base is Arch's own /usr/share/xdg-desktop-portal/sway-portals.conf.
|
||||
# GlobalShortcuts is added because neither wlr nor gtk implements it, and
|
||||
# easyeffects requests it (journal: "Unknown method CreateSession or interface
|
||||
# org.freedesktop.impl.portal.GlobalShortcuts").
|
||||
|
||||
[preferred]
|
||||
default=gtk
|
||||
org.freedesktop.impl.portal.ScreenCast=wlr
|
||||
org.freedesktop.impl.portal.Screenshot=wlr
|
||||
# gtk's Inhibit uses org.gnome.SessionManager / org.freedesktop.ScreenSaver,
|
||||
# neither of which sway implements; "none" lets apps use Wayland's
|
||||
# idle-inhibit protocol, which sway does implement.
|
||||
org.freedesktop.impl.portal.Inhibit=none
|
||||
org.freedesktop.impl.portal.GlobalShortcuts=hyprland
|
||||
org.freedesktop.impl.portal.InputCapture=hyprland
|
||||
Reference in new issue
Block a user