ランチャーを信頼できるものとして設定するにはどうすればよいですか?

ランチャーを信頼できるものとして設定するにはどうすればよいですか?

デスクトップアイコンが機能しません。使用しようとするとエラーが発生します

信頼できないデスクトップ ファイル このデスクトップ ファイルは信頼されていないため、起動できません。起動を有効にするには、右クリックして、次の操作を実行します。 「起動を許可する」を有効にする

次の場合には、この「起動を許可する」メニュー項目は表示されません。

  1. デスクトップのアイコンを右クリックする
  2. Dolphinでそのファイルを右クリックすると
  3. 「ファイルマネージャー」でこのファイルを右クリックします

そこで、この Web ページの指示に従って、コマンド ラインから実行しようとしました。Ubuntu 18.04 のコマンド ラインから .desktop ファイルを信頼できるものとしてマークするにはどうすればよいですか?このような信頼できないランチャー リンクが多数あるため、次のコマンド シーケンスを使用したところ、次の応答が返されました。

$ chmod u+xrw /home/stephen/Desktop/*.desktop
$ chmod g+xrw /home/stephen/Desktop/*.desktop
$ chmod o+xr /home/stephen/Desktop/*.desktop
$ gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes
gio: Setting attribute metadata::trusted not supported

gio に * ワイルドカード文字の代わりに特定のファイルを指定した場合、また gio を root として実行しようとした場合にも、同じエラーが発生しました。

gio コマンドに与える正しい属性は何ですか? どのファイル ブラウザーに「起動を許可」メニュー項目が表示される必要がありますか?

私のOSはUbuntu 22.04 jammyです

問題のある .desktop ファイルの 1 つを以下に示します。

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=

私は、2022 年 9 月 6 日に ubfan1 がコメントで行った推奨事項に従いました。結果:

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Comment" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "GenericName" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: error: file contains multiple keys named "Name" in group "Desktop Entry"
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
/home/stephen/Desktop/Flameshot.desktop: warning: key "TerminalOptions" in group "Desktop Entry" is deprecated

Path キーを何に設定すればよいでしょうか? これを知らなかったため、またこれは単なる警告であったため、ファイルの残りの部分をそれに応じて編集しました。 編集の結果は次のとおりです。

[Desktop Entry]
Comment=Powerful yet simple to use screenshot software.
Comment[en_US]=Powerful yet simple to use screenshot software.
Exec=flameshot launcher
GenericName=
GenericName[en_US]=
Icon=flameshot
MimeType=
Name=Flameshot (Snappy Edition)
Path=
StartupNotify=false
Terminal=false
Type=Application
Version=1.0
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-Desktop-File-Install-Version=0.26
X-KDE-SubstituteUID=false
X-KDE-Username=

今、次のような結果が得られました:

stephen@stephen:~$ desktop-file-validate /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-install /home/stephen/Desktop/Flameshot.desktop
/usr/share/applications/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
stephen@stephen:~$ sudo desktop-file-edit /home/stephen/Desktop/Flameshot.desktop
/home/stephen/Desktop/Flameshot.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path

それでも「起動を許可する」メニュー項目は表示されません。

その後、Flameshot.desktop が実行可能でなくなったことがわかりました。そこで、Dolphin を使用して実行可能にしました。これを行った後、実行可能にしたことにより、Flameshot.desktop の内容が上記の開始時の状態に戻ってしまうことがわかりました。重複したキー エントリが再導入され、開始時の状態に戻ってしまいました。

おそらく、パス キーの警告は私が想定していたよりも重要だったのでしょう。もう一度試す前に、何を設定すればよいかを知る必要があります。その他の提案もいただければ幸いです。

テスト用に作成された新しい一時アカウントであるテスト アカウントで実行された「strace gio set」コマンドの結果と、Ubuntu のインストール中に作成されたメイン アカウントである stephen アカウントで実行された「strace gio set」コマンドの結果を比較するためのスプレッドシートを作成しました。このスプレッドシートは、次の場所からダウンロードできます。

https://www.mediafire.com/file/xz4dy7280wfx3u8/giosetenablecomparison.ods/file

列 A はメイン アカウントのコマンドの結果で、列 B はテスト アカウントの結果です。結果は 59 行目までほぼ同じです。テスト アカウントでは、メイン アカウントの場合は「close(3)」、テスト アカウントの場合は「close(3) = 0」と表示されます。

stephen アカウントでは、出力は行 59 で終了します。test アカウントでは、出力は行 516 まで続きます。

この出力の意味がわかりません。何らかのエラーにより、Stephen アカウントのプロセスが途中で終了しているようです。ここで何が問題なのかわかる方、解決策を提案できる方はいらっしゃいますか。

移行元の古いコンピューターには Pop!_OS 21.04 が搭載されています。このアイコンの問題が発生している移行先の新しいコンピューターには、Ubuntu 22.04 が搭載されています。移行時に、/opt のすべてのバイナリと /home のすべてのファイルをコピーしました。/opt のすべてのファイルをコピーすることで、すべてのソフトウェアを再度インストールする時間と労力を節約したいと考えました。/user/bin や /snap など、他の場所にもバイナリがあることはわかっています。私はこれらをコピーせず、インストール ファイルを使用して新しいコンピューターにインストールするつもりでした。これらのリンク先のアプリがインストールされるまで、/Desktop ディレクトリのリンクが壊れていることはわかっていました。今では、これは間違いだった可能性があり、新しいコンピューターのインストール ファイルからすべてインストールするべきだったと思います。

要求されたコマンドの結果スチールドライバー彼のコメントでは:

stephen@stephen:~$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1000/bus
stephen@stephen:~$ id -u
1000

答え1

gio set "/home/stephen/Desktop/*.desktop" "metadata::trusted" yes

正しくありません。3つの問題:

  • を使用する必要がありますdbus-launchdbus-launchがインストールされていない場合は、まず以下を実行してください。

    sudo apt install dbus-x11
    
  • ワイルドカードは使用できません。

  • Ubuntu 20.04 では「yes」ではなく「true」です。

コマンド:

dbus-launch gio set /home/stephen/Desktop/{name}.desktop "metadata::trusted" true

({name} は実際の名前に置き換える必要があります)

答え2

「起動を許可」メニュー項目が表示されなかったのは、ディレクトリ「~/Desktop」が他のユーザーによって書き込み可能だったためです。これを見つけるには、GNU ソース コードを見つけて分析する必要がありました。その鍵は、ファイルの 200 行目でした。

/usr/share/gnome-shell/extensions/ding(at)rastersoft.com/fileItemMenu.js"

(@を(at)に置き換えてください)

これは:

if (fileItem.isValidDesktopFile && !this._desktopManager.writableByOthers && !fileItem.writableByOthers && (selectedItemsNum == 1 )) {

ディレクトリ「~/Desktop」は他のユーザーによって書き込み可能であるため、「!this._desktopManager.writableByOthers」という語句は false であり、メニュー項目は表示されませんでした。

「~/Desktop」ディレクトリに他のユーザーが書き込みできないようにするという要件は文書化されていないため、文書化する必要があります。文書化されていれば、多くの時間を節約できたでしょう。

関連情報