bspwmrc 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. #! /bin/sh
  2. # Импорт переменных окружения для systemd
  3. systemctl --user import-environment DISPLAY XAUTHORITY
  4. dbus-update-activation-environment --systemd DISPLAY XAUTHORITY
  5. # ==============================================================================
  6. # ЗАПУСК ВСПОМОГАТЕЛЬНЫХ СЕРВИСОВ И ПРОГРАММ (Autostart)
  7. # ==============================================================================
  8. # Запуск демона горячих клавиш (sxhkd)
  9. # Проверяем, запущен ли sxhkd, и если нет, запускаем его в фоне.
  10. # ВНИМАНИЕ: Горячие клавиши настраиваются в файле ~/.config/sxhkd/sxhkdrc
  11. pgrep -x sxhkd > /dev/null || sxhkd &
  12. # Проверка, запущен ли SSH агент
  13. if ! pgrep -u "$USER" ssh-agent > /dev/null; then
  14. eval "$(ssh-agent -s)"
  15. fi
  16. # Установка фонового изображения (пример: с помощью feh)
  17. # feh --bg-fill ~/path/to/your/wallpaper.jpg &
  18. # Проблемы: Если не установлен feh или другой установщик обоев,
  19. # или указан неверный путь, обои не загрузятся.
  20. # Запуск композитного менеджера (например, picom для теней и прозрачности)
  21. # picom &
  22. # Проблемы: Если picom не установлен, или конфигурация picom неверна,
  23. # могут быть проблемы с отрисовкой окон.
  24. # Запуск панели (например, polybar или lemonbar)
  25. # ~/.config/polybar/launch.sh &
  26. # Проблемы: Необходимо создать скрипт запуска панели (например, launch.sh),
  27. # который корректно настроит и запустит вашу панель.
  28. # ==============================================================================
  29. # НАСТРОЙКА МОНИТОРОВ И РАБОЧИХ СТОЛОВ
  30. # ==============================================================================
  31. source $HOME/dotfiles/Profile.env
  32. # Автоматическое определение монитора для VNC или физического дисплея
  33. if xrandr -q | grep -q "VNC-0 connected"; then
  34. bspc monitor VNC-0 -d 1 2 3 4 5 6 7 8 9 10
  35. elif [ "$profile" == "work" ]; then
  36. bspc monitor HDMI-1 -d 1 2 3 4 5
  37. bspc monitor HDMI-2 -d 6 7 8 9 10
  38. elif [ "$profile" == "laptop" ]; then
  39. if [[ $(xrandr -q | grep " connected" | wc -l) -ge 2 ]]; then
  40. bspc monitor eDP-1 -d 6 7 8 9 10
  41. bspc monitor HDMI-1-0 -d 1 2 3 4 5
  42. else
  43. bspc monitor eDP-1 -d 1 2 3 4 5 6 7
  44. fi
  45. else
  46. _primary=$(xrandr -q | grep " connected" | head -n 1 | cut -d' ' -f1)
  47. [ -n "$_primary" ] && bspc monitor $_primary -d 1 2 3 4 5 6 7 8 9 10
  48. fi
  49. # Перезапуск sxhkd для гарантии работы хоткеев на текущем DISPLAY
  50. pkill -x sxhkd
  51. sxhkd &
  52. # Если у вас несколько мониторов, их можно настроить так (пример):
  53. # bspc monitor DVI-I-1 -d 1 2 3 4
  54. # bspc monitor DVI-D-0 -d 5 6 7 8 9 10
  55. # Проблемы: Используйте 'xrandr' в терминале для получения точных имен ваших мониторов.
  56. # ==============================================================================
  57. # ОБЩИЕ НАСТРОЙКИ BSPWM (Параметры bspc config)
  58. # ==============================================================================
  59. # Ширина границы окна в пикселях
  60. bspc config border_width 2
  61. # Промежуток между окнами в пикселях (гап)
  62. bspc config window_gap 12
  63. # Соотношение сторон при разделении (новое окно занимает 52% доступного места)
  64. bspc config split_ratio 0.52
  65. # Граница не отображается в режиме "монокль" (одно окно на весь десктоп)
  66. bspc config borderless_monocle true
  67. # Промежуток (гап) между окнами не отображается в режиме "монокль"
  68. bspc config gapless_monocle true
  69. # Цвет активной (фокусированной) границы окна (пример: яркий голубой)
  70. # bspc config focused_border_color "#8be9fd"
  71. # Проблемы: HEX-коды цветов должны быть в формате #RRGGBB.
  72. # Композитор
  73. picom --config $HOME/.config/bspwm/picom_configurations/1.conf &
  74. # Демон для уведомлений
  75. dunst -config $HOME/.config/dunst/dunstrc &
  76. # Polybar
  77. $HOME/.config/polybar/launch.sh
  78. feh --no-fehbg --bg-fill $HOME/Wallpaper/logo_black_hack_the_plane\(0x701010\).png
  79. # ==============================================================================
  80. # ПРАВИЛА ДЛЯ ОКОН (bspc rule -a <класс> ...)
  81. # ==============================================================================
  82. # Правило для Gimp:
  83. # -a Gimp: применять к окнам с классом 'Gimp'.
  84. # Класс окна: xprop WM_CLASS
  85. # desktop='^8': открыть на рабочем столе 8.
  86. # state=floating: сделать его плавающим.
  87. # follow=on: автоматически переключиться на этот рабочий стол при запуске.
  88. bspc rule -a feh state=floating
  89. bspc rule -a nekobox state=floating follow=on center=true rectangle=800x400
  90. bspc rule -a Gimp desktop='^8' state=floating follow=on
  91. bspc rule -a TelegramDesktop desktop='^6' state=floating center=true rectangle=1200x720
  92. #bspc rule -a desktop='^6' state=floating
  93. bspc rule -a org.gnome.Nautilus state=floating follow=on
  94. bspc rule -a crx_nngceckbapebfimnlniiiahkandclblb state=floating
  95. bspc rule -a crx_nngceckbapebfimnlniiiahkandclblb state=floating
  96. bspc rule -a kleopatra state=floating center=true
  97. bspc rule -a microsip.exe state=floating center=true
  98. bspc rule -a AmneziaVPN state=floating center=true
  99. bspc rule -a pavucontrol state=floating center=true
  100. bspc rule -a gnome-calculator state=floating center=true rectangle=200x600
  101. bspc rule -a arandr state=floating center=true
  102. bspc rule -a blueman-manager state=floating center=true
  103. bspc rule -a 7zfm state=floating center=true rectangle=1200x720
  104. bspc rule -a Happ state=floating center=true rectangle=900x600
  105. #bspc rule -a state=floating
  106. #bspc rule -a state=floating
  107. #bspc rule -a state=floating
  108. #bspc rule -a state=floating
  109. #bspc rule -a state=floating
  110. #bspc rule -a state=floating
  111. # Правило для Chromium:
  112. # desktop='^2': открыть на рабочем столе 2.
  113. #bspc rule -a Chromium desktop='^2'
  114. # Правило для mplayer2:
  115. # state=floating: сделать его плавающим.
  116. #bspc rule -a mplayer2 state=floating
  117. # Правило для Kupfer.py (устаревший лаунчер):
  118. # focus=on: автоматически сфокусироваться на нем при появлении.
  119. #bspc rule -a Kupfer.py focus=on
  120. # Правило для Screenkey:
  121. # manage=off: bspwm не должен управлять этим окном (например, для программ-оверлеев).
  122. bspc rule -a Screenkey manage=off
  123. # Дополнительный пример правила для Telegram Desktop:
  124. # bspc rule -a TelegramDesktop desktop='^9' state=floating
  125. # Проблемы: Класс окна (первый аргумент после -a) должен быть точным.
  126. # Используйте утилиту `xprop` (клик по окну), чтобы узнать точное значение
  127. # для `WM_CLASS(STRING)`. Обычно берется вторая строка (класс).
  128. # ==============================================================================
  129. # ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ BSPWM (Пример)
  130. # ==============================================================================
  131. # Применить настройки для фокуса:
  132. # Если фокус теряется/получается, переместить его к ближайшему узлу.
  133. # bspc config focus_by_distance true
  134. #
  135. # Курор
  136. xsetroot -cursor_name left_ptr &
  137. # ==============================================================================
  138. # КОНЕЦ ФАЙЛА
  139. # ==============================================================================