Watch
1
0
Fork
You've already forked souveraine
0

dock/pill: reserve pill strip (dock floats above), pill swipe-up = dock gesture not home/keyboard

This commit is contained in:
Fimeg 2026-07-12 10:48:11 -04:00
commit ccb51820e5
2 changed files with 17 additions and 12 deletions

View file

@ -156,6 +156,10 @@ Scope { // Scope
bottom: true
left: true
right: true
// Reserve the pill's strip at the very bottom (pill is 26px +
// a hair of breathing room). The dock floats just above it so
// they never overlap and the pill stays touchable at all times.
margins.bottom: 32
}
exclusiveZone: root.dockState === Dock.DockState.Pinned ? implicitHeight - (Appearance.sizes.hyprlandGapsOut) - (Appearance.sizes.elevationMargin - Appearance.sizes.hyprlandGapsOut) : 0

View file

@ -1,14 +1,13 @@
// pill — Phosh-style gesture bar for the Pixel 3.
// Gesture map (2026-07-11 rewrite):
// double-tap : toggle fullscreen (maximize, mode 1) of the active window
// swipe up : go home (empty ws)
// Gesture map (2026-07-12):
// double-tap : toggle app-mode (fullscreen maximize, mode 1) of active win
// swipe up : pulse the dock (ii "dock" swipeUp IPC) — same gesture as
// the bottom-edge hyprgrass bind, so there's one dock gesture
// regardless of where you swipe from
// swipe down : dismiss the dock (ii "dock" swipeDown IPC)
// The long-press-for-keyboard binding was REMOVED from the pill; the OSK is
// still reachable via the 3-finger-swipe-up hyprgrass bind (hyprland.lua).
// Fullscreen mode 1 (maximize/borderless) is used, not mode 0 (true
// fullscreen), so it stays reversible and doesn't force clients to redraw
// their UI — the phone-friendly default. Apps that want true fullscreen do
// it themselves (future advanced per-app toggles).
// Keyboard is NOT on the pill. The OSK lives on the 3-finger-swipe-up
// hyprgrass bind alone until the grip sensor arrives. Fullscreen mode 1
// (maximize/borderless), not mode 0 — reversible, phone-friendly.
import Quickshell
import Quickshell.Wayland
import QtQuick
@ -48,9 +47,11 @@ ShellRoot {
if (fired) return
if (startY - mouse.y > 35) {
fired = true
// This Hyprland is the lua fork: hyprctl dispatch takes
// lua dispatcher calls, not classic "workspace empty".
Quickshell.execDetached(["hyprctl", "dispatch", "hl.dsp.focus({ workspace = \"empty\" })"])
// Pulse the dock (brings it on top for a few seconds, or
// escalates to overview if already visible). Mirrors the
// bottom-edge hyprgrass swipe-up so there's one dock
// gesture from either surface.
Quickshell.execDetached(["qs", "-c", "ii", "ipc", "call", "dock", "swipeUp"])
} else if (mouse.y - startY > 35) {
fired = true
Quickshell.execDetached(["qs", "-c", "ii", "ipc", "call", "dock", "swipeDown"])