This commit is contained in:
2025-11-08 12:35:53 +01:00
parent eae4e0cf7b
commit 33a66fc273
172 changed files with 230 additions and 81 deletions

View File

@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2025-11-07 -->
<!-- 2025-11-08 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=100%, initial-scale=0.7" />
<title>Framework Laptop Review</title>
@@ -308,7 +308,7 @@ This required setting up a swap file and setting a kernel command line parameter
<h5 id="org3b37e14"><a href="http://guake-project.org/">Guake</a>-like transient terminal</h5>
<div class="outline-text-5" id="text-org3b37e14">
<p>
Using some <code>fish</code> scripts, <code>bspwm</code>, <code>picom</code> and <code>xst</code> I rigged up a transient, transparent terminal to use for quick shell jobs. I used the scripts and config file in <a href="#org5a139df">Appendix A</a> to do this. The implementation is a bit hacky, and it&rsquo;s not impossible to break, but it serves my purposes well (and more important, it was fun to make)!
Using some <code>fish</code> scripts, <code>bspwm</code>, <code>picom</code> and <code>xst</code> I rigged up a transient, transparent terminal to use for quick shell jobs. I used the scripts and config file in <a href="#orgf32d0b4">Appendix A</a> to do this. The implementation is a bit hacky, and it&rsquo;s not impossible to break, but it serves my purposes well (and more important, it was fun to make)!
</p>
</div>
</div>
@@ -320,22 +320,7 @@ I wrote a script to set a random wallpaper.
</p>
<div class="org-src-container">
<pre class="src src-python"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/env python3</span>
<span class="org-keyword">import</span> os
<span class="org-keyword">from</span> random <span class="org-keyword">import</span> choice
<span class="org-variable-name">pape_path</span> <span class="org-operator">=</span> os.path.expandvars(<span class="org-string">"$HOME/Pictures/Wallpapers"</span>)
<span class="org-keyword">def</span> <span class="org-function-name">set_wallpaper</span>():
<span class="org-variable-name">files</span> <span class="org-operator">=</span> os.popen(f<span class="org-string">"ls </span>{pape_path}<span class="org-string">"</span>).read().split(<span class="org-string">'</span><span class="org-constant">\n</span><span class="org-string">'</span>)
<span class="org-variable-name">pape</span> <span class="org-operator">=</span> choice(files)
<span class="org-variable-name">pp</span> <span class="org-operator">=</span> os.path.join(pape_path, pape)
os.popen(f<span class="org-string">"hsetroot -full </span>{pp}<span class="org-string">"</span>)
os.popen(f<span class="org-string">"echo </span>{pp}<span class="org-string"> &gt; /tmp/wallpaper"</span>)
<span class="org-keyword">if</span> <span class="org-builtin">__name__</span> <span class="org-operator">==</span> <span class="org-string">"__main__"</span>:
set_wallpaper()
<pre class="src src-python">
</pre>
</div>
</div>
@@ -344,7 +329,7 @@ I wrote a script to set a random wallpaper.
<h5 id="orgcbd89f5">Lockscreen</h5>
<div class="outline-text-5" id="text-orgcbd89f5">
<p>
I hacked together some <a href="#orgb04aa39">pretty crappy code</a> to lock the screen using <code>i3lock</code>, with my wallpaper composed with a little lock icon as the background. Very overengineered.
I hacked together some <a href="#org3ee9b02">pretty crappy code</a> to lock the screen using <code>i3lock</code>, with my wallpaper composed with a little lock icon as the background. Very overengineered.
</p>
<p width="60%" class="center">
@@ -456,9 +441,9 @@ Personally, I&rsquo;m getting a rare chance to critically examine all the little
</div>
</div>
</div>
<div id="outline-container-org5a139df" class="outline-2">
<h2 id="org5a139df">Appendix A: Transient Terminal Sources</h2>
<div class="outline-text-2" id="text-org5a139df">
<div id="outline-container-orgf32d0b4" class="outline-2">
<h2 id="orgf32d0b4">Appendix A: Transient Terminal Sources</h2>
<div class="outline-text-2" id="text-orgf32d0b4">
<p>
<code>togglescratch</code>
</p>
@@ -481,6 +466,7 @@ Personally, I&rsquo;m getting a rare chance to critically examine all the little
</pre>
</div>
<p>
<code>makescratch</code>
</p>
@@ -493,9 +479,11 @@ Personally, I&rsquo;m getting a rare chance to critically examine all the little
<span class="org-keyword">set</span> <span class="org-variable-name">decid</span> (<span class="org-builtin">printf</span> <span class="org-string">'%d'</span> <span class="org-string">$</span><span class="org-variable-name">nid</span>)
<span class="org-builtin">xdotool</span> set_window --name <span class="org-string">"scratchterminal"</span> <span class="org-string">$</span><span class="org-variable-name">decid</span>
<span class="org-builtin">exec</span> <span class="org-string">"$HOME/Scripts/cleanscratch"</span>
</pre>
</div>
<p>
<code>cleanscratch</code>
</p>
@@ -508,6 +496,7 @@ Personally, I&rsquo;m getting a rare chance to critically examine all the little
</pre>
</div>
<p>
<code>picom.conf</code>
</p>
@@ -523,36 +512,36 @@ opacity-rule=["90:name = 'scratchterminal'"];
</div>
</div>
</div>
<div id="outline-container-orgb04aa39" class="outline-2">
<h2 id="orgb04aa39">Appendix B: lock.py</h2>
<div class="outline-text-2" id="text-orgb04aa39">
<div id="outline-container-org3ee9b02" class="outline-2">
<h2 id="org3ee9b02">Appendix B: lock.py</h2>
<div class="outline-text-2" id="text-org3ee9b02">
<div class="org-src-container">
<pre class="src src-python"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/python3</span>
<span class="org-keyword">import</span> os
<span class="org-keyword">import</span> sys
<span class="org-keyword">import</span> time
<pre class="src src-fish"><span class="org-comment-delimiter">#</span><span class="org-comment">!/usr/bin/python3</span>
<span class="org-builtin">import</span> os
<span class="org-builtin">import</span> sys
<span class="org-builtin">import</span> time
<span class="org-keyword">if</span> <span class="org-builtin">__name__</span> <span class="org-operator">==</span> <span class="org-string">"__main__"</span>:
<span class="org-variable-name">width</span>, <span class="org-variable-name">height</span>, <span class="org-variable-name">lwidth</span>, <span class="org-variable-name">lheight</span> <span class="org-operator">=</span> <span class="org-highlight-numbers-number">2256</span>, <span class="org-highlight-numbers-number">1504</span>, <span class="org-highlight-numbers-number">320</span>, <span class="org-highlight-numbers-number">320</span>
<span class="org-variable-name">icon</span> <span class="org-operator">=</span> <span class="org-string">"$HOME/Pictures/lock_small.png"</span>
<span class="org-variable-name">pape</span> <span class="org-operator">=</span> os.popen(<span class="org-string">"cat /tmp/wallpaper"</span>).read()[:<span class="org-operator">-</span><span class="org-highlight-numbers-number">1</span>]
<span class="org-variable-name">cache</span> <span class="org-operator">=</span> os.popen(<span class="org-string">"cat /tmp/lockscreen_cache"</span>).read()[:<span class="org-operator">-</span><span class="org-highlight-numbers-number">1</span>]
<span class="org-keyword">if</span> <span class="org-builtin">__name__</span> == <span class="org-string">"__main__"</span>:
<span class="org-builtin">width</span>, height, lwidth, lheight = <span class="org-highlight-numbers-number">2256</span>, <span class="org-highlight-numbers-number">1504</span>, <span class="org-highlight-numbers-number">320</span>, <span class="org-highlight-numbers-number">320</span>
<span class="org-builtin">icon</span> = <span class="org-string">"$HOME/Pictures/lock_small.png"</span>
<span class="org-builtin">pape</span> = os.popen(<span class="org-string">"cat /tmp/wallpaper"</span>).<span class="org-builtin">read</span>()[:<span class="org-constant">-1</span>]
<span class="org-builtin">cache</span> = os.popen(<span class="org-string">"cat /tmp/lockscreen_cache"</span>).<span class="org-builtin">read</span>()[:<span class="org-constant">-1</span>]
<span class="org-keyword">if</span> pape <span class="org-operator">!=</span> cache <span class="org-keyword">or</span> <span class="org-string">'--ignore-cache'</span> <span class="org-keyword">in</span> sys.argv:
os.popen(f<span class="org-string">"convert </span>{pape}<span class="org-string"> -resize </span>{width}<span class="org-string">x</span>{height}<span class="org-string"> -background black -gravity center -extent </span>{width}<span class="org-string">x</span>{height}<span class="org-string"> /tmp/wallpaper.png"</span>).read()
os.popen(f<span class="org-string">"convert -composite /tmp/wallpaper.png </span>{icon}<span class="org-string"> -geometry +</span>{width<span class="org-operator">//</span>2 <span class="org-operator">-</span> lwidth<span class="org-operator">//</span>2}<span class="org-string">+</span>{height<span class="org-operator">//</span>2 <span class="org-operator">-</span> lheight<span class="org-operator">//</span>2}<span class="org-string"> /tmp/wallpaper.png"</span>).read()
os.popen(f<span class="org-string">"echo </span>{pape}<span class="org-string"> &gt; /tmp/lockscreen_cache"</span>)
<span class="org-keyword">if</span> <span class="org-builtin">pape</span> != cache <span class="org-keyword">or</span> <span class="org-string">'--ignore-cache'</span> in sys.argv:
<span class="org-builtin">os</span>.popen(f<span class="org-string">"convert {pape} -resize {width}x{height} -background black -gravity center -extent {width}x{height} /tmp/wallpaper.png"</span>).<span class="org-builtin">read</span>()
<span class="org-builtin">os</span>.popen(f<span class="org-string">"convert -composite /tmp/wallpaper.png {icon} -geometry +{width//2 - lwidth//2}+{height//2 - lheight//2} /tmp/wallpaper.png"</span>).<span class="org-builtin">read</span>()
<span class="org-builtin">os</span>.popen(f<span class="org-string">"echo {pape} &gt; /tmp/lockscreen_cache"</span>)
os.popen(<span class="org-string">"i3lock -u -i /tmp/wallpaper.png"</span>)
time.sleep(<span class="org-highlight-numbers-number">0.5</span>)
os.popen(<span class="org-string">"loginctl suspend"</span>)
<span class="org-builtin">os</span>.popen(<span class="org-string">"i3lock -u -i /tmp/wallpaper.png"</span>)
<span class="org-builtin">time</span>.sleep(<span class="org-highlight-numbers-number">0.5</span>)
<span class="org-builtin">os</span>.popen(<span class="org-string">"loginctl suspend"</span>)
</pre>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<div id='footer'><div id='publish-date'>Published: 2022-03-17</div><div id='modified-date'>Last modified: 2023-01-10</div><hr>
<div id='footer'><div id='publish-date'>Published: 2022-03-17</div><div id='modified-date'>Last modified: 2025-11-08</div><hr>
If you have any comments about this page, you can email me at: <br>
<b>akk0</b> <i>{at}</i> <b>webbieweb</b> <i>{dot}</i> <b>org</b><br>
Proudly built using <a href="/posts/blog-tech.html">org-mode</a>. <br>