Email or username:

Password:

Forgot your password?
D:\side\

👨‍💻 Мне дико нравится UI-паттерн "палитра команд".

Вот есть где-то куча возможных действий и хочется сделать какое-то одно из них — нажимаем одно сочетание клавиш и попадаем в поисковик, в котором перечислено *всё*, и который по мере ввода слов из описания (хоть по частям, хоть пропуская буквы) показывает наиболее близкие варианты. Бонус: под каждым вариантом подписана ещё и горячая клавиша (если есть).

И есть #fzf, который такое меню с поиском реализует, но для чего угодно: github.com/junegunn/fzf

Так вот.
Берём:
1. Папку с исполняемыми скриптами, названными по тому, что они делают
2. Пишем точку входа — скриптик, который вызывает на этом списке скриптиков fzf, и привинчиваем в место, удобное для вызова

Например:
1. Каталог редко используемых команд (вроде github.com/knqyf263/pet, но проще)
2. Меню для termux-url-opener wiki.termux.com/wiki/Intents_a

…меня, правда, не покидает ощущение, что это велосипед. Но как его улучшить?

#cli #linux #shell #termux

5 comments
Dr. Quadragon ❌

@dside по сути, эта ваша поллитра команд - это консоль для нищих :)

iliazeus

@drq @dside скорее автодополнение команд на максималках :)

D:\side\

@drq кейс, который спровоцировал пост: осознание, что yt-dlp гораздо мощнее в задаче выкачивания с ютуба музыки и видео. NewPipe только выкачает исходник и всё, а yt-dlp может ещё и метаданных досыпать, и обложку встроить, и вроде как даже целые плейлисты выкачивать умеет (чему NewPipe до сих пор не научили).

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

И получился шикарный (и просто устроенный!) аппарат: нажать в NewPipe "поделиться", выбрать Termux, получить менюшку fzf, сделать двойной тап на "Download as music via yt-dlp" — и всё.
Хочется поменять настройки — открыть ридми и поправить скрипт. Хочется другой профиль настроек — скопировать, переименовать, поправить. Пушка.

Скачивание через сам NewPipe получается кнопочно не сложнее, а возможностей получается гораздо больше.

@drq кейс, который спровоцировал пост: осознание, что yt-dlp гораздо мощнее в задаче выкачивания с ютуба музыки и видео. NewPipe только выкачает исходник и всё, а yt-dlp может ещё и метаданных досыпать, и обложку встроить, и вроде как даже целые плейлисты выкачивать умеет (чему NewPipe до сих пор не научили).

[DATA EXPUNGED]
D:\side\

@lina ну, мне эти господа в Android не помогут 😁

Но у меня вышло очень похоже, да. Скрипт получает URL прямо от ОС (аргументом, т. к. цепляется за функцию "поделиться") и просто сразу идёт качать, без вопросов.

Ближайшим эквивалентом на десктопе, наверное, будет предварительно настроенный ярлык, на который перетаскивается ютубовская ссылка. Будет внутри GUI или скрипт — едва ли важно, если после запуска трогать не нужно. С GUI, наверное, проще договориться если что-то пойдёт не так, но пока не могу сказать наверняка, насколько это реально проблема.

Но на десктопе такой паттерн взаимодействия ("Поделиться") не особо прижился, по-моему. Больше через буфер обмена всё происходит. Что, к сожалению, требует, чтобы и отправитель и получатель были уже запущены — что немного неудобно.

@drq

@lina ну, мне эти господа в Android не помогут 😁

Но у меня вышло очень похоже, да. Скрипт получает URL прямо от ОС (аргументом, т. к. цепляется за функцию "поделиться") и просто сразу идёт качать, без вопросов.

Ближайшим эквивалентом на десктопе, наверное, будет предварительно настроенный ярлык, на который перетаскивается ютубовская ссылка. Будет внутри GUI или скрипт — едва ли важно, если после запуска трогать не нужно. С GUI, наверное, проще договориться если что-то пойдёт не так, но пока не могу...

iliazeus

@dside мне очень нравится, как этот паттерн работает в vscode.

И с точки зрения UI/UX — я теперь совсем не могу воспринимать программы с кучей тулбаров с кнопками, или меню-подподменю. Если я знаю, что мне нужно сделать, я не ищу, куда для этого нажать, а просто пишу в палитру.

И с точки зрения API для расширений — даже если автор очень хочет, чтобы действие выполнялсь по кнопке в UI или сочетанию клавиш, ему приходится сначала зарегать для этого команду в палитре. И по ним всем работает нечеткий поиск, и любую можно поставить на любые сочетания клавиш.

@dside мне очень нравится, как этот паттерн работает в vscode.

И с точки зрения UI/UX — я теперь совсем не могу воспринимать программы с кучей тулбаров с кнопками, или меню-подподменю. Если я знаю, что мне нужно сделать, я не ищу, куда для этого нажать, а просто пишу в палитру.

И с точки зрения API для расширений — даже если автор очень хочет, чтобы действие выполнялсь по кнопке в UI или сочетанию клавиш, ему приходится сначала зарегать для этого команду в палитре. И по ним всем работает нечеткий...

Go Up