2626 </ a >
2727 < h1 > isd – interactive systemd</ h1 >
2828 < p >
29- < small > Created by
29+ < small > Developed and presented by
3030 < a href ="https://kainctl.github.io/isd/ "> Kai Norman Clasen</ a > </ small >
3131 </ p >
3232 </ div >
@@ -35,24 +35,24 @@ <h1>isd – interactive systemd</h1>
3535 < h2 > A Bit About Me</ h2 >
3636 < ul class ="vfill ">
3737 < li >
38- Hobby System Administrator since a few years
38+ I’ve been a hobby system administrator for a few years
3939 < br >
4040 < small > (I use NixOS ❄️ btw.)</ small >
4141 </ li >
4242 < li class ="fragment ">
43- Actively started working with
43+ Started working actively with
4444 < code > systemd</ code >
45- almost 2 years ago
45+ about 2 years ago
4646 </ li >
4747 < li class ="fragment ">
4848 Features of
4949 < code > systemd</ code >
50- ⩵ ♥️
50+ ⩵ ♥️
5151 </ li >
5252 < li class ="fragment ">
53- User experience of
53+ User/developer experience of
5454 < code > systemd</ code >
55- ⩵ 😐
55+ ⩵ 😐
5656 </ li >
5757 </ ul >
5858 </ section >
@@ -85,7 +85,7 @@ <h2>Example</h2>
8585 </ div >
8686 </ section >
8787 < section >
88- < h2 > My Old Workflow</ h2 >
88+ < h2 > My Old (and slow) Workflow</ h2 >
8989 </ section >
9090 < section >
9191 < div id ="old_workflow.cast "> </ div >
@@ -94,23 +94,22 @@ <h2>My Old Workflow</h2>
9494 < h2 > < code > sysz</ code > </ h2 >
9595 < ul class ="vfill ">
9696 < li >
97- a terminal UI (< em > TUI</ em > ) for
97+ A terminal user interface (< em > TUI</ em > ) for
9898 < code > systemctl</ code >
9999 </ li >
100100 < li >
101- is written as a shell script wrapping around
102- < code > systemctl</ code >
103- utilizing the
101+ Written as a shell script that wraps around
102+ < code > systemctl</ code > ,
103+ using the
104104 < code > fzf</ code >
105105 tool
106106 </ li >
107107 < li >
108- includes a
109- < code > status</ code >
110- preview window and
111- automatically prefixes
108+ Includes a
109+ < code > systemctl status</ code >
110+ preview window and automatically adds
112111 < code > sudo</ code >
113- if necessary
112+ when needed
114113 </ li >
115114 </ ul >
116115 </ section >
@@ -129,24 +128,24 @@ <h2>Core Idea of
129128 < code > sysz</ code > </ h2 >
130129 < div class ="vfill ">
131130 < pre >
132- < code data-trim data-noescape class ="language-bash " data-line-numbers ="1-30|4,6,14 ">
133- _sysz_systemctl() {
134- if [[ $EUID -ne 0 && $1 = --system ]]; then
135- # only run sudo if we aren't root and it's a system unit
136- _sysz_run sudo systemctl "$@"
137- else
138- _sysz_run systemctl "$@"
139- fi
140- }
131+ < code data-trim data-noescape class ="language-bash " data-line-numbers ="1-30|4,6,14 ">
132+ _sysz_systemctl() {
133+ if [[ $EUID -ne 0 && $1 = --system ]]; then
134+ # only run sudo if we aren't root and it's a system unit
135+ _sysz_run sudo systemctl "$@"
136+ else
137+ _sysz_run systemctl "$@"
138+ fi
139+ }
141140
142141
143- _sysz_journalctl() {
144- if [[ $1 = --user ]]; then
145- # use --user-unit flag if it's a user unit
146- _sysz_run journalctl --user-unit="$2" "${@:3}"
147- # [...]
148- </ code >
149- </ pre >
142+ _sysz_journalctl() {
143+ if [[ $1 = --user ]]; then
144+ # use --user-unit flag if it's a user unit
145+ _sysz_run journalctl --user-unit="$2" "${@:3}"
146+ # [...]
147+ </ code >
148+ </ pre >
150149 </ div >
151150 </ section >
152151 < section >
@@ -162,8 +161,8 @@ <h2>isd Configuration Primer</h2>
162161 < div id ="custom.cast "> </ div >
163162 </ section >
164163 < section >
165- < h2 > CLI tools < br >
166- + modern TUI frameworks
164+ < h2 > CLI Tools < br >
165+ + Modern TUI Frameworks
167166 < br >
168167 = 🚀💘🚀</ h2 >
169168 </ section >
@@ -177,12 +176,14 @@ <h3>Key Takeaways</h3>
177176 </ li >
178177 < li class ="fragment ">
179178 < em > Shelling</ em >
180- out is an option in higher and lower level languages
179+ out is an option in both high-level and low-level languages
180+ </ li >
181+ < li class ="fragment ">
182+ Limit the scope; use the correct tool for the job
181183 </ li >
182184 < li class ="fragment ">
183- Limit the scope/use the correct tool for the job
185+ Language Server Protocols (LSPs) make editing configuration files easier
184186 </ li >
185- < li class ="fragment "> LSPs are great for editing configuration files</ li >
186187 </ ul >
187188 </ section >
188189 <!-- <section data-preload data-background-iframe="./customization.html" data-background-interactive> -->
@@ -229,6 +230,27 @@ <h3>Key Takeaways</h3>
229230 <!-- }); -->
230231 </ script >
231232 < script >
233+ document . addEventListener ( 'keydown' , function ( event ) {
234+ // 27 is Escape
235+ if ( event . key === 'Escape' || event . keyCode === 27 ) {
236+ const active = document . activeElement ;
237+
238+ // If focus is inside an asciinema wrapper, remove it
239+ if ( active && active . closest ( '.ap-wrapper' ) ) {
240+ active . blur ( ) ;
241+
242+ // Optionally move focus explicitly to the Reveal container
243+ const revealContainer = document . querySelector ( '.reveal' ) ;
244+ if ( revealContainer ) {
245+ revealContainer . focus ( ) ;
246+ }
247+
248+ event . stopPropagation ( ) ;
249+ event . preventDefault ( ) ;
250+ }
251+ }
252+ } ) ;
253+
232254 // Also available as an ES module, see:
233255 // https://revealjs.com/initialization/
234256 Reveal . initialize ( {
@@ -238,6 +260,15 @@ <h3>Key Takeaways</h3>
238260 hash : true ,
239261 display : 'flex' ,
240262 overview : false ,
263+ keyboard : {
264+ // Disable fullscreen (F key)
265+ 70 : null ,
266+ 72 : ( ) => Reveal . left ( ) ,
267+
268+ // l = right
269+ 76 : ( ) => Reveal . right ( )
270+ } ,
271+
241272 // Optional function that blocks keyboard events when retuning false
242273 keyboardCondition : function ( event ) {
243274 // Don't let Reveal.js handle keyboard if target is inside asciinema player
0 commit comments