diff --git a/020_ghostty-terminal.sh b/020_ghostty-terminal.sh index 3ef9ea9..29c13b5 100644 --- a/020_ghostty-terminal.sh +++ b/020_ghostty-terminal.sh @@ -2,6 +2,8 @@ DEST=${1:-/etc/skel} GHOSTTY_HOME=${DEST}/.config/ghostty +ALIASES_D="${DEST}/.zsh_aliases.d" +ALIAS_FILE="${ALIASES_D}/003_ghostty.zsh" sudo apt update sudo apt install ghostty @@ -77,4 +79,115 @@ EOF } conf_print_ghostty_config | tee "${GHOSTTY_HOME}/config.yaml" +# OpenGL detection → decide if we force software rendering +# Necessary is opengl is <=3.2 +should_use_software() { + local es_version="" + + # local gl_version="" + # if command -v glxinfo >/dev/null 2>&1; then + # gl_version=$(glxinfo | grep -i "OpenGL version string" | head -n 1 | awk -F: '{print $2}') + # if [[ "$gl_version" =~ ^([4-9]\.|3\.[3-9]) ]]; then + # return 1 # hardware ok + # fi + # fi + local max_core + max_core=$(glxinfo -B 2>/dev/null | grep "Max core profile" | awk '{print $5}') + printf "max_core: %s\n" "${max_core}" + if [[ "$max_core" =~ ^([4-9]\.|3\.[3-9]) ]]; then + return 1 # Hardware supports OpenGL 3.2+ + fi + + if command -v eglinfo >/dev/null 2>&1; then + es_version=$(eglinfo -B 2>/dev/null | grep -i "OpenGL ES profile version" | head -n 1 | grep -oE '[0-9]+\.[0-9]+' || true) + printf "es_version %s\n" "${es_version}" + if [[ "$es_version" =~ ^[3-9]\. ]]; then + return 1 # GLES 3+ usually good enough + fi + fi + + return 0 # force software +} + +conf_print_ghostty_desktop() { + cat </dev/null +# kitty → hardware rendering (OpenGL ≥3.3 detected) +alias ghostty="ghostty" +EOF +} + +conf_print_ghostty_alias_sw() { + cat <<'EOF' | tee "${ALIAS_FILE}" >/dev/null +# ghostty → software rendering (old/weak OpenGL) +alias ghostty="LIBGL_ALWAYS_SOFTWARE=1 ghostty" +EOF +} + +# We now use the adapted desktop file +conf_print_ghostty_wrapper() { + mkdir -p /usr/local/bin/ + cat >/usr/local/bin/ghostty-wrapper <<'EOF' +#!/bin/sh +export LIBGL_ALWAYS_SOFTWARE=1 +exec /usr/bin/ghostty "$@" +EOF +} +# conf_print_ghostty_wrapper +# sudo chmod +x "/usr/local/bin/ghostty-wrapper" + +if should_use_software; then + conf_print_ghostty_alias_sw + echo "# Forced software rendering due to insufficient OpenGL support" | tee -a "${ALIAS_FILE}" >/dev/null + + # For xfce4 that ignores user aliases + conf_print_ghostty_desktop | tee "${DEST}/.local/share/applications/com.mitchellh.ghostty.desktop" >/dev/null + update-desktop-database "${DEST}/.local/share/applications" + + # Add to alternatives and select default + #sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/local/bin/ghostty-wrapper 60 + sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/ghostty 60 + sudo update-alternatives --config x-terminal-emulator + +else + conf_print_ghostty_alias_hw + + echo "# Using hardware rendering" | tee -a "${ALIAS_FILE}" >/dev/null + sudo update-alternatives --config x-terminal-emulator +fi + ghostty +validate-config diff --git a/020_kitty-terminal.sh b/020_kitty-terminal.sh index fff9ab1..996a0d2 100644 --- a/020_kitty-terminal.sh +++ b/020_kitty-terminal.sh @@ -59,6 +59,35 @@ should_use_software() { return 0 # force software } +conf_print_kitty_desktop() { + cat </dev/null # kitty → hardware rendering (OpenGL ≥3.3 detected) @@ -81,18 +110,20 @@ export LIBGL_ALWAYS_SOFTWARE=1 exec /usr/bin/kitty "$@" EOF } +# ssudo conf_print_kitty_wrapper +# sudo chmod +x "/usr/local/bin/kitty-wrapper" if should_use_software; then conf_print_kitty_alias_sw echo "# Forced software rendering due to insufficient OpenGL support" | tee -a "${ALIAS_FILE}" >/dev/null # For xfce4 that ignores user aliases - ssudo conf_print_kitty_wrapper - sudo chmod +x "/usr/local/bin/kitty-wrapper" + conf_print_kitty_desktop | tee "${DEST}/.local/share/applications/kitty.desktop" >/dev/null + update-desktop-database ~/.local/share/applications # Add to alternatives and select default - # sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/kitty 100 - sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/local/bin/kitty-wrapper 60 + # sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/local/bin/kitty-wrapper 60 + sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/bin/kitty 100 sudo update-alternatives --config x-terminal-emulator else