-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblog-2025.html
More file actions
344 lines (307 loc) · 10.3 KB
/
Copy pathblog-2025.html
File metadata and controls
344 lines (307 loc) · 10.3 KB
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
<!DOCTYPE html>
<html lang=en>
<head>
<title>teallach desktop</title>
<meta charset="utf-8" />
<meta name="description" content="Teallach - a micro Desktop Environment"/>
<meta name="viewport" content="width=device-width">
<style>
body {
overflow-y: scroll;
font-family: sans-serif;
font-size: 100%;
max-width: 640px;
padding: 20px;
line-height: 1.5;
word-wrap: break-word;
margin: auto;
text-align: justify;
text-justify: inter-word;
--color-bg: #2E3436;
--color-hl: #333;
--color-fg: #C0C0C0;
--color-link: #FFFFFF;
--color-subtle: #555;
color: var(--color-fg);
background-color: var(--color-bg);
}
#menu {
font-family: sans-serif !important;
}
pre {
padding: 20px;
white-space: pre;
overflow-x: auto;
border: 1px dotted gray;
display: block;
margin: 20px auto;
color: var(--color-fg);
background-color: var(--color-bg);
}
code {
font-family: monospace;
color: var(--color-fg);
background-color: var(--color-bg);
}
img {
margin: 0px;
margin-bottom: 20px;
margin-top: 20px;
max-width: 100%;
}
table {
border-collapse: collapse;
}
table,th,td {
border: 1px solid black;
}
th,td {
padding: 15px;
text-align: left;
}
h1 a, h2 a, h3 a, h4 a, h5 a {
text-decoration: none;
}
h1, h2, h3, h4, h5 {
color: var(--color-fg);
font-family: sans-serif;
font-weight: bold;
}
h1 {
font-size: 130%;
}
h2 {
font-size: 120%;
}
h3 {
font-size: 110%;
}
h4 {
font-size: 105%;
font-style: italic;
}
h5 {
font-size: 100%;
font-style: italic;
}
dt code {
font-weight: bold;
}
dd p {
margin-top: 0;
}
a, a:visited {
color: var(--color-link);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a.perma {
display: none;
}
a.perma:hover {
text-decoration: none;
}
:hover > a.perma {
width: 1.5em;
margin-left: -1.5em;
display: inline-block;
}
:target {
background-color: rgba(128, 128, 128, 0.2);
}
.LOC {
margin: 2em 0;
}
</style>
</head>
<body>
<main>
<center id="menu">
[<a href="index.html">home</a>]
[<a href="blog.html">blog</a>]
[<a href="manual.html">manual</a>]
[<a href="https://github.com/teallach-desktop/teallach">code</a>]
</center>
<!--%%%TOC%%%-->
<h1 id="freedesktop">2025.43</h1>
<p><a href="https://www.freedesktop.org/">freedesktop.org</a> is a great
place to draw inspiration when authoring a Desktop Environment. For a
start, they host projects upon which labwc and teallach are built, like
Cairo, Mesa, Pixman, libinput, wlroots and Wayland. Further, they
promote specifications and standards to help DEs co-exist, for example
the Base Directory Specification.</p>
<p>First things first, we set
<code>XDG_CURRENT_DESKTOP=teallach;wlroots</code> because otherwise it
does not feel like we are a Desktop Environment. This enables
<code>xdg-desktop-portal</code> and tools like <a
href="https://wiki.archlinux.org/title/Xdg-utils#xdg-open">xdg-open</a>
to operate in a teallach centric way. For example, we can now use
<code>teallach-mimeapps.list</code> so that <code>pcmanfm-qt</code> and
others can associate the right apps with files without affecting other
DEs with whom teallach may co-exist.</p>
<p>We use the following wrappers to support setting favorite apps:</p>
<ul>
<li><code>tl-web-browser</code>: makes use of
<code>xdg-settings get default-web-browser</code>. We could consider
<code>xdg-open https://</code> for this; it is not clear which is
better.</li>
<li><code>tl-file-manager</code>: simply runs
<code>xdg-open .</code></li>
</ul>
<p>We ought to consider something like <code>tl-terminal-exec</code>
too. There does not appear to be anything generic for opening a
terminal. We like <code>xdg-terminal-exec</code> which is packaged on
debian trixie, but weirdly not on Arch.</p>
<p>It is tempting to write our own alternative to <a
href="https://wiki.archlinux.org/title/Xdg-utils#xdg-open">xdg-open</a>,
but it feels better to just stick with the fd.o standard. <a
href="https://github.com/hckiang/slopen">slopen</a> would have been
quite a nice starting point for this.</p>
<p>Interestingly, for already established DEs, <a
href="https://wiki.archlinux.org/title/Xdg-utils#xdg-open">xdg-open</a>
invokes to their respective resource openers (e.g. <code>exo-open</code>
on Xfce). For us, the <a
href="https://gitlab.freedesktop.org/xdg/xdg-utils/-/blob/master/scripts/xdg-open.in?ref_type=heads">xdg-open-script</a>
does the hard work (see <code>open_generic()</code>).</p>
<h1 id="trixie">2025.42</h1>
<p>A spin with <a href="https://www.debian.org/">trixie</a>.</p>
<ol type="1">
<li>Boot the trixie net-install iso</li>
<li>Choose <code>install</code> rather than
<code>graphical install</code></li>
<li>Untick <code>debian desktop environment</code> and
<code>GNOME</code></li>
<li>As root, install sudo and run
<code>usermod -a -G sudo <user></code></li>
<li>Reboot</li>
<li>Log in as yourself and do the following:</li>
</ol>
<pre><code>sudo apt install labwc git pkg-config make gcc scdoc meson dialog swaybg \
foot wlr-randr wtype pyqt6-dev wf-recorder xdg-utils xfce4-panel \
featherpad
# To build+install labwc-tweaks you'll also need the packages listed
# below. You can of course run labwc/teallach without it, but suggest
# just going with it to get a feel for the setup.
sudo apt install cmake qt6-base-dev qt6-tools-dev qt6-wayland-dev \
libglib2.0-dev libxkbcommon-dev libxml2-dev
# We've installed xfce4-panel above, but if you want teallach's tint panel
# you'll additionally need:
sudo apt install layer-shell-qt liblayershellqtinterface-dev libsfdo-dev \
qt6-wayland-private-dev qt6-base-private-dev
mkdir bin
# logout and login again for .profile to add ~/bin to $PATH
git clone https://github.com/teallach-desktop/teallach
cd teallach
./install-subprojects
./configure
make
make install
# In the teallach-welcome script, choose either xfce4-panel or tint depending
# on what you've installed and then hit 'Apply'
teallach-welcome
teallach
# In way of post-installation steps, consider the following:
./contrib/post-installation-01-foot.sh
sudo apt install qt-style-kvantum qt6ct papirus-icon-theme
# - Run qt6ct and set style=kvantum
# - Run kvantummanager, and under 'change theme', choose KvGnomeDark and hit
# 'use this theme'
# - Run labwc-tweaks and set icon-theme=Papirus
# - Finally select 'reconfigure' in the compositor root menu</code></pre>
<h1 id="logo">2025.41</h1>
<p><span class="citation" data-cites="01micko">@01micko</span> has
created a logo for this. Thanks! We have loosely named it
shebang-redirect.</p>
<p><img src="images/bang-dark.png"/></p>
<h1 id="installation">2025.38</h1>
<p>It appears that not all users like to install things in their
<code>$HOME</code> directory. Teallach can now be install on Arch Linux
like this:</p>
<ol type="1">
<li>Boot from an Arch Linux iso</li>
<li>Run <code>archinstall</code> and use profile <code>Labwc</code></li>
<li>Install <code>git</code></li>
<li>Download the bootstrap script with</li>
</ol>
<pre><code>git clone https://github.com/teallach-desktop/bootstrap-arch.git</code></pre>
<ol start="5" type="1">
<li>Run the script with
<code>cd bootstrap-arch ; ./bootstrap.sh</code></li>
<li>Run <code>teallach-welcome</code> to populate
<code>~/.config/teallach/</code></li>
<li>Reboot and choose <code>Teallach</code> at the display manager
prompt (I used SDDM)</li>
</ol>
<blockquote>
<p>Note: All the bootstrap script does is to build arch packages for
<code>tint</code>, <code>labwc-menu-generator</code>,
<code>labwc-tweaks</code> and <code>teallach</code> using the PKGBUILD
files in the boostrap repo.</p>
</blockquote>
<p><img src="images/2025-38-scrot.png"/></p>
<h1 id="nitrogen">2025.35</h1>
<p>So far, teallach consists of only some scaffoldnig. A rough shape is
starting to emerge.</p>
<p>This week saw the addition of a rudimentary wallpaper setter client -
in a mere 129 lines of python code. We do not need too many helper apps
like that, but setting the wallpaper by editing files manually is just
hard work.</p>
<pre><code>teallach-nitrogen</code></pre>
<p>We use the Kvantum theme <code>KvGnomeDark</code>.</p>
<h1 id="welcome-script">2025.34</h1>
<h2 id="post-installation-script">Post-installation Script</h2>
<p>It is not great for a packaged program to install files in
<code>$HOME</code>. So when considering how teallach files should be
organised, it seems like a post-installation script is required to write
files like <code>~/.config/teallach/autostart</code></p>
<pre><code>teallach-welcome</code></pre>
<p><img src="images/2025-34-welcome.png"/></p>
<p>As this matures, we may consider using the
<code>--merge-config</code> flag and use a script to start the
compositor which first adds <code>/usr/share/teallach/...</code> into
<code>XDG_CONFIG_DIRS</code>.</p>
<h2 id="theming">Theming</h2>
<p>Let us favour Server Side Decoration.</p>
<video width="180" height="90" controls>
<source src="images/2025-34-theme.webm" type="video/webm"/>
Your browser does not support the video tag.
</video>
<h1 id="menu_">2025.33</h1>
<h2 id="menu">Menu</h2>
<p>We have a menu! It is generated by <a
href="https://github.com/teallach-desktop/teallach/tree/master/src/teallach-menu">teallach-menu</a>,
which coverts a human-readable menu format (example below) into openbox
compliant XML.</p>
<pre><code>item Browser firefox
item Terminal foot
item Tweaks labwc-tweaks
sepr
exec labwc-menu-generator -b -t foot
sepr
menu Preferences
item "Edit rc.xml" "featherpad ~/.config/labwc/rc.xml"
item "Edit autostart" "featherpad ~/.config/labwc/autostart"
menu Exit
conf Reconfigure
exit Logout</code></pre>
<p><img src="images/2025-33-menu.png"/></p>
<h2 id="palette">Palette</h2>
<p>I think this palette looks good. It is not too dissimilar to that of
CrunchBang and works fine with Adwaita Dark.</p>
<p><img src="images/2025-33-palette.png"/></p>
<pre><code>foot -o colors.background=505050
tl-view-palette ~/.local/share/themes/teallach/labwc/palette.txt</code></pre>
<h1 id="alpine">2025.32</h1>
<p>If we start with a bare Alpine Linux installation, how much glue is
needed to turn <code>labwc</code> into something that feels like a
Desktop Environment?</p>
<p><code>labwc</code> is running on Alpine 3.22 with only the following
packages: <code>doas</code>, <code>labwc</code>,
<code>ttf-dejavu</code>, <code>seatd</code>,
<code>mesa-dri-gallium</code>, <code>dbus</code>, <code>dbus-x11</code>,
<code>xwayland</code>.</p>
</main>
</body>
</html>