#!/usr/bin/env bash

# Дефолт конфиг https://github.com/baskerville/bspwm/blob/master/examples/bspwmrc
# Описание настроек можно найти тут https://manpages.debian.org/testing/bspwm/bspc.1.en.html
# Или через "man bspc" в терминале
# Или в ./bspwm.md
# https://my-take-on.tech/2020/07/03/some-tricks-for-sxhkd-and-bspwm/

################
## Автозапуск ##
################

# Это по сути терминал. Пишем то, как запускается прога через терминал и в конце & обязательно

# # Как я понял, их не надо запускать, ведь они активированы через services..enable = true;
# # Если в nixos что-то включается через services, а не через programs, то nixos сам отвечает за автозапуск сервисов
# pgrep -x sxhkd > /dev/null || sxhkd &         # Запускаем sxhkd если он не запущен
# pgrep -x polybar > /dev/null || polybar &     # Запускаем polybar если он не запущен
# pgrep -x dunst > /dev/null || dunst &         # Запускаем dunst если он не запущен

# Изменить настройки для основного монитора. Мб вместе с --primary надо
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
# Изменить настройки для второго (правого) монитора
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2

ksnip &
# nekoray &
# obsidian &
# planify &
lxqt-policykit-agent &

# Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar
nm-applet &

#########################
## Настройки мониторов ##
#########################

# Получаем имена активных мониторов
MONITORS=( $(xrandr --listactivemonitors | grep -E '^ [0-9]+:' | cut -d' ' -f6 | sed 's/\n/ /') )

# Если переменная MONITOR уже задана, то используется её значение. 
# Если она не задана (то есть пуста или не существует), то используется первый элемент из массива MONITORS (то есть, первый активный монитор).
# Это гарантирует, что переменная MONITOR всегда будет содержать значение: либо установленное ранее, либо первый активный монитор по умолчанию.
# ":-" Это оператор в Bash, который используется для установки значения по умолчанию. Если переменная не задана или пуста, используется значение после :-
MONITOR="${MONITOR:-${MONITORS[0]}}"

# Для запуска приложений на втором мониторе, если он доступен. Если второго монитора нет, используем первый.
MONITOR2="${MONITORS[1]:-${MONITORS[0]}}"

# # Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
for mon in ${MONITORS[@]}; do
    bspc monitor $mon -d {1,2,3,4,5,6,7,8,9,10}
done

# Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
#bspc monitor -d 1 2 3 4 5 6 7 8 9 10 # Можно заменить на {1,2,3,4,5,6,7,8,9,10}

# Настройка автоматического удаления настроек для отключённых и отсоединённых мониторов
bspc config remove_disabled_monitors false
bspc config remove_unplugged_monitors false

#####################
## Настройки bspwm ##
#####################

# Syntax - bspc config [-m MONITOR_SEL|-d DESKTOP_SEL|-n NODE_SEL] <setting> [<value>]

# Устанавливает ширину границ окон в 2 пикселя.
bspc config border_width 2

# Задаёт расстояние между окнами (отступ) в 5 пикселей.
bspc config window_gap 5

# Настраивает коэффициент разделения окон при их разделении. Значение 0.52 означает, что при разделении окно будет занимать 52% доступного пространства.
bspc config split_ratio 0.52

# В режиме monocle (максимизация окна на весь экран) границы окон будут скрыты.
bspc config borderless_monocle true

# В режиме monocle будет отсутствовать отступ между окнами.
bspc config gapless_monocle true

# Eсли вы активируете режим "monocle" на одном мониторе, другие мониторы остаются в обычном режиме
bspc config single_monocle false

# Фокусировка следует за курсором
bspc config focus_follows_pointer true


###############################
## Поведение конкретных окон ##
###############################


# Yдаляет все существующие правила для всех окон
# bspc rule -r '*'

bspc rule -a "polybar" layer=above

bspc rule -a "Screenkey" manage=off

bspc rule -a "ksnip"             state=floating center=true focus=on rectangle=1600x900+0+0
bspc rule -a "org.kde.ark"       state=floating center=true focus=on rectangle=1200x800+0+0
bspc rule -a "floating-terminal" state=floating center=true focus=on rectangle=1200x800+0+0
