Я пытаюсь записать пользовательскую команду в Gedit, который копирует путь в настоящее время открытого и активного документа (оба до родительского dir и до файла) к буферу обмена, поскольку я не мог найти gedit-плагины или инструменты, которые могут сделать это.
У меня нет подсказки еще как, туда, где запустить с, ни иметь любые хорошие ссылки, но я знаю, что должен сделать сценарии в сценарии удара.
Я искал внешнюю команду для копирования любой строки в буфер обмена от терминала (поскольку это также запускает скрипт удара), но ответы предлагают использование "xclip" инструмента, который я попробовал, и разочарован как любая строка при копировании с xclip может только быть вставлен с "xclip-o" команда. Мне нужна скопированная строка для вставки с Ctrl-V, таким образом, я могу открыть путь в файловом менеджере (наутилус).
Любая справка/предложение ценится.
gedit
С gedit окном впереди, маленький сценарий ниже получает путь из (gedit
) имя окна и копии это к буферу обмена.
Сценарий имеет две опции:
Только скопируйте путь к каталогу файла, запустив скрипт с опцией
-path
или
Скопируйте путь включая имя файла, запустив скрипт с опцией
-file
#!/usr/bin/env python3
import subprocess
import sys
name = subprocess.check_output(["xdotool", "getactivewindow", "getwindowname"]).decode("utf-8").strip()
if all(["(" in name, ")" in name]):
path = name[name.find("(")+1:name.find(")")]
if sys.argv[1] == "-file":
fname = name[:name.find("(")]
elif sys.argv[1] == "-path":
fname = ""
command = "echo "+'"'+path+"/"+fname+'"'+" | xclip -selection clipboard"
subprocess.Popen(["/bin/bash", "-c", command])
Установите обоих xdotool
и xclip
:
sudo apt-get install xdotool xclip
Скопируйте сценарий в пустой файл, сохраните его как get_path.py
Тестовый прогон сценарий:
gedit
файлоткройте окно терминала, выполните команду:
sleep 5 && python3 /path/to/get_path.py -file
сразу переключитесь на gedit
окно, для создания последней части команды tyhe выполненной с gedit
окно впереди.
Если все хорошо работает, можно сделать опции доступными двумя способами:
Сделайте обе опции доступными в gedit
средство запуска:
Скопируйте содержание ниже в пустой файл, сохраните его как gedit.desktop
в ~/.local/share/applications
[Desktop Entry]
Name=gedit
GenericName=Text Editor
Comment=Edit text files
Exec=gedit %U
Terminal=false
Type=Application
StartupNotify=true
MimeType=text/plain;
Icon=accessories-text-editor
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.10.4
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport
Actions=Window;Document;divider1;Copy current file's directory;Copy path+file name;
Keywords=Text;Editor;Plaintext;Write;
X-Ubuntu-Gettext-Domain=gedit
[Desktop Action Window]
Name=Open a New Window
Exec=gedit --new-window
OnlyShowIn=Unity;
[Desktop Action Document]
Name=Open a New Document
Exec=gedit --new-document
OnlyShowIn=Unity;
[Desktop Action Copy current file's directory]
Name=Copy current directory
Exec=python3 /path/to/get_path.py -path
OnlyShowIn=Unity;
[Desktop Action divider1]
Name=.....................................
OnlyShowIn=Unity;
[Desktop Action Copy path+file name]
Name=Copy current directory, include file name
Exec=python3 /path/to/get_path.py -file
OnlyShowIn=Unity;
В обеих строках:
Exec=python3 /path/to/get_path.py -path
и
Exec=python3 /path/to/get_path.py -file
замена /path/to/get_path.py
реальным путем к сценарию.
Выйдите из системы и въезжайте задним ходом, чтобы заставить Единицу "переключиться" на новое, локальное .desktop
файл.
На gedit имя окна путь отображен между (
и )
. Сценарий просто видит frontmost окно с помощью xdotool
, затем читает путь между теми двумя символами.
Так как путь читается текстовым способом, сценарий перестанет работать, если имя файла будет включать другой ()
персонажи.
Со следующим окном впереди:
первая опция скопирует в буфер обмена путь к файлу:
~/Bureaublad
в то время как вторая опция включает сам файл:
~/Bureaublad/some test file.txt
Как Вы видите, пробелы заботятся о :).
После того, как некоторый поиск документации, я смог, находит решение, таким образом, я собираюсь отвечать на свой вопрос здесь.
Открывают Gedit и переходят к "Инструментам">>, "Управляют Внешними Инструментами" и создают новый инструмент.
Добавляют следующую команду точно так же, как ниже:
echo -n $GEDIT_CURRENT_DOCUMENT_URI | xclip -sel clip;exit;
Близкий это и затем перезапускают Gedit (только для подтверждения).
Открытый любой документ и затем переходит к Инструментам>> Внешние Инструменты и затем нажимает на маркировку команды, просто созданную. Путь будет в Вашем буфере обмена.
сравните $GEDIT_CURRENT_DOCUMENT_URI
, переменная $GEDIT_CURRENT_DOCUMENT_PATH
кажется лучше для меня:
file://
префикс касательно:
https://wiki.gnome.org/Apps/Gedit/Plugins/ExternalTools#Available_Environment_Variables https://wiki.gnome.org/Apps/Gedit/ExternalToolsPluginCommands