デスクトップにランチャーがあり、同じアイコンで別のランチャーを手動で追加したい。
既存のランチャーの設定に移動してアイコンをクリックすると、アイコンが保存されているフォルダーではなく、ホームフォルダーに移動します。
ランチャーの使用済みアイコンがシステムのどこにあるかを知るにはどうすればよいですか?
ほとんどの場合、アイコンは絶対パスと呼ばれるのではなく、現在のアイコンテーマから選択されます。
Icon
定義を探します:
Icon=gnome-panel-launcher
その後、テーマに応じて/usr/share/icons
でsomewhereのアイコンを見つけることができます。
正しいアイコンパスを見つける簡単な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
で探し回ることができます。
はるかに簡単:ランチャーをコピーして貼り付け、名前とコマンドを変更できます
上記のスクリプトの更新バージョン:
#!/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")
もう少し情報。
通常のランチャーは実際には/ 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
これは 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 の元のスクリプトの違いは次のとおりです。
Gtk
の代わりにgi.repository
を使用します