Почему нет дистрибутива Linux, который использует ключ super для глобальных ярлыков, как на Mac?

Вместо того, чтобы составлять список имен файлов и шаблонов в виде одной строки, вы можете сделать его массивом, начинающимся с:

list=(file1 dir1 "**.data" "**.source")

, а затем цикл по элементам:

args=()
for item in "${list[@]}" ; do
    args+=(--filter="+ $item")
done

Это создаст аргументы, подобные --filter=+ file1, без каких-либо кавычек внутри строки аргумента. (Вы не хотите, чтобы кавычки шли к rsync. Он будет жаловаться на правило фильтрации, в котором они есть, например.rsync "--filter='+ foo'"...)

И когда вы передаете массив команде, обязательно используйте "${args[@]}"для передачи элементов массива в виде отдельных строк:

rsync "${args[@]}" "$srcdir" "$destdir"

Вместо "--filter=+ foo", я думаю, вы могли бы просто использовать --include=foo. Это убрало бы один проблемный пробел из аргументов (, но ничего не сказало бы о пробелах или подстановках в шаблонах имен файлов ).


В вашем случае вы использовали set -fдля отключения подстановки, for i in $listдолжно работать, но, поскольку вам нужен массив, вы можете использовать его для начала.

Что еще более важно, присваивание args=${arr[*]}выравнивает массив до одной строки. Теперь пробелы внутри аргументов и пробелы между аргументами равны, есть только --filter=+ file1 --filter=+ dir1..., и оболочка не может различать разные виды пробелов. Расширение без кавычек $argsбудет разбито на все без исключения пробелы (, которые показывает вывод set -x, если вы хотите проанализировать беспорядок кавычек.)

По сути, все выгоды от использования массива были поставлены под сомнение при выполнении этого задания.

2
14.02.2020, 10:10
2 ответа

Из коробки многие *nix-терминалы позволяют копировать и вставлять текст, просто выделяя текст, который вы хотите скопировать, и вставляя его, нажимая среднюю кнопку мыши. Никаких дополнительных нажатий кнопок не требуется! Если это не улучшение UX, то я не знаю, что это такое.

Вообще говоря, вы можете самостоятельно поменять местами кнопки Control и Command с помощью встроенных -инструментов, таких как xmodmap. Это приведет к тому, что большинство ярлыков в стиле Apple -будут работать так же, как и на Mac.

Тем не менее, исходя из моего опыта использования клавиатуры Apple, я счел более удобным сделать клавишу Command функциональной как Alt , а Caps Lock и Клавиши возврата действуют как Ctrl , если их удерживать. Этого можно добиться, изменив настройки по умолчанию в драйвере клавиатуры Apple hid-appleв сочетании с утилитами xmodmapи xcape.

3
28.04.2021, 23:23

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

Конечно, есть autokey, xmodmap, xkbcomp, xbindkeys и другие, которые могут помочь, но я не нашел ни одного из них, с которым было бы так же легко работать, если вы хотите разрешить потенциальные конфликты с относительной легкостью.

Я являюсь автором Kinto, и мне кажется, что я решил самые сложные проблемы, связанные с тем, чтобы заставить mac как привязки клавиш работать под Linux или Windows.

Если после установки вам нужно изменить файл конфигурации для Kinto, посмотрите это место.

vi ~/.config/kinto/kinto.py
sudo systemctl restart xkeysnail
# typically xkeysnail does not install as a service - specific to Kinto only

Окна

~\.kinto\kinto.ahk
# Right click the tray icon and re-apply your keyboard type for changes to take affect

https://github.com/rbreaves/kinto

https://github.com/mooz/xkeysnail

Кроме того, если ваша цель — работать с Linux так же, как с Mac, я бы рекомендовал использовать Ubuntu Budgie и включить встроенное расширение Global App Menu. Я протестировал этот дистрибутив, в том числе с Kinto, чтобы убедиться, что он работает должным образом.Сопровождающие Solus Budgie также недавно приняли патч вышестоящего уровня, так что Kinto больше не нужно будет исправлять DE для правильной поддержки переключения окна Cmd -Tab / приложения.

0
28.04.2021, 23:23

Теги

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