Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/08/2013, à 20:37

fewad

Nemo / utilisation des extensions nautilus

Bonjour à tous !

Comme beaucoup, je suis récemment passé à Némo après avoir découvert le nouveau Nautilus.
Le truc c'est que j'utilise pas mal d'extensions Nautilus (notamment nautilus-image-converter) et en farfouillant (longtemps) à droite à gauche, j'ai vu (ici, entre autres... et pas d'info contradictoire) qu'une simple copie du fichier de l'extension (depuis /usr/lib/nautilus/extensions-3.0 vers /usr/lib/nemo/extensions-3.0) permettait de faire une "importation" de l'extension voulue.

J'ai essayé, ça n'a pas fonctionné (même après redémarrage de l'ordinateur).
Est ce que quelqu'un a tenté le coup ? Est-ce que ça marche pour de vrai ? Est-ce que j'ai éventuellement raté une étape ? et toutes les questions qui s'ensuivent smile

Je tourne sous Gnome-Ubuntu 13.04 avec Nemo 1.8.4

Merci pour les coups de mains !
fouad

PS : j'étais tellement content d'avoir trouvé cette astuce, que j'avais même commencer à rédiger une note la dessus pour la documentation, donc si vous avez la suite du schmilblick, je suis même au taquet pour inscrire ça dans le marbre !

Dernière modification par fewad (Le 29/08/2013, à 21:02)

Hors ligne

#2 Le 31/10/2013, à 14:11

xou816

Re : Nemo / utilisation des extensions nautilus

Salut!

EDIT: Ooops, peut être qu'on parle pas exactement des mêmes extensions. Je pensais aux extensions python... dans ces dossiers: /usr/share/nemo-python/extensions et /usr/share/nautilus-python/extensions à voir pour les autres!

À première vue je dirais qu'il faut "simplement" remplacer toutes les occurences de "Nautilus" par "Nemo" dans les fichiers python des extensions, si on regarde par exemple l'extension compare qui est sous Nautilus et Nemo par exemple:

Pour Nemo:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#    nemo-compare --- Context menu extension for Nemo file manager
#    Copyright (C) 2011  Guido Tabbernuk <boamaod@gmail.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

import sys
import os
import urllib
import gettext
import locale

from gi.repository import Nemo, GObject, Gio

sys.path.append("/usr/share/nemo-compare")

import utils

class NemoCompareExtension(GObject.GObject, Nemo.MenuProvider):
	'''Class for the extension itself'''

	# to hold an item for later comparison
	for_later = None

	def __init__(self):
		'''Load config'''

		self.config = utils.NemoCompareConfig()
		self.config.load()

	def menu_activate_cb(self, menu, paths):
		'''Telling from amount of paths runs appropriate comparator engine'''
		if len(paths) == 1:
			self.for_later = paths[0]
			return

		args = ""
		for path in paths:
			args += "\"%s\" " % path

		cmd = None
		if len(paths) == 2:
			cmd = (self.config.diff_engine + " " + args + "&")
		elif len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0:
			cmd = (self.config.diff_engine_3way + " " + args + "&")
		elif len(self.config.diff_engine_multi.strip()) > 0:
			cmd = (self.config.diff_engine_multi + " " + args + "&")

		if cmd is not None:
			os.system(cmd)
		
	def valid_file(self, file):
		'''Tests if the file is valid comparable'''
		if file.get_uri_scheme() == 'file' and file.get_file_type() in (Gio.FileType.DIRECTORY, Gio.FileType.REGULAR, Gio.FileType.SYMBOLIC_LINK):
			return True
		else:
			return False

	def get_file_items(self, window, files):
		'''Main method to detect what choices should be offered in the context menu'''
		paths = []
		for file in files:
			if self.valid_file(file):
				path = urllib.unquote(file.get_uri()[7:])
				paths.append(path)

		# no files selected
		if len(paths) < 1:
			return

		# initialize i18n
		locale.setlocale(locale.LC_ALL, '')
		gettext.bindtextdomain(utils.APP)
		gettext.textdomain(utils.APP)
		_ = gettext.gettext

		item1 = None
		item2 = None
		item3 = None

		# for paths with remembered items
		new_paths = list(paths)

		# exactly one file selected
		if len(paths) == 1:

			# and one was already selected for later comparison
			if self.for_later is not None:

				# we don't want to compare file to itself
				if self.for_later not in paths:
					item1 = Nemo.MenuItem(
						name="NemoCompareExtension::CompareTo",
						label=_('Compare to ') + self.for_later,
						tip=_("Compare to the file remembered before")
					)

					# compare the one saved for later to the one selected now
					new_paths.insert(0, self.for_later)

			# if only one file selected, we offer to remember it for later anyway
			item3 = Nemo.MenuItem(
				name="NemoCompareExtension::CompareLater",
				label=_('Compare Later'),
				tip=_("Remember file for later comparison")
			)

		# can always compare, if more than one selected
		else:
			# if we have already remembered one file and add some more, we can do n-way compare
			if self.for_later is not None:
				if self.for_later not in paths:
					# if multi compare enabled and in case of 2 files selected 3way compare enabled
					if len(self.config.diff_engine_multi.strip()) > 0 or (len(paths) == 2 and len(self.config.diff_engine_3way.strip()) > 0):
						item1 = Nemo.MenuItem(
							name="NemoCompareExtension::MultiCompare",
							label=_('Compare to ') + self.for_later,
							tip=_("Compare selected files to the file remembered before")
						)
						# compare the one saved for later to the ones selected now
						new_paths.insert(0, self.for_later)

			# if multi compare enabled, we can compare any number
			# if there are two files selected we can always compare
			# if three files selected and 3-way compare is on, we can do it
			if len(self.config.diff_engine_multi.strip()) > 0 or len(paths) == 2 or (len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0):
				item2 = Nemo.MenuItem(
					name="NemoCompareExtension::CompareWithin",
					label=_('Compare'),
					tip=_("Compare selected files")
				)

		if item1: item1.connect('activate', self.menu_activate_cb, new_paths)
		if item2: item2.connect('activate', self.menu_activate_cb, paths)
		if item3: item3.connect('activate', self.menu_activate_cb, paths)

		items = [item1, item2, item3]

		while None in items:
			items.remove(None)

		return items

	def get_background_items(self, window, item):
		return []

et la version Nautilus:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#    nautilus-compare --- Context menu extension for Nautilus file manager
#    Copyright (C) 2011  Guido Tabbernuk <boamaod@gmail.com>
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

import sys
import os
import urllib
import gettext
import locale

from gi.repository import Nautilus, GObject, Gio

sys.path.append("/usr/share/nautilus-compare")

import utils

class NautilusCompareExtension(GObject.GObject, Nautilus.MenuProvider):
	'''Class for the extension itself'''

	# to hold an item for later comparison
	for_later = None

	def __init__(self):
		'''Load config'''

		self.config = utils.NautilusCompareConfig()
		self.config.load()

	def menu_activate_cb(self, menu, paths):
		'''Telling from amount of paths runs appropriate comparator engine'''
		if len(paths) == 1:
			self.for_later = paths[0]
			return

		args = ""
		for path in paths:
			args += "\"%s\" " % path

		cmd = None
		if len(paths) == 2:
			cmd = (self.config.diff_engine + " " + args + "&")
		elif len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0:
			cmd = (self.config.diff_engine_3way + " " + args + "&")
		elif len(self.config.diff_engine_multi.strip()) > 0:
			cmd = (self.config.diff_engine_multi + " " + args + "&")

		if cmd is not None:
			os.system(cmd)
		
	def valid_file(self, file):
		'''Tests if the file is valid comparable'''
		if file.get_uri_scheme() == 'file' and file.get_file_type() in (Gio.FileType.DIRECTORY, Gio.FileType.REGULAR, Gio.FileType.SYMBOLIC_LINK):
			return True
		else:
			return False

	def get_file_items(self, window, files):
		'''Main method to detect what choices should be offered in the context menu'''
		paths = []
		for file in files:
			if self.valid_file(file):
				path = urllib.unquote(file.get_uri()[7:])
				paths.append(path)

		# no files selected
		if len(paths) < 1:
			return

		# initialize i18n
		locale.setlocale(locale.LC_ALL, '')
		gettext.bindtextdomain(utils.APP)
		gettext.textdomain(utils.APP)
		_ = gettext.gettext

		item1 = None
		item2 = None
		item3 = None

		# for paths with remembered items
		new_paths = list(paths)

		# exactly one file selected
		if len(paths) == 1:

			# and one was already selected for later comparison
			if self.for_later is not None:

				# we don't want to compare file to itself
				if self.for_later not in paths:
					item1 = Nautilus.MenuItem(
						name="NautilusCompareExtension::CompareTo",
						label=_('Comparer à ') + self.for_later,
						tip=_("Comparer les fichiers sélectionnés aux fichiers mémorisés")
					)

					# compare the one saved for later to the one selected now
					new_paths.insert(0, self.for_later)

			# if only one file selected, we offer to remember it for later anyway
			item3 = Nautilus.MenuItem(
				name="NautilusCompareExtension::CompareLater",
				label=_('Comparer plus tard'),
				tip=_("Mémoriser pour comparer plus tard")
			)

		# can always compare, if more than one selected
		else:
			# if we have already remembered one file and add some more, we can do n-way compare
			if self.for_later is not None:
				if self.for_later not in paths:
					# if multi compare enabled and in case of 2 files selected 3way compare enabled
					if len(self.config.diff_engine_multi.strip()) > 0 or (len(paths) == 2 and len(self.config.diff_engine_3way.strip()) > 0):
						item1 = Nautilus.MenuItem(
							name="NautilusCompareExtension::MultiCompare",
							label=_('Comparer à ') + self.for_later,
							tip=_("Comparer les fichiers sélectionnés aux fichiers mémorisés")
						)
						# compare the one saved for later to the ones selected now
						new_paths.insert(0, self.for_later)

			# if multi compare enabled, we can compare any number
			# if there are two files selected we can always compare
			# if three files selected and 3-way compare is on, we can do it
			if len(self.config.diff_engine_multi.strip()) > 0 or len(paths) == 2 or (len(paths) == 3 and len(self.config.diff_engine_3way.strip()) > 0):
				item2 = Nautilus.MenuItem(
					name="NautilusCompareExtension::CompareWithin",
					label=_('Comparer les fichiers sélectionnés'),
					tip=_("Comparer les fichiers sélectionnés")
				)

		if item1: item1.connect('activate', self.menu_activate_cb, new_paths)
		if item2: item2.connect('activate', self.menu_activate_cb, paths)
		if item3: item3.connect('activate', self.menu_activate_cb, paths)

		items = [item1, item2, item3]

		while None in items:
			items.remove(None)

		return items

Y'a pas mal de ressemblances, et deux trois différences uniquement smile Avec un peu de chance, ça marche! Je fais des backs up et je teste smile

Dernière modification par xou816 (Le 31/10/2013, à 14:12)

Hors ligne

#3 Le 18/05/2014, à 11:26

fewad

Re : Nemo / utilisation des extensions nautilus

Ouais il me semble que ce ne sont pas les mêmes types d'extensions. Ceux que j'aimerai utiliser sont au format .so donc si mes souvenirs de cours d'informatique sont exacts, ce sont des fichiers compilés. Il faudrait donc que je puisse retrouver les sources, les modifier puis les recompiler mais je ne saurai pas faire

Hors ligne

#4 Le 18/09/2014, à 21:06

corneliux

Re : Nemo / utilisation des extensions nautilus

Bonjour,
Je cherche également un nemo-image-converter ou son petit frère. As-tu trouvé une solution ?

Hors ligne

#5 Le 15/10/2014, à 19:59

fewad

Re : Nemo / utilisation des extensions nautilus

Salut,

Pas plus tard qu'hier je suis tombé là dessus (voir en bas) par hasard.
Les dépots fonctionnent jusqu'à Saucy seulement

et si t'es sous Trusty
En allant à la pèche au fichier deb sur le dépôt c'est possible de l'installer sur Trusty // Par contre il y a quelques dépendances provenant des dépôts Cinnamon à respecter mais deux problèmes :
Je n'ai pas réussi à avoir le menu qui est censé apparaitre (sous gnome en tout cas)
si t'es sous unity ou gnome, l'installation du dépôt en question mettra à jour nemo avec la dernière version de Cinnamon et ne suivra plus les dépôts officiels donc met en place toutes les dépendances originales de nemo et les télécharge à la mise à jour (donc tu te retrouve avec un cinnamon complet d'installé). Autant dire que ça prend du temps à nettoyer (et je suis même pas sur d'avoir tout cleaner)

Bref quoi qu'il en soit, voilà le lien. Bonne chance !
http://www.webupd8.org/2013/12/manipula … -nemo.html
et le site officiel du monsieur (en espagnol) http://www.atareao.es/ubuntu/modificand … age-tools/

Hors ligne