環境
- Ubuntu 24.04 LTS (Noble Numbat)
- GNOME / Wayland
やったこと
CopyQのインストール
sudo apt install copyq -y
aptリポジトリから入るバージョンを確認。
apt-cache policy copyq
copyq:
インストールされているバージョン: 7.1.0-1build2
候補: 7.1.0-1build2
CopyQ 7.1.0、Qt 5.15.12ビルド。
起動と自動起動の設定
copyq &
mkdir -p ~/.config/autostart
cp /usr/share/applications/com.github.hluk.copyq.desktop ~/.config/autostart/
システムトレイにアイコンが表示され、起動自体は成功。
問題発生: コピーしても履歴に何も残らない
何かテキストをコピーしてから、CopyQが保持しているアイテム数を確認。
copyq count
1
初期値のまま増えない。クリップボードの変更を検知できていない。
原因調査
CopyQのログを確認
copyq logs | grep -i -E "error|clipboard|wayland"
CopyQ Warning: [default] QtWarning: Activating Wayland clipboard took 5000 ms
CopyQ ERROR: [default] QtCritical: Failed to activate Wayland clipboard
CopyQ Warning: [default] QtWarning: Activating Wayland clipboard took 5000 ms
CopyQ ERROR: [default] QtCritical: Failed to activate Wayland clipboard
CopyQ Warning: [qt.qpa.wayland] QtWarning: Wayland does not support QWindow::requestActivate()
Failed to activate Wayland clipboardが出ている。Waylandクリップボードのアクティベーションがタイムアウト(5000ms)した末に失敗している。
環境変数の確認
echo "QT_QPA_PLATFORM=$QT_QPA_PLATFORM"
echo "WAYLAND_DISPLAY=$WAYLAND_DISPLAY"
QT_QPA_PLATFORM=
WAYLAND_DISPLAY=wayland-0
QT_QPA_PLATFORMが未設定。明示的にwaylandを指定して再起動を試みた。
copyq exit
QT_QPA_PLATFORM=wayland copyq &
ログを再確認。
copyq logs | grep -i "error" | tail -5
CopyQ ERROR: [default] QtCritical: Failed to activate Wayland clipboard
同じエラー。環境変数の指定では解決しない。
原因
CopyQのクリップボード監視は、Waylandコンポジタがwlr-data-controlなどの拡張プロトコルをサポートしている必要がある。GNOMEはこのプロトコルをサポートしていないため、CopyQからクリップボードの変更を監視できない。
これはQt 5固有の問題ではない。CopyQ 9.1.0 + Qt 6.8.1でも同じFailed to activate Wayland clipboardが報告されている(GitHub #2963)。CopyQの公式Known IssuesにもWaylandコンポジタの対応状況に依存する旨が記載されている。
つまりQt 5→Qt 6に上げても、GNOMEを使う限り解決しない。
関連issue
選択肢
| 方法 | 概要 |
|---|---|
| cliphist + wl-clipboard | Wayland用に作られた軽量なクリップボード履歴管理。GNOMEでも動作する |
| GNOME拡張機能 | Clipboard Indicator等、GNOME Shell拡張でクリップボード履歴を管理 |
GNOME環境ではGNOME Shell拡張が確実。Shell内部で動くためWaylandプロトコルの制約を受けない。
対処: Clipboard Indicatorのインストール
CopyQを終了し、自動起動も削除。
copyq exit
rm ~/.config/autostart/com.github.hluk.copyq.desktop
Clipboard Indicatorをextensions.gnome.orgからダウンロードして手動インストール。
EXTENSION_UUID="clipboard-indicator@tudmotu.com"
VERSION_PK=70694 # GNOME Shell 46対応版
INSTALL_DIR="$HOME/.local/share/gnome-shell/extensions/${EXTENSION_UUID}"
TMPZIP="/tmp/clipboard-indicator.zip"
curl -L -o "$TMPZIP" \
"https://extensions.gnome.org/download-extension/${EXTENSION_UUID}.shell-extension.zip?version_tag=${VERSION_PK}"
mkdir -p "$INSTALL_DIR"
unzip -o "$TMPZIP" -d "$INSTALL_DIR"
WaylandではGNOME Shellのリロードができないため、ログアウト→ログインが必要。
ログイン後に以下を実行して有効化する。
gnome-extensions enable clipboard-indicator@tudmotu.com
トップバーにクリップボードアイコンが表示されれば成功。CopyQのハサミアイコンとは異なり、クリップボード(バインダー)型のアイコンになる。何かテキストをコピーしてアイコンをクリックし、履歴に記録されていれば動作確認完了。
動作確認
再起動後にenableコマンドを実行し、Clipboard Indicatorが正常に動作することを確認した。クリップボードの変更が履歴に記録される。
なお、CopyQのログには再起動後も同じFailed to activate Wayland clipboardエラーが出続けていた。GNOME/Waylandでの制約は変わらないため、CopyQはアンインストールしてClipboard Indicatorに移行するのが正解。
sudo apt remove copyq
rm -f ~/.config/autostart/com.github.hluk.copyq.desktop
補足: Cogl.Color APIの互換性問題
Clipboard Indicator v71にはGNOME 46との軽微な互換性問題がある。クリップボードエントリの「編集」ボタンをクリックすると以下のエラーが発生する。
JS ERROR: TypeError: Object is of type Cogl.Color - cannot convert to ClutterColor
showEditDialog@extension.js:1840
GNOME 46でCogl.ColorをClutterColorプロパティに直接代入できなくなったことが原因。クリップボード履歴の監視・表示には影響しないが、エントリ編集機能は使えない。