En allemand, vous commencez des courriers et des lettres avec "Sehr geehrter Herr ....".
J'en ai assez de taper ceci encore et encore. Et j'en ai assez de configurer des applications pour me donner des raccourcis pour insérer des blocs de texte comme celui-ci.
Est-il possible d'insérer des blocs de commentaire avec l'environnement de bureau?
De cette façon, je pourrais insérer des blocs de texte dans vi, Thunderbird, firefox, libreoffice ...
Autre exemple: je dois souvent insérer ma clé ssh-pub quelque part. Je sais comment utiliser ssh-copy-id, mais là encore, une solution de bureau pour me donner accès à une liste configurable de blocs de texte serait géniale.
En supposant que vous utilisez 14.04 (python3, nautilus), le script ci-dessous effectue le travail avec les applications qui utilisent Ctrl+V pour coller du texte . Il est important de savoir que cela ne fonctionnera pas dans le gnome-terminal
par exemple.
Je l’ai testé sur a.o. Firefox, Thunderbird, Libreoffice, Sublime Text et Gedit sans aucun problème.
Lorsque le script est appelé, une fenêtre apparaît, répertoriant les extraits que vous avez définis. Choisissez un élément (ou tapez son numéro) et le fragment de texte sera collé dans la fenêtre avant de toute application qui est Ctrl+V "-compatible":
Lorsque vous choisissez manage snippets
, le dossier du script dans ~/.config/snippet_paste
s'ouvre dans Nautilus. Pour créer un nouvel extrait, créez simplement un fichier texte avec le texte de votre extrait. Ne faites pas attention au nom que vous donnez au fichier. tant que c'est du texte brut, c'est ok. Le script utilise uniquement le contenu du fichier et crée une liste numérotée de tous les fichiers ('contenu) qu'il trouve.
Si le répertoire d'extraits (~/.config/snippet_paste
] n'existe pas, le script le crée pour vous.
installez d'abord xdotool
et xclip
, s'il n'est pas installé sur votre système:
Sudo apt-get install xdotool
et
Sudo apt-get install xclip
Copiez le script ci-dessous, enregistrez-le sous le nom paste_snippets.py
, exécutez-le à l'aide de la commande suivante:
python3 /path/to/paste_snippets.py
#!/usr/bin/env python3
import os
import subprocess
home = os.environ["HOME"]
directory = home+"/.config/snippet_paste"
if not os.path.exists(directory):
os.mkdir(directory)
# create file list with snippets
files = [
directory+"/"+item for item in os.listdir(directory) \
if not item.endswith("~") and not item.startswith(".")
]
# create string list
strings = []
for file in files:
with open(file) as src:
strings.append(src.read())
# create list to display in option menu
list_items = ["manage snippets"]+[
(str(i+1)+". "+strings[i].replace("\n", " ").replace\
('"', "'")[:20]+"..") for i in range(len(strings))
]
# define (zenity) option menu
test= 'zenity --list '+'"'+('" "')\
.join(list_items)+'"'\
+' --column="text fragments" --title="Paste snippets"'
# process user input
try:
choice = subprocess.check_output(["/bin/bash", "-c", test]).decode("utf-8")
if "manage snippets" in choice:
subprocess.call(["nautilus", directory])
else:
i = int(choice[:choice.find(".")])
# copy the content of corresponding snippet
copy = "xclip -in -selection c "+"'"+files[i-1]+"'"
subprocess.call(["/bin/bash", "-c", copy])
# paste into open frontmost file
paste = "xdotool key Control_L+v"
subprocess.Popen(["/bin/bash", "-c", paste])
except Exception:
pass
Si vous utilisez un autre navigateur de fichiers, remplacez la ligne (29):
subprocess.Popen(["nautilus", directory])
par:
subprocess.Popen(["<your_filebrowser>", directory])
Pour une utilisation plus pratique, vous pouvez créer un raccourci pour appeler le script:
"Paramètres système"> "Clavier"> "Raccourcis"> "Raccourcis personnalisés"
Cliquez sur "+" pour ajouter votre commande: python3 /path/to/paste_snippets.py
Le script est également publié sur Gist.gisthub
La version ci-dessous vérifie automatiquement si le terminal (gnome-
) est l’application la plus avancée et modifie automatiquement la commande coller en Ctrl+Shift+V au lieu de Ctrl+V
L'utilisation et la configuration sont à peu près les mêmes.
#!/usr/bin/env python3
import os
import subprocess
home = os.environ["HOME"]
directory = home+"/.config/snippet_paste"
if not os.path.exists(directory):
os.mkdir(directory)
# create file list with snippets
files = [
directory+"/"+item for item in os.listdir(directory) \
if not item.endswith("~") and not item.startswith(".")
]
# create string list
strings = []
for file in files:
with open(file) as src:
strings.append(src.read())
# create list to display in option menu
list_items = ["manage snippets"]+[
(str(i+1)+". "+strings[i].replace("\n", " ").replace\
('"', "'")[:20]+"..") for i in range(len(strings))
]
# define (zenity) option menu
test= 'zenity --list '+'"'+('" "')\
.join(list_items)+'"'\
+' --column="text fragments" --title="Paste snippets" --height 450 --width 150'
def check_terminal():
# function to check if terminal is frontmost
try:
get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
get_terms = get(["xdotool", "search", "--class", "gnome-terminal"])
term = [p for p in get(["xdotool", "search", "--class", "terminal"]).splitlines()]
front = get(["xdotool", "getwindowfocus"])
return True if front in term else False
except:
return False
# process user input
try:
choice = subprocess.check_output(["/bin/bash", "-c", test]).decode("utf-8")
if "manage snippets" in choice:
subprocess.call(["nautilus", directory])
else:
i = int(choice[:choice.find(".")])
# copy the content of corresponding snippet
copy = "xclip -in -selection c "+"'"+files[i-1]+"'"
subprocess.call(["/bin/bash", "-c", copy])
# paste into open frontmost file
paste = "xdotool key Control_L+v" if check_terminal() == False else "xdotool key Control_L+Shift_L+v"
subprocess.Popen(["/bin/bash", "-c", paste])
except Exception:
pass
J'utilise AutoKey il s'installe à partir du Centre de logiciel Ubuntu
vraiment facile à utiliser
J'ai ajouté "phrase" comme mon adresse e-mail [email protected]
en tapant gm
plus en appuyant sur l'onglet <tab>