GTK4 ページを作ろうとしていますが、進んでいない。
てゆーか GtkGestureSwipe が Macbook で動作しません。
そもそも Eye of GNOME にて上記が動作がしません。
ちなみに X11 でログインすると拡大や回転もできなくなります。
Macbook Air 2011 でも Wayland がデフォルトになります。
この状態でスワイプ以外は全部動く、やはり X11 ではズームできません。
#!/usr/bin/env python3
import gi, sys
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
class Win(Gtk.ApplicationWindow):
'''
Fedora 34 on Macbook Air 2011
'''
def __init__(self, app):
Gtk.ApplicationWindow.__init__(self, application=app)
# var
self.mem_pan = -1
# touch || mouse button
click = Gtk.GestureClick()
click.connect('released', self.on_gesture_click_released)
# long press
lpress = Gtk.GestureLongPress()
lpress.connect('pressed', self.on_gesture_long_press_pressed)
# pan
pan = Gtk.GesturePan(orientation=Gtk.Orientation.VERTICAL)
pan.connect('pan', self.on_gesture_pan)
# swipe (no...)
swipe = Gtk.GestureSwipe(touch_only=True)
swipe.connect('swipe', self.on_gesture_swipe_swipe)
# zoom
zoom = Gtk.GestureZoom()
zoom.connect('scale-changed', self.on_gesture_scale_change)
#
self.label = Gtk.Label(label='start')
self.label.add_controller(click)
self.label.add_controller(lpress)
self.label.add_controller(pan)
self.label.add_controller(swipe)
self.label.add_controller(zoom)
# resize
self.set_child(self.label)
self.set_default_size(600, 600)
def on_gesture_pan(self, ges, direction, offset):
if direction != self.mem_pan:
self.mem_pan = direction
if direction == Gtk.PanDirection.UP:
self.label.props.label += '\npan up'
else:
self.label.props.label += '\npan down'
def on_gesture_long_press_pressed(self, ges, x, y):
self.label.props.label += '\nlong press'
def on_gesture_click_released(self, ges, n_press, x, y):
if n_press == 2:
self.label.props.label += '\ndouble clicked'
def on_gesture_swipe_swipe(self, ges, x, y):
self.label.props.label += f'\nswipe x={round(x)} y={round(y)}'
def on_gesture_scale_change(self, zoom, scale):
w = round(600 * scale)
h = round(600 * scale)
self.set_default_size(w, h)
class App(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_startup(self):
Gtk.Application.do_startup(self)
Win(self)
def do_activate(self):
self.props.active_window.present()
app = App()
app.run(sys.argv)
ちなみに Macbook に Fedora 34 を入れた場合。
以下のトラックパッドジェスチャがデフォルト状態の GNOME 40 で可能。
三本指の上スワイプでアクティビティ画面。
もう一度同じ動作でアプリケーションランチャ。
三本指の横スワイプで仮想デスクトップの異動。
Eye of GNOME にて画像の拡大縮小と回転。
探せばジェスチャを追加できるサードパーティ拡張もあるんだけど。
上記のデフォルトとコンフリクトすると思う、試していないけど。
X11 でログインするとやはり何も動作しません。
考えてみれば二本指ジェスチャってスクロール動作と同じだし。
スワイプジェスチャと両立している macOS ってスゲェんだなって。
サーフェスとかは触ったことすら無いので知らない。
しかし本当に思う、やっぱり Macbook は macOS で使うのが一番だよ。
Fedora で使うと command と control キーの違いをどうしても間違えるし。