Я хочу привязать клавишу, которая переключает background_opacity
значение между 0.9 и 1.0 и немедленно показывает результат в терминале Alactitty. В key_bindings нет действия для этой цели.
Я live_config_reload
включил, поэтому одним из возможных подходов является написание функции zsh, которая изменит alacritty.yml
файл.
решение1
Я наткнулся на этот вопрос, когда искал ту же функцию, и в итоге реализовал ее сам. Я включил демо-версию работы в свойблог.
Для полноты картины я приведу здесь эти шаги.
~/bin/toggle_alacritty_opacity
#!/usr/bin/env bash
## If alacritty.yml does not exist, raise an alert
[[ ! -f ~/.config/alacritty/alacritty.yml ]] && \
notify-send "alacritty.yml does not exist" && exit 0
## Fetch background_opacity from alacritty.yml
opacity=$(awk '$1 == "background_opacity:" {print $2; exit}' \
~/.config/alacritty/alacritty.yml)
## Assign toggle opacity value
case $opacity in
1)
toggle_opacity=0.9
;;
*)
toggle_opacity=1
;;
esac
## Replace opacity value in alacritty.yml
sed -i -- "s/background_opacity: $opacity/background_opacity: $toggle_opacity/" \
~/.config/alacritty/alacritty.yml
Сделайте указанный выше скрипт исполняемым, запустив в терминале:
chmod +x ~/bin/toggle_alacritty_opacity
Убедитесь, что у вас есть следующая строка ~/.zshrc
или~/.bashrc
## In order to use the executable scripts inside ~/bin directly
export PATH=$HOME/bin:$PATH
Теперь запуск toggle_alacritty_opacity
из терминала будет переключать непрозрачность alacritty.
Бонус
Если вы используете i3 WM, добавьте следующие строки в~/.config/i3/config
## Toggling alacritty opacity in i3 (inside ~/bin)
bindsym $mod+Shift+a exec --no-startup-id toggle_alacritty_opacity
Теперь у вас есть привязка клавиш для переключения непрозрачности alacritty.
решение2
Работает хорошо!
Я немного изменил этот скрипт, чтобы он мне подошел. Также добавил несколько случаев, чтобы мне не приходилось переключаться только между двумя значениями.
Это вызывается из моей конфигурации левого оконного менеджера [LeftWM].
~/.config/leftwm/config.ron
keybind: [
...
(command: Execute, value: "~/bin/opacitytoggle", modifier: ["modkey", "Shift"], key: "a"),
...
],
~/bin/непрозрачностьпереключить
#!/usr/bin/env bash
## If alacritty.yml does not exist, raise an alert
[[ ! -f ~/.config/alacritty.yml ]] && \
notify-send "alacritty.yml does not exist" && exit 0
## Fetch background_opacity from alacritty.yml
opacity=$(awk '$1 == "opacity:" {print $2; exit}' \
~/.config/alacritty.yml)
## Assign toggle opacity value
case $opacity in
0.0)
toggle_opacity=0.55
;;
0.55)
toggle_opacity=0.70
;;
0.70)
toggle_opacity=0.85
;;
0.85)
toggle_opacity=1.0
;;
1.0)
toggle_opacity=0.0
;;
*)
toggle_opacity=1.0
;;
esac
## Replace opacity value in alacritty.yml
sed -i -- "s/opacity: $opacity/opacity: $toggle_opacity/" \
~/.config/alacritty.yml
решение3
Решение для MacOS с использованиемХаммерспункоторый эмулирует сочетание клавиш CMD
+ U
в iTerm2
Добавьте это к вашему.hammerspoon/init.lua
hs.hotkey.bind({"cmd"}, "U", function()
alacritty_file_name = string.format("%s/.config/alacritty.yml", os.getenv("HOME"))
opaque = "opacity: 1"
transparent = "opacity: 0.9"
local file = io.open(alacritty_file_name)
local content = file:read "*a"
file:close()
if string.match(content, opaque) then
content = string.gsub(content, opaque, transparent)
else
content = string.gsub(content, transparent, opaque)
end
local fileedited = io.open(alacritty_file_name, "w")
fileedited:write(content)
fileedited:close()
end)
Обязательно отрегулируйте строку 2, чтобы она отражала правильное расположение файла alacritty.yml
(скрипт предполагает ~/.config/alacritty.yml
)
Также убедитесь, что alacritty.yml
файл содержит
windows:
opacity: 1