-
Notifications
You must be signed in to change notification settings - Fork 0
/
Qtile---make-workspaces-span-across-screens.html
91 lines (90 loc) · 22.5 KB
/
Qtile---make-workspaces-span-across-screens.html
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
<!DOCTYPE html>
<html lang="en"><head><title>Qtile - make workspaces span across screens</title><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta property="og:title" content="Qtile - make workspaces span across screens"/><meta property="og:description" content="linking groups - thinking have different groups on different screens assign i to screen 1 and i+10 to screen 2 use mod + , to toggle between screens, when one screen disconnects will have to check if screen 2 exists or not code @lazy."/><meta property="og:image" content="https://sohanglal.github.io/static/og-image.png"/><meta property="og:width" content="1200"/><meta property="og:height" content="675"/><link rel="icon" href="./static/icon.png"/><meta name="description" content="linking groups - thinking have different groups on different screens assign i to screen 1 and i+10 to screen 2 use mod + , to toggle between screens, when one screen disconnects will have to check if screen 2 exists or not code @lazy."/><meta name="generator" content="Quartz"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com"/><link href="./index.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" rel="stylesheet" type="text/css" spa-preserve/><link href="https://fonts.googleapis.com/css2?family=IBM Plex Mono&family=Schibsted Grotesk:wght@400;700&family=Source Sans Pro:ital,wght@0,400;0,600;1,400;1,600&display=swap" rel="stylesheet" type="text/css" spa-preserve/><script src="./prescript.js" type="application/javascript" spa-preserve></script><script type="application/javascript" spa-preserve>const fetchData = fetch("./static/contentIndex.json").then(data => data.json())</script></head><body data-slug="Qtile---make-workspaces-span-across-screens"><div id="quartz-root" class="page"><div id="quartz-body"><div class="left sidebar"></div><div class="center"><div class="page-header"><header><h1 class="page-title"><a href=".">🚪</a></h1><p><a href="https://sohanglal.github.io/about"> About | </a><a href="https://docs.google.com/forms/d/e/1FAIpQLSfR4t0D0jDFWC8E6lWkJ0lzpEqUygOcHrom07Z6HCiLZoPcmA/viewform?usp=sf_link"> Contact </a></p><div class="darkmode"><input class="toggle" id="darkmode-toggle" type="checkbox" tabindex="-1"/><label id="toggle-label-light" for="darkmode-toggle" tabindex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="dayIcon" x="0px" y="0px" viewBox="0 0 35 35" style="enable-background:new 0 0 35 35" xml:space="preserve"><title>Dark mode</title><path d="M6,17.5C6,16.672,5.328,16,4.5,16h-3C0.672,16,0,16.672,0,17.5 S0.672,19,1.5,19h3C5.328,19,6,18.328,6,17.5z M7.5,26c-0.414,0-0.789,0.168-1.061,0.439l-2,2C4.168,28.711,4,29.086,4,29.5 C4,30.328,4.671,31,5.5,31c0.414,0,0.789-0.168,1.06-0.44l2-2C8.832,28.289,9,27.914,9,27.5C9,26.672,8.329,26,7.5,26z M17.5,6 C18.329,6,19,5.328,19,4.5v-3C19,0.672,18.329,0,17.5,0S16,0.672,16,1.5v3C16,5.328,16.671,6,17.5,6z M27.5,9 c0.414,0,0.789-0.168,1.06-0.439l2-2C30.832,6.289,31,5.914,31,5.5C31,4.672,30.329,4,29.5,4c-0.414,0-0.789,0.168-1.061,0.44 l-2,2C26.168,6.711,26,7.086,26,7.5C26,8.328,26.671,9,27.5,9z M6.439,8.561C6.711,8.832,7.086,9,7.5,9C8.328,9,9,8.328,9,7.5 c0-0.414-0.168-0.789-0.439-1.061l-2-2C6.289,4.168,5.914,4,5.5,4C4.672,4,4,4.672,4,5.5c0,0.414,0.168,0.789,0.439,1.06 L6.439,8.561z M33.5,16h-3c-0.828,0-1.5,0.672-1.5,1.5s0.672,1.5,1.5,1.5h3c0.828,0,1.5-0.672,1.5-1.5S34.328,16,33.5,16z M28.561,26.439C28.289,26.168,27.914,26,27.5,26c-0.828,0-1.5,0.672-1.5,1.5c0,0.414,0.168,0.789,0.439,1.06l2,2 C28.711,30.832,29.086,31,29.5,31c0.828,0,1.5-0.672,1.5-1.5c0-0.414-0.168-0.789-0.439-1.061L28.561,26.439z M17.5,29 c-0.829,0-1.5,0.672-1.5,1.5v3c0,0.828,0.671,1.5,1.5,1.5s1.5-0.672,1.5-1.5v-3C19,29.672,18.329,29,17.5,29z M17.5,7 C11.71,7,7,11.71,7,17.5S11.71,28,17.5,28S28,23.29,28,17.5S23.29,7,17.5,7z M17.5,25c-4.136,0-7.5-3.364-7.5-7.5 c0-4.136,3.364-7.5,7.5-7.5c4.136,0,7.5,3.364,7.5,7.5C25,21.636,21.636,25,17.5,25z"></path></svg></label><label id="toggle-label-dark" for="darkmode-toggle" tabindex="-1"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="nightIcon" x="0px" y="0px" viewBox="0 0 100 100" style="enable-background:new 0 0 100 100" xml:space="preserve"><title>Light mode</title><path d="M96.76,66.458c-0.853-0.852-2.15-1.064-3.23-0.534c-6.063,2.991-12.858,4.571-19.655,4.571 C62.022,70.495,50.88,65.88,42.5,57.5C29.043,44.043,25.658,23.536,34.076,6.47c0.532-1.08,0.318-2.379-0.534-3.23 c-0.851-0.852-2.15-1.064-3.23-0.534c-4.918,2.427-9.375,5.619-13.246,9.491c-9.447,9.447-14.65,22.008-14.65,35.369 c0,13.36,5.203,25.921,14.65,35.368s22.008,14.65,35.368,14.65c13.361,0,25.921-5.203,35.369-14.65 c3.872-3.871,7.064-8.328,9.491-13.246C97.826,68.608,97.611,67.309,96.76,66.458z"></path></svg></label></div><div class="search"><div id="search-icon"><p>Search</p><div></div><svg tabindex="0" aria-labelledby="title desc" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.9 19.7"><title id="title">Search</title><desc id="desc">Search</desc><g class="search-path" fill="none"><path stroke-linecap="square" d="M18.5 18.3l-5.4-5.4"></path><circle cx="8" cy="8" r="7"></circle></g></svg></div><div id="search-container"><div id="search-space"><input autocomplete="off" id="search-bar" name="search" type="text" aria-label="Search for something" placeholder="Search for something"/><div id="search-layout" data-preview="true"></div></div></div></div></header><div class="popover-hint"><h1 class="article-title">Qtile - make workspaces span across screens</h1></div></div><article class="popover-hint"><h1 id="linking-groups---thinking">linking groups - thinking<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#linking-groups---thinking" class="internal"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h1>
<ol>
<li>have different groups on different screens</li>
<li>assign i to screen 1 and i+10 to screen 2</li>
</ol>
<ul>
<li>use mod + , to toggle between screens, when one screen disconnects</li>
</ul>
<ol start="2">
<li>will have to check if screen 2 exists or not</li>
</ol>
<h1 id="code">code<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#code" class="internal"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h1>
<figure data-rehype-pretty-code-figure><pre tabindex="0" data-language="python" data-theme="github-dark github-light"><code data-language="python" data-theme="github-dark github-light" style="display:grid;"><span data-line> </span>
<span data-line><span style="--shiki-dark:#B392F0;--shiki-light:#6F42C1;">@lazy.function</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">def</span><span style="--shiki-dark:#B392F0;--shiki-light:#6F42C1;"> move_window_to_alternate_group</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile):</span></span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> int</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile.current_group.name) </span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> if</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"><</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> qtile.current_window.togroup(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">+</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">))</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> else</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> qtile.current_window.togroup(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">-</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">))</span></span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">keys.extend([Key([mod], </span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"comma"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">, focus_group, </span><span style="--shiki-dark:#FFAB70;--shiki-light:#E36209;">desc</span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"Next monitor"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">),])</span></span>
<span data-line> </span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#B392F0;--shiki-light:#6F42C1;">@lazy.function</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">def</span><span style="--shiki-dark:#B392F0;--shiki-light:#6F42C1;"> focus_group</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile):</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> int</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile.current_group.name) </span></span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> if</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> len</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile.screens) </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">></span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 1</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> qtile.next_screen()</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> else</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> int</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(qtile.current_group.name) </span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> if</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"><</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> qtile.current_screen.toggle_group(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">+</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">))</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> else</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">:</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> qtile.current_screen.toggle_group(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(group </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">-</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> 10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">))</span></span>
<span data-line> </span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # maybe works api</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # qtile.current_group.switch_groups('9')</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # ^ works but group object needs to be passed</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # qtile.groups_map['1'].to_screen()</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # qtile.current_screen.set_group('11')</span></span>
<span data-line> </span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">keys.extend([Key([mod , </span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"shift"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">], </span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"comma"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">, move_window_to_alternate_group, </span><span style="--shiki-dark:#FFAB70;--shiki-light:#E36209;">desc</span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"Next monitor"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">),])</span></span>
<span data-line> </span>
<span data-line> </span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">groups </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">=</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> []</span></span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">for</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> i </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">in</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> range</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">0</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">,</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">20</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">):</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> groups.append(Group(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i)))</span></span>
<span data-line> </span>
<span data-line> </span>
<span data-line><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">for</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> i </span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;">in</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> range</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">0</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">,</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">10</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">):</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> keys.extend(</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> [</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # navigation </span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # lazy.group[group.name].toscreen(toggle=True),</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> Key([mod], </span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i), lazy.group[</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i)].toscreen(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">0</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">), lazy.group[</span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">'1'</span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> +</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i)].toscreen(</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">1</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">)),</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # move window to group</span></span>
<span data-line><span style="--shiki-dark:#6A737D;--shiki-light:#6A737D;"> # Key([mod, "shift"], group.name, lazy.window.togroup(group.name),</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> Key([mod, </span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">"shift"</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">], </span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;">str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i), lazy.window.togroup( </span><span style="--shiki-dark:#9ECBFF;--shiki-light:#032F62;">'1'</span><span style="--shiki-dark:#F97583;--shiki-light:#D73A49;"> +</span><span style="--shiki-dark:#79B8FF;--shiki-light:#005CC5;"> str</span><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;">(i))),</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> ]</span></span>
<span data-line><span style="--shiki-dark:#E1E4E8;--shiki-light:#24292E;"> )</span></span>
<span data-line> </span></code></pre></figure>
<h1 id="references">references<a role="anchor" aria-hidden="true" tabindex="-1" data-no-popover="true" href="#references" class="internal"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg></a></h1>
<p><a href="https://github.com/qtile/qtile/discussions/3035" class="external alias">Feature request: allow windows from the same group to be present on multiple screens (i.e.allow groups to span screens) · qtile/qtile · Discussion #3035 · GitHub</a></p>
<p>I don’t imagine we will implement this internally as we prefer to keep things flexible and configurable enough for users to define their own specific behaviour. This use case is a good example of this as it’s already possible (with a bit of work!).</p>
<p>My first thought of how to implement it was slightly different than using the hooks - instead you could define your keybindings to directly modify pairs of groups so that they always are kept together. E.g. <code>mod+1</code> could move group A and B to the screens, <code>mod+2</code> would move groups C and D to the screens. Similarly <code>mod+shift+1</code> could move the current window to group A or B depending on whether it was on an odd numbered group (i.e. C, E) or even (i.e. D, F). From the keybindings point of view you are considering pairs of groups as a single workspace. If you use <code>GroupBox</code> you could make it only display groups A, C, E etc so that it gives you a consistent experience.</p></article></div><div class="right sidebar"><div class="backlinks"><h3>Backlinks</h3><ul class="overflow"><li><a href="./" class="internal"></a></li></ul></div></div></div><footer class><hr/><ul></ul></footer></div></body><script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/contrib/copy-tex.min.js" type="application/javascript"></script><script type="application/javascript">function c(){let t=this.parentElement;t.classList.toggle("is-collapsed");let l=t.classList.contains("is-collapsed")?this.scrollHeight:t.scrollHeight;t.style.maxHeight=l+"px";let o=t,e=t.parentElement;for(;e;){if(!e.classList.contains("callout"))return;let n=e.classList.contains("is-collapsed")?e.scrollHeight:e.scrollHeight+o.scrollHeight;e.style.maxHeight=n+"px",o=e,e=e.parentElement}}function i(){let t=document.getElementsByClassName("callout is-collapsible");for(let s of t){let l=s.firstElementChild;if(l){l.addEventListener("click",c),window.addCleanup(()=>l.removeEventListener("click",c));let e=s.classList.contains("is-collapsed")?l.scrollHeight:s.scrollHeight;s.style.maxHeight=e+"px"}}}document.addEventListener("nav",i);window.addEventListener("resize",i);
</script><script type="module">
let mermaidImport = undefined
document.addEventListener('nav', async () => {
if (document.querySelector("code.mermaid")) {
mermaidImport ||= await import('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs')
const mermaid = mermaidImport.default
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
theme: darkMode ? 'dark' : 'default'
})
await mermaid.run({
querySelector: '.mermaid'
})
}
});
</script><script src="./postscript.js" type="module"></script></html>