#! /bin/sh
# Импорт переменных окружения для systemd
systemctl --user import-environment DISPLAY XAUTHORITY
dbus-update-activation-environment --systemd DISPLAY XAUTHORITY


# ==============================================================================
# ЗАПУСК ВСПОМОГАТЕЛЬНЫХ СЕРВИСОВ И ПРОГРАММ (Autostart)
# ==============================================================================

# Запуск демона горячих клавиш (sxhkd)
# Проверяем, запущен ли sxhkd, и если нет, запускаем его в фоне.
# ВНИМАНИЕ: Горячие клавиши настраиваются в файле ~/.config/sxhkd/sxhkdrc
pgrep -x sxhkd > /dev/null || sxhkd &

# Проверка, запущен ли SSH агент
if ! pgrep -u "$USER" ssh-agent > /dev/null; then
  eval "$(ssh-agent -s)"
fi


# Установка фонового изображения (пример: с помощью feh)
# feh --bg-fill ~/path/to/your/wallpaper.jpg &
# Проблемы: Если не установлен feh или другой установщик обоев, 
# или указан неверный путь, обои не загрузятся.

# Запуск композитного менеджера (например, picom для теней и прозрачности)
# picom &
# Проблемы: Если picom не установлен, или конфигурация picom неверна,
# могут быть проблемы с отрисовкой окон.

# Запуск панели (например, polybar или lemonbar)
# ~/.config/polybar/launch.sh &
# Проблемы: Необходимо создать скрипт запуска панели (например, launch.sh),
# который корректно настроит и запустит вашу панель.

# ==============================================================================
# НАСТРОЙКА МОНИТОРОВ И РАБОЧИХ СТОЛОВ
# ==============================================================================

# Создание и именование рабочих столов (десктопов) на текущем мониторе
# Мониторы идентифицируются по их именам (например, DVI-0, HDMI-A-0), 
# но bspwm по умолчанию использует первый (самый левый) монитор.
source $HOME/dotfiles/Profile.env

if [ $profile == "work" ]
then
	bspc monitor HDMI-1 -d 1 2 3 4 5
	bspc monitor HDMI-2 -d 6 7 8 9 10
elif [ $profile == "laptop" ]
then
	bspc monitor eDP-1 -d 6 7 8 9 10
	bspc monitor HDMI-1-0 -d 1 2 3 4 5

	if [[ $(xrandr -q | grep " connected" | wc -l) -ge 2 ]]; then
		bspc monitor eDP-1 -d 6 7 8 9 10
		bspc monitor HDMI-1-0 -d 1 2 3 4 5
	else
		bspc monitor eDP-1 -d 1 2 3 4 5 6 7
	fi
else
	_primary=$(xrandr -q | grep "primary" | cut -d' ' -f1)
	bspc monitor $_primary -d 1 2 3 
fi
# Если у вас несколько мониторов, их можно настроить так (пример):
# bspc monitor DVI-I-1 -d 1 2 3 4
# bspc monitor DVI-D-0 -d 5 6 7 8 9 10
# Проблемы: Используйте 'xrandr' в терминале для получения точных имен ваших мониторов.

# ==============================================================================
# ОБЩИЕ НАСТРОЙКИ BSPWM (Параметры bspc config)
# ==============================================================================

# Ширина границы окна в пикселях
bspc config border_width 2

# Промежуток между окнами в пикселях (гап)
bspc config window_gap 12

# Соотношение сторон при разделении (новое окно занимает 52% доступного места)
bspc config split_ratio 0.52

# Граница не отображается в режиме "монокль" (одно окно на весь десктоп)
bspc config borderless_monocle true

# Промежуток (гап) между окнами не отображается в режиме "монокль"
bspc config gapless_monocle true

# Цвет активной (фокусированной) границы окна (пример: яркий голубой)
# bspc config focused_border_color "#8be9fd"
# Проблемы: HEX-коды цветов должны быть в формате #RRGGBB.

# Композитор	
picom --config $HOME/.config/bspwm/picom_configurations/1.conf &
# Демон для уведомлений
dunst -config $HOME/.config/dunst/dunstrc &
# Polybar
$HOME/.config/polybar/launch.sh
feh --no-fehbg --bg-fill $HOME/Wallpaper/logo_black_hack_the_plane\(0x701010\).png
# ==============================================================================
# ПРАВИЛА ДЛЯ ОКОН (bspc rule -a <класс> ...)
# ==============================================================================

# Правило для Gimp: 
# -a Gimp: применять к окнам с классом 'Gimp'.
# Класс окна: xprop WM_CLASS
# desktop='^8': открыть на рабочем столе 8.
# state=floating: сделать его плавающим.
# follow=on: автоматически переключиться на этот рабочий стол при запуске.

bspc rule -a feh state=floating
bspc rule -a nekobox state=floating follow=on center=true rectangle=800x400

bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a TelegramDesktop desktop='^6' state=floating center=true rectangle=1200x720
#bspc rule -a desktop='^6' state=floating

bspc rule -a org.gnome.Nautilus state=floating follow=on
bspc rule -a crx_nngceckbapebfimnlniiiahkandclblb state=floating
bspc rule -a crx_nngceckbapebfimnlniiiahkandclblb state=floating
bspc rule -a kleopatra state=floating center=true
bspc rule -a microsip.exe state=floating center=true
bspc rule -a AmneziaVPN state=floating center=true

bspc rule -a pavucontrol state=floating center=true
bspc rule -a gnome-calculator state=floating center=true rectangle=200x600
bspc rule -a arandr state=floating center=true
bspc rule -a blueman-manager state=floating center=true
bspc rule -a 7zfm state=floating center=true rectangle=1200x720
bspc rule -a Happ state=floating center=true rectangle=900x600
#bspc rule -a state=floating
#bspc rule -a state=floating
#bspc rule -a state=floating
#bspc rule -a state=floating
#bspc rule -a state=floating
#bspc rule -a state=floating

# Правило для Chromium:
# desktop='^2': открыть на рабочем столе 2.
#bspc rule -a Chromium desktop='^2'

# Правило для mplayer2:
# state=floating: сделать его плавающим.
#bspc rule -a mplayer2 state=floating

# Правило для Kupfer.py (устаревший лаунчер):
# focus=on: автоматически сфокусироваться на нем при появлении.
#bspc rule -a Kupfer.py focus=on

# Правило для Screenkey:
# manage=off: bspwm не должен управлять этим окном (например, для программ-оверлеев).
bspc rule -a Screenkey manage=off

# Дополнительный пример правила для Telegram Desktop:
# bspc rule -a TelegramDesktop desktop='^9' state=floating
# Проблемы: Класс окна (первый аргумент после -a) должен быть точным. 
# Используйте утилиту `xprop` (клик по окну), чтобы узнать точное значение 
# для `WM_CLASS(STRING)`. Обычно берется вторая строка (класс).

# ==============================================================================
# ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ BSPWM (Пример)
# ==============================================================================

# Применить настройки для фокуса: 
# Если фокус теряется/получается, переместить его к ближайшему узлу.
# bspc config focus_by_distance true
#
# Курор
xsetroot -cursor_name left_ptr &

# ==============================================================================
# КОНЕЦ ФАЙЛА
# ==============================================================================
