Не полностью прозрачный фон в urxvt

Вопрос или проблема

Я посмотрел несколько ответов в сети StackExchange, ни один из них не сработал так, как я хотел.

Я начал использовать urxvt на Ubuntu вместо gnome-terminal и хотел настроить его внешний вид так, чтобы он был похож. Я справился с шрифтами, но не могу добиться прозрачного фона. Что я хочу, так это смешать 60% фон и 40% цвет баклажан Ubuntu (#5E2750) — именно так был настроен мой gnome-terminal. Я пробовал несколько комбинаций значений для Urxvt*background (пробовал с альфа-каналом тоже), Urxvt*transparent, Urxvt*backgroundPixmap, Urxvt*fadeColor, Urxvt*fading (это на самом деле не выглядит полезным здесь, но большинство примеров, с которыми я сталкивался, тоже это устанавливали) и Urxvt*shading в .Xresources. Каждый из них не подошел, большинство из них давали совершенно черный фон. Похоже, я неправильно понимаю настройки backgroundPixmap и background, но документации по ним не так уж и много.

Ссылаясь на 9.20 (поскольку, похоже, эта область сейчас находится в стадии разработки, после 9.22 в начале этого года, например, см. зеркало на github).

urxvt применяет фоновую пиксельную карту после выполнения других операций по прозрачности фона (он на самом деле не комбинирует их). Чтобы увидеть это, посмотрите на метод rxvt_term::bg_init () в background.C:

void
rxvt_term::bg_init ()
{
#if BG_IMAGE_FROM_ROOT
  if (option (Opt_transparent))
    { 
      if (rs [Rs_blurradius])
        root_effects.set_blur (rs [Rs_blurradius]);

      if (ISSET_PIXCOLOR (Color_tint))
        root_effects.set_tint (pix_colors_focused [Color_tint]);

      if (rs [Rs_shade])
        root_effects.set_shade (rs [Rs_shade]);

      rxvt_img::new_from_root (this)->replace (root_img);
      XSelectInput (dpy, display->root, PropertyChangeMask);
      rootwin_ev.start (display, display->root);
    }
#endif

#if BG_IMAGE_FROM_FILE
  if (rs[Rs_backgroundPixmap])
    { 
      fimage.set_file_geometry (this, rs[Rs_backgroundPixmap]);
      if (!bg_window_position_sensitive ())
        update_background ();
    }
#endif
}

Ответ или решение

Проблема: Неполноценная прозрачность фона в urxvt

Введение

Если вы ищете способ настроить прозрачный фон в терминале urxvt на Ubuntu, важно понять, как именно работает механизм управления прозрачностью и фоновыми изображениями в данном эмуляторе терминала.

Проблема

Вы упомянули, что хотите достичь фона, который будет сочетать в себе 60% прозрачности и 40% цвета Ubuntu Mid Aubergine (#5E2750), как это было настроено в gnome-terminal. Несмотря на ваши усилия с настройками в файле .Xresources, вы не смогли добиться желаемого результата, так как многие попытки приводили к черному фону или неудачным комбинациям настроек.

Технические аспекты

В urxvt используется несколько параметров для управления фоном, которые могут вызывать путаницу. Рассмотрим некоторые из них:

  1. *Urxvtbackground**:

    • Этот параметр отвечает за основной цвет фона. Однако чтобы добиться прозрачности, необходимы дополнительные настройки.
  2. Urxvttransparent и Urxvtshading:

    • Эти параметры управляют прозрачностью. Urxvt*transparent позволяет задавать степень прозрачности, в то время как Urxvt*shading определяет уровень затенения. Их использование не всегда приводит к ожидаемым результатам, особенно если фон задается неверно.
  3. *UrxvtbackgroundPixmap**:

    • Этот параметр используется для установки фонового изображения. Однако, как вы правильно заметили, urxvt накладывает фоновое изображение после применения других настроек, что может блокировать эффекты прозрачности.
  4. Urxvtfading и UrxvtfadeColor:

    • Эти параметры играют роль в управлении эффектами появления и исчезновения текста на фоне, но не влияют на сам фон.

Решение

Чтобы добиться желаемого результата, выполните следующие шаги в вашем .Xresources:

URxvt*transparent: true
URxvt*shading: 60
URxvt*background: #5E2750
URxvt*backgroundPixmap:  none
URxvt*fadeColor: #5E2750
URxvt*fading: true

Объяснение настройки:

  • URxvt*transparent: true включает поддержку прозрачности.
  • URxvt*shading: 60 указывает на уровень прозрачности (60% фона) для терминала.
  • URxvt*background: #5E2750 задает цвет фона, который вы хотите видеть как основу.
  • URxvt*backgroundPixmap: none отключает использование фонового изображения, чтобы избежать конфликтов с прозрачностью.
  • URxvt*fadeColor: #5E2750 задает цвет, на который будет менять прозрачный фон при изменении фона.
  • URxvt*fading: true включает эффект затухания текста.

Дополнительные рекомендации

Для эффективного применения настроек в .Xresources, после внесения изменений не забудьте перезагрузить настройки с помощью команды:

xrdb -merge ~/.Xresources

Также проверьте, что у вас установлен и правильно настроен менеджер окон, который поддерживает прозрачность. Убедитесь, что ваш текущий менеджер окон (например, compton или picom) настроен на поддержку прозрачности, так как это является важным компонентом для корректного отображения желаемых эффектов.

Заключение

Таким образом, для настройки прозрачного фона на urxvt необходимо грамотно управлять комбинацией параметров и учитывать конфигурацию вашего окружения. Следуя указанным рекомендациям, вы сможете получить желаемый результат. Если у вас возникнут дополнительные вопросы или потребуется помощь в дальнейшей настройке, не стесняйтесь обращаться за помощью в сообщество пользователей urxvt.

Оцените материал
Добавить комментарий

Капча загружается...