From 2be7fcb46938fbdd59c3d1f9d0b63d4a918fbdc2 Mon Sep 17 00:00:00 2001 From: Ulli Kehrle Date: Tue, 27 Jul 2021 20:31:20 +0200 Subject: [PATCH] grafik: verwende libxkbcommon statt xorg tools MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dies erlaubt, auch Layouts aus ~/.config/xkb zu lesen. Auch shell.nix hinzugefügt. --- grafik/Readme.md | 4 ++-- .../bilder-einzeln/flat/generate-graphics.py | 3 ++- grafik/shell.nix | 23 +++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 grafik/shell.nix diff --git a/grafik/Readme.md b/grafik/Readme.md index d8e504b0..3e9fc4f5 100644 --- a/grafik/Readme.md +++ b/grafik/Readme.md @@ -20,8 +20,8 @@ Um alle Bilder erzeugen können, benötigt man eine Vielzahl an Abhängigkeiten: - libreoffice - sed - ed - - setxkbmap und xkbcomp - - python mit numpy, pandas, matplotlib und seaborn + - libxkbcommon (xkbcli) + - python mit jinja2, more-itertools, numpy, pandas, matplotlib und seaborn - perl mit XML::Writer - php - Linux Libertine diff --git a/grafik/bilder-einzeln/flat/generate-graphics.py b/grafik/bilder-einzeln/flat/generate-graphics.py index 2080b9cf..d1035f7c 100755 --- a/grafik/bilder-einzeln/flat/generate-graphics.py +++ b/grafik/bilder-einzeln/flat/generate-graphics.py @@ -17,7 +17,8 @@ swap_m3r_ä = True if layout == "vou" or layout == "mine" else False vou = True if layout == "vou" else False mine = True if layout == "mine" else False -os.system("setxkbmap de " + layout + " -print | xkbcomp -xkb - /tmp/keymaptmp 2>/dev/null") +#os.system("setxkbmap de " + layout + " -print | xkbcomp -I ~/.config/xkb -xkb - /tmp/keymaptmp 2>/dev/null") +os.system("xkbcli compile-keymap --layout de --variant " + layout + " >/tmp/keymaptmp") # TODO: actually write/generate a proper parser for xkbmaps os.system(r'''sed -n '/xkb_symbols/,/xkb_geometry/p' /tmp/keymaptmp | tail -n +2 | grep -e 'key' -e symbols -e '}' | sed 's/symbols\[Group1]=//' | paste -sd "" - | sed 's/\;/&\n/g' | grep -v 'modifier_map' | sed -r 's/\s//g' | sed -r 's/key<(.*)>\{\[/\1=/g' | sed -r 's/\]?,?\}\;//' | grep -v '^$' > /tmp/keymap''') diff --git a/grafik/shell.nix b/grafik/shell.nix new file mode 100644 index 00000000..aa475964 --- /dev/null +++ b/grafik/shell.nix @@ -0,0 +1,23 @@ +{ pkgs ? import { } }: +pkgs.mkShell { + nativeBuildInputs = with pkgs; [ + inkscape + optipng + imagemagick + libicns + libreoffice + ed + libxkbcommon + python3 + python3Packages.pandas + python3Packages.matplotlib + python3Packages.seaborn + python3Packages.more-itertools + python3Packages.jinja2 + perl + perlPackages.XMLWriter + php + ]; + + # You also need to install the fonts (libertine gentium dejavu ... ) +}