🔥

Wayland環境下のLinux版MSEdgeでタッチパッドジェスチャーとfcitxを使う

2024/11/19に公開

要約

Microsoft Edgeの起動オプションに以下の項目を追加しよう。

microsoft-edge --ozone-platform-hint=auto --enable-features=TouchpadOverscrollHistoryNavigation,WaylandTextInputV3

または

microsoft-edge --ozone-platform-hint=auto --enable-features=TouchpadOverscrollHistoryNavigation --enable-wayland-ime --wayland-text-input-version=3

GNOMEランチャーからの起動時にジェスチャを使用するには、エントリファイルに上記のオプションを追記する。

環境

  • Ubuntu 24.04.1 Desktop
  • fcitx5-mozc
  • Microsoft Edge 131.0.2903.48 64bit

きっかけ

Microsoft Edgeの垂直タブが快適すぎて、Ubuntuにもインストールして使っている。ところが、Linux版ではタッチパッドジェスチャーが使えない。2本指でのズーム操作や戻る・進む操作ができないのは結構しんどい。

Linux版Edgeに関する情報は多くないのだが、2020年からChromiumベースになっているのでChromeの情報が使えたりする。

Point 1. ブラウザをWaylandネイティブで起動する

WaylandというのはX11 window systemに代わる新しいディスプレイサーバーだ。Ubuntu21.04からデフォルトセッションとして置き換えられている。

第663回 Ubuntu 21.04の主な変更点 | gihyo.jp

ChromiumはWaylandに対応しているが、デフォルトではX11モードで動作する。これをWaylandネイティブに切り替えてやると、タッチパッドジェスチャーが使えるようになる。

起動時のコマンドライン引数から設定する方法

次のオプションをつけて起動する[1]

--ozone-platform-hint=auto

もしうまく行かない場合は、代わりにこれを使う。

--ozone-platform=wayland

chrome://flagsから設定する方法

chrome://flagsにアクセスし、Preferred Ozone platformWaylandにすれば良いらしい。

https://www.reddit.com/r/Fedora/comments/rkzp78/make_chrome_run_on_wayland_permanently/

Point 2. 「戻る・進む」を有効化する

2本指スワイプでの戻る・進む操作には、さらにオプションの指定が必要だ[2]

--enable-features=TouchpadOverscrollHistoryNavigation

Point 3. IMEへの対応

ここまでやってみた人は、日本語入力ができないことにお気づきだろう。この問題はIMEとWaylandの間のプロトコルの不一致が原因だ。
GNOME側がtext-input-v3を使用するのに対して、Edge側はtext-input-v1を使用する。そのためIMEが使用できないようだ。

この方が詳しく書いている。
https://zenn.dev/yangniao23/scraps/1ea51913f482cf

このオプションを追加すると、text-input-v3を有効化できる。

--enable-features=WaylandTextInputV3

戻る・進むと同時に有効化するときは、カンマでつなげて指定しよう。

--enable-features=TouchpadOverscrollHistoryNavigation,WaylandTextInputV3

代わりに以下のオプションでも動作した。

--enable-wayland-ime --wayland-text-input-version=3

アプリケーションエントリの編集

コマンドで起動するときのやり方はわかったが、普段ブラウザを使うときはGNOMEランチャーから選択すると思う。対応するエントリファイルも編集しておくと、特別な操作無しでタッチパッドジェスチャを使用できるようになる。

/usr/share/applications/microsoft-edge.desktopを適当なテキストエディタで開く。exec=の項目が実行されるコマンドなので、そこにオプションを追加しよう。
通常の起動、「新しいウィンドウ」、「新しいInPrivateウィンドウ」の3箇所あるはずだ。

編集後のエントリを見る
/usr/share/applications/microsoft-edge.desktop
[Desktop Entry]
Version=1.0
Name=Microsoft Edge
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Web Browser
GenericName[ar]=متصفح الشبكة
GenericName[bg]=Уеб браузър
GenericName[ca]=Navegador web
GenericName[cs]=WWW prohlížeč
GenericName[da]=Browser
GenericName[de]=Web-Browser
GenericName[el]=Περιηγητής ιστού
GenericName[en_GB]=Web Browser
GenericName[es]=Navegador web
GenericName[et]=Veebibrauser
GenericName[fi]=WWW-selain
GenericName[fr]=Navigateur Web
GenericName[gu]=વેબ બ્રાઉઝર
GenericName[he]=דפדפן אינטרנט
GenericName[hi]=वेब ब्राउज़र
GenericName[hu]=Webböngésző
GenericName[it]=Browser Web
GenericName[ja]=ウェブブラウザ
GenericName[kn]=ಜಾಲ ವೀಕ್ಷಕ
GenericName[ko]=웹 브라우저
GenericName[lt]=Žiniatinklio naršyklė
GenericName[lv]=Tīmekļa pārlūks
GenericName[ml]=വെബ് ബ്രൌസര്‍
GenericName[mr]=वेब ब्राऊजर
GenericName[nb]=Nettleser
GenericName[nl]=Webbrowser
GenericName[pl]=Przeglądarka WWW
GenericName[pt]=Navegador Web
GenericName[pt_BR]=Navegador da Internet
GenericName[ro]=Navigator de Internet
GenericName[ru]=Веб-браузер
GenericName[sl]=Spletni brskalnik
GenericName[sv]=Webbläsare
GenericName[ta]=இணைய உலாவி
GenericName[th]=เว็บเบราว์เซอร์
GenericName[tr]=Web Tarayıcı
GenericName[uk]=Навігатор Тенет
GenericName[zh_CN]=网页浏览器
GenericName[zh_HK]=網頁瀏覽器
GenericName[zh_TW]=網頁瀏覽器
# Not translated in KDE, from Epiphany 2.26.1-0ubuntu1.
GenericName[bn]=ওয়েব ব্রাউজার
GenericName[fil]=Web Browser
GenericName[hr]=Web preglednik
GenericName[id]=Browser Web
GenericName[or]=ଓ୍ବେବ ବ୍ରାଉଜର
GenericName[sk]=WWW prehliadač
GenericName[sr]=Интернет прегледник
GenericName[te]=మహాతల అన్వేషి
GenericName[vi]=Bộ duyệt Web
# Gnome and KDE 3 uses Comment.
Comment=Access the Internet
Comment[ar]=الدخول إلى الإنترنت
Comment[bg]=Достъп до интернет
Comment[bn]=ইন্টারনেটটি অ্যাক্সেস করুন
Comment[ca]=Accedeix a Internet
Comment[cs]=Přístup k internetu
Comment[da]=Få adgang til internettet
Comment[de]=Internetzugriff
Comment[el]=Πρόσβαση στο Διαδίκτυο
Comment[en_GB]=Access the Internet
Comment[es]=Accede a Internet.
Comment[et]=Pääs Internetti
Comment[fi]=Käytä internetiä
Comment[fil]=I-access ang Internet
Comment[fr]=Accéder à Internet
Comment[gu]=ઇંટરનેટ ઍક્સેસ કરો
Comment[he]=גישה אל האינטרנט
Comment[hi]=इंटरनेट तक पहुंच स्थापित करें
Comment[hr]=Pristup Internetu
Comment[hu]=Internetelérés
Comment[id]=Akses Internet
Comment[it]=Accesso a Internet
Comment[ja]=インターネットにアクセス
Comment[kn]=ಇಂಟರ್ನೆಟ್ ಅನ್ನು ಪ್ರವೇಶಿಸಿ
Comment[ko]=인터넷 연결
Comment[lt]=Interneto prieiga
Comment[lv]=Piekļūt internetam
Comment[ml]=ഇന്റര്‍‌നെറ്റ് ആക്‌സസ് ചെയ്യുക
Comment[mr]=इंटरनेटमध्ये प्रवेश करा
Comment[nb]=Gå til Internett
Comment[nl]=Verbinding maken met internet
Comment[or]=ଇଣ୍ଟର୍ନେଟ୍ ପ୍ରବେଶ କରନ୍ତୁ
Comment[pl]=Skorzystaj z internetu
Comment[pt]=Aceder à Internet
Comment[pt_BR]=Acessar a internet
Comment[ro]=Accesaţi Internetul
Comment[ru]=Доступ в Интернет
Comment[sk]=Prístup do siete Internet
Comment[sl]=Dostop do interneta
Comment[sr]=Приступите Интернету
Comment[sv]=Gå ut på Internet
Comment[ta]=இணையத்தை அணுகுதல்
Comment[te]=ఇంటర్నెట్‌ను ఆక్సెస్ చెయ్యండి
Comment[th]=เข้าถึงอินเทอร์เน็ต
Comment[tr]=İnternet'e erişin
Comment[uk]=Доступ до Інтернету
Comment[vi]=Truy cập Internet
Comment[zh_CN]=访问互联网
Comment[zh_HK]=連線到網際網路
Comment[zh_TW]=連線到網際網路
Exec=/usr/bin/microsoft-edge-stable --ozone-platform-hint=auto --enable-features=TouchpadOverscrollHistoryNavigation,WaylandTextInputV3 %U
StartupNotify=true
Terminal=false
Icon=microsoft-edge
Type=Application
Categories=Network;WebBrowser;
MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/http;x-scheme-handler/https;
Actions=new-window;new-private-window;

[Desktop Action new-window]
Name=New Window
Name[am]=አዲስ መስኮት
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=নতুন উইন্ডো
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]=નવી વિંડો
Name[hi]=नई विंडो
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=新規ウインドウ
Name[kn]=ಹೊಸ ವಿಂಡೊ
Name[ko]=새 창
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=പുതിയ വിന്‍ഡോ
Name[mr]=नवीन विंडो
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=புதிய சாளரம்
Name[te]=క్రొత్త విండో
Name[th]=หน้าต่างใหม่
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Cửa sổ Mới
Name[zh_CN]=新建窗口
Name[zh_TW]=開新視窗
Exec=/usr/bin/microsoft-edge-stable --ozone-platform-hint=auto --enable-features=TouchpadOverscrollHistoryNavigation,WaylandTextInputV3

[Desktop Action new-private-window]
Name=New InPrivate Window
Name[ar]=نافذة InPrivate جديدة
Name[bg]=Нов прозорец InPrivate
Name[bn]=নতুন InPrivate উইন্ডো
Name[ca]=Finestra InPrivate nova
Name[cs]=Nové okno InPrivate
Name[da]=Nyt InPrivate-vindue
Name[de]=Neues InPrivate-Fenster
Name[el]=Νέο παράθυρο InPrivate
Name[en_GB]=New InPrivate Window
Name[es]=Nueva ventana InPrivate
Name[et]=Uus InPrivate-aken
Name[fa]=پنجره InPrivate جدید
Name[fi]=Uusi InPrivate-ikkuna
Name[fil]=Bagong InPrivate Window
Name[fr]=Nouvelle fenêtre InPrivate
Name[gu]=નવી InPrivate વિંડો
Name[hi]=नई InPrivate विंडो
Name[hr]=Novi prozor InPrivate
Name[hu]=Új InPrivate-ablak
Name[id]=Jendela InPrivate Baru
Name[it]=Nuova finestra InPrivate
Name[iw]=חלון InPrivate חדש
Name[ja]=新しい InPrivate ウィンドウ
Name[kn]=ಹೊಸ InPrivate ವಿಂಡೋ
Name[ko]=새로운 InPrivate 창
Name[lt]=Naujas „InPrivate“ langas
Name[lv]=Jauns InPrivate logs
Name[ml]=പുതിയ InPrivate ജാലകം
Name[mr]=नवीन InPrivate विंडो
Name[nl]=Nieuw InPrivate-venster
Name[no]=Nytt InPrivate-vindu
Name[pl]=Nowe okno InPrivate
Name[pt]=Nova Janela InPrivate
Name[pt_BR]=Nova Janela InPrivate
Name[ro]=Fereastră InPrivate nouă
Name[ru]=Новое окно InPrivate
Name[sk]=Nové okno InPrivate
Name[sl]=Novo okno InPrivate
Name[sr]=Нови InPrivate прозор
Name[sv]=Nytt InPrivate-fönster
Name[ta]=புதிய InPrivate சாளரம்
Name[te]=కొత్త InPrivate విండో
Name[th]=หน้าต่าง InPrivate ใหม่
Name[tr]=Yeni InPrivate Penceresi
Name[uk]=Нове вікно InPrivate
Name[vi]=Cửa Sổ InPrivate Mới
Name[zh_CN]=新建 InPrivate 窗口
Name[zh_TW]=新 InPrivate 視窗
Exec=/usr/bin/microsoft-edge-stable --ozone-platform-hint=auto --enable-features=TouchpadOverscrollHistoryNavigation,WaylandTextInputV3 --inprivate

(参考) libinput-gestures

タッチパッドジェスチャについて検索すると、この方法がけっこうヒットする。
デーモンを常駐させてlibinputというドライバからイベントを受け取り、あらかじめ設定したコマンドを実行する。「2本指スワイプを検出したら、Alt+左矢印を送信」のような仕組みで操作を実現する。

https://qiita.com/onokatio/items/c386da501d11a9735915

この方法でも悪くないのだが、わざわざ別のプログラムを常駐させるのはあまりスマートではない...

脚注
  1. https://wiki.archlinux.jp/index.php/Chromium#.E3.83.8D.E3.82.A4.E3.83.86.E3.82.A3.E3.83.96_Wayland_.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88 ↩︎

  2. https://wiki.archlinux.jp/index.php/Chromium#.E3.83.8A.E3.83.93.E3.82.B2.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E3.82.BF.E3.83.83.E3.83.81.E3.83.91.E3.83.83.E3.83.89.E3.82.B8.E3.82.A7.E3.82.B9.E3.83.81.E3.83.A3 ↩︎

GitHubで編集を提案

Discussion