Instalei o Arch BSPWM unando uma dica sua sobre o ArchGUI(inclusive, obrigado mais uma vez pela dica). Ficou bem limpa a instalação. Mas ainda assim queria mudar algumas coisinhas e, mesmo pesquisando a respeito, não consegui encontrar como fazer. Como você é um dos magos dos TWMs queria saber se poderia me ajudar com alguns pontos (tentarei ser o mais claro possível):
Na saída do comando xrandr foram identificadas da seguinte forma:
LVDS-1: Tela do Notebook
VGA-1: Monitor da Esquerda
HDMI-1: Monitor da Direita
Não sei se é a forma mais correta de ser fazer, mas consegui colocá-las na disposição correta. Quero a polybar somente no monitor principal mesmo. Mas ela está identificando as áreas de trabalho virtuais do monitor principal como na imagem abaixo e não como queria: I II III IV. Além de que a área de trabalho virtual 1 é acessada pelo Mod+2 e assim por diante no monitor principal. Enquanto que o Mod+1 vai para a tela da esquerda e acessa a que queria que fosse a área de trabalho virtual 5.
Meu arquivo bspwmrc segue abaixo:
#! /bin/sh
pgrep -x sxhkd > /dev/null || sxhkd &
sxhkd &
nm-applet &
$HOME/.config/polybar/launch.sh
feh --bg-fill /usr/share/backgrounds/bspwm/wall.png
picom &
numlockx on &
xrandr --output LVDS-1 --primary --mode 1366x768 --rotate normal --output VGA-1 --mode 1366x768 --rotate normal --left-of LVDS-1 --output HDMI-1 --mode 1366x768 --rotate normal --right-of LVDS-1 &
#bspc monitor -d I II III IV V VI VII VIII IX X
bspc monitor VGA-1 -d 'V'
bspc monitor LVDS-1 -d 'I' 'II' 'III' 'IV'
bspc monitor HDMI-1 -d 'VI'
bspc config border_width 1
bspc config window_gap 8
bspc config automatic_scheme spiral
bspc config initial_polarity first_child
bspc config split_ratio 0.5
bspc config borderless_monocle true
bspc config gapless_monocle true
#bspc config focus_follows_pointer true
bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a brave desktop='^1'
bspc rule -a alacritty desktop='^6'
bspc rule -a mplayer2 state=floating
bspc rule -a Kupfer.py focus=on
bspc rule -a Screenkey manage=off
No arquivo de configuração da polybar a única coisa que modifiquei foi a ordem de exibição da data e hora.
Poderia me ajudar a solucionar isso, por favor?
Além de uma outra coisa, queria determinar para que certos programas abrissem em áreas de trabalho específicas. Exemplo, o brave abrir sempre na área de trabalho da esquerda e o terminal na da direita, independente de qual área de trabalho eu esteja no momento de usar o rofi.
Desculpa se não fui claro ou se não era o local correto pra colocar minha dúvida e desde já agradeço a atenção!
Olá, Tudo ótimo! Espero que esteja tudo bem contigo também.
Se funcionou como desejava, é a forma correta para você. Pode não ser a forma mais fácil ou que a maioria faz, entre tanto, é a que lhe proporcionou exito.
Essa configuração no arquivo bspwmrc gerencia a quantidades de áreas e, dependendo do módulo da sua polybar, também os ícones. Acredito que, como está configurado como deseja no arquivo bspwmrc pode ser interessante olhar o arquivo config do módulo da sua polybar.
Em alguns casos, os módulos voltados especificamente para Openbox, não mostram os valores dos ícones, ficando apenas uma referência simbólica, por exemplo:
Exemplo do módulo que normalmente uso:
Config
[module/bspwm]
type = internal/bspwm
pin-workspaces = true
inline-mode = false
enable-click = true
enable-scroll = true
reverse-scroll = true
fuzzy-match = true
; ws-icon-[0-9]+ = label;icon
; Note that the label needs to correspond with the bspwm workspace name
;;ws-icon-0 = code;♚
;;ws-icon-1 = office;♛
;;ws-icon-2 = graphics;♜
;;ws-icon-3 = mail;♝
;;ws-icon-4 = web;♞
;;ws-icon-default = ♟
format = <label-state>
label-monitor = %name%
; If any values for label-dimmed-N are defined, the workspace/mode
; colors will get overridden with those values if the monitor is out of focus
; To only override workspaces in a specific state, use:
; label-dimmed-focused
; label-dimmed-occupied
; label-dimmed-urgent
; label-dimmed-empty
;label-dimmed-foreground = ${color.FOREGROUND}
;label-dimmed-underline = ${color.YELLOW}
;label-dimmed-focused-background = ${color.BACKGROUND}
label-focused = %name%
label-focused-foreground = ${color.BACKGROUND}
label-focused-background = ${color.BLUE}
;label-focused-underline = ${color.RED}
label-focused-padding = 1
label-occupied = %name%
label-occupied-foreground = ${color.BACKGROUND}
label-occupied-background = ${color.GREEN}
;label-occupied-underline = ${color.GREEN}
label-occupied-padding = 1
label-urgent = %name%
label-urgent-foreground = ${color.BACKGROUND}
label-urgent-background = ${color.RED}
;label-urgent-underline = ${color.RED}
label-urgent-padding = 1
label-empty = %name%
label-empty-foreground = ${color.FOREGROUND}
label-empty-padding = 1
; Separator in between workspaces
label-separator = " "
label-separator-padding = 0
;label-separator-foreground = ${color.YELLOW}
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Isso porque o sistema não entende que “V” significa necessariamente 5, ele apenas interpreta como um simbolo da área, com isso não importa o que é definido. Por ser a primeira referência no arquivo é entendido com o primeiro elemento.
Essa é uma regra que normalmente removo, mas vejo que pode ser interessante em alguns casos. Vou te passar as regras que tenho no script que deixei no github, acredito que será bem simples de entender a lógica e implementar conforme a sua necessidade.
Dentro do arquivo bspwmrc pode deixar dessa forma:
## Window rules ----------------------------------------------#
# remove all rules first
bspc rule -r *:*
# 1 > terminal
bspc rule -a Alacritty desktop='^1' follow=on focus=on
bspc rule -a Xfce4-terminal desktop='^1' follow=on focus=on
bspc rule -a gnome-terminal desktop='^1' follow=on focus=on
# 2 > web
bspc rule -a firefox desktop='^2' follow=on focus=on
bspc rule -a chromium desktop='^2' follow=on focus=on
# 3 > files
declare -a files=(Pcmanfm Thunar Nautilus qBittorrent)
for i in ${files[@]}; do
bspc rule -a $i desktop='^3' follow=on focus=on; done
# 4 > code
declare -a code=(Geany code-oss)
for i in ${code[@]}; do
bspc rule -a $i desktop='^4' follow=on focus=on; done
# 5 > office and docs
declare -a office=(Gucharmap Atril Evince \
libreoffice-writer libreoffice-calc libreoffice-impress \
libreoffice-startcenter libreoffice Soffice *:libreofficedev *:soffice)
for i in ${office[@]}; do
bspc rule -a $i desktop='^5' follow=on focus=on; done
# 6 > Communication
declare -a comm=(Thunderbird TelegramDesktop Hexchat)
for i in ${comm[@]}; do
bspc rule -a $i desktop='^6' follow=on focus=on; done
# 7 > media
declare -a media=(Audacity Music MPlayer Lxmusic Inkscape Gimp-2.10 obs)
for i in ${media[@]}; do
bspc rule -a $i desktop='^7' state=floating follow=on focus=on; done
# 8 > settings
bspc rule -a 'VirtualBox Manager' desktop='^8' follow=on focus=on
bspc rule -a GParted desktop='^8' follow=on focus=on
declare -a settings=(Lxappearance Lxtask Lxrandr Arandr \
System-config-printer.py Pavucontrol Exo-helper-1 \
Xfce4-power-manager-settings)
for i in ${settings[@]}; do
bspc rule -a $i desktop='^8' state=floating follow=on focus=on; done
# special rules
declare -a floating=(alacritty-float Pcmanfm Onboard Yad 'Firefox:Places' \
Viewnior feh Nm-connection-editor)
for i in ${floating[@]}; do
bspc rule -a $i state=floating follow=on focus=on; done
bspc rule -a Conky state=floating manage=off
bspc rule -a stalonetray state=floating manage=off
Note que para cada área há uma ou mais regras, é só editar como desejado.
Show! Até aqui consegui e entendi tudo com sucesso.
Infelizmente só não tive sucesso na questão determinar a área de trabalho específica para determinados programas. Mas vou revisar a sua dica sobre isso e procurar um pouco mais sobre também.
Voltarei com o retorno aqui assim que tiver tempo de tentar novamente.
Sempre será necessário usar o segundo campo. Se não me engano, o primeiro é a instância e o segundo a classe propriamente dita. Lembro de ter lido alguma coisa do tipo na documentação do i3wm. Então, se usar o conteúdo do primeiro campo, você nunca conseguirá obter a classe de fato, a não ser que o conteúdo de ambos seja o mesmo, o que acontece de vez em quando. Mas, como o exemplo do Brave mostrou, não é raro um dos campos vir com letras maiúsculas. E, como o linux é case sensitive, se tiver diferença não vai funcionar mesmo.
Muito bom o tópico. Como voltei a usar o bspwm de vez em quando, to pegando umas dicas aqui!
Olá @thespation e @Tuxraldo !
Fiz exatamente o que você falou e realmente deu certo.
Já usei o comando xprop | grep CLASS para identificar a Classe de acordo com o que o @Tuxraldo explicou aqui:
Só que infelizmente não estou conseguindo criar uma rule para o ranger, o que eu já imaginava que não daria certo. Pois a saída do comando quando clico no ranger é a seguinte: WM_CLASS(STRING) = "Alacritty", "Alacritty". Como disse, já imaginava que iria pegar a classe do Alacritty que é onde o ranger está sendo executado.
Será se existe uma maneira de criar uma rule para o Alacritty executando o ranger e/ou algum script/comando em específico? Se fosse possível, seria interessante, não acham?
O problema é que acabou sobrepondo a regra que tinha para o terminal da área 1. Vou tentar encontrar uma forma de especificar e manter a outra regra, esse pode ser o caminho.
Testei com o htop e também funcionou dessa forma.
Caso abra pelo menu (Rofi, dmenu, etc) vai respeitar a regra. Caso esteja com o terminal aberto em alguma outra área e rode o comando, a janela não será movida para a área da regra, ficando no local de origem do terminal.
Não sei como se faz isso, fiquei curioso. Vou pesquisar e tentar descobrir uma forma. Se conseguir volto aqui com o resultado.
Nas pesquisas que fiz, na documentação do bspwm e na internet, só consegui chegar ao mesmo resultado do @thespation.
EDIT: Aparentemente, usando a opção -o resolve o problema. Aqui, ao que tudo indica funcionou. Segui a ideia do William e, só trocando o Alacritty pelo xfc4-terminal, parece que deu certo. Se conseguirem, testem ai e me falem.
bspc rule -a Xfce4-terminal -name ‘cmus’ -o desktop=‘^1’ follow=on focus=on
Apenas mude o 1 pela área de trabalho pela de sua preferência e, se não quiser, remova os “follow” e “focus”. As duas últimas opções servem para dar foco e mover para a área de trabalho que a aplicação abrir.
Obs: fiz o teste criando um arquivo .desktop do cmus e mandando o xfce4-terminal abri-lo com o comando “xfce4-terminal -e /usr/bin/cmus” e depois executei com o rofi.
@Nildo_Lacerda esse opção só tem um problema. O -o significa one-shot, ou seja, se abrir o ranger novamente, ele não seguirá essa regra. Ele só seguirá ela na primeira vez que abrir o ranger. Depois só se der um reload no bspwm. Ainda não consegui descobrir um jeito e fazer isso de forma permanente. Vou ver mais um pouco a documentação e pesquisar pela net pra ver se acho um jeito de fazer de forma permanente.
Pior que durante o dia, por conta do trabalho, não tenho como pesquisar e testar possibilidades. E vocês estão ajudando demais da conta aqui! Muito obrigado mesmo!
Já à noite o tempo é bem curto pra fazer os testes. Mas no fim de semana pretendo estudar melhor a documentação e fazer alguns testes também.
Tenho quase certeza de que irá funcionar com WebApps do Brave também. Assim que testar, dou o retorno aqui!
Testei com o Arch e o Alacritty, porque uso o xfce4-terminal e tem alguns recursos que ele não tem. Principalmente esse da classe, o xfce4-terminal é meio chato com isso.
É usando a opção de classe mesmo que vai resolver. Dessa vez sem truque de funcionar somente uma vez kkkkkkk Não sei se essa é a melhor forma de fazer isso, mas funcionou perfeitamente aqui.
Você terá que fazer modificações em dois arquivos, no bspwmrc e no (s) arquivo (s) .desktop do (s) programas que quer lançar.
No seu bspwmrc adicione (trocando o 1 pela área de trabalho de sua preferência e vifm pelo programa que quiser. Novamente, follow e focus são opcionais):
bspc rule -a ‘Alacritty:vifm’ desktop=‘^1’ focus=on follow=on
No arquivo .desktop do ranger, na linha Exec, troque o conteúdo atual pelo seguinte:
alacritty --class vifm -e vifm
No comando acima, a primeira parte, auto explicativa, é a classe (definida também lá no bspwmrc), no segundo, o -e é de --command. Com a opção -e o terminal funcionará executando o comando predefinido, no meu exemplo, o vifm. O -e é apenas um atalho para não precisar digitar --command vifm e usar apenas -e vifm. Essa opção -e, disponível em praticamente todos os terminais, é útil para lançar programas que rodam via terminal através de lançadores de aplicações como o rofi, dmenu, ulauncher etc. Sem precisar abrir o terminal e digitar o comando, essa opção já abre o terminal e roda o comando ao mesmo tempo.
Aqui no Arch está funcionando perfeitamente. Consigo abrir somente o ranger na área de trabalho 1 sem alterar a regra do Alacritty, ou seja, consigo abrir ele em outra área de trabalho específica se quiser ou posso abrir em qualquer área de trabalho.
Obs: normalmente os arquivos .desktop ficam em /usr/share/applications ou em $HOME/.local/share/applications.
Foi meio corrido estes últimos dias e fiz alguns testes. Inclusive os que você sugeriu @Tuxraldo.
Obtive sucesso (em parte).
Como mexi em outras coisa, acho que acabei bugando o meu sistema. Mas pretendo, em breve, refazer a minha instalação e ir configurando tudo aos poucos me baseando nas dicas que vocês deram. E quando fizer, posto aqui o resultado geral.
Mas claro, tudo mais que vocês puderem e quiserem adicionar aqui vai, com certeza, me ajudar ainda mais!
Testei aqui no Arch novamente, agorinha mesmo, e funcionou de boa.
Se quiser, poste o conteúdo do arquivo .desktop e do seu bspwmrc completos aqui que a gente dá um olhada. Tá usando com o alacritty mesmo? E, também, se quiser, descreve o que ocorreu, ou seja, porque funcionou apenas em parte.
O conteúdo no meu bspwm tá:
bspc rule -a 'Alacritty:ranger' desktop='^1'
Testei com e sem as opções follow e focus individualmente. Para ver se poderia ser algum bug ou limitações das opções e tudo funcionou normal, com ou sem elas.
O conteúdo do arquivo .desktop ($HOME/.local/share/applications) é seguinte (aberto através do rofi):
O ranger as vezes abre no desktop 6, onde o alacritty já está aberto. Mesmo que seja a primeira vez que vou abri-lo.
Ah, e um outro problema (não relacionado) que venho tendo, é que a transparência não fuinciona mais. Mas isso, acho que desde o começo quando instalei o Alacritty e removi o Kitty.
Peguei suas configs do Alacritty e consegui reproduzir o mesmo comportamento que você citou.
Não entendo muito do bspwm, mas, provavelmente, o problema é sua regra para o Alacritty.
bspc rule -a Alacritty desktop='^6' follow=on focus=on
Acho que o bspwm entende, em alguns momentos, que todas as janelas do Alacritty devem seguir o comportamento definido por essa linha. Para resolver, eu apenas defini uma regra específica para o próprio Alacritty. Basta modificar sua linha para (e mandar um reload no bspwm):
bspc rule -a 'Alacritty:Alacritty' desktop='^6' follow=on focus=on
Desse modo, aqui tudo funcionou normal. E não tive mais esse problema que você citou. Veja se resolve ai.
Ih, não uso transparência. Então nisso não posso ajudar.
@Nildo_Lacerda e @thespation testaram por ai? Definindo a regra para o próprio alacritty resolve, certo?
Aproveitei e testei com o kittty também. Embora não use nem o alacritty nem o kitty, o pessoal gosta bastante deles. Quando tiver tempo, posto aqui como fazer a mesma coisa só que com o kitty.