diff options
| Commit | 88a5b49611a0a4d1eb47ba86b9123159443ce4cb (patch) | |
|---|---|---|
| Author | 2025-12-23 22:54:20 +0200 | |
| Committer | 2025-12-23 22:54:20 +0200 | |
| Files | 22ce3c36887f506898cc7636a80abf245ae240e7 /src/slides | |
| syndamia.com-88a5b49611a0a4d1eb47ba86b9123159443ce4cb.tar syndamia.com-88a5b49611a0a4d1eb47ba86b9123159443ce4cb.tar.gz syndamia.com-88a5b49611a0a4d1eb47ba86b9123159443ce4cb.zip | ||
| Parent | 0be8d4b427a0f0944552769edc9a080dbaf79cee (diff) | |
feat!: Update dunbar after inline brace character swap
3 files changed, 214 insertions, 214 deletions
| -rw-r--r-- | src/slides/demo/index.du | 18 | ||||
| -rw-r--r-- | src/slides/index.du | 8 | ||||
| -rw-r--r-- | src/slides/linuxgraphy-by-strabo/index.du | 402 |
diff --git a/src/slides/demo/index.du b/src/slides/demo/index.du index dd4fb9c..cdad5f4 100644 --- a/src/slides/demo/index.du +++ b/src/slides/demo/index.du @@ -16,16 +16,16 @@ This page is [url /rework.html due for rework], I've switched to dunbar from fta # My presentation system -.font18 *[Syndamia AT [url https://syndamia.com syndamia.com]]* +.font18 [*Syndamia AT [url https://syndamia.com syndamia.com]*] .p -Before we go any further, click the =[icon in the middle]= right above this rectangle, to the left. +Before we go any further, click the [=icon in the middle=] right above this rectangle, to the left. .p Now the presentation should fill out the entire page. On the bottom right are your controls. .p -Press the *[right arrow]* in the controls to go to the next slide. +Press the [*right arrow*] in the controls to go to the next slide. :slide27 @@ -105,7 +105,7 @@ An easy example is the image of the Great Britain flag (part of [url https://git .p Every (presentation-specific) ftag is listed and explained in [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/master/awk-edits/Presentation.awk Presentation.awk]. -To summarize, each slide is wrapped in `[&&slide]` and `[&&/slide]` (or `[&&clide]` and `[&&/clide]`), you can change font size for specific portions, you can add basic (without formatting) tables for fancy layout, you can align text and elements and you can add line breaks. +To summarize, each slide is wrapped in [`&&slide`] and [`&&/slide`] (or [`&&clide`] and [`&&/clide`]), you can change font size for specific portions, you can add basic (without formatting) tables for fancy layout, you can align text and elements and you can add line breaks. .p And they can work together in most different combination. @@ -177,7 +177,7 @@ The source Markdown for the predvious slide is: [$newrow] .p - =[any]= sort of content + [=any=] sort of content [$br1] @@ -209,7 +209,7 @@ You can also print very easily the whole presentation on A4 sheets of paper, sin .p Pretty much all other website functionalities, like themes and click-to-zoom images, aren't inhibited. -The slides are easily scrollable/browseable and if you don't have JavaScript enabled, everything will be shown as a normal(-ish) article, without any *[major]* styling issues. +The slides are easily scrollable/browseable and if you don't have JavaScript enabled, everything will be shown as a normal(-ish) article, without any [*major*] styling issues. ## Setup @@ -217,8 +217,8 @@ The slides are easily scrollable/browseable and if you don't have JavaScript ena Everything is contained in 3 files: [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/master/awk-edits/Presentation.awk Presentation.awk], [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/master/src/scripts/presentation.js presentation.js] and [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/master/src/presentation.css presentation.css], which pretty much work on your "compiled" HTML. .p -`[Presentation.awk]` handles replacement of ftags (only in `[/talks]` pages!). -`[presentation.js]` is inserted into the HTML by `[&&presentation]`, and handles the navigation bar as well as insertion of `[presentation.css]` (the overall presentation-specific styling). +[`Presentation.awk`] handles replacement of ftags (only in [`/talks`] pages!). +[`presentation.js`] is inserted into the HTML by [`&&presentation`], and handles the navigation bar as well as insertion of [`presentation.css`] (the overall presentation-specific styling). :title_slide @@ -227,4 +227,4 @@ Everything is contained in 3 files: [url https://gitlab.com/Syndamia/syndamiadot .fright .font18 -*[P.S. Press the same button (next to the print button) with which you started presenting, to stop presenting ;)]* +[*P.S. Press the same button (next to the print button) with which you started presenting, to stop presenting ;)*] diff --git a/src/slides/index.du b/src/slides/index.du index 35a9ddd..d91775c 100644 --- a/src/slides/index.du +++ b/src/slides/index.du @@ -4,14 +4,14 @@ These are the different presentations I've made and possibly presented. \n -#### *[2023]* +#### [*2023*] .defs -; [$gb] 19 Jan   [url ./linuxgraphy-by-strabo Linuxgraphy by Strabo]   *[Last presented: 22.01.2023]* +; [$gb] 19 Jan   [url ./linuxgraphy-by-strabo Linuxgraphy by Strabo]   [*Last presented: 22.01.2023*] : A presentation talking about some of the history of UNIX and how Linux works -#### *[2022]* +#### [*2022*] .defs -; [$gb] 27 Sep   [url ./demo Demo presentation]   *[Won't be presented]* +; [$gb] 27 Sep   [url ./demo Demo presentation]   [*Won't be presented*] : Showcase of my presentation system diff --git a/src/slides/linuxgraphy-by-strabo/index.du b/src/slides/linuxgraphy-by-strabo/index.du index 2961e18..19d18c1 100644 --- a/src/slides/linuxgraphy-by-strabo/index.du +++ b/src/slides/linuxgraphy-by-strabo/index.du @@ -7,7 +7,7 @@ ### Custom assets -*[Licensing information in the last slide, at the bottom of the page]* +[*Licensing information in the last slide, at the bottom of the page*] .bulleted - [url ./img/unix-layers.png UNIX layers image] @@ -17,10 +17,10 @@ ### Presented at :defs -; [$bg] Unofficial [url https://fmi.uni-sofia.bg/en FMI] Computer Science Discord server   *[04.03.2023 || 14:50 - 17:20]* +; [$bg] Unofficial [url https://fmi.uni-sofia.bg/en FMI] Computer Science Discord server   [*04.03.2023 || 14:50 - 17:20*] : In front of a tiny audience of other uni students. Exact revision [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/6feed223ff48fe00cf12fcd63f3f56179c298cae/src/talks/linuxgraphy-by-strabo/index.md here]. -; [$bg] Unofficial [url https://fmi.uni-sofia.bg/en FMI] Computer Science Discord server   *[22.01.2023 || 18:00 - 21:00]* +; [$bg] Unofficial [url https://fmi.uni-sofia.bg/en FMI] Computer Science Discord server   [*22.01.2023 || 18:00 - 21:00*] : In front of a tiny audience of other uni students. Exact revision [url https://gitlab.com/Syndamia/syndamiadotcom/-/blob/6eb7a8fff01c6814253a0e738efb53734d297be9/src/talks/linuxgraphy-by-strabo/index.md here]. @@ -30,7 +30,7 @@ # Linuxgraphy by Strabo -*[Made by [url https://syndamia.com Syndamia]]* +[*Made by [url https://syndamia.com Syndamia]*] [$br4] @@ -117,7 +117,7 @@ This process was labor intensive: a qualified operator loaded your program, dump Computers became faster, but a lot of time was spend on managing jobs. .p -[url https://en.wikipedia.org/wiki/Resident_monitor resident monitors]: very small programs, which always *[resided]* in memory, and *[monitored]* what the state of the current job was.\n +[url https://en.wikipedia.org/wiki/Resident_monitor resident monitors]: very small programs, which always [*resided*] in memory, and [*monitored*] what the state of the current job was.\n Jobs were loaded in series ([url https://en.wikipedia.org/wiki/Batch_processing batches]). When the current job finished, memory would be dumped and the next one would automatically be loaded and started. @@ -191,9 +191,9 @@ In the beginning, programming was done mostly by [url https://en.wikipedia.org/w :sqrow .font18 [image https://upload.wikimedia.org/wikipedia/commons/f/f8/Ken-Thompson-2019.png]\n - *[Ken Thompson image by National Inventors Hall of Fame]* + [*Ken Thompson image by National Inventors Hall of Fame*] [image https://upload.wikimedia.org/wikipedia/commons/1/1b/Ken_Thompson_and_Dennis_Ritchie--1973.jpg ]\n - *[Ken Thompson and Dennis Ritchie in 1973]* + [*Ken Thompson and Dennis Ritchie in 1973*] :column .p @@ -216,13 +216,13 @@ Ignoring [url https://unix.stackexchange.com/questions/14368/difference-between- [$br2] .ordered -1. =[shell]=: A programmable replaceable command-line interpreter, with utilities for managing the whole system and support for pipelines and I/O redirection -2. =[UNIX-style file system]=: [url https://en.wikipedia.org/wiki/Unix_filesystem Filesystem] as a single rooted tree, objects (nodes) in the file system are [url https://en.wikipedia.org/wiki/Inode inodes] and an inode can be [url https://en.wikipedia.org/wiki/Unix_file_types (at least)] either a regular file, directory or devices. Permissions per users and group. -3. =[kernel]=: Program that manages all communication and operations between the hardware and software +1. [=shell=]: A programmable replaceable command-line interpreter, with utilities for managing the whole system and support for pipelines and I/O redirection +2. [=UNIX-style file system=]: [url https://en.wikipedia.org/wiki/Unix_filesystem Filesystem] as a single rooted tree, objects (nodes) in the file system are [url https://en.wikipedia.org/wiki/Inode inodes] and an inode can be [url https://en.wikipedia.org/wiki/Unix_file_types (at least)] either a regular file, directory or devices. Permissions per users and group. +3. [=kernel=]: Program that manages all communication and operations between the hardware and software [$br2] -.font18 *[For now we'll generally just look over some of the common stuff and go into detail later, while in Linux.]* +.font18 [*For now we'll generally just look over some of the common stuff and go into detail later, while in Linux.*] :slide35 @@ -261,7 +261,7 @@ Usually connecting to a computer (to the shell) is said to be done with either a .width25% .font18 [image https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/ASR-33_at_CHM.agr.jpg/1280px-ASR-33_at_CHM.agr.jpg]\n - *[Teletype Model 33 by [url https://commons.wikimedia.org/wiki/User:ArnoldReinhold Arnold Reinhold]]* + [*Teletype Model 33 by [url https://commons.wikimedia.org/wiki/User:ArnoldReinhold Arnold Reinhold]*] [$newrow] @@ -271,7 +271,7 @@ Usually connecting to a computer (to the shell) is said to be done with either a .font18 [image https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/DEC_VT100_terminal.jpg/675px-DEC_VT100_terminal.jpg?20131106192408]\n - *[DEC VT100 by [url https://www.flickr.com/people/54568729@N00 Jason Scott]]* + [*DEC VT100 by [url https://www.flickr.com/people/54568729@N00 Jason Scott]*] @@ -312,9 +312,9 @@ You can give a full or relative path, and that will be executed directly. Each command can be given parameters, separated by spaces, each (by convention) being either text values or options (switches). .p -Options usually start with a hyphen `[-]` (like `[-c]` or `[-current-time]`) and often support abbreviations (`[-a -b -c]` to `[-abc]`). -Newer conventions also allow start with two hyphens `[--]` (`[--current-time]`), though if shown as-is indicate the rest is a string. -More rarely you might see `[--OPTION=VALUE]` or just `[OPTION=VALUE]`. +Options usually start with a hyphen [`-`] (like [`-c`] or [`-current-time`]) and often support abbreviations ([`-a -b -c`] to [`-abc`]). +Newer conventions also allow start with two hyphens [`--`] ([`--current-time`]), though if shown as-is indicate the rest is a string. +More rarely you might see [`--OPTION=VALUE`] or just [`OPTION=VALUE`]. :middle_slide @@ -345,7 +345,7 @@ command1 [args...] | command2 [args...] | ... .bulleted - Rooted singular tree of directories (the root folder of which is called "root", denoted with a "/") -- Each tree object (node) is an [url https://en.wikipedia.org/wiki/Inode i(ndex)node], containing type, ownership, access, internal data and any other metadata, but =[not]= name! +- Each tree object (node) is an [url https://en.wikipedia.org/wiki/Inode i(ndex)node], containing type, ownership, access, internal data and any other metadata, but [=not=] name! - Directory inodes (files) contain a table with rows of names and inode numbers, mapping a file name to it's contents. Each row is called a [url https://en.wikipedia.org/wiki/Hard_link hard link]. Every directory has a hard link to itself, called ".", and a hard link to it's parent, called "..". .p [image ./img/unix-dir-tree.png ] @@ -363,9 +363,9 @@ command1 [args...] | command2 [args...] | ... [$br2] .bulleted - - =[regular]=: just a plain old file - - =[directory]=: as explained, a file containing hard links to other files. Each directory is allowed to appear *[only once]* in a single parent. - - =[symbolic link]=: points to any file (or directory). It contains the (relative) path to that object (as a simple string), so a symlink not could even be valid. + - [=regular=]: just a plain old file + - [=directory=]: as explained, a file containing hard links to other files. Each directory is allowed to appear [*only once*] in a single parent. + - [=symbolic link=]: points to any file (or directory). It contains the (relative) path to that object (as a simple string), so a symlink not could even be valid. Think of a C++ pointer (pseudocode). ``` @@ -376,19 +376,19 @@ exec(/bin/mprog); -> Executes /usr/local/bin/mprog :slide :bulleted - - =[FIFO special]=: aka [url https://en.wikipedia.org/wiki/Named_pipe named pipe], a special type of regular file, where at any moment only one process can read from it and one can write to it. It takes the concept of shell pipes to inter-process communication. + - [=FIFO special=]: aka [url https://en.wikipedia.org/wiki/Named_pipe named pipe], a special type of regular file, where at any moment only one process can read from it and one can write to it. It takes the concept of shell pipes to inter-process communication. ``` [Process] --write-> [FIFO] x-write-- [Process] [ A ] x--read-- [ ] --read--> [ B ] - - =[block special]=: a device which is randomly accessible, like a hard drive or cdrom drive. + - [=block special=]: a device which is randomly accessible, like a hard drive or cdrom drive. Think of a C++ array (pseudocode): ``` BlockSpecial[438] = 1 ; var = BlockSpecial[438] - - =[character special]=: devices which are accessed via serial streams of input or output, like keyboards, mice, graphics cards and teletypes.\n + - [=character special=]: devices which are accessed via serial streams of input or output, like keyboards, mice, graphics cards and teletypes.\n Think of a C++ stream (pseudocode): ``` @@ -398,7 +398,7 @@ CharacterSpecial << 1 ; CharacterSpecial >> var :middle_slide :bulleted - - =[sockets]=: file for inter-process communication. Compared to FIFO specials, they can be used by more than two processes, used in both directions and support [url https://en.wikipedia.org/wiki/File_descriptor file descriptors] and packets + - [=sockets=]: file for inter-process communication. Compared to FIFO specials, they can be used by more than two processes, used in both directions and support [url https://en.wikipedia.org/wiki/File_descriptor file descriptors] and packets [$br1] @@ -418,10 +418,10 @@ CharacterSpecial << 1 ; CharacterSpecial >> var [$br3] .p -A user in UNIX is essentially a small collection of data, most important of it being a =[unique ID]= (number), a =[name]= (string), a =[group id]= (number; files created by the user are in that group) and a =[password]=. +A user in UNIX is essentially a small collection of data, most important of it being a [=unique ID=] (number), a [=name=] (string), a [=group id=] (number; files created by the user are in that group) and a [=password=]. .p -Groups are also small collections of data, but much simpler, comprised only of a =[unique ID]= (number), a =[name]= (string) and a =[list of users]= that are "in" the group. Their main purpose is to simplify access control. +Groups are also small collections of data, but much simpler, comprised only of a [=unique ID=] (number), a [=name=] (string) and a [=list of users=] that are "in" the group. Their main purpose is to simplify access control. .p User with ID 0 is called root, it is the "system administrator", all actions made by the system itself are done as that user. @@ -433,20 +433,20 @@ Every user has their own "home" folder (under "/home/USERNAME/", except for root - [url https://en.wikipedia.org/wiki/File_system_permissions file permissions]: control the freedom of a user to read (navigate for directories), change and execute files\n - File permissions are split into three sets: what the =[owner]= can do, what =[group]= members can do and what =[anyone else]= can do.\n + File permissions are split into three sets: what the [=owner=] can do, what [=group=] members can do and what [=anyone else=] can do.\n - Each set contains a mix of three permissions: =[r]=ead, =[w]=rite and e=[x]=ecute, and each set stores some combination of them. + Each set contains a mix of three permissions: [=r=]ead, [=w=]rite and e[=x=]ecute, and each set stores some combination of them. [$br1] .p - Each is represented by a bit in the order above (`[101]` means you *[can]* read, *[cannot]* write, *[can]* execute) and the overall permissions are often shown as a three digit number or character string.\n - Example: `[111101100]` will be shown as `[754]` or `[rwxr-xr--]` + Each is represented by a bit in the order above ([`101`] means you [*can*] read, [*cannot*] write, [*can*] execute) and the overall permissions are often shown as a three digit number or character string.\n + Example: [`111101100`] will be shown as [`754`] or [`rwxr-xr--`] - link count: - the count of hard links that point to the inode. A file is deleted =[only when there are no hard links left to it]=. - Every directory inode has at least two - one from parent and one from itself ("."), though the latter =[isn't]= counted. - Child and parent directories also =[add]= to the count. + the count of hard links that point to the inode. A file is deleted [=only when there are no hard links left to it=]. + Every directory inode has at least two - one from parent and one from itself ("."), though the latter [=isn't=] counted. + Child and parent directories also [=add=] to the count. [$br1] @@ -466,17 +466,17 @@ The kernel has the core functionality of the operating system and bridges the ga Some important subsystems include scheduling, file, device, process and memory management. .p -To preserve the [url https://en.wikipedia.org/wiki/Everything_is_a_file everything is a file] methodology, devices and processes can be handled as files (inside `[/dev]` and `[/proc]`). +To preserve the [url https://en.wikipedia.org/wiki/Everything_is_a_file everything is a file] methodology, devices and processes can be handled as files (inside [`/dev`] and [`/proc`]). They (most of the time, in modern kernels) aren't actual files on a hard drive, but "virtual" files, where operations on them are handled in a different manner than normal by the kernel. [$br2] -.font35 Linux is =[not]= an operating system, it is a kernel!!! +.font35 Linux is [=not=] an operating system, it is a kernel!!! [$br2] .p -Two of the important things a kernel does is manage =[processes]= and =[memory]=. +Two of the important things a kernel does is manage [=processes=] and [=memory=]. :slide35 @@ -487,7 +487,7 @@ Two of the important things a kernel does is manage =[processes]= and =[memory]= .p A program is some collection of code and other data, stored in a file (or noncompiled code).\n -A process is the program in motion, the program itself *[alongside]* certain system states. +A process is the program in motion, the program itself [*alongside*] certain system states. .p The system states include (but are not limited to): @@ -515,18 +515,18 @@ Stopping is either done by the process itself (more on that later), or by the sy #### Process Control Block .p -All process information is stored in a data structure, called a *[process control block]* (or process descriptor). +All process information is stored in a data structure, called a [*process control block*] (or process descriptor). Not to be confused with a [url https://en.wikipedia.org/wiki/Printed_circuit_board printed circuit board]!\n A PCB's data can be split into three categories: .numbered -1. =[Process identification]= - the ID of the process itself, of it's parent process, of it's owner (user), etc. -2. =[Process state]= - as described, the processor state, etc.\n +1. [=Process identification=] - the ID of the process itself, of it's parent process, of it's owner (user), etc. +2. [=Process state=] - as described, the processor state, etc.\n On a context switch, values in registers are put into the stopped PCB and then are loaded from the running PCB. -3. =[Process control information]= - process state, memory map, privileges, etc. +3. [=Process control information=] - process state, memory map, privileges, etc. .p -A process can be =[forked]=, meaning a new process is created, with the same underlying code (but not process states and ...). +A process can be [=forked=], meaning a new process is created, with the same underlying code (but not process states and ...). :middle_slide35 @@ -534,11 +534,11 @@ A process can be =[forked]=, meaning a new process is created, with the same und #### Process states .bulleted -- =[Created]=: This is the initial state given to a new process. In this state, the process awaits a "ready" state. -- =[Ready]= (Waiting): A process is put in the run queue and awaits being executed ("running" state). -- =[Running]=: When the process's program is being currently executed by the CPU. The process can run in either *[kernel mode]*, having access to the kernel and user addresses, or *[user mode]*, having access only to it's own code and data. -- =[Blocked]=: When a process cannot continue without external change, usually when waiting for an I/O device. -- =[Terminated]=: The process has either completed execution or has been killed. The process itself is called a [url https://en.wikipedia.org/wiki/Zombie_process "zombie process"] (until it is removed). +- [=Created=]: This is the initial state given to a new process. In this state, the process awaits a "ready" state. +- [=Ready=] (Waiting): A process is put in the run queue and awaits being executed ("running" state). +- [=Running=]: When the process's program is being currently executed by the CPU. The process can run in either [*kernel mode*], having access to the kernel and user addresses, or [*user mode*], having access only to it's own code and data. +- [=Blocked=]: When a process cannot continue without external change, usually when waiting for an I/O device. +- [=Terminated=]: The process has either completed execution or has been killed. The process itself is called a [url https://en.wikipedia.org/wiki/Zombie_process "zombie process"] (until it is removed). :middle_slide35 @@ -567,7 +567,7 @@ In ye olde days, you would save a bit of memory for the operating system and giv This doesn't allow for context switching (disks are slow) and a blocked state forces the CPU to wait. .p -Some bad ideas include: depending on the code of all processes to not use the same addresses, use only [url https://en.wikipedia.org/wiki/Position-independent_code relative addresses] (`[-fPIC]` option in `[gcc]`) or use a [url https://en.wikipedia.org//wiki/Relocation_%28computing%29#Relocation_table table] that the kernel fills out with addresses. +Some bad ideas include: depending on the code of all processes to not use the same addresses, use only [url https://en.wikipedia.org/wiki/Position-independent_code relative addresses] ([`-fPIC`] option in [`gcc`]) or use a [url https://en.wikipedia.org//wiki/Relocation_%28computing%29#Relocation_table table] that the kernel fills out with addresses. :slide35 @@ -579,7 +579,7 @@ Some bad ideas include: depending on the code of all processes to not use the sa .fright [image ./img/virtual-memory-by-Ehamberg.png]\n .font18 - *[Image by [url https://commons.wikimedia.org/wiki/File:Virtual_memory.svg Ehamberg]]* + [*Image by [url https://commons.wikimedia.org/wiki/File:Virtual_memory.svg Ehamberg]*] .p A program (process) works with some (sequential) addresses, and the OS (with the help of [url https://en.wikipedia.org/wiki/Memory_management_unit hardware]) translates/maps the process' addresses (logical/[url https://en.wikipedia.org/wiki/Virtual_address_space virtual addresses]) to real ones (physical addresses). @@ -610,7 +610,7 @@ In the modern day, segmentation isn't used by itself, since resizing segments co .p The virtual and physical memory is divided into fixed-sized chunks of consecutive addresses. -A virtual memory chunk is called a =[page]=, while a physical memory chunk is called a (page) =[frame]=. +A virtual memory chunk is called a [=page=], while a physical memory chunk is called a (page) [=frame=]. Usually both have the same size of (at least) 4 KiB. .p @@ -654,10 +654,10 @@ We'll be using [url https://ivandavidov.github.io/minimal/#home Linux Minimal Li We're going to explore and look around the following stuff: .bulleted -- =[Shells]=: What a modern shell would often support on a Linux based OS -- =[Files and directories]=: Naming conventions and commands to work with them -- =[Common configuration files]=: Relevant configuration files, their purpose and syntax -- =[System management]=: Other commands with which to modify your system +- [=Shells=]: What a modern shell would often support on a Linux based OS +- [=Files and directories=]: Naming conventions and commands to work with them +- [=Common configuration files=]: Relevant configuration files, their purpose and syntax +- [=System management=]: Other commands with which to modify your system :middle_slide18 @@ -697,7 +697,7 @@ A variable, also called parameter, is created with the syntax (NO spaces between name=value .p -Where `[name]` is either a combination of letters (upper and lower case), numbers and the underscore character, which cannot begin with a number, or one of select few =[positional]= and =[special]= parameters. +Where [`name`] is either a combination of letters (upper and lower case), numbers and the underscore character, which cannot begin with a number, or one of select few [=positional=] and [=special=] parameters. :slide35 @@ -711,14 +711,14 @@ Where `[name]` is either a combination of letters (upper and lower case), number Some of the [url https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Special-Parameters special parameters] are: .bulleted -- `[0]`, corresponding to the shell's or script's name, -- `[@]` is all positional parameters, separated by spaces -- `[#]` is the number of positional parameters -- `[?]` is the last executed (foreground) process -- `[$]` is process ID of the current shell. +- [`0`], corresponding to the shell's or script's name, +- [`@`] is all positional parameters, separated by spaces +- [`#`] is the number of positional parameters +- [`?`] is the last executed (foreground) process +- [`$`] is process ID of the current shell. .p -`[value]`, without any special surrounding characters (more on that later), is treated as a string (but it mustn't have spaces!), however it may also be omitted, in which case it is the empty string `[""]`. +[`value`], without any special surrounding characters (more on that later), is treated as a string (but it mustn't have spaces!), however it may also be omitted, in which case it is the empty string [`""`]. :slide35 @@ -730,13 +730,13 @@ In most shells, there are 3 data types: strings, integers and (one-dimensional) [url https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#index-declare bash has more], like references and associative arrays, but those aren't universal. .p -A value is a =[string]= when surrounded by single `[']` or double `["]` quotes,\n -an =[integer]= when it isn't surrounded by anything and composed only of digits (if there are letters, it is a string; it's [url https://tldp.org/LDP/abs/html/untyped.html quite tricky] when a value is interpreted as a string or integer) and\n -an =[array]= when surrounded by braces `[()]`, where inside elements are strings or integers, separated by spaces. +A value is a [=string=] when surrounded by single [`'`] or double [`"`] quotes,\n +an [=integer=] when it isn't surrounded by anything and composed only of digits (if there are letters, it is a string; it's [url https://tldp.org/LDP/abs/html/untyped.html quite tricky] when a value is interpreted as a string or integer) and\n +an [=array=] when surrounded by braces [`()`], where inside elements are strings or integers, separated by spaces. An indexed array can also be created by specifying the value at any index: ``` -name[index\]=value +name[index\=]value :slide @@ -780,16 +780,16 @@ With [url https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell Operations on integers are done with [url https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Arithmetic-Expansion arithmetic expansion]. .p -Parameter expansion is started with the character `[\$]` and either a name or curly braces. -Retrieving a value is done with the forms `[\$name]`, `[\${name}]` and `[\${name[index]}]` for arrays. +Parameter expansion is started with the character [`\$`] and either a name or curly braces. +Retrieving a value is done with the forms [`\$name`], [`\${name}`] and [`\${name[index]}`] for arrays. .p Some parameter expansions in bash: .bulleted -- `[\${#parameter}]` length of characters -- `[\${parameter:offset}]` and `[\${parameter:offset:length}]` return substring from index offset -- `[\${parameter/pattern/string}]` return a string, where every match on pattern is replaced by string -- `[\${name[@]}]` a (space separated) sequence of indices from 0 to length (for defined values) of array name +- [`\${#parameter}`] length of characters +- [`\${parameter:offset}`] and [`\${parameter:offset:length}`] return substring from index offset +- [`\${parameter/pattern/string}`] return a string, where every match on pattern is replaced by string +- [`\${name[@]}`] a (space separated) sequence of indices from 0 to length (for defined values) of array name :slide @@ -798,19 +798,19 @@ Some parameter expansions in bash: .p Arithmetic expansions allow evaluation of [url https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Shell-Arithmetic arithmetic expressions]. -They're in the form `[\$(( expression ))]`. +They're in the form [`\$(( expression ))`]. .p Some useful expressions are: .bulleted -- `[++name]`, `[name++]`, `[--name]`, `[name++]` postfix and prefix incrementation and decrementation -- `[+]`, `[-]`, `[*]`, `[/]`, `[%]` normal arithmetic operators, `[**]` exponentiation -- `[~]`, `[<<]`, `[>>]`, `[&]`, `[^]`, `[|]` bitwise operators -- `[==]`, `[!=]`, `[>]`, `[>=]`, `[<]`, `[<=]` logical comparison -- `[!]`, `[&&]`, `[||]` logical not, and, or -- `[expr ? exprTrue : exprFalse]` conditional -- `[=]`, `[+=]`, ..., `[<<=]`, ... assignment operators -- `[expr1 , expr2]` consecutive expressions and `[(expr)]` bracing +- [`++name`], [`name++`], [`--name`], [`name++`] postfix and prefix incrementation and decrementation +- [`+`], [`-`], [`*`], [`/`], [`%`] normal arithmetic operators, [`**`] exponentiation +- [`~`], [`<<`], [`>>`], [`&`], [`^`], [`|`] bitwise operators +- [`==`], [`!=`], [`>`], [`>=`], [`<`], [`<=`] logical comparison +- [`!`], [`&&`], [`||`] logical not, and, or +- [`expr ? exprTrue : exprFalse`] conditional +- [`=`], [`+=`], ..., [`<<=`], ... assignment operators +- [`expr1 , expr2`] consecutive expressions and [`(expr)`] bracing .p Expressions work with both variable names and integers. @@ -826,14 +826,14 @@ Most modern shells support a lot of the more defying features of the [url https: :bulleted - [url https://en.wikipedia.org/wiki/Job_control_%28Unix%29 Job control]: Management of currently running groups of processes\n :bulleted - - `[&]`: A process can be ran in the background with an ampersand (&) at the end of the command: + - [`&`]: A process can be ran in the background with an ampersand (&) at the end of the command: ``` command [args...] & - - `[Ctrl+z]`: suspend the currently running (foreground) job - - `[bg]`: start a suspended job in the background - - `[fg]`: resume the last job to be put in the background and make it the current job with which we're interacting - - `[jobs]`: list all active (background) jobs + - [`Ctrl+z`]: suspend the currently running (foreground) job + - [`bg`]: start a suspended job in the background + - [`fg`]: resume the last job to be put in the background and make it the current job with which we're interacting + - [`jobs`]: list all active (background) jobs @@ -842,17 +842,17 @@ command [args...] & :bulleted -   :bulleted - - Every job is identified with a =[Job ID]= (number), which you can use by prepending a percentage sign. Example, to resume the job with JID 4: + - Every job is identified with a [=Job ID=] (number), which you can use by prepending a percentage sign. Example, to resume the job with JID 4: ``` fg %4 - - For managing everything, usually there is a *[job table]*. + - For managing everything, usually there is a [*job table*]. Upon shell termination, the shell tells all jobs in that table to terminate and waits for them.\n - `[disown]`: remove a job from the job table + [`disown`]: remove a job from the job table - - `[kill]`: send a signal to the process or job. Then that process will have to handle it accordingly.\n - Common ones are `[-KILL]` to immediately stop the process, `[-QUIT]` to quit it, `[-ABRT]` to cancel the current action, `[-TERM]` shut down (orderly), `[-STOP]` shut down (forcefully) + - [`kill`]: send a signal to the process or job. Then that process will have to handle it accordingly.\n + Common ones are [`-KILL`] to immediately stop the process, [`-QUIT`] to quit it, [`-ABRT`] to cancel the current action, [`-TERM`] shut down (orderly), [`-STOP`] shut down (forcefully) @@ -861,9 +861,9 @@ fg %4 :bulleted - [url https://en.wikipedia.org/wiki/Here_document heredoc]: File literal, meaning it is a user "string" which is interpreted as a file .bulleted - - start with `[<< NAME]`, where NAME can be anything you want, it is used to mark the beginning and end of a heredoc. `[<<]` is also a redirection symbol + - start with [`<< NAME`], where NAME can be anything you want, it is used to mark the beginning and end of a heredoc. [`<<`] is also a redirection symbol - on every new line write out your text, all characters will be preserved - - to end it, write out `[NAME]` on the beginning of a new empty line. Example: + - to end it, write out [`NAME`] on the beginning of a new empty line. Example: ``` cat << MYFILE This is @@ -873,63 +873,63 @@ MYFILE - control operators: Control what command is executed, depending on [url https://en.wikipedia.org/wiki/Exit_status exit status] .bulleted - - `[expr1 && expr2]`: Run expr2, only if expr1 exited successfully - - `[expr1 || expr2]`: Run expr2 if expr1 exited unsuccessfully - - `[expr1 ; expr2]`: Run expr2 after expr1 (sequential execution) + - [`expr1 && expr2`]: Run expr2, only if expr1 exited successfully + - [`expr1 || expr2`]: Run expr2 if expr1 exited unsuccessfully + - [`expr1 ; expr2`]: Run expr2 after expr1 (sequential execution) :middle_slide27 :bulleted -- [url https://en.wikipedia.org/wiki/Redirection_%28computing%29 redirection]: Outside of having `[<]` and `[>]` for I/O redirection, often there is also +- [url https://en.wikipedia.org/wiki/Redirection_%28computing%29 redirection]: Outside of having [`<`] and [`>`] for I/O redirection, often there is also :bulleted - - `[>>]`: Acts like `[>]`, putting text into a file, but rather than overwriting everything, it appends it - - `[<<]`: As explained, for heredocs - - `[<<<]`: To the right is a string ([url https://en.wikipedia.org/wiki/Here_document#Here_strings herestring]), and it is interpreted as a file + - [`>>`]: Acts like [`>`], putting text into a file, but rather than overwriting everything, it appends it + - [`<<`]: As explained, for heredocs + - [`<<<`]: To the right is a string ([url https://en.wikipedia.org/wiki/Here_document#Here_strings herestring]), and it is interpreted as a file ``` cat <<< "Hello World!" - - =[Standard input]=, =[standard output]= and =[standard error]= are all =[files]= with which the shell works. + - [=Standard input=], [=standard output=] and [=standard error=] are all [=files=] with which the shell works. Typing text in the shell puts it into stdin, command output are put into stdout (and shown to the user) and errors are put into stderr (also shown to the user). .p Each one of them is numbered from 0 to 2, and you can specify redirection by appending or prepending it to the redirection symbol.\n .p .bulleted - - `[N>outputfile]`: redirects the output from standard stream N into outputfile - - `[N>&M]`: redirects the output from standard stream N into standard stream M - - `[N<inputfile]`: redirects input file contents to standard stream N - - `[N<&M]`: redirects standard stream M to standard stream N + - [`N>outputfile`]: redirects the output from standard stream N into outputfile + - [`N>&M`]: redirects the output from standard stream N into standard stream M + - [`N<inputfile`]: redirects input file contents to standard stream N + - [`N<&M`]: redirects standard stream M to standard stream N :middle_slide27 :bulleted -- [url https://en.wikipedia.org/wiki/Test_%28Unix%29 built-in test command]: With `[test]` you can do conditional expressions. You can also often use brackets `[[ args... ]]` instead of `[test args...]` +- [url https://en.wikipedia.org/wiki/Test_%28Unix%29 built-in test command]: With [`test`] you can do conditional expressions. You can also often use brackets [`[ args... ]`] instead of [`test args...`] :p :bulleted - Some of the available file checks .bulleted - - `[-e FILENAME]`: FILENAME exists - - `[-d FILENAME]`: if FILENAME is a directory - - `[-h FILENAME]`: if FILENAME is a symbolic link - - `[-w FILENAME]`: you can write in FILENAME + - [`-e FILENAME`]: FILENAME exists + - [`-d FILENAME`]: if FILENAME is a directory + - [`-h FILENAME`]: if FILENAME is a symbolic link + - [`-w FILENAME`]: you can write in FILENAME - Some of the available string checks .bulleted - - `[-n STR]`: string STR has nonzero length - - `[-z STR]`: string STR has length zero - - `[STR1 = STR2]` and `[STR1 != STR2]`: self explanatory + - [`-n STR`]: string STR has nonzero length + - [`-z STR`]: string STR has length zero + - [`STR1 = STR2`] and [`STR1 != STR2`]: self explanatory - Some of the available number checks .bulleted - - `[INT1 -eq INT2]`: equal integers - - `[INT1 -gt INT2]`: INT1 > INT2 - - `[INT1 -gt INT2]`: INT1 >= INT2 + - [`INT1 -eq INT2`]: equal integers + - [`INT1 -gt INT2`]: INT1 > INT2 + - [`INT1 -gt INT2`]: INT1 >= INT2 - - Operators: `[!]` - negation, `[-a]` - binary AND, `[-o]` - binary OR, parentheses for grouping (escaped with `[\\]`) + - Operators: [`!`] - negation, [`-a`] - binary AND, [`-o`] - binary OR, parentheses for grouping (escaped with [`\\`]) @@ -940,11 +940,11 @@ cat <<< "Hello World!" - [url https://en.wikipedia.org/wiki/Shell_script scripting support]: Running commands from top to bottom of a file .p .bulleted - - `[#]`: Everything between a # and the end of the line denotes a comment - - `[#!]`: If on the first line of the file, is treated as a [url https://en.wikipedia.org/wiki/Shebang_%28Unix%29 shebang], which specifies what interpreter to be used for the script + - [`#`]: Everything between a # and the end of the line denotes a comment + - [`#!`]: If on the first line of the file, is treated as a [url https://en.wikipedia.org/wiki/Shebang_%28Unix%29 shebang], which specifies what interpreter to be used for the script - compound commands: Structures for flow control\n - In all examples, `[test-command]` is any command (or combination with control operators), and logic is based on exit code. + In all examples, [`test-command`] is any command (or combination with control operators), and logic is based on exit code. :p :bulleted @@ -956,7 +956,7 @@ elif test-command ; then commands-if-true else commands-if-true fi - `[elif]` statements can appear multiple times, both elif and else are optional + [`elif`] statements can appear multiple times, both elif and else are optional @@ -985,7 +985,7 @@ while test-command; do commands-if-true; done ``` for name in words...; do commands-if-true; done - If `[in words...]` is ommited, positional arguments are used + If [`in words...`] is ommited, positional arguments are used @@ -995,17 +995,17 @@ for name in words...; do commands-if-true; done ## 3.2. Files and directories .bulleted -- `[/dev]`: devices -- `[/proc]`: process information +- [`/dev`]: devices +- [`/proc`]: process information [$br3] .bulleted -- `[/bin]`: main command programs (binaries), used by users -- `[/sbin]`: command programs, used for the system operation -- `[/usr]`: other system resources +- [`/bin`]: main command programs (binaries), used by users +- [`/sbin`]: command programs, used for the system operation +- [`/usr`]: other system resources .bulleted - - `[/usr/bin]`: all other user command binaries + - [`/usr/bin`]: all other user command binaries :slide @@ -1013,24 +1013,24 @@ for name in words...; do commands-if-true; done #### Everyday file system commands .bulleted -- `[mkdir]`: create directories -- `[rm]`: remove a (hardlink to) file or directory -- `[mv]`: move file (or directory) to another directory -- `[cp]`: copy a file -- `[ln]`: create hard (or soft, with `[-s]`) links to files (inodes) -- `[ls]`: list directory contents +- [`mkdir`]: create directories +- [`rm`]: remove a (hardlink to) file or directory +- [`mv`]: move file (or directory) to another directory +- [`cp`]: copy a file +- [`ln`]: create hard (or soft, with [`-s`]) links to files (inodes) +- [`ls`]: list directory contents #### Other useful file system commands .bulleted -- `[shred]`: overwrite file contents -- `[dd]`: do many things with files, like modifying and duplicating data across devices and partitions, (basic) data recovery and generating files -- `[du]`: estimate file usage -- `[stat]`: display status for file or file system -- `[chwon]`: change owner of an inode -- `[chgrp]`: change group of an inode -- `[chmod]`: change file modes -- `[find]`: search for a file inside a directory (recursively) +- [`shred`]: overwrite file contents +- [`dd`]: do many things with files, like modifying and duplicating data across devices and partitions, (basic) data recovery and generating files +- [`du`]: estimate file usage +- [`stat`]: display status for file or file system +- [`chwon`]: change owner of an inode +- [`chgrp`]: change group of an inode +- [`chmod`]: change file modes +- [`find`]: search for a file inside a directory (recursively) :slide @@ -1038,23 +1038,23 @@ for name in words...; do commands-if-true; done #### Everyday text (file) commands .bulleted -- `[echo]`: prints a given string to standard output -- `[cat]`: sequentially prints files to standard output -- `[less]`: view files with support for scrolling -- `[head]`: print the first lines (or characters) of a file -- `[tail]`: print the last lines (or characters) of a file +- [`echo`]: prints a given string to standard output +- [`cat`]: sequentially prints files to standard output +- [`less`]: view files with support for scrolling +- [`head`]: print the first lines (or characters) of a file +- [`tail`]: print the last lines (or characters) of a file #### Other useful text (file) commands .bulleted -- `[grep]`: searches for matches in a file, using simplified regular expressions. `[egrep]` for extended regex and `[fgrep]` for string match (as-is). -- `[sed]`: filter and transform text from files, according to regex -- `[tr]`: translate, map (more than one to one for example) and delete characters -- `[cut]`: remove parts of text from each line -- `[strings]`: find embedded text inside binary files -- `[truncate]`: shrink or extend the size of a file -- `[wc]`: count words inside file -- `[diff]`: compare files and show their differences +- [`grep`]: searches for matches in a file, using simplified regular expressions. [`egrep`] for extended regex and [`fgrep`] for string match (as-is). +- [`sed`]: filter and transform text from files, according to regex +- [`tr`]: translate, map (more than one to one for example) and delete characters +- [`cut`]: remove parts of text from each line +- [`strings`]: find embedded text inside binary files +- [`truncate`]: shrink or extend the size of a file +- [`wc`]: count words inside file +- [`diff`]: compare files and show their differences :middle_slide @@ -1062,17 +1062,17 @@ for name in words...; do commands-if-true; done #### Device commands .bulleted -- `[mount]`: bind another file system to a location in the file system -- `[umount]`: remove binding to a file system -- `[lsusb]`: lists USB devices -- `[lspci]`: lists PCI devices +- [`mount`]: bind another file system to a location in the file system +- [`umount`]: remove binding to a file system +- [`lsusb`]: lists USB devices +- [`lspci`]: lists PCI devices #### System information commands .bulleted -- `[date]`: display current date and time -- `[hostname]`: show (or set) the systems hostname (network name) -- `[free]`: display free memory on the system +- [`date`]: display current date and time +- [`hostname`]: show (or set) the systems hostname (network name) +- [`free`]: display free memory on the system :slide @@ -1080,44 +1080,44 @@ for name in words...; do commands-if-true; done #### User and group management .bulleted -- `[useradd]`: creates a new user (with a password) -- `[userdel]`: remove a user and all of his files -- `[usermod]`: modify a user account, including his name and groups -- `[passwd]`: change password of a user. With `[-l]` user could be locked (impossible to log in) +- [`useradd`]: creates a new user (with a password) +- [`userdel`]: remove a user and all of his files +- [`usermod`]: modify a user account, including his name and groups +- [`passwd`]: change password of a user. With [`-l`] user could be locked (impossible to log in) [$br3] .bulleted -- `[groupadd]`: create a new group -- `[groupdel]`: remove a group -- `[groupmod]`: modify an existing group +- [`groupadd`]: create a new group +- [`groupdel`]: remove a group +- [`groupmod`]: modify an existing group [$br3] .bulleted -- `[w]`: show who is logged in and what they are doing -- `[who]`: show who is logged in -- `[whomai]`: print username -- `[login]`: establish a new connection to the system +- [`w`]: show who is logged in and what they are doing +- [`who`]: show who is logged in +- [`whomai`]: print username +- [`login`]: establish a new connection to the system :slide :bulleted -- `[/etc]`: system configuration files +- [`/etc`]: system configuration files [$br2] :bulleted - - `[/etc/group]`: the data for all groups is stored here, in the format + - [`/etc/group`]: the data for all groups is stored here, in the format ``` GROUPNAME:PASSWORD:GID:USERS... - - `[/etc/passwd]`: the data for all users is stored here, in the format + - [`/etc/passwd`]: the data for all users is stored here, in the format ``` USERNAME:PASSWORD:UID:GID:USERINFO:HOMEDIR:SHELL - - `[/etc/shadow]`: stores other user data, especially the password as an encrypted string, in the format + - [`/etc/shadow`]: stores other user data, especially the password as an encrypted string, in the format ``` USERNAME:PASSWORD:LASTCHANGED:MINBETWEENCHANGES:MAXBETWEENCHANGES:WARNEXPIRE:INACTIVEDAYS:EXPIRE @@ -1129,7 +1129,7 @@ USERNAME:PASSWORD:LASTCHANGED:MINBETWEENCHANGES:MAXBETWEENCHANGES:WARNEXPIRE:INA :bulleted -   :bulleted - - `[/etc/fstab]`: read on boot by mount to setup devices in fs + - [`/etc/fstab`]: read on boot by mount to setup devices in fs ``` # device-spec mount-point fs-type options dump pass @@ -1137,32 +1137,32 @@ USERNAME:PASSWORD:LASTCHANGED:MINBETWEENCHANGES:MAXBETWEENCHANGES:WARNEXPIRE:INA UUID=123A-456B /boot vfat noauto,noatime 1 2 LABEL=Vault /mnt/Vault auto nosuid,nodev,nofail 0 0 - - `[/etc/hosts]`: list of host names (domain names) and their corresponding IP address, when a DNS server doesn't do the job + - [`/etc/hosts`]: list of host names (domain names) and their corresponding IP address, when a DNS server doesn't do the job ``` # ipaddress domains 127.0.0.1 localhost mywebsite.com something.else 62.44.101.138 my.uni - - `[/etc/bashrc]`: global defaults and aliases used by the bash shell - - `[/etc/motd]`: message of the day (unexecuted text), shown after login but before the shell is ran + - [`/etc/bashrc`]: global defaults and aliases used by the bash shell + - [`/etc/motd`]: message of the day (unexecuted text), shown after login but before the shell is ran :middle_slide35 :bulleted -- `[/usr]`: other system resources +- [`/usr`]: other system resources .bulleted - - `[/usr/lib]`: library files - - `[/usr/local]`: local, system software - - `[/usr/share]`: architecture independent data, like manuals + - [`/usr/lib`]: library files + - [`/usr/local`]: local, system software + - [`/usr/share`]: architecture independent data, like manuals -- `[/var]`: variable data, like logs and cache -- `[/home]`: home directories of all users -- `[/lib]`: libraries and kernel modules -- `[/mnt]`: mounted temporary filesystems -- `[/root]`: home directory for the root user +- [`/var`]: variable data, like logs and cache +- [`/home`]: home directories of all users +- [`/lib`]: libraries and kernel modules +- [`/mnt`]: mounted temporary filesystems +- [`/root`]: home directory for the root user @@ -1195,15 +1195,15 @@ This is important, since pretty much everything can be freely modified by anyone .p A Linux-based operating system is nothing more than the Linux kernel, combined with an assortment of programs.\n -Overall, the main elements that make up a useful *[desktop]* operating system (alongside a command-line shell) are: +Overall, the main elements that make up a useful [*desktop*] operating system (alongside a command-line shell) are: [$br1] .numbered -1. =[Bootloader]=: load the kernel and operating system -2. =[Init system]=: well managed way to start everything inside the OS -3. =[Package manager]=: way to manage our binaries -4. =[Desktop manager]=: graphical shell +1. [=Bootloader=]: load the kernel and operating system +2. [=Init system=]: well managed way to start everything inside the OS +3. [=Package manager=]: way to manage our binaries +4. [=Desktop manager=]: graphical shell :slide @@ -1237,7 +1237,7 @@ That leaves us with the need for a bootloader. On Linux, the most used one is called [url https://en.wikipedia.org/wiki/GNU_GRUB GRUB]. .p -It's config is found in `[/etc/default/grub]` (which is then fully generated with `[grub-mkconfig]`) and can be "installed in the partition" with `[grub-install]`. +It's config is found in [`/etc/default/grub`] (which is then fully generated with [`grub-mkconfig`]) and can be "installed in the partition" with [`grub-install`]. ``` GRUB_DEFAULT=0 @@ -1283,7 +1283,7 @@ WantedBy=multi-user.target [$br1] .p -Programs are just executable files, usually placed in a specific folder, like `[/usr/bin]`. +Programs are just executable files, usually placed in a specific folder, like [`/usr/bin`]. .bulleted - MLL comes with ~100 executables (and ~230 after my script) @@ -1329,15 +1329,15 @@ It's main components are: [$br1] :bulleted -- =[Window manager]=: the overall system with which you create, remove, resize and work with windows. They are generally separated into two types: +- [=Window manager=]: the overall system with which you create, remove, resize and work with windows. They are generally separated into two types: .bulleted - - *[Stacked]*: this is what you know, windows are just rectangles floating about, and can be put one over each other - - *[Tiled]*: windows take up a predefined (but changeable) portion of the screen + - [*Stacked*]: this is what you know, windows are just rectangles floating about, and can be put one over each other + - [*Tiled*]: windows take up a predefined (but changeable) portion of the screen -- =[Compositor]=: adds an unseen window buffer, allowing additional processing, before a window is shown. This powers transparency, animation effects and more. +- [=Compositor=]: adds an unseen window buffer, allowing additional processing, before a window is shown. This powers transparency, animation effects and more. -- =[Session manager]=: graphical application that manages the window managers (outside WMs), think of it as a login window +- [=Session manager=]: graphical application that manages the window managers (outside WMs), think of it as a login window |