Я хочу сделать Средство запуска Пользовательского приложения и затем добавить его к моей Панели так, чтобы каждый раз я нажал на него, он копия предварительно загруженная строка текста, но я не знаю, как записать команды для него.
Например, если предварительно загруженная строка текста "Привет". Я хотел бы, чтобы это было так, чтобы каждый раз я нажал на него, это копирует слово "Hello" в мой буфер обмена, таким образом, я могу вставить его везде, где.
Ниже примера легко настраиваемой установки. Это существует сценария и a .desktop
файл (средство запуска) для запущения скрипта с двумя опциями. Вы можете:
щелкните правой кнопкой по нему для установки новой строки:
Чтобы смочь скопировать текст в буфер обмена, мы должны установить xclip
:
sudo apt-get install xclip
Затем нам нужны две вещи:
Сценарий:
#!/usr/bin/env python3
import subprocess
import os
import sys
wordfile = os.environ["HOME"]+"/.word_file"
def get_word():
try:
copy = "xclip -in -selection c "+"'"+wordfile+"'"
subprocess.Popen(["/bin/bash", "-c", copy])
except FileNotFoundError:
pass
def set_word():
try:
word = "zenity --entry --title='Change the word' --text='Set a new string or line'"
new_word = subprocess.check_output(["/bin/bash", "-c", word]).decode("utf-8").strip()
open(wordfile, "wt").write(new_word)
except subprocess.CalledProcessError:
pass
arg = sys.argv[1]
if arg == "-set":
set_word()
elif arg == "-get":
get_word()
Скопируйте его в пустой файл, сохраните его как copy_text.py
и сделайте это исполняемым файлом (!!)
A .desktop file
, запускать скрипт с двумя опциями
[Desktop Entry]
Name=Paste a string
Exec=/path/to/copy_text.py -get
Type=Application
Icon=/path/to/your/icon.png
Actions=Set a new string;
[Desktop Action Set a new string]
Name=Set a new string
Exec=/path/to/copy_text.py -set
OnlyShowIn=Unity;
Скопируйте его в пустой файл, сохраните его как paste_text.desktop
в ~/.local/share/applications
, замена в обоих строки, начиная с Exec=
:
/path/to/copy_text.py
фактическим путем к сценарию и заменой в строке, начиная с Icon=
/path/to/your/icon.png
фактическим путем к допустимому значку (например, a .png
значок 64x64 пкс)
Теперь перетащите .desktop
файл к Unity
у средства запуска и Вас будет Ваша легко настраиваемая установка.
Используя xclip в .desktop файле
xclip
утилита, которая может использоваться для управления буфером обмена из командной строки.
Для копирования строки в буфер обмена можно использовать команду:
echo <string> | xclip -sel clip
Скопировать содержание файла к буферу обмена:
xclip -in -selection c <file>
Если это была бы фиксированная строка, в которой Вы нуждаетесь, Вы могли действительно, как упомянуто Serg, делать с a .desktop
файл с одним - лайнер:
[Desktop Entry]
Name=Paste a string
Exec=/bin/bash -c "echo Hello World | xclip -sel clip"
Type=Application
Icon=/path/to/icon.png
или, если у Вас только было бы ограниченное количество (фиксированных) строк для использования:
[Desktop Entry]
Name=Paste a string
Exec=/bin/bash -c "echo Monkey | xclip -sel clip"
Type=Application
Icon=/opt/lswitcher/icon/lsw_64.png
Actions=Monkey;eats;banana;
[Desktop Action Monkey]
Name=Copy Monkey
Exec=/bin/bash -c "echo Monkey | xclip -sel clip"
OnlyShowIn=Unity;
[Desktop Action eats]
Name=Copy eats
Exec=/bin/bash -c "echo eats | xclip -sel clip"
OnlyShowIn=Unity;
[Desktop Action banana]
Name=Copy banana
Exec=/bin/bash -c "echo banana | xclip -sel clip"
OnlyShowIn=Unity;
затем создайте файл, как объяснено в ответе, и перетащите его по Unity
средство запуска:
Если бы строка для копирования была бы непредсказуемой, это однако означало бы, что необходимо было бы отредактировать .desktop
зарегистрируйте вручную каждый раз, когда Вы хотите поменять струну, которая не очень удобна для пользователя.
Для чего сценарий
Therfore, сценарий создает внешний файл, ~/.word_file
, с содержанием строки требуется быть скопированными в буфер обмена. Сценарий имеет две функции:
def get_word():
try:
copy = "xclip -in -selection c "+"'"+wordfile+"'"
subprocess.Popen(["/bin/bash", "-c", copy])
except FileNotFoundError:
pass
к (пробуют к) читает текст, который будет скопирован в буфер обмена из файла, pass
если файл не существует.
и:
def set_word():
try:
word = "zenity --entry --title='Change the word' --text='Set a new string or line'"
new_word = subprocess.check_output(["/bin/bash", "-c", word]).decode("utf-8").strip()
open(wordfile, "wt").write(new_word)
except subprocess.CalledProcessError:
pass
открыть a zenity
окно, в котором можно ввести новую строку или строку для записи в файл:
.desktop
файл
наконец, вызывает две функции сценария с двумя командами:
Exec=/path/to/copy_text.py -get
назвать сценарий с опцией -get
, как "основная" команда в .desktop
файл, чтобы быть выполненным простым щелчком по Unity
значок средства запуска, и:
Exec=/path/to/copy_text.py -set
назвать сценарий с опцией -set
, как щелчок правой кнопкой (quicklist) опция.