Добавьте сценарии наутилуса к контекстному меню,/actions

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

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

Проблема возникает, что даже со сценарием в папках сценария наутилуса, работая она в действии наутилуса не заполняет избранные файлом переменные (NAUTILUS_SCRIPT_SELECTED_FILE_PATHS) то, что сценарий должен запустить мою программу. Однако выполнение их с помощью меню сценариев делает. Я хотел бы знать, возможно ли для этого работать?

Это появляется, когда никакие файлы не были выбраны, так как это запустит мою программу для получения файлов. Я должен добраться, это для сможения получает папку, по которой я щелкнул правой кнопкой в если возможный:

Receiving button, located on the right click menu

Это появляется, когда некоторые файлы выбраны, я должен смочь получить список, выбранных так, чтобы моя программа знала который файлы отправить:

Send button, located on the right click menu

Что я должен сделать, в настоящее время использование меню сценариев, Это - нежелательный, потому что меню сценариев только появляется, когда объект выбран:

What I have to do currently, use the scripts menu

То, что я хочу сделать возможный?

Дополнительная информация: программа к send/recieve их является сервером сокета, который я записал, я знаю, что мог, вероятно, сделать это намного легче с простым ударом FTP, но я не делаю мой профессор был бы впечатлен 4 решениями для строки на проекте термина.

Я пишу сценарии в ударе.

Вот пример кода удара:

#!/bin/bash

echo Hello World!
IP=$(zenity --entry --text "What is the IP you want?" --entry-text "")
PORT=$(zenity --entry --text "What is the PORT you want?" --entry-text "3000")
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
    do
                zenity --info --text $file
        /home/admin/fileSending/clientRecieve $IP $PORT "$file"
done

echo $IP
1
задан 27 March 2018 в 22:16

1 ответ

Я выяснил ответ, короче говоря, необходимо использовать параметры для предоставления переменных. Параметр %b руки в имени файла как параметр командной строки, к которому можно получить доступ через "$1" для первого аргумента. в случае %B это даст Вам все файлы как отдельные аргументы, таким образом, Вам будет нужно "$1" "$2" и т.д...

Можно также использовать $PWD получить текущий рабочий каталог. ОДНАКО существуют некоторые важные вещи отметить об этом, поскольку текущий рабочий каталог не всегда, что Вы могли бы думать, что это. Когда Вы выбрали файл в папке, говорят, /home/admin/myStuff/test.txt рабочий каталог сценария будет /home/admin/myStuff. Можно поэтому использовать "$PWD/$1" получить текущий рабочий каталог + / + выбранный файл. Код следующие

#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
#this is a script that runs the client that will send the file.
FILE="$PWD/$1"
IP=$(zenity --entry --text "What is the IP you want?" --entry-text "127.0.0.1")
PORT=$(zenity --entry --text "What is the IP you want?" --entry-text "3000")
/home/admin/fileSending/clientSend $IP $PORT $FILE
zenity --info --text "File sent"

Когда Вы не выбрали папку, рабочие изменения директора. Позволяет говорят, что Вы щелкаете правой кнопкой по вакууму внутри /home/admin/myStuff рабочий каталог будет /home/admin НЕТ /home/admin/myStuff

Для выбора рабочего каталога можно использовать %b получить, в каком каталоге Вы находитесь на самом деле. Код следующие:

#!/bin/bash
#Author: Thomas Migus, created on March 20th 2018
# This is a script which runs the server
OUTPUT="$PWD/$1/"
PORT=$(zenity --entry --text "What is the port number?" --entry-text "3000")
/home/admin/fileSending/serverRecieve $PORT $OUTPUT
zenity --info --text "File recieved"

можно протестировать его сами с этим маленьким сценарием

#!/bin/bash
zenity --info --text "$1"
zenity --info --text "$PWD"
1
ответ дан 7 December 2019 в 15:22

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

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