web-dev-qa-db-ja.com

使用中のランチャーのアイコンの場所を見つけるにはどうすればよいですか?

デスクトップにランチャーがあり、同じアイコンで別のランチャーを手動で追加したい。

既存のランチャーの設定に移動してアイコンをクリックすると、アイコンが保存されているフォルダーではなく、ホームフォルダーに移動します。

ランチャーの使用済みアイコンがシステムのどこにあるかを知るにはどうすればよいですか?

22
Timo Schneemann

ほとんどの場合、アイコンは絶対パスと呼ばれるのではなく、現在のアイコンテーマから選択されます。

  1. Geditを開く
  2. ランチャーをGeditウィンドウにドラッグします
  3. Icon定義を探します:

    Icon=gnome-panel-launcher

その後、テーマに応じて/usr/share/iconssomewhereのアイコンを見つけることができます。

正しいアイコンパスを見つける簡単なpythonスクリプトを次に示します。

import gtk

print "enter the icon name (case sensitive):"
icon_name = raw_input(">>> ")
icon_theme = gtk.icon_theme_get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
    print icon.get_filename()
else:
    print "not found"

どこかに保存して、python /path/to/script.pyを実行します。

次のようになります。

stefano@lenovo:~$ python test.py 
enter the icon name (case sensitive):
>>> gtk-execute
/usr/share/icons/Humanity/actions/48/gtk-execute.svg

または、探しているアイコンが見つかるまで/usr/share/iconsで探し回ることができます。


はるかに簡単:ランチャーをコピーして貼り付け、名前とコマンドを変更できます


2018年編集

上記のスクリプトの更新バージョン:

#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

icon_name = input("Icon name (case sensitive): ")
icon_theme = Gtk.IconTheme.get_default()
icon = icon_theme.lookup_icon(icon_name, 48, 0)
if icon:
    print(icon.get_filename())
else:
    print("not found")
19
Stefano Palazzo

もう少し情報。

通常のランチャーは実際には/ usr/share/applications /にある.desktopファイルです。

例:/usr/share/applications/usb-creator-gtk.desktop

http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html を参照)

各デスクトップファイルには、アイコンを指定する行があります。次に例を示します。

Icon=usb-creator-gtk

(この場合のように)パス(およびファイル拡張子)がない場合、アイコンは(どこかに)/ usr/share/icons /にあり、実行時に使用されるアイコンは現在のテーマと表示コンテキスト(サイズ)の場合。

デスクトップファイルからアイコン名(拡張子なし)がわかると、次のようにしてアイコン/それらを見つけることができます。

$ find . -name "usb-creator-gtk*"
./hicolor/scalable/apps/usb-creator-gtk.svg
./Humanity/apps/32/usb-creator-gtk.svg
./Humanity/apps/16/usb-creator-gtk.svg
./Humanity/apps/22/usb-creator-gtk.svg
./Humanity/apps/24/usb-creator-gtk.svg
./Humanity/apps/64/usb-creator-gtk.svg
./Humanity/apps/48/usb-creator-gtk.svg
4
kyleN

これは Stefano Palazzo の回答 here に基づいています。

#!/usr/bin/env python3

from gi.repository import Gtk

icon_name = input("Icon name (case sensitive): ")
if icon_name:
    theme = Gtk.IconTheme.get_default()
    found_icons = set()
    for res in range(0, 512, 2):
        icon = theme.lookup_icon(icon_name, res, 0)
        if icon:
            found_icons.add(icon.get_filename())

    if found_icons:
        print("\n".join(found_icons))
    else:
        print(icon_name, "was not found")

上記をファイルに保存し、python3 /path/to/fileで実行します。

Stefano Palazzo の元のスクリプトの違いは次のとおりです。

  • これにより、アイコンのすべての解像度が見つかります(48だけでなく)
  • Gtkの代わりにgi.repositoryを使用します
  • 2ではなくPython 3を使用します
  • 他の方法で少し調整
3
kiri