Как я могу скопировать путь к в настоящее время открываемому файлу в gedit к буферу обмена?

Я пытаюсь записать пользовательскую команду в Gedit, который копирует путь в настоящее время открытого и активного документа (оба до родительского dir и до файла) к буферу обмена, поскольку я не мог найти gedit-плагины или инструменты, которые могут сделать это.

У меня нет подсказки еще как, туда, где запустить с, ни иметь любые хорошие ссылки, но я знаю, что должен сделать сценарии в сценарии удара.

Я искал внешнюю команду для копирования любой строки в буфер обмена от терминала (поскольку это также запускает скрипт удара), но ответы предлагают использование "xclip" инструмента, который я попробовал, и разочарован как любая строка при копировании с xclip может только быть вставлен с "xclip-o" команда. Мне нужна скопированная строка для вставки с Ctrl-V, таким образом, я могу открыть путь в файловом менеджере (наутилус).

Любая справка/предложение ценится.

3
задан 14 August 2015 в 21:40

4 ответа

Сценарий для копирования пути файла, открытого в gedit

С gedit окном впереди, маленький сценарий ниже получает путь из (gedit) имя окна и копии это к буферу обмена.

Сценарий имеет две опции:

  1. Только скопируйте путь к каталогу файла, запустив скрипт с опцией

    -path
    

    или

  2. Скопируйте путь включая имя файла, запустив скрипт с опцией

    -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])

Как использовать

  1. Установите обоих xdotool и xclip:

    sudo apt-get install xdotool xclip
    
  2. Скопируйте сценарий в пустой файл, сохраните его как get_path.py

  3. Тестовый прогон сценарий:

    • откройте существующее gedit файл
    • откройте окно терминала, выполните команду:

      sleep 5 && python3 /path/to/get_path.py -file
      

      сразу переключитесь на gedit окно, для создания последней части команды tyhe выполненной с gedit окно впереди.

    • Нажмите Ctrl+V где-нибудь для вставки справедливого скопированного пути.
  4. Если все хорошо работает, можно сделать опции доступными двумя способами:

    1. Создайте два сочетания клавиш для обеих опций: выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте обе команды к двум различным ярлыкам.
    2. Сделайте обе опции доступными в gedit средство запуска:

      enter image description here

      Скопируйте содержание ниже в пустой файл, сохраните его как 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, затем читает путь между теми двумя символами.

Примечания

Так как путь читается текстовым способом, сценарий перестанет работать, если имя файла будет включать другой () персонажи.

Примеры

Со следующим окном впереди:

enter image description here

первая опция скопирует в буфер обмена путь к файлу:

~/Bureaublad

в то время как вторая опция включает сам файл:

~/Bureaublad/some test file.txt

Как Вы видите, пробелы заботятся о :).

5
ответ дан 1 December 2019 в 13:16

После того, как некоторый поиск документации, я смог, находит решение, таким образом, я собираюсь отвечать на свой вопрос здесь.

Открывают Gedit и переходят к "Инструментам">>, "Управляют Внешними Инструментами" и создают новый инструмент.

Добавляют следующую команду точно так же, как ниже:

echo -n $GEDIT_CURRENT_DOCUMENT_URI | xclip -sel clip;exit;

Близкий это и затем перезапускают Gedit (только для подтверждения).

Открытый любой документ и затем переходит к Инструментам>> Внешние Инструменты и затем нажимает на маркировку команды, просто созданную. Путь будет в Вашем буфере обмена.

3
ответ дан 1 December 2019 в 13:16

сравните $GEDIT_CURRENT_DOCUMENT_URI
, переменная $GEDIT_CURRENT_DOCUMENT_PATH кажется лучше для меня:

  • без file:// префикс
  • многобайтовые символы дисплея (не urlencode)

касательно:
https://wiki.gnome.org/Apps/Gedit/Plugins/ExternalTools#Available_Environment_Variables https://wiki.gnome.org/Apps/Gedit/ExternalToolsPluginCommands

0
ответ дан 1 December 2019 в 13:16

Вы попробовали плагин Пути к файлу Копии?

0
ответ дан 1 December 2019 в 13:16

Другие вопросы по тегам:

Похожие вопросы: