Option „background_opacity“ in Alacritty umschalten

Option „background_opacity“ in Alacritty umschalten

Ich möchte eine Taste binden, die background_opacityden Wert zwischen 0,9 und 1,0 umschaltet und das Ergebnis sofort im Alactitty-Terminal anzeigt. Zu diesem Zweck gibt es in den Tastenbindungen keine Aktion.

Ich habe live_config_reloades aktiviert, daher besteht ein möglicher Ansatz darin, eine ZSH-Funktion zu schreiben, die die Datei ändert alacritty.yml.

Antwort1

Ich bin auf diese Frage gestoßen, als ich nach der gleichen Funktion gesucht habe, und habe sie schließlich selbst implementiert. Ich habe eine Demo der Funktionsweise in meinenBlog.

Der Vollständigkeit halber werde ich die Schritte hier ausführen.

~/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

Machen Sie das obige Skript ausführbar, indem Sie es im Terminal ausführen:
chmod +x ~/bin/toggle_alacritty_opacity

Stellen Sie sicher, dass Sie die folgende Zeile in ~/.zshrcoder haben~/.bashrc

## In order to use the executable scripts inside ~/bin directly
export PATH=$HOME/bin:$PATH

Wenn Sie Alacritty jetzt toggle_alacritty_opacityvon Ihrem Terminal aus ausführen, wird die Deckkraft umgeschaltet.

Bonus

Wenn Sie i3 WM verwenden, fügen Sie die folgenden Zeilen an~/.config/i3/config

## Toggling alacritty opacity in i3 (inside ~/bin)
bindsym $mod+Shift+a exec --no-startup-id toggle_alacritty_opacity

Jetzt haben Sie eine Tastenkombination, um die Deckkraft von Alacritty umzuschalten.

Antwort2

Funktioniert gut!

Ich habe dieses Skript ein wenig an meine Bedürfnisse angepasst. Außerdem habe ich einige Fälle hinzugefügt, damit ich nicht nur zwischen zwei Werten wechseln muss.

Dies wird von meiner Left Window Manager-Konfiguration [LeftWM] aufgerufen.

~/.config/leftwm/config.ron

keybind: [
...
(command: Execute, value: "~/bin/opacitytoggle", modifier: ["modkey", "Shift"], key: "a"),
...
],

~/bin/opacitytoggle

#!/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

Antwort3

Lösung für MacOS mitHammerlöffeldas die Tastenkombination CMD+ in iTerm2 emuliertU

Fügen Sie dies zu Ihrem.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)

Stellen Sie sicher, dass Sie Zeile 2 anpassen, um den richtigen Speicherort der alacritty.ymlDatei anzugeben (das Skript geht davon aus ~/.config/alacritty.yml).

Stellen Sie außerdem sicher, dass die alacritty.ymlDatei enthält

windows:
  opacity: 1

verwandte Informationen