chore: align IaC with today's package installs + PDF comparison docs
DevOps sync (2026-05-21): - Remove onlyoffice-desktopeditors from absent list (actively used) - Add gnome-keyring, rbw to common role (secrets migration) - Add perl-image-exiftool, icoutils, innoextract-git to dev-tools (Windows installer inspection) - Create fonts role: Inter, Cascadia Code, Fira, Source Sans, TeX Gyre - Create pdf role: zathura, zathura-pdf-mupdf, python-weasyprint - Register new roles in workstation.yml PDF comparison: - Add pdf-comparison docs with Quarto/Typst/Pandoc outputs - Add batch-pdf.sh script - Update yazi-cheatsheet.md - Ignore .quarto/ cache
This commit is contained in:
@@ -36,3 +36,5 @@ __pycache__/
|
|||||||
|
|
||||||
# LibreOffice lock files
|
# LibreOffice lock files
|
||||||
.~lock.*#
|
.~lock.*#
|
||||||
|
|
||||||
|
/.quarto/
|
||||||
|
|||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
project:
|
||||||
|
type: default
|
||||||
|
output-dir: "./docs/pdf-output"
|
||||||
|
|
||||||
|
format:
|
||||||
|
typst-pdf:
|
||||||
|
default: true
|
||||||
|
toc: false
|
||||||
|
number-sections: true
|
||||||
|
mainfont: "Inter"
|
||||||
|
monofont: "JetBrains Mono"
|
||||||
|
fontsize: 9pt
|
||||||
|
papersize: a4
|
||||||
|
margin:
|
||||||
|
top: 1.2cm
|
||||||
|
bottom: 1.2cm
|
||||||
|
left: 1.5cm
|
||||||
|
right: 1.5cm
|
||||||
|
|
||||||
|
lang: de
|
||||||
@@ -225,4 +225,14 @@
|
|||||||
shell: echo 30 > /sys/module/zswap/parameters/max_pool_percent
|
shell: echo 30 > /sys/module/zswap/parameters/max_pool_percent
|
||||||
become: yes
|
become: yes
|
||||||
changed_when: false
|
changed_when: false
|
||||||
tags: [optimization, zswap]
|
tags: [optimization, zswap]
|
||||||
|
|
||||||
|
- name: Ensure secrets management tools are installed
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
# Secrets bridge (KWallet migration)
|
||||||
|
- gnome-keyring
|
||||||
|
# Bitwarden CLI client
|
||||||
|
- rbw
|
||||||
|
state: present
|
||||||
|
tags: [secrets, bitwarden]
|
||||||
@@ -51,6 +51,10 @@
|
|||||||
- wp-cli
|
- wp-cli
|
||||||
# C/C++ toolchain (cpp skill)
|
# C/C++ toolchain (cpp skill)
|
||||||
- clang
|
- clang
|
||||||
|
# Windows installer inspection (amicron-version-inspection skill)
|
||||||
|
- perl-image-exiftool
|
||||||
|
- icoutils
|
||||||
|
- innoextract-git
|
||||||
# CalDAV tools (caldav-webcal skill)
|
# CalDAV tools (caldav-webcal skill)
|
||||||
- khal
|
- khal
|
||||||
- vdirsyncer
|
- vdirsyncer
|
||||||
@@ -93,7 +97,6 @@
|
|||||||
- bleachbit
|
- bleachbit
|
||||||
- reiserfsprogs
|
- reiserfsprogs
|
||||||
- dmraid
|
- dmraid
|
||||||
- onlyoffice-desktopeditors
|
|
||||||
- virt-manager
|
- virt-manager
|
||||||
- guvcview
|
- guvcview
|
||||||
- helvum
|
- helvum
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure workstation fonts are installed
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
# Primary UI font (Inter brand font)
|
||||||
|
- inter-font
|
||||||
|
# Code editor fonts
|
||||||
|
- otf-cascadia-code
|
||||||
|
- ttf-fira-code
|
||||||
|
- otf-fira-mono
|
||||||
|
# Sans-serif families
|
||||||
|
- otf-fira-sans
|
||||||
|
- adobe-source-sans-fonts
|
||||||
|
# Serif fallback
|
||||||
|
- tex-gyre-fonts
|
||||||
|
state: present
|
||||||
|
tags: [fonts, typography]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: Ensure PDF viewer and generation tools are installed
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
# Minimal PDF viewer (Wayland-compatible)
|
||||||
|
- zathura
|
||||||
|
- zathura-pdf-mupdf
|
||||||
|
# PDF generation from HTML/CSS
|
||||||
|
- python-weasyprint
|
||||||
|
state: present
|
||||||
|
tags: [pdf, viewer, generation]
|
||||||
@@ -14,6 +14,8 @@
|
|||||||
- common
|
- common
|
||||||
- dev-tools
|
- dev-tools
|
||||||
- maintenance
|
- maintenance
|
||||||
|
- fonts
|
||||||
|
- pdf
|
||||||
- role: hyprland
|
- role: hyprland
|
||||||
tags: [hyprland]
|
tags: [hyprland]
|
||||||
- role: greetd
|
- role: greetd
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
/.quarto/
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
format:
|
||||||
|
typst-pdf:
|
||||||
|
default: true
|
||||||
|
toc: false
|
||||||
|
number-sections: true
|
||||||
|
mainfont: "Inter"
|
||||||
|
monofont: "JetBrains Mono"
|
||||||
|
fontsize: 9pt
|
||||||
|
papersize: a4
|
||||||
|
margin:
|
||||||
|
top: 1.2cm
|
||||||
|
bottom: 1.2cm
|
||||||
|
left: 1.5cm
|
||||||
|
right: 1.5cm
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
/* Cheatsheet CSS for Markdown → HTML → PDF via WeasyPrint */
|
||||||
|
/* Clean, professional tables with Inter + JetBrains Mono */
|
||||||
|
|
||||||
|
@page {
|
||||||
|
size: a4 portrait;
|
||||||
|
margin: 10mm 14mm 10mm 14mm;
|
||||||
|
@bottom-center {
|
||||||
|
content: "Seite " counter(page);
|
||||||
|
font-size: 7pt;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
* { margin-top: 0; }
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Inter", "DejaVu Sans", sans-serif;
|
||||||
|
font-size: 9pt;
|
||||||
|
line-height: 1.3;
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 14pt;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 4pt;
|
||||||
|
padding-bottom: 4pt;
|
||||||
|
border-bottom: 1.5pt solid #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 10.5pt;
|
||||||
|
font-weight: 700;
|
||||||
|
margin: 10pt 0 4pt 0;
|
||||||
|
color: #003366;
|
||||||
|
border-bottom: 0.5pt solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 9pt;
|
||||||
|
font-weight: 600;
|
||||||
|
margin: 6pt 0 2pt 0;
|
||||||
|
color: #003366;
|
||||||
|
}
|
||||||
|
|
||||||
|
p { margin: 2pt 0; }
|
||||||
|
|
||||||
|
/* ---- Tables: clean reference style ---- */
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin: 2pt 0 6pt 0;
|
||||||
|
font-size: 8pt;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background: #f0f4f8;
|
||||||
|
font-weight: 700;
|
||||||
|
font-size: 7.5pt;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.04em;
|
||||||
|
color: #003366;
|
||||||
|
padding: 3pt 5pt;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 1pt solid #0066cc;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
padding: 2pt 5pt;
|
||||||
|
border: none;
|
||||||
|
border-bottom: 0.5pt solid #e4e4e4;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody tr:nth-child(even) td {
|
||||||
|
background: #f7f9fb;
|
||||||
|
}
|
||||||
|
|
||||||
|
tbody tr:last-child td {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- Code / key rendering ---- */
|
||||||
|
code, kbd {
|
||||||
|
font-family: "JetBrains Mono", monospace;
|
||||||
|
font-size: 8pt;
|
||||||
|
background: #f5f5f5;
|
||||||
|
padding: 1pt 3pt;
|
||||||
|
border-radius: 2pt;
|
||||||
|
border: 0.5pt solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-family: "JetBrains Mono", monospace;
|
||||||
|
font-size: 7.5pt;
|
||||||
|
background: #f5f5f5;
|
||||||
|
padding: 4pt 6pt;
|
||||||
|
border-radius: 3pt;
|
||||||
|
border: 0.5pt solid #ddd;
|
||||||
|
page-break-inside: avoid;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ---- Two-column cheatsheet layout ---- */
|
||||||
|
.twocol {
|
||||||
|
column-count: 2;
|
||||||
|
column-gap: 14pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.twocol h2 {
|
||||||
|
break-before: column;
|
||||||
|
column-break-before: always;
|
||||||
|
}
|
||||||
|
|
||||||
|
.twocol h2:first-child {
|
||||||
|
break-before: avoid;
|
||||||
|
column-break-before: avoid;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: none;
|
||||||
|
border-top: 0.5pt solid #ddd;
|
||||||
|
margin: 6pt 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
a { color: #0066cc; text-decoration: none; }
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
title: "Hyprland Keybindings Cheatsheet"
|
||||||
|
author: "mw-pfeddersheim-workstation"
|
||||||
|
date: "May 2026"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Hyprland Keybindings — Full Cheatsheet
|
||||||
|
|
||||||
|
**Layout:** German (de) | **Mod key:** SUPER (Windows key) | **Source:** `hyprctl binds` live
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## General
|
||||||
|
|
||||||
|
| Shortcut | Action | Details |
|
||||||
|
|----------|--------|---------|
|
||||||
|
| `SUPER+Q` | Open terminal | kitty |
|
||||||
|
| `SUPER+C` | Kill active window | killactive |
|
||||||
|
| `SUPER+M` | Exit Hyprland | exit |
|
||||||
|
| `SUPER+E` | File manager | dolphin |
|
||||||
|
| `SUPER+V` | Toggle floating | togglefloating |
|
||||||
|
| `SUPER+D` | App launcher | hyprlauncher |
|
||||||
|
| `SUPER+P` | Toggle pseudo-split | pseudo |
|
||||||
|
| `SUPER+J` | Toggle split direction | layoutmsg togglesplit |
|
||||||
|
| `SUPER+F` | Toggle fullscreen | fullscreen 0 |
|
||||||
|
| `SUPER+R` | Reload config | hyprctl reload |
|
||||||
|
| `SUPER+SPACE` | Toggle float (popup) | togglefloating |
|
||||||
|
| `SUPER+TAB` | Cycle next window | cyclenext |
|
||||||
|
| `SUPER+SHIFT+TAB` | Cycle previous window | cyclenext prev |
|
||||||
|
| `SUPER+` `` ` `` (Grave) | Toggle scratchpad | togglespecialworkspace |
|
||||||
|
| `SUPER+SHIFT+` `` ` `` | Send window to scratchpad | movetoworkspace special |
|
||||||
|
| `SUPER+CTRL+K` | Keybind cheat menu | *(broken — pipelines to grep+fuzzel)* |
|
||||||
|
| `SUPER+CTRL+L` | Lock screen | hyprlock |
|
||||||
|
| `SUPER+B` | Web browser | google-chrome-stable |
|
||||||
|
|
||||||
|
## Navigation / Focus
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+TAB` | Cycle next window |
|
||||||
|
| `SUPER+SHIFT+TAB` | Cycle previous window |
|
||||||
|
| `SUPER+H` | Move focus left |
|
||||||
|
| `SUPER+L` | Move focus right |
|
||||||
|
| `SUPER+left arrow` | Move focus left |
|
||||||
|
| `SUPER+right arrow` | Move focus right |
|
||||||
|
| `SUPER+up arrow` | Move focus up |
|
||||||
|
| `SUPER+down arrow` | Move focus down |
|
||||||
|
|
||||||
|
## Window Movement
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+SHIFT+H` | Move window left |
|
||||||
|
| `SUPER+SHIFT+L` | Move window right |
|
||||||
|
| `SUPER+SHIFT+K` | Move window up |
|
||||||
|
| `SUPER+SHIFT+J` | Move window down |
|
||||||
|
| `SUPER+SHIFT+left` | Move window left |
|
||||||
|
| `SUPER+SHIFT+right` | Move window right |
|
||||||
|
| `SUPER+SHIFT+up` | Move window up |
|
||||||
|
| `SUPER+SHIFT+down` | Move window down |
|
||||||
|
|
||||||
|
## Window Resize
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+ALT+H` | Resize active: width -40 |
|
||||||
|
| `SUPER+ALT+L` | Resize active: width +40 |
|
||||||
|
| `SUPER+ALT+K` | Resize active: height -40 |
|
||||||
|
| `SUPER+ALT+J` | Resize active: height +40 |
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
| Shortcut | Action | Tool |
|
||||||
|
|----------|--------|------|
|
||||||
|
| `Print` | Area select → save + copy | grimblast copysave area |
|
||||||
|
| `SUPER+Print` | Active window → save + copy | grimblast copysave active |
|
||||||
|
| `SUPER+SHIFT+Print` | Full monitor → save + copy | grimblast copysave output |
|
||||||
|
| `SUPER+ALT+Print` | Area select → annotate | grim | slurp | satty |
|
||||||
|
|
||||||
|
## Workspaces
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+1..9` | Switch to workspace 1-9 |
|
||||||
|
| `SUPER+SHIFT+1..9` | Move active window to workspace 1-9 |
|
||||||
|
| `SUPER+` `` ` `` | Toggle scratchpad (togglespecialworkspace) |
|
||||||
|
| `SUPER+SHIFT+` `` ` `` | Move to scratchpad (movetoworkspace special) |
|
||||||
|
|
||||||
|
### Workspace Layout
|
||||||
|
|
||||||
|
| Workspace | Monitor | Position |
|
||||||
|
|-----------|---------|----------|
|
||||||
|
| 1 | DP-1 (TERRA 3280W) | Left, 2560x1440@144 |
|
||||||
|
| 2 | DVI-D-1 (BenQ BL2405) | Center, 1920x1080@60 rotated 90deg |
|
||||||
|
| 3 | HDMI-A-1 (TERRA 3280W) | Right, 2560x1440@144 |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `SUPER+CTRL+K` (keybind menu) does **not work** — the `sed` pipeline breaks. Needs fix.
|
||||||
|
- The `sed` pipeline `sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/'` fails silently because the unescaped `$` in the `sed` command gets interpreted as a variable.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
| Issue | Check |
|
||||||
|
|-------|-------|
|
||||||
|
| Print key not working | `hyprctl binds | grep Print` |
|
||||||
|
| `SUPER+R` not working | `hyprctl binds | grep 'reload'` |
|
||||||
|
| Screenshots fail | `which grimblast satty slurp grim` |
|
||||||
|
| Clipboard empty | `echo test | wl-copy && wl-paste` |
|
||||||
|
|
||||||
|
## Satty Editor Shortcuts
|
||||||
|
|
||||||
|
| Action | Shortcut |
|
||||||
|
|--------|----------|
|
||||||
|
| Freehand | F |
|
||||||
|
| Rectangle | R |
|
||||||
|
| Ellipse | E |
|
||||||
|
| Line/Arrow | L |
|
||||||
|
| Text | T |
|
||||||
|
| Blur | B |
|
||||||
|
| Crop | C |
|
||||||
|
| Undo | Ctrl+Z |
|
||||||
|
| Redo | Ctrl+Shift+Z |
|
||||||
|
| Copy | Ctrl+C |
|
||||||
|
| Save | Ctrl+S |
|
||||||
|
| Quit | Esc or Ctrl+Q |
|
||||||
@@ -0,0 +1,200 @@
|
|||||||
|
#set document(title: "Hyprland Keybindings - Pandoc")
|
||||||
|
#set text(font: ("Inter", "DejaVu Sans"), size: 9pt, lang: "de")
|
||||||
|
#set page(paper: "a4", margin: 1.2cm)
|
||||||
|
#set heading(numbering: "1.")
|
||||||
|
#set par(leading: 0.45em)
|
||||||
|
#show link: set text(navy)
|
||||||
|
#let horizontalrule = h(25%) + line(stroke: 0.5pt, length: 50%)
|
||||||
|
= Hyprland Keybindings --- Full Cheatsheet
|
||||||
|
<hyprland-keybindings-full-cheatsheet>
|
||||||
|
#strong[Layout:] German (de) | #strong[Mod key:] SUPER (Windows key) |
|
||||||
|
#strong[Source:] `hyprctl binds` live
|
||||||
|
|
||||||
|
#horizontalrule
|
||||||
|
|
||||||
|
== General
|
||||||
|
<general>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (37.04%, 29.63%, 33.33%),
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Shortcut], [Action], [Details],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+Q`], [Open terminal], [kitty],
|
||||||
|
[`SUPER+C`], [Kill active window], [killactive],
|
||||||
|
[`SUPER+M`], [Exit Hyprland], [exit],
|
||||||
|
[`SUPER+E`], [File manager], [dolphin],
|
||||||
|
[`SUPER+V`], [Toggle floating], [togglefloating],
|
||||||
|
[`SUPER+D`], [App launcher], [hyprlauncher],
|
||||||
|
[`SUPER+P`], [Toggle pseudo-split], [pseudo],
|
||||||
|
[`SUPER+J`], [Toggle split direction], [layoutmsg togglesplit],
|
||||||
|
[`SUPER+F`], [Toggle fullscreen], [fullscreen 0],
|
||||||
|
[`SUPER+R`], [Reload config], [hyprctl reload],
|
||||||
|
[`SUPER+SPACE`], [Toggle float (popup)], [togglefloating],
|
||||||
|
[`SUPER+TAB`], [Cycle next window], [cyclenext],
|
||||||
|
[`SUPER+SHIFT+TAB`], [Cycle previous window], [cyclenext prev],
|
||||||
|
[`SUPER+` #raw("`") (Grave)], [Toggle
|
||||||
|
scratchpad], [togglespecialworkspace],
|
||||||
|
[`SUPER+SHIFT+` #raw("`");], [Send window to
|
||||||
|
scratchpad], [movetoworkspace special],
|
||||||
|
[`SUPER+CTRL+K`], [Keybind cheat menu], [#emph[(broken --- pipelines
|
||||||
|
to grep+fuzzel)];],
|
||||||
|
[`SUPER+CTRL+L`], [Lock screen], [hyprlock],
|
||||||
|
[`SUPER+B`], [Web browser], [google-chrome-stable],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Navigation / Focus
|
||||||
|
<navigation-focus>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+TAB`], [Cycle next window],
|
||||||
|
[`SUPER+SHIFT+TAB`], [Cycle previous window],
|
||||||
|
[`SUPER+H`], [Move focus left],
|
||||||
|
[`SUPER+L`], [Move focus right],
|
||||||
|
[`SUPER+left arrow`], [Move focus left],
|
||||||
|
[`SUPER+right arrow`], [Move focus right],
|
||||||
|
[`SUPER+up arrow`], [Move focus up],
|
||||||
|
[`SUPER+down arrow`], [Move focus down],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Window Movement
|
||||||
|
<window-movement>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+SHIFT+H`], [Move window left],
|
||||||
|
[`SUPER+SHIFT+L`], [Move window right],
|
||||||
|
[`SUPER+SHIFT+K`], [Move window up],
|
||||||
|
[`SUPER+SHIFT+J`], [Move window down],
|
||||||
|
[`SUPER+SHIFT+left`], [Move window left],
|
||||||
|
[`SUPER+SHIFT+right`], [Move window right],
|
||||||
|
[`SUPER+SHIFT+up`], [Move window up],
|
||||||
|
[`SUPER+SHIFT+down`], [Move window down],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Window Resize
|
||||||
|
<window-resize>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+ALT+H`], [Resize active: width -40],
|
||||||
|
[`SUPER+ALT+L`], [Resize active: width +40],
|
||||||
|
[`SUPER+ALT+K`], [Resize active: height -40],
|
||||||
|
[`SUPER+ALT+J`], [Resize active: height +40],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Screenshots
|
||||||
|
<screenshots>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (41.67%, 33.33%, 25%),
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Shortcut], [Action], [Tool],),
|
||||||
|
table.hline(),
|
||||||
|
[`Print`], [Area select → save + copy], [grimblast copysave area],
|
||||||
|
[`SUPER+Print`], [Active window → save + copy], [grimblast copysave
|
||||||
|
active],
|
||||||
|
[`SUPER+SHIFT+Print`], [Full monitor → save + copy], [grimblast
|
||||||
|
copysave output],
|
||||||
|
[`SUPER+ALT+Print`], [Area select → annotate], [grim],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Workspaces
|
||||||
|
<workspaces>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (55.56%, 44.44%),
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+1..9`], [Switch to workspace 1-9],
|
||||||
|
[`SUPER+SHIFT+1..9`], [Move active window to workspace 1-9],
|
||||||
|
[`SUPER+` #raw("`");], [Toggle scratchpad (togglespecialworkspace)],
|
||||||
|
[`SUPER+SHIFT+` #raw("`");], [Move to scratchpad (movetoworkspace
|
||||||
|
special)],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
=== Workspace Layout
|
||||||
|
<workspace-layout>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 3,
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Workspace], [Monitor], [Position],),
|
||||||
|
table.hline(),
|
||||||
|
[1], [DP-1 (TERRA 3280W)], [Left, 2560x1440\@144],
|
||||||
|
[2], [DVI-D-1 (BenQ BL2405)], [Center, 1920x1080\@60 rotated 90deg],
|
||||||
|
[3], [HDMI-A-1 (TERRA 3280W)], [Right, 2560x1440\@144],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Notes
|
||||||
|
<notes>
|
||||||
|
- `SUPER+CTRL+K` (keybind menu) does #strong[not work] --- the `sed`
|
||||||
|
pipeline breaks. Needs fix.
|
||||||
|
- The `sed` pipeline `sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/'`
|
||||||
|
fails silently because the unescaped `$` in the `sed` command gets
|
||||||
|
interpreted as a variable.
|
||||||
|
|
||||||
|
== Troubleshooting
|
||||||
|
<troubleshooting>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Issue], [Check],),
|
||||||
|
table.hline(),
|
||||||
|
[Print key not working], [`hyprctl binds | grep Print`],
|
||||||
|
[`SUPER+R` not working], [`hyprctl binds | grep 'reload'`],
|
||||||
|
[Screenshots fail], [`which grimblast satty slurp grim`],
|
||||||
|
[Clipboard empty], [`echo test | wl-copy && wl-paste`],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Satty Editor Shortcuts
|
||||||
|
<satty-editor-shortcuts>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Action], [Shortcut],),
|
||||||
|
table.hline(),
|
||||||
|
[Freehand], [F],
|
||||||
|
[Rectangle], [R],
|
||||||
|
[Ellipse], [E],
|
||||||
|
[Line/Arrow], [L],
|
||||||
|
[Text], [T],
|
||||||
|
[Blur], [B],
|
||||||
|
[Crop], [C],
|
||||||
|
[Undo], [Ctrl+Z],
|
||||||
|
[Redo], [Ctrl+Shift+Z],
|
||||||
|
[Copy], [Ctrl+C],
|
||||||
|
[Save], [Ctrl+S],
|
||||||
|
[Quit], [Esc or Ctrl+Q],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,193 @@
|
|||||||
|
= Hyprland Keybindings --- Full Cheatsheet
|
||||||
|
<hyprland-keybindings-full-cheatsheet>
|
||||||
|
#strong[Layout:] German (de) | #strong[Mod key:] SUPER (Windows key) |
|
||||||
|
#strong[Source:] `hyprctl binds` live
|
||||||
|
|
||||||
|
#horizontalrule
|
||||||
|
|
||||||
|
== General
|
||||||
|
<general>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (37.04%, 29.63%, 33.33%),
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Shortcut], [Action], [Details],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+Q`], [Open terminal], [kitty],
|
||||||
|
[`SUPER+C`], [Kill active window], [killactive],
|
||||||
|
[`SUPER+M`], [Exit Hyprland], [exit],
|
||||||
|
[`SUPER+E`], [File manager], [dolphin],
|
||||||
|
[`SUPER+V`], [Toggle floating], [togglefloating],
|
||||||
|
[`SUPER+D`], [App launcher], [hyprlauncher],
|
||||||
|
[`SUPER+P`], [Toggle pseudo-split], [pseudo],
|
||||||
|
[`SUPER+J`], [Toggle split direction], [layoutmsg togglesplit],
|
||||||
|
[`SUPER+F`], [Toggle fullscreen], [fullscreen 0],
|
||||||
|
[`SUPER+R`], [Reload config], [hyprctl reload],
|
||||||
|
[`SUPER+SPACE`], [Toggle float (popup)], [togglefloating],
|
||||||
|
[`SUPER+TAB`], [Cycle next window], [cyclenext],
|
||||||
|
[`SUPER+SHIFT+TAB`], [Cycle previous window], [cyclenext prev],
|
||||||
|
[`SUPER+` #raw("`") (Grave)], [Toggle
|
||||||
|
scratchpad], [togglespecialworkspace],
|
||||||
|
[`SUPER+SHIFT+` #raw("`");], [Send window to
|
||||||
|
scratchpad], [movetoworkspace special],
|
||||||
|
[`SUPER+CTRL+K`], [Keybind cheat menu], [#emph[(broken --- pipelines
|
||||||
|
to grep+fuzzel)];],
|
||||||
|
[`SUPER+CTRL+L`], [Lock screen], [hyprlock],
|
||||||
|
[`SUPER+B`], [Web browser], [google-chrome-stable],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Navigation / Focus
|
||||||
|
<navigation-focus>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+TAB`], [Cycle next window],
|
||||||
|
[`SUPER+SHIFT+TAB`], [Cycle previous window],
|
||||||
|
[`SUPER+H`], [Move focus left],
|
||||||
|
[`SUPER+L`], [Move focus right],
|
||||||
|
[`SUPER+left arrow`], [Move focus left],
|
||||||
|
[`SUPER+right arrow`], [Move focus right],
|
||||||
|
[`SUPER+up arrow`], [Move focus up],
|
||||||
|
[`SUPER+down arrow`], [Move focus down],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Window Movement
|
||||||
|
<window-movement>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+SHIFT+H`], [Move window left],
|
||||||
|
[`SUPER+SHIFT+L`], [Move window right],
|
||||||
|
[`SUPER+SHIFT+K`], [Move window up],
|
||||||
|
[`SUPER+SHIFT+J`], [Move window down],
|
||||||
|
[`SUPER+SHIFT+left`], [Move window left],
|
||||||
|
[`SUPER+SHIFT+right`], [Move window right],
|
||||||
|
[`SUPER+SHIFT+up`], [Move window up],
|
||||||
|
[`SUPER+SHIFT+down`], [Move window down],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Window Resize
|
||||||
|
<window-resize>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+ALT+H`], [Resize active: width -40],
|
||||||
|
[`SUPER+ALT+L`], [Resize active: width +40],
|
||||||
|
[`SUPER+ALT+K`], [Resize active: height -40],
|
||||||
|
[`SUPER+ALT+J`], [Resize active: height +40],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Screenshots
|
||||||
|
<screenshots>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (41.67%, 33.33%, 25%),
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Shortcut], [Action], [Tool],),
|
||||||
|
table.hline(),
|
||||||
|
[`Print`], [Area select → save + copy], [grimblast copysave area],
|
||||||
|
[`SUPER+Print`], [Active window → save + copy], [grimblast copysave
|
||||||
|
active],
|
||||||
|
[`SUPER+SHIFT+Print`], [Full monitor → save + copy], [grimblast
|
||||||
|
copysave output],
|
||||||
|
[`SUPER+ALT+Print`], [Area select → annotate], [grim],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Workspaces
|
||||||
|
<workspaces>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: (55.56%, 44.44%),
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Shortcut], [Action],),
|
||||||
|
table.hline(),
|
||||||
|
[`SUPER+1..9`], [Switch to workspace 1-9],
|
||||||
|
[`SUPER+SHIFT+1..9`], [Move active window to workspace 1-9],
|
||||||
|
[`SUPER+` #raw("`");], [Toggle scratchpad (togglespecialworkspace)],
|
||||||
|
[`SUPER+SHIFT+` #raw("`");], [Move to scratchpad (movetoworkspace
|
||||||
|
special)],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
=== Workspace Layout
|
||||||
|
<workspace-layout>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 3,
|
||||||
|
align: (auto,auto,auto,),
|
||||||
|
table.header([Workspace], [Monitor], [Position],),
|
||||||
|
table.hline(),
|
||||||
|
[1], [DP-1 (TERRA 3280W)], [Left, 2560x1440\@144],
|
||||||
|
[2], [DVI-D-1 (BenQ BL2405)], [Center, 1920x1080\@60 rotated 90deg],
|
||||||
|
[3], [HDMI-A-1 (TERRA 3280W)], [Right, 2560x1440\@144],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Notes
|
||||||
|
<notes>
|
||||||
|
- `SUPER+CTRL+K` (keybind menu) does #strong[not work] --- the `sed`
|
||||||
|
pipeline breaks. Needs fix.
|
||||||
|
- The `sed` pipeline `sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/'`
|
||||||
|
fails silently because the unescaped `$` in the `sed` command gets
|
||||||
|
interpreted as a variable.
|
||||||
|
|
||||||
|
== Troubleshooting
|
||||||
|
<troubleshooting>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Issue], [Check],),
|
||||||
|
table.hline(),
|
||||||
|
[Print key not working], [`hyprctl binds | grep Print`],
|
||||||
|
[`SUPER+R` not working], [`hyprctl binds | grep 'reload'`],
|
||||||
|
[Screenshots fail], [`which grimblast satty slurp grim`],
|
||||||
|
[Clipboard empty], [`echo test | wl-copy && wl-paste`],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
|
|
||||||
|
== Satty Editor Shortcuts
|
||||||
|
<satty-editor-shortcuts>
|
||||||
|
#figure(
|
||||||
|
align(center)[#table(
|
||||||
|
columns: 2,
|
||||||
|
align: (auto,auto,),
|
||||||
|
table.header([Action], [Shortcut],),
|
||||||
|
table.hline(),
|
||||||
|
[Freehand], [F],
|
||||||
|
[Rectangle], [R],
|
||||||
|
[Ellipse], [E],
|
||||||
|
[Line/Arrow], [L],
|
||||||
|
[Text], [T],
|
||||||
|
[Blur], [B],
|
||||||
|
[Crop], [C],
|
||||||
|
[Undo], [Ctrl+Z],
|
||||||
|
[Redo], [Ctrl+Shift+Z],
|
||||||
|
[Copy], [Ctrl+C],
|
||||||
|
[Save], [Ctrl+S],
|
||||||
|
[Quit], [Esc or Ctrl+Q],
|
||||||
|
)]
|
||||||
|
, kind: table
|
||||||
|
)
|
||||||
Binary file not shown.
@@ -0,0 +1,126 @@
|
|||||||
|
---
|
||||||
|
title: "Hyprland Keybindings Cheatsheet"
|
||||||
|
author: "mw-pfeddersheim-workstation"
|
||||||
|
date: "May 2026"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Hyprland Keybindings — Full Cheatsheet
|
||||||
|
|
||||||
|
**Layout:** German (de) | **Mod key:** SUPER (Windows key) | **Source:** `hyprctl binds` live
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## General
|
||||||
|
|
||||||
|
| Shortcut | Action | Details |
|
||||||
|
|----------|--------|---------|
|
||||||
|
| `SUPER+Q` | Open terminal | kitty |
|
||||||
|
| `SUPER+C` | Kill active window | killactive |
|
||||||
|
| `SUPER+M` | Exit Hyprland | exit |
|
||||||
|
| `SUPER+E` | File manager | dolphin |
|
||||||
|
| `SUPER+V` | Toggle floating | togglefloating |
|
||||||
|
| `SUPER+D` | App launcher | hyprlauncher |
|
||||||
|
| `SUPER+P` | Toggle pseudo-split | pseudo |
|
||||||
|
| `SUPER+J` | Toggle split direction | layoutmsg togglesplit |
|
||||||
|
| `SUPER+F` | Toggle fullscreen | fullscreen 0 |
|
||||||
|
| `SUPER+R` | Reload config | hyprctl reload |
|
||||||
|
| `SUPER+SPACE` | Toggle float (popup) | togglefloating |
|
||||||
|
| `SUPER+TAB` | Cycle next window | cyclenext |
|
||||||
|
| `SUPER+SHIFT+TAB` | Cycle previous window | cyclenext prev |
|
||||||
|
| `SUPER+` `` ` `` (Grave) | Toggle scratchpad | togglespecialworkspace |
|
||||||
|
| `SUPER+SHIFT+` `` ` `` | Send window to scratchpad | movetoworkspace special |
|
||||||
|
| `SUPER+CTRL+K` | Keybind cheat menu | *(broken — pipelines to grep+fuzzel)* |
|
||||||
|
| `SUPER+CTRL+L` | Lock screen | hyprlock |
|
||||||
|
| `SUPER+B` | Web browser | google-chrome-stable |
|
||||||
|
|
||||||
|
## Navigation / Focus
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+TAB` | Cycle next window |
|
||||||
|
| `SUPER+SHIFT+TAB` | Cycle previous window |
|
||||||
|
| `SUPER+H` | Move focus left |
|
||||||
|
| `SUPER+L` | Move focus right |
|
||||||
|
| `SUPER+left arrow` | Move focus left |
|
||||||
|
| `SUPER+right arrow` | Move focus right |
|
||||||
|
| `SUPER+up arrow` | Move focus up |
|
||||||
|
| `SUPER+down arrow` | Move focus down |
|
||||||
|
|
||||||
|
## Window Movement
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+SHIFT+H` | Move window left |
|
||||||
|
| `SUPER+SHIFT+L` | Move window right |
|
||||||
|
| `SUPER+SHIFT+K` | Move window up |
|
||||||
|
| `SUPER+SHIFT+J` | Move window down |
|
||||||
|
| `SUPER+SHIFT+left` | Move window left |
|
||||||
|
| `SUPER+SHIFT+right` | Move window right |
|
||||||
|
| `SUPER+SHIFT+up` | Move window up |
|
||||||
|
| `SUPER+SHIFT+down` | Move window down |
|
||||||
|
|
||||||
|
## Window Resize
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+ALT+H` | Resize active: width -40 |
|
||||||
|
| `SUPER+ALT+L` | Resize active: width +40 |
|
||||||
|
| `SUPER+ALT+K` | Resize active: height -40 |
|
||||||
|
| `SUPER+ALT+J` | Resize active: height +40 |
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
| Shortcut | Action | Tool |
|
||||||
|
|----------|--------|------|
|
||||||
|
| `Print` | Area select → save + copy | grimblast copysave area |
|
||||||
|
| `SUPER+Print` | Active window → save + copy | grimblast copysave active |
|
||||||
|
| `SUPER+SHIFT+Print` | Full monitor → save + copy | grimblast copysave output |
|
||||||
|
| `SUPER+ALT+Print` | Area select → annotate | grim | slurp | satty |
|
||||||
|
|
||||||
|
## Workspaces
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `SUPER+1..9` | Switch to workspace 1-9 |
|
||||||
|
| `SUPER+SHIFT+1..9` | Move active window to workspace 1-9 |
|
||||||
|
| `SUPER+` `` ` `` | Toggle scratchpad (togglespecialworkspace) |
|
||||||
|
| `SUPER+SHIFT+` `` ` `` | Move to scratchpad (movetoworkspace special) |
|
||||||
|
|
||||||
|
### Workspace Layout
|
||||||
|
|
||||||
|
| Workspace | Monitor | Position |
|
||||||
|
|-----------|---------|----------|
|
||||||
|
| 1 | DP-1 (TERRA 3280W) | Left, 2560x1440@144 |
|
||||||
|
| 2 | DVI-D-1 (BenQ BL2405) | Center, 1920x1080@60 rotated 90deg |
|
||||||
|
| 3 | HDMI-A-1 (TERRA 3280W) | Right, 2560x1440@144 |
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `SUPER+CTRL+K` (keybind menu) does **not work** — the `sed` pipeline breaks. Needs fix.
|
||||||
|
- The `sed` pipeline `sed 's/^bind\s*=\s*\$mainMod/SUPER/;s/\s*#/#/'` fails silently because the unescaped `$` in the `sed` command gets interpreted as a variable.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
| Issue | Check |
|
||||||
|
|-------|-------|
|
||||||
|
| Print key not working | `hyprctl binds | grep Print` |
|
||||||
|
| `SUPER+R` not working | `hyprctl binds | grep 'reload'` |
|
||||||
|
| Screenshots fail | `which grimblast satty slurp grim` |
|
||||||
|
| Clipboard empty | `echo test | wl-copy && wl-paste` |
|
||||||
|
|
||||||
|
## Satty Editor Shortcuts
|
||||||
|
|
||||||
|
| Action | Shortcut |
|
||||||
|
|--------|----------|
|
||||||
|
| Freehand | F |
|
||||||
|
| Rectangle | R |
|
||||||
|
| Ellipse | E |
|
||||||
|
| Line/Arrow | L |
|
||||||
|
| Text | T |
|
||||||
|
| Blur | B |
|
||||||
|
| Crop | C |
|
||||||
|
| Undo | Ctrl+Z |
|
||||||
|
| Redo | Ctrl+Shift+Z |
|
||||||
|
| Copy | Ctrl+C |
|
||||||
|
| Save | Ctrl+S |
|
||||||
|
| Quit | Esc or Ctrl+Q |
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#set document(title: "Hyprland Keybindings - Pandoc")
|
||||||
|
#set text(font: ("Inter", "DejaVu Sans"), size: 9pt, lang: "de")
|
||||||
|
#set page(paper: "a4", margin: 1.2cm)
|
||||||
|
#set heading(numbering: "1.")
|
||||||
|
#set par(leading: 0.45em)
|
||||||
|
#show link: set text(navy)
|
||||||
|
#let horizontalrule = h(25%) + line(stroke: 0.5pt, length: 50%)
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#set document(title: $if(title)$$title$$else$""$endif$)
|
||||||
|
#set text(font: ($if(mainfont)$"$mainfont"$else$"Inter"$endif$, "DejaVu Sans"), size: $if(fontsize)$$fontsize$$else$9pt$endif$, lang: $if(lang)$$lang$$else$en$endif$)
|
||||||
|
#set page(paper: "a4", margin: $if(margin-top)$($margin-top$,$else$1.5cm,$endif$ $if(margin-bottom)$$margin-bottom$,$else$1.5cm,$endif$ $if(margin-left)$$margin-left$,$else$1.5cm,$endif$ $if(margin-right)$$margin-right,$else$1.5cm$endif$)$else$1.5cm$endif$)
|
||||||
|
$if(number-sections)$#set heading(numbering: "1.")$endif$
|
||||||
|
|
||||||
|
$for(include-before)$
|
||||||
|
$include-before$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
$body$
|
||||||
|
|
||||||
|
$for(include-after)$
|
||||||
|
$include-after$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
$if(quotes)$#show link.label => { box(text(str: #quotes.open) + content + text(str: #quotes.close)) }$endif$
|
||||||
Binary file not shown.
+143
-194
@@ -1,218 +1,167 @@
|
|||||||
# Yazi v26.5.6 - Cheatsheet & Daily Usage Tricks
|
---
|
||||||
|
title: "Yazi v26.5.6 Cheatsheet"
|
||||||
|
author: "mw-pfeddersheim-workstation"
|
||||||
|
date: "May 2026"
|
||||||
|
---
|
||||||
|
|
||||||
Version: 26.5.6 (Arch Linux 2026-05-10) | Rust-based terminal file manager
|
# Yazi Cheatsheet
|
||||||
Config: ~/.config/yazi/ (keymap.toml, yazi.toml, theme.toml, init.lua)
|
|
||||||
|
|
||||||
============================================================
|
**Version:** 26.5.6 (Arch Linux 2026-05-10) **Config:** `~/.config/yazi/`
|
||||||
QUICK START
|
|
||||||
============================================================
|
|
||||||
yazi # launch
|
|
||||||
y # shell wrapper (cd persists on exit)
|
|
||||||
q # quit (cwd applied)
|
|
||||||
Q # quit without changing cwd
|
|
||||||
F1 or ~ # show help / keybindings
|
|
||||||
|
|
||||||
============================================================
|
## Quick Start
|
||||||
NAVIGATION (essential)
|
|
||||||
============================================================
|
|
||||||
h parent directory
|
|
||||||
l enter dir / open hovered file
|
|
||||||
j / k down / up
|
|
||||||
H / L history back / forward
|
|
||||||
Enter open file
|
|
||||||
o open file (alternative)
|
|
||||||
Tab toggle file details / info
|
|
||||||
. toggle hidden files
|
|
||||||
~ jump to home
|
|
||||||
/ search forward
|
|
||||||
? search backward
|
|
||||||
n / N next / previous match
|
|
||||||
f interactive filter (fuzzy)
|
|
||||||
S search with fd
|
|
||||||
g g go to top
|
|
||||||
G go to bottom
|
|
||||||
|
|
||||||
============================================================
|
| Key | Action |
|
||||||
FILE OPERATIONS
|
|-----|--------|
|
||||||
============================================================
|
| `yazi` | Launch Yazi |
|
||||||
Space toggle selection (multi-select)
|
| `y` | Shell wrapper (cd persists on exit) |
|
||||||
v visual mode (range select)
|
| `q` | Quit normal (apply cwd) |
|
||||||
Ctrl+A select all
|
| `Q` | Quit without cwd change |
|
||||||
Esc clear selection
|
| `F1` | Show help |
|
||||||
y yank / copy
|
|
||||||
p paste
|
|
||||||
X cut
|
|
||||||
x undo cut
|
|
||||||
D delete to trash
|
|
||||||
Shift+D permanent delete
|
|
||||||
a create new file
|
|
||||||
Shift+A create new directory
|
|
||||||
R rename
|
|
||||||
Shift+R bulk rename (opens editor)
|
|
||||||
O "Open with..." menu
|
|
||||||
|
|
||||||
============================================================
|
## Navigation
|
||||||
TABS
|
|
||||||
============================================================
|
|
||||||
t new tab
|
|
||||||
1-9 switch to tab N
|
|
||||||
[ / ] previous / next tab
|
|
||||||
W close current tab
|
|
||||||
|
|
||||||
============================================================
|
| Key | Action |
|
||||||
SORTING
|
|-----|--------|
|
||||||
============================================================
|
| `h` | Parent directory |
|
||||||
, m sort by modified (mtime)
|
| `l` | Enter dir / open file |
|
||||||
, M sort by modified (reverse)
|
| `j` / `k` | Down / Up |
|
||||||
, c sort by created
|
| `H` / `L` | History back / forward |
|
||||||
, C sort by created (reverse)
|
| `Enter` | Open hovered file |
|
||||||
, e sort by extension
|
| `Tab` | Toggle file details |
|
||||||
, E sort by extension (reverse)
|
| `.` | Toggle hidden files |
|
||||||
, a sort alphabetically
|
| `~` | Home directory (DE: Shift+^+Space) |
|
||||||
, A sort alphabetically (reverse)
|
| `g g` | Go to top |
|
||||||
, s sort by size
|
| `G` | Go to bottom |
|
||||||
, S sort by size (reverse)
|
|
||||||
|
|
||||||
============================================================
|
## Search
|
||||||
SHELL & COMMANDS
|
|
||||||
============================================================
|
|
||||||
! drop into $SHELL here (block)
|
|
||||||
: command line (yazi internal commands)
|
|
||||||
Ctrl+S run an arbitrary shell command
|
|
||||||
|
|
||||||
============================================================
|
| Key | Action |
|
||||||
PLUGIN EMIT COMMANDS (used with : or ya emit)
|
|-----|--------|
|
||||||
============================================================
|
| `/` | Search forward |
|
||||||
:cd <path> change directory
|
| `?` | Search backward |
|
||||||
:reveal <path> reveal a file in its parent dir
|
| `n` / `N` | Next / previous match |
|
||||||
:tab_create open new tab
|
| `f` | Interactive filter (fuzzy) |
|
||||||
:tab_switch <N> switch to tab N
|
| `S` | Search with fd |
|
||||||
:quit quit
|
|
||||||
:yank yank selected
|
|
||||||
:paste paste yanked
|
|
||||||
:remove delete to trash
|
|
||||||
:rename rename hovered
|
|
||||||
:shell <cmd> run shell command
|
|
||||||
|
|
||||||
============================================================
|
## File Operations
|
||||||
CONFIGURATION (key files)
|
|
||||||
============================================================
|
|
||||||
keymap.toml custom keybindings
|
|
||||||
yazi.toml behavior, previewers, open rules
|
|
||||||
theme.toml colors, UI theme
|
|
||||||
init.lua Lua startup script (plugins, status bar tweaks)
|
|
||||||
~/.config/yazi/plugins/ plugin directory
|
|
||||||
|
|
||||||
============================================================
|
| Key | Action |
|
||||||
POWER TRICKS & BEST PRACTICES
|
|-----|--------|
|
||||||
============================================================
|
| `Space` | Toggle selection |
|
||||||
|
| `v` | Visual mode range select |
|
||||||
|
| `Ctrl+A` | Select all |
|
||||||
|
| `Esc` | Clear selection |
|
||||||
|
| `y` | Yank (copy) |
|
||||||
|
| `p` | Paste |
|
||||||
|
| `X` | Cut |
|
||||||
|
| `x` | Undo cut |
|
||||||
|
| `D` | Delete to trash |
|
||||||
|
| `Shift+D` | Permanent delete |
|
||||||
|
| `a` | New file |
|
||||||
|
| `Shift+A` | New directory |
|
||||||
|
| `R` | Rename |
|
||||||
|
| `Shift+R` | Bulk rename |
|
||||||
|
| `O` | "Open with..." menu |
|
||||||
|
|
||||||
1. Shell Wrapper (cd persistence)
|
## Sorting (comma prefix)
|
||||||
Use the `y` wrapper script instead of raw `yazi` so your shell
|
|
||||||
`cd`s into the directory you navigated to on exit.
|
|
||||||
Install: https://yazi-rs.github.io/docs/quick-start/#shell-wrapper
|
|
||||||
|
|
||||||
2. Open files in default apps (xdg-open)
|
| Key | Action |
|
||||||
Add to yazi.toml:
|
|-----|--------|
|
||||||
[[opener.system_default]]
|
| `, m` | Modified (newest) |
|
||||||
run = "xdg-open \"$1\""
|
| `, M` | Modified reverse |
|
||||||
for = "linux"
|
| `, c` | Created (newest) |
|
||||||
desc = "System Default"
|
| `, C` | Created reverse |
|
||||||
[[open.rules]]
|
| `, e` | Extension (alpha) |
|
||||||
name = "*"
|
| `, a` | Alphabetic |
|
||||||
use = ["system_default"]
|
| `, s` | Size (largest) |
|
||||||
|
| `, S` | Size (smallest, reverse) |
|
||||||
|
|
||||||
3. Drop to shell from anywhere
|
## Tabs
|
||||||
Add to keymap.toml:
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = "!"
|
|
||||||
for = "unix"
|
|
||||||
run = 'shell "$SHELL" --block'
|
|
||||||
desc = "Open $SHELL here"
|
|
||||||
|
|
||||||
4. Close input with single Esc (no Vi mode)
|
| Key | Action |
|
||||||
[[input.prepend_keymap]]
|
|-----|--------|
|
||||||
on = "<Esc>"
|
| `t` | New tab |
|
||||||
run = "close"
|
| `1` ... `9` | Switch to tab |
|
||||||
desc = "Cancel input"
|
| `[` / `]` | Prev / next tab |
|
||||||
|
| `W` | Close tab |
|
||||||
|
|
||||||
5. Copy to system clipboard on yank (Wayland)
|
## Shell & Commands
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = "y"
|
|
||||||
run = [ 'shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list', "yank" ]
|
|
||||||
|
|
||||||
6. cd to Git repo root
|
| Key | Action |
|
||||||
[[mgr.prepend_keymap]]
|
|-----|--------|
|
||||||
on = ["g", "r"]
|
| `!` | Drop into shell here |
|
||||||
run = 'shell -- ya emit cd "$(git rev-parse --show-toplevel)"'
|
| `:` | Command line |
|
||||||
|
| `Ctrl+S` | Run shell command |
|
||||||
|
|
||||||
7. Smart tab - create tab + enter hovered dir
|
## Emit Commands (`:` prefix)
|
||||||
Save plugin: ~/.config/yazi/plugins/smart-tab.yazi/main.lua
|
|
||||||
--- @sync entry
|
|
||||||
return { entry = function()
|
|
||||||
local h = cx.active.current.hovered
|
|
||||||
ya.emit("tab_create", h and h.cha.is_dir and { h.url } or { current = true })
|
|
||||||
end }
|
|
||||||
Bind in keymap.toml:
|
|
||||||
[[mgr.prepend_keymap]]
|
|
||||||
on = ["t", "t"] run = "plugin smart-tab"
|
|
||||||
|
|
||||||
8. Performance: disable unnecessary image previews
|
| Command | Action |
|
||||||
If you don't need image previews, disable them:
|
|---------|--------|
|
||||||
[plugin]
|
| `:cd <path>` | Change directory |
|
||||||
preloaders = []
|
| `:reveal` | Reveal file in parent dir |
|
||||||
previewers = []
|
| `:tab_create` | Open new tab |
|
||||||
Or for network mounts only:
|
| `:tab_switch N` | Switch to tab N |
|
||||||
[[plugin.prepend_preloaders]]
|
| `:quit` | Quit Yazi |
|
||||||
url = "/remote/**"
|
| `:yank` | Yank selected |
|
||||||
run = "noop"
|
| `:paste` | Paste yanked |
|
||||||
|
| `:remove` | Trash |
|
||||||
|
| `:rename` | Rename hovered |
|
||||||
|
| `:shell <cmd>` | Run shell command |
|
||||||
|
|
||||||
9. Show username+hostname in header (init.lua)
|
## Power Tricks
|
||||||
Header:children_add(function()
|
|
||||||
if ya.target_family() ~= "unix" then return "" end
|
|
||||||
return ui.Span(ya.user_name().."@"..ya.host_name()..":"):fg("blue")
|
|
||||||
end, 500, Header.LEFT)
|
|
||||||
|
|
||||||
10. Show symlink target in status bar (init.lua)
|
### 1. Shell Wrapper (cd persists)
|
||||||
Status:children_add(function(self)
|
Use the `y` wrapper instead of raw `yazi` so your shell cds into the directory you navigated to on exit.
|
||||||
local h = self._current.hovered
|
|
||||||
if h and h.link_to then
|
|
||||||
return " -> "..tostring(h.link_to) else return ""
|
|
||||||
end
|
|
||||||
end, 3300, Status.LEFT)
|
|
||||||
|
|
||||||
============================================================
|
### 2. Clipboard on Yank (Wayland)
|
||||||
PLUGINS WORTH INSTALLING (yazi-rs/plugins)
|
Bind `y` in `keymap.toml` to `wl-copy -t text/uri-list` then yank for system clipboard integration.
|
||||||
============================================================
|
|
||||||
full-border.yazi full panel borders
|
|
||||||
smart-enter.yazi open files or enter dirs with one key
|
|
||||||
smart-paste.yazi paste without entering directory
|
|
||||||
toggle-pane.yazi maximize/hide preview pane
|
|
||||||
confirm-quit.yazi confirm quit when tabs are open
|
|
||||||
no-status.yazi hide status bar for minimal UI
|
|
||||||
mime-ext.yazi fast extension-based mime detection
|
|
||||||
chmod.yazi change file permissions
|
|
||||||
7zip.yazi archive support
|
|
||||||
zoxide.yazi zoxide integration for jump history
|
|
||||||
|
|
||||||
============================================================
|
### 3. Git Root Jump
|
||||||
DDS (Data Distribution Service) EVENTS
|
Bind `g r` to `ya emit cd "$(git rev-parse --show-toplevel)"`
|
||||||
============================================================
|
|
||||||
Yazi broadcasts events via DDS socket for inter-process comms:
|
|
||||||
cd directory changed
|
|
||||||
hover file hovered
|
|
||||||
yank files yanked
|
|
||||||
bulk bulk rename in progress
|
|
||||||
Use DDS to build custom integrations (e.g. folder-specific rules).
|
|
||||||
|
|
||||||
============================================================
|
### 4. Escape Closes Input
|
||||||
DAILY DRILL (memorization order)
|
In `keymap.toml` input section: map `Esc` to `close` (skip vim mode).
|
||||||
============================================================
|
|
||||||
j/k move | l enter | h back
|
|
||||||
Space select | y copy | p paste | X cut
|
|
||||||
D delete | R rename | a create | . hidden
|
|
||||||
/ search | f filter | g g top | G bottom
|
|
||||||
t tab | 1-9 switch | ! shell | q quit
|
|
||||||
|
|
||||||
============================================================
|
### 5. Disable Image Previews
|
||||||
Generated 2026-05-21 | Sources: yazi-rs.github.io/docs, official tips page
|
In `yazi.toml` `plugin` section: `preloaders = []` and `previewers = []`.
|
||||||
|
For network mounts: `url = /remote/** run = noop`.
|
||||||
|
|
||||||
|
### 6. Hostname in Header
|
||||||
|
In `init.lua`: `Header:children_add` with `user_name()` + `host_name()` spans.
|
||||||
|
|
||||||
|
### 7. Show Symlink Target in Status Bar
|
||||||
|
In `init.lua`: `Status:children_add` with `h.link_to`.
|
||||||
|
|
||||||
|
## Configuration Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `keymap.toml` | Custom key bindings |
|
||||||
|
| `yazi.toml` | Behavior, preview rules, openers |
|
||||||
|
| `theme.toml` | Colors and UI theme |
|
||||||
|
| `init.lua` | Lua startup script |
|
||||||
|
| `plugins/` | Plugin directory |
|
||||||
|
|
||||||
|
## Recommended Plugins
|
||||||
|
|
||||||
|
| Plugin | Purpose |
|
||||||
|
|--------|---------|
|
||||||
|
| `smart-enter` | One key: open file or enter dir |
|
||||||
|
| `smart-paste` | Paste without entering dir |
|
||||||
|
| `smart-tab` | New tab + enter hovered dir |
|
||||||
|
| `toggle-pane` | Maximize / hide preview pane |
|
||||||
|
| `full-border` | Full panel borders |
|
||||||
|
| `confirm-quit` | Confirm on multi-tab |
|
||||||
|
| `zoxide` | Zoxide dir jumping |
|
||||||
|
| `chmod` | Change file permissions |
|
||||||
|
|
||||||
|
## Daily Drill
|
||||||
|
|
||||||
|
| Area | Keys |
|
||||||
|
|------|------|
|
||||||
|
| **Nav** | `j/k` move / `l` enter / `h` back |
|
||||||
|
| **Files** | `Space` select / `y` copy / `p` paste / `X` cut |
|
||||||
|
| **Delete** | `D` trash / `R` rename / `a` create |
|
||||||
|
| **Search** | `/` search / `f` filter / `g` top / `G` bottom |
|
||||||
|
| **Tabs** | `t` new / `1-9` switch / `W` close |
|
||||||
|
| **Misc** | `!` shell / `q` quit / `F1` help |
|
||||||
|
|||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
# quarto.yml - Batch PDF conversion config
|
||||||
|
# Use: quarto render docs/*.md --to typst-pdf
|
||||||
|
# Or: quarto render docs/md-to-pdf-combo.md --to typst-pdf
|
||||||
|
|
||||||
|
project:
|
||||||
|
type: default
|
||||||
|
output-dir: "./docs/pdf-output"
|
||||||
|
|
||||||
|
format:
|
||||||
|
typst-pdf:
|
||||||
|
default: true
|
||||||
|
toc: false
|
||||||
|
number-sections: true
|
||||||
|
mainfont: "Inter"
|
||||||
|
monofont: "JetBrains Mono"
|
||||||
|
fontsize: 9pt
|
||||||
|
papersize: a4
|
||||||
|
margin:
|
||||||
|
top: 1.5cm
|
||||||
|
bottom: 1.5cm
|
||||||
|
left: 1.5cm
|
||||||
|
right: 1.5cm
|
||||||
Executable
+72
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# batch-pdf.sh - Convert all Markdown docs to professional PDFs via Pandoc + WeasyPrint
|
||||||
|
# Usage: bash scripts/batch-pdf.sh [directory]
|
||||||
|
# Default directory: docs/
|
||||||
|
#
|
||||||
|
# Pipeline: pandoc md → HTML → weasyprint CSS → PDF
|
||||||
|
# Requires: pandoc, weasyprint, CSS file at docs/pdf-comparison/cheatsheet.css
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PROJ_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
CSS_PATH="${PROJ_ROOT}/docs/pdf-comparison/cheatsheet.css"
|
||||||
|
DOC_DIR="${1:-${PROJ_ROOT}/docs}"
|
||||||
|
OUTPUT_DIR="${PROJ_ROOT}/docs/pdf-output"
|
||||||
|
|
||||||
|
# Verify dependencies
|
||||||
|
for cmd in pandoc weasyprint; do
|
||||||
|
command -v "$cmd" &>/dev/null || { echo "ERROR: $cmd not found. Install: sudo pacman -S $cmd"; exit 1; }
|
||||||
|
done
|
||||||
|
[[ -f "$CSS_PATH" ]] || { echo "ERROR: CSS not found at $CSS_PATH"; exit 1; }
|
||||||
|
|
||||||
|
mkdir -p "${OUTPUT_DIR}"
|
||||||
|
count=0
|
||||||
|
errors=0
|
||||||
|
tmpdir=$(mktemp -d)
|
||||||
|
|
||||||
|
echo "=== Markdown → PDF Batch (Pandoc + WeasyPrint + CSS) ==="
|
||||||
|
echo "CSS: ${CSS_PATH}"
|
||||||
|
echo "Input: ${DOC_DIR}"
|
||||||
|
echo "Output: ${OUTPUT_DIR}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
find "${DOC_DIR}" -name "*.md" -not -path "*/pdf-output/*" -not -path "*/.*" -not -name "hyprland-keybindings-no-meta.md" | sort | while read -r md_file; do
|
||||||
|
rel_path="${md_file#${DOC_DIR}/}"
|
||||||
|
rel_dir="$(dirname "${rel_path#${DOC_DIR#${PROJ_ROOT}/}/}")"
|
||||||
|
basename="$(basename "${md_file}" .md)"
|
||||||
|
title="${basename//-/ }"
|
||||||
|
|
||||||
|
out_subdir="${OUTPUT_DIR}"
|
||||||
|
if [[ "${rel_dir}" != "." && -n "${rel_dir}" ]]; then
|
||||||
|
out_subdir="${OUTPUT_DIR}/${rel_dir}"
|
||||||
|
fi
|
||||||
|
mkdir -p "${out_subdir}"
|
||||||
|
|
||||||
|
html_file="${tmpdir}/${basename}.html"
|
||||||
|
pdf_file="${out_subdir}/${basename}.pdf"
|
||||||
|
|
||||||
|
echo " ${rel_path} ..."
|
||||||
|
|
||||||
|
pandoc "${md_file}" -t html5 --standalone \
|
||||||
|
--css "file://${CSS_PATH}" \
|
||||||
|
--metadata title="${title}" \
|
||||||
|
-o "${html_file}" 2>&1 || { echo " PANDOC ERROR"; errors=$((errors+1)); continue; }
|
||||||
|
|
||||||
|
weasyprint "${html_file}" "${pdf_file}" 2>/dev/null || \
|
||||||
|
weasyprint "${html_file}" "${pdf_file}" 2>&1 | head -1
|
||||||
|
|
||||||
|
if [[ -f "${pdf_file}" ]]; then
|
||||||
|
size=$(du -h "${pdf_file}" | cut -f1)
|
||||||
|
echo " OK (${size})"
|
||||||
|
count=$((count + 1))
|
||||||
|
else
|
||||||
|
echo " PDF GENERATION ERROR"
|
||||||
|
errors=$((errors + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf "${tmpdir}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
done_count=$(find "${OUTPUT_DIR}" -name "*.pdf" | wc -l)
|
||||||
|
echo "=== Done: ${done_count} files in ${OUTPUT_DIR} ==="
|
||||||
Reference in New Issue
Block a user