Грузить не буду, всё по делу и быстренько, приключений на 5 минут. Иначе никак.
Решил я упороться и упоролся. Захотелось мне короче прям из консоли вызывать всплывающую подсказку по хоткею. Нажал хоткей появилась справка-шпаргалка, отпустил и она закрылась.
ДА! Прям из консоли! Так как иксов на серверах нет, нужно было идти другим путем, а путь оказался ну совсем неочевидный. Я до сих пор не понимаю, почему такая больная мысль меня посетила, видимо задачи в бэклоге закончились и стало скучно.
Проштудировав документацию по readline, я ничего не нашел, видимо там нет нужных механизмов позволяющих определять нажата ли клавиша или отпущена.
Readline — библиотека GNU Project, которую Bash и другие программы с CLI-интерфейсом используют для взаимодействия с командной строкой.
Но нет ничего невозможного, раз readline шлет меня, повесим read на стандартный ввод. Когда клавиша будет отпущена, read вернет ошибку и выполнение скрипта перейдет к следующей инструкции, ну и по итогу скрипт завершится.
Если кто-то тебе говорит — это сделать невозможно! Он либо пиздит врет либо просто не хочет этим заниматься. Всё можно сделать, было бы желание!
Ничего не понял? Забей, это мысли в слух, главное реализация, а не скучная теория. В общем пишем скрипт и кидаем его в /usr/local/sbin/cheat_shit.sh чмодим chmod +x cheat_shit.sh чтобы он в экзешник превратился.
#!/bin/bash
tput civis
tput smcup
tput cup 0 0
trap 'tput rmcup;tput cvvis' EXIT
echo 'Hello,this is Cheat-Shit'
echo '------------------------'
echo 'а тут можешь написать всё, что захочешь'
echo '------------------------'
echo 'source: @bashdays'
read -srn1 -t 0.7
while read -srn1 -t 0.1
do
:
done
exit
ОЧЕНЬ СТРАШНО! Держу пари мало кто про такое вообще слышал и тем более видел. Но такое в bash вполне реализуемо и в школе такому не научат.
Кратенько:
tput civis = скрываем курсор
tput smcup = переходим на альтернативный экран
tput cup 0 0 = переводим курсор в начало строки
trap 'tput…' = после выхода зачищаем весь мусор
Далее прописываем бинд в ~/.bashrc и вешаем вызов скрипта на CTRL+h
bind -x '"\C-h":"/usr/local/sbin/cheat_shit.sh"'
Перезапускаем сессию. Теперь при нажатии CTRL+h у меня поверх рабочей консоли открывается попап с нужным мне текстом. В тексте может быть шпаргалка либо котик, либо что-то еще полезное.
Как повторить для zsh, я не разбирался. Может у тебя будет желание разобраться.
Ну и для гиков, кто хочет покопаться поглубже, можешь зама́нить и захелпить:
man 3 readline
man bash (раздел readline)
man tput
man stty
help trap
help read
help bind
man 5 terminfo
Помимо шпаргалки по хоткею, ты можешь запустить вообще любой скрипт. Тут уже зависит от полета фантазии. Больше не смею тебя отвлекать, спасибо за внимание. Давай пять и погнали дальше отдыхать!
Нативный Pop-Up в Linux консоли
3 августа 20233 авг 2023
526
2 мин
3