Как получить доступ к общим ресурсам с Android-устройства с помощью KDEConnect с помощью командной строки

К сожалению, нет никакого способа вызвать вызов приложения в командной строке по его имени. Предоставление этой функции будет означать ненадежный дополнительный синтаксический анализ для установленных приложений, а некоторые считают это недостатком безопасности. Однако вы можете выполнить синтаксический разбор сценария, который выполняет поиск и извлечение имени каждого расширения / приложения до тех пор, пока не найдет имя, которое вы ищете:

/usr/local/bin/chrome-app-by-name:

#!/bin/zsh
emulate -R zsh -o extendedglob -o nullglob
setopt rematchpcre ;# recommended, I'm so used to PCRE, I sometimes forget what doesn't work in Regex
Chrome_Profile=Default  ;# or "Profile 1" ...
cd ${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/${Chrome_Profile}/Extensions
foreach app in */*
   # We have just called the path to each version of each extension/app.
   # Next we enclose in braces - slightly unnecessary - to ensure that
   #  whatever version of Zsh, "manifest.json" is completely read and 
   #  closed before we use the variable.
   {
      App_Manifest="$(cat <$app/manifest.json)"
   }
   if [[ $App_Manifest =~ '^\s*"name"\s*:\s*"([a-zA-Z 0-9_.-]+)"' ]]
   then
      app_name="$match[1]" ;# capture the sub-expression match for "name"
      if [[ $app_name == $1 ]]
      then
         # For my system this is actually exec google-chrome-stable ...
         exec google-chrome --app-id="${app%%/*}" $argv[2,-1]
      fi
   fi
end
echo "App name not found.  Please use Exact, case-sensitive spelling."

Некоторые приложения задали свои имена глубже в скрипты - я не знаю почему! Возможно, вам придется переписать или добавить к скрипту, подобному этому, для поиска файлов «.desktop» в ~/.local/share/applications для их «^ NAME = ...», эквивалентных приведенному выше, а затем получить там исполняемую команду. [ ! d1]

Я не тестировал этот скрипт - я просто написал его на лету, чтобы ответить на ваш вопрос. Надеюсь, что в качестве примера он работает для вас, но если идея не совсем правильная, мы можем немного ее подстроить. Zsh - простой, прорывный синтаксис по сравнению с некоторыми другими SH-совместимыми оболочками. Я попытался исключить любые функции, требующие новых версий или модулей, кроме PCRE. PCRE гораздо проще в использовании для точного соответствия шаблону, который мне часто необходим, что я часто пренебрегаю регулярным Regex. Более длительный скрипт Perl мог бы работать, также большая часть этого синтаксиса будет работать без изменений в /bin/bash. foreach ... end, $match[1], setopt rematchpcre, точные синтаксисы Bash Regex и emulate являются основными исключениями.

1
задан 17 November 2017 в 20:11

2 ответа

Mconnect - это реализация протокола KDE Connect в Vala / C, доступная через github.com. Он не нуждается в библиотеках KDE и поставляется с клиентом, который позволяет вам легко обмениваться файлами из командной строки, например:

mconnectctl share-file /org/mconnect/device/0 /path/to/file

Подробнее см. На странице связанного github.

Вы должен иметь возможность использовать mconnectctl для проверки того, сопряжено ли определенное устройство, например для телефона под названием Motorola Moto G Maciek, подключенного к /org/mconnect/device/0:

mconnectctl show-device /org/mconnect/device/0 | awk '/Motorola Moto G Maciek/{f=1}/Paired/{{if(f){g=1}}}f&&g{print $2;exit}'

Это приведет к возврату true в случае спаривания и может использоваться в скрипте.

1
ответ дан 18 July 2018 в 03:08

Mconnect - это реализация протокола KDE Connect в Vala / C, доступная через github.com. Он не нуждается в библиотеках KDE и поставляется с клиентом, который позволяет вам легко обмениваться файлами из командной строки, например:

mconnectctl share-file /org/mconnect/device/0 /path/to/file

Подробнее см. На странице связанного github.

Вы должен иметь возможность использовать mconnectctl для проверки того, сопряжено ли определенное устройство, например для телефона под названием Motorola Moto G Maciek, подключенного к /org/mconnect/device/0:

mconnectctl show-device /org/mconnect/device/0 | awk '/Motorola Moto G Maciek/{f=1}/Paired/{{if(f){g=1}}}f&&g{print $2;exit}'

Это приведет к возврату true в случае спаривания и может использоваться в скрипте.

1
ответ дан 24 July 2018 в 17:45
  • 1
    manpages.org/kdeconnect-cli также может использоваться для показа устройств, но реальный вопрос о том, как найти патч для папок на SD-картах на этих устройствах, чтобы позже скопировать файлы с него – photorar 17 November 2017 в 14:33

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

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