i3: 새 창을 일시적으로 강제로 열 수 있나요?

i3: 새 창을 일시적으로 강제로 열 수 있나요?

창이 곧 열릴 것이라는 것을 알고 있는 상황에서는 때때로 창이 정상적으로 열리기를 원하지만(다른 창의 크기를 조정하여 공간을 확보하도록 함) 다른 경우에는 창을 부동 상태로 유지하고 크기 조정을 방지하기를 원할 것입니다. 이러한 상황 중 하나는 많은 터미널 창이 열려 있을 때 크기를 조정하면 디스플레이가 복잡해지기 때문에 새 창을 잠깐만 표시하고 싶은 경우입니다.

적어도 이 질문의 목적을 위해서는 애플리케이션별 또는 창 클래스 규칙을 구성하고 싶지 않습니다.

내가 원하는 것은 창이 열려 있을 것으로 예상하는 동안 키를 누르고 있을 수 있는 것입니다. 키를 누르고 있으면 새 창이 강제로 부동 상태가 되어 다른 창의 크기가 조정되지 않습니다.

그런 일이 가능합니까? 어떻게 구현할 수 있나요?

답변1

이것은 주로 i3과 호환되는 sway에서 저에게 효과적이었습니다.

set $mod Mod4
set $float disable
bindsym $mod+f set $$float enable
for_window [title=".*"] floating $$float; set $$float disable

이제 을 누르면 Mod4+f열리는 다음 창이 떠 있지만 그 이후의 새 창은 Mod4+f다시 누를 때까지 타일링됩니다. 이는 swaymsg와 동일합니다 i3msg.

당신이 물었어요유지하다부동 동작에 참여하는 키입니다. i3/sway에서 수정자 키의 상태를 쿼리할 수 있는 방법이 없기 때문에 일반적인 방식으로 구성하기가 어려워 보입니다(어쨌든 모르겠습니다). 부동 모드에서 실행해야 하는 프로그램 수가 적은 경우 다음과 같이 각 프로그램에 대해 개별적으로 동작을 구성할 수 있습니다.

bindsym $mod+z exec evince
bindsym $mod+Shift+z set $$float enable; exec evince

첫 번째 답변의 기준에는 [title=".*"]모든 창이 포함됩니다. 이로 인해 대화 상자가 기본적으로 더 이상 부동 상태가 되지 않는 등 예기치 않은 문제가 발생할 수 있습니다. 영향을 받지 않으려는 창 유형을 제외하려면 기준을 좁혀야 합니다. 또는 다음과 같이 작동할 수도 있습니다.

set $float toggle
bindsym $mod+f set $$float enable
for_window [title=".*"] floating $$float, floating $$float, set $$float toggle

floating toggle, floating toggle효과가 없어야 하므로 원래 부동 상태를 유지해야 합니다.

관련 정보