Страница 1 из 2
Расширение автоподстановки bash
Добавлено: 15 май 2022, 04:27
Sova
Здравствуйте! У меня ноутбук с гибридной видеокартой (Intel + Nvidia), работа карты реализована через NVIDIA PRIME Render Offload. В этом случае, для запуска приложений на гибридной карте, нужно перед командой написать "__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia". Буков много, печатать долго и легко ошибиться. Поэтому я сделал в /usr/local/bin/ исполняемый файл prime-run, с содержимым __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia "$@" (после #!/bin/bash, разумеется). Теперь запуск приложения на дискретке прост: prime-run <программа>. (вообще, это решение подсмотрел в Генте)
Проблема в том, что после ввода prime-run не работает автоподстановка на Tab. Т.е. команду приложения нужно писать полностью вручную. Не сказать что это большая проблема, однако для запуска программ из Flatpak наличие автоподстановки было бы очень кстати.
Вопрос: Можно ли как-то расширить функционал bash-completion, чтобы он научился автоподстановке после "prime-run"?
Расширение автоподстановки bash
Добавлено: 15 май 2022, 05:22
vir0id
Bash-autosuggestion вместе с ohmybash или переходить на zsh с ohmyzsh и zsh-autosuggestion. Или смотреть как сделать алиасы
Расширение автоподстановки bash
Добавлено: 15 май 2022, 05:48
Sova
vir0id писал(а): ↑15 май 2022, 05:22
Bash-autosuggestion вместе с ohmybash или переходить на zsh с ohmyzsh и zsh-autosuggestion. Или смотреть как сделать алиасы
С алиасами не получилось. Я на пробу сделал alias prime-run_alias="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia", но автоподстановка не появилась после prime-run_alias.
ZSH офигительно удобен, но его настраивать под себя муторно и долго (много лет назад его пробовал), так что оставлю его на крайний случай.
Вообще, я думал есть решение вставить блок кода в какой-нибудь .bashrc, чтобы реализовать то, что я запрашивал.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 07:12
vir0id
Sova писал(а): ↑15 май 2022, 05:48
alias prime-run_alias="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME
Ну так сделай
Код: Выделить всё
alias prime-run_alias="prime-run __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia"
Расширение автоподстановки bash
Добавлено: 16 май 2022, 07:42
demonlibra
Активно пользуюсь расширением
HSTR.
Нажимаю CTRL+R, ввожу символы команды и получаю список совпадений.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 08:39
Sova
vir0id писал(а): ↑16 май 2022, 07:12
Ну так сделай
Сделал. Не помогло
Расширение автоподстановки bash
Добавлено: 16 май 2022, 08:42
Sova
demonlibra писал(а): ↑16 май 2022, 07:42
Активно пользуюсь расширением HSTR.
Так оно по истории шарит, как я понял? Если да, то не пойдёт.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 08:45
demonlibra
Да, по истории.
Пожалуйста ))
Расширение автоподстановки bash
Добавлено: 16 май 2022, 09:10
rogoznik
Sova, никакое расширение тебе не поможет. Т.к. никакое расширение не знает каким должен быть аргумент вызова твоего скрипта
Расширение автоподстановки bash
Добавлено: 16 май 2022, 10:04
vir0id
Sova писал(а): ↑16 май 2022, 08:39
Сделал. Не помогло
Как именно ты это сделал? Скрин покажи
rogoznik писал(а): ↑16 май 2022, 09:10
Sova, никакое расширение тебе не поможет. Т.к. никакое расширение не знает каким должен быть аргумент вызова твоего скрипта
Как я понял. Он это "расширение" хочет использовать не для вызова скрипта. А для быстрого набора команды с параметрами из истории. Он кинул свой "скрипт" в /usr/local/bin.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 11:05
Sova
vir0id писал(а): ↑16 май 2022, 10:04
Скрин покажи
Там ничего нового Вы не увидите. Временный альяс (в .bashrc записывать пока не стал за ненадобностью) prime-run_alias="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME" не дает автоподстановку на Tab.
vir0id писал(а): ↑16 май 2022, 10:22
А для быстрого набора команды с параметрами из истории
Мне не нужны команды из истории. Если я что-то запускаю с дискреткой на постоянной основе, то или записываю это в .desktop или делаю отдельный файл под это в /usr/local/bin . А автоподстановка мне, как раз нужна для запуска из консоли с целью диагностики и т.д. - т.е. в истории этого нет и делается не часто
Расширение автоподстановки bash
Добавлено: 16 май 2022, 11:28
vir0id
Ну в таком случае делай правильный скрипт
Расширение автоподстановки bash
Добавлено: 16 май 2022, 12:01
Sova
vir0id писал(а): ↑16 май 2022, 11:28
Ну в таком случае делай правильный скрипт
Дык, за тем и обратился...
Расширение автоподстановки bash
Добавлено: 16 май 2022, 12:44
rogoznik
Да хоть как вы скрипт пишите. Хоть стоя на голове и ушами код набирайте - не поможет
Расширение автоподстановки bash
Добавлено: 16 май 2022, 13:44
slant
Лайвхак для подобного случая - сначала просто набираем команду (с табами где надо), потом жмем Home и в начало строчки добавляем алиас/скрипт для запуска через прайм и пробел.

Где будет находится курсор при нажатии Enter - не принципиально.

Расширение автоподстановки bash
Добавлено: 16 май 2022, 15:40
demonlibra
Можно сделать запуск приложений через вызов контекстного меню в Nemo (action).
Т.е. нажимаете ПКМ на исполняемом файле, выбираете "Запустить так-то ..."
К этой операции привязать сценарий, который подставит всё, что нужно.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 16:10
Sova
slant писал(а): ↑16 май 2022, 13:44
Лайвхак для подобного случая
- пожалуй единственный рабочий вариант из простейших
demonlibra писал(а): ↑16 май 2022, 15:40
Можно сделать запуск приложений через вызов контекстного меню в Nemo
- надо в терминале (для диагностики). Без терминала я уже сделал.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 16:18
WWolf
Sova, ну напиши свою программку или скрипт в бинарник найди...
Расширение автоподстановки bash
Добавлено: 16 май 2022, 16:26
Sova
WWolf писал(а): ↑16 май 2022, 16:18
Sova, ну напиши свою программку или скрипт в бинарник найди...
Нету такого в репах. В Генте (и, вроде, в Арче ещё) есть, но там тоже без автоподстановки работает. Собственно, я свой этот скрипт сделал найдя исходный код гентушного пакета. А самому писать - я только один ЯП знаю (Gdscript) и он здесь не проканает.
Расширение автоподстановки bash
Добавлено: 16 май 2022, 16:58
vir0id
Sova писал(а): ↑16 май 2022, 12:01
Дык, за тем и обратился...
Ну тогда попробуй сделать такой скрипт
prime-run
Код: Выделить всё
#!/bin/bash
__NV_PRIME_RENDER_OFFLOAD=1 __VK_LAYER_NV_optimus=NVIDIA_only __GLX_VENDOR_LIBRARY_NAME=nvidia "$@"
и закинь его в
/usr/bin/
Тот что у тебя в
local/bin
убери