1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
import pytest
import libqtile.config
from libqtile import layout
from libqtile.config import Match
from libqtile.confreader import Config
from test.layouts.layout_utils import assert_dimensions, assert_focus_path, assert_focused
class SliceConfig(Config):
auto_fullscreen = True
groups = [
libqtile.config.Group("a"),
]
layouts = [
layout.Slice(
side="left",
width=200,
match=Match(title="slice"),
fallback=layout.Stack(num_stacks=1, border_width=0),
),
layout.Slice(
side="right",
width=200,
match=Match(title="slice"),
fallback=layout.Stack(num_stacks=1, border_width=0),
),
layout.Slice(
side="top",
width=200,
match=Match(title="slice"),
fallback=layout.Stack(num_stacks=1, border_width=0),
),
layout.Slice(
side="bottom",
width=200,
match=Match(title="slice"),
fallback=layout.Stack(num_stacks=1, border_width=0),
),
]
floating_layout = libqtile.resources.default_config.floating_layout
keys = []
mouse = []
screens = []
follow_mouse_focus = False
slice_config = pytest.mark.parametrize("manager", [SliceConfig], indirect=True)
@slice_config
def test_no_slice(manager):
manager.test_window("one")
assert_dimensions(manager, 200, 0, 600, 600)
manager.test_window("two")
assert_dimensions(manager, 200, 0, 600, 600)
@slice_config
def test_slice_first(manager):
manager.test_window("slice")
assert_dimensions(manager, 0, 0, 200, 600)
manager.test_window("two")
assert_dimensions(manager, 200, 0, 600, 600)
@slice_config
def test_slice_last(manager):
manager.test_window("one")
assert_dimensions(manager, 200, 0, 600, 600)
manager.test_window("slice")
assert_dimensions(manager, 0, 0, 200, 600)
@slice_config
def test_slice_focus(manager):
manager.test_window("one")
assert_focused(manager, "one")
two = manager.test_window("two")
assert_focused(manager, "two")
slice = manager.test_window("slice")
assert_focused(manager, "slice")
assert_focus_path(manager, "slice")
manager.test_window("three")
assert_focus_path(manager, "two", "one", "slice", "three")
manager.kill_window(two)
assert_focus_path(manager, "one", "slice", "three")
manager.kill_window(slice)
assert_focus_path(manager, "one", "three")
slice = manager.test_window("slice")
assert_focus_path(manager, "three", "one", "slice")
@slice_config
def test_all_slices(manager):
manager.test_window("slice") # left
assert_dimensions(manager, 0, 0, 200, 600)
manager.c.next_layout() # right
assert_dimensions(manager, 600, 0, 200, 600)
manager.c.next_layout() # top
assert_dimensions(manager, 0, 0, 800, 200)
manager.c.next_layout() # bottom
assert_dimensions(manager, 0, 400, 800, 200)
manager.c.next_layout() # left again
manager.test_window("one")
assert_dimensions(manager, 200, 0, 600, 600)
manager.c.next_layout() # right
assert_dimensions(manager, 0, 0, 600, 600)
manager.c.next_layout() # top
assert_dimensions(manager, 0, 200, 800, 400)
manager.c.next_layout() # bottom
assert_dimensions(manager, 0, 0, 800, 400)
@slice_config
def test_command_propagation(manager):
manager.test_window("slice")
manager.test_window("one")
manager.test_window("two")
info = manager.c.layout.info()
assert info["name"] == "slice"
org_height = manager.c.window.info()["height"]
manager.c.layout.toggle_split()
assert manager.c.window.info()["height"] != org_height
@slice_config
def test_command_propagation_direct_call(manager):
manager.test_window("slice")
manager.test_window("one")
manager.test_window("two")
info = manager.c.layout.info()
assert info["name"] == "slice"
org_height = manager.c.window.info()["height"]
manager.c.layout.eval("self.toggle_split()")
assert manager.c.window.info()["height"] != org_height
@slice_config
def test_move_to_slice(manager):
manager.test_window("one")
manager.test_window("two")
info = manager.c.layout.info()
# Neither of these windows should be in the slice
assert not info["single"]["window"]
# Move current window to slice
manager.c.layout.move_to_slice()
info = manager.c.layout.info()
assert info["single"]["window"] == "two"
assert info["stack"]["clients"] == ["one"]
assert_focused(manager, "two")
# Switch focus to "one" and put it in slice
manager.c.group.focus_back()
assert_focused(manager, "one")
manager.c.layout.move_to_slice()
info = manager.c.layout.info()
assert info["single"]["window"] == "one"
assert info["stack"]["clients"] == ["two"]
|