«««

21 grudnia 2010

Edytowanie plików *.desktop w nautilusie

Proste rozszerzenie typu nautilus-python, które pozwala na edycję plików *.desktop (ikonki na pulpicie do uruchamiania programów). Wprawdzie miałem to jako nautilus-script, ale chciałem to mieć na wierzchu i tylko wówczas, gdy jest potrzebne.

Tak się prezentuje przy zaznaczeniu jednego lub kilku (kosmetyczne różnice) plików typu desktop. Opcja pojawi się nawet, gdy wśród zaznaczonych będą inne typy plików. To jest celowo tak zrobione. Zawsze mnie wkurzało, że jak zaznaczę kilka archiwów z "czymkolwiek" to już nie pojawia się opcja ich rozpakowania.

~/.local/share/nautilus-python/extensions/edit-desktop-files.py

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import gtk
import nautilus

class EditDesktopFiles(nautilus.MenuProvider):

    def __init__(self):
        pass

    def edit_desktop_files(self, menu, files):
        for file in files:
            # http://www.pygtk.org/docs/pygtk/class-gtkmountoperation.html
            gtk.show_uri(None,file.get_uri(), gtk.gdk.CURRENT_TIME)

    def get_file_items(self, window, files):
        # test: czy w ogóle cokolwiek jest zaznaczone
        if len(files) == 0:
            return

        # filtr: tylko pliki *.desktop
        files = [ file for file in files
                    if file.get_mime_type() == 'application/x-desktop' ]

        if len(files) == 0:
            return
        elif len(files) == 1:
            LABEL='Edit %s file' % files[0].get_name()
            TOOLTIP='Edit this desktop file in default editor'
        else:
            LABEL='Edit all desktop files'
            TOOLTIP='Edit all desktop files in default editor'

        NAME='NautilusPython::edit_desktop_files_item'
        ICON='/usr/share/pixmaps/nautilus/colors.png'

        item = nautilus.MenuItem(NAME,LABEL,TOOLTIP,ICON)
        item.connect('activate', self.edit_desktop_files, files)

        return item,

Oczywiście należy pamiętać, o wcześniejszym zainstalowaniu paczki nautilus-python, a po załadowaniu skryptu do katalogu należy zrestartować nautilusa

nautilus -q && sleep 1 && nautilus --no-desktop

Brak komentarzy: