Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gillescastel/inkscape-shortcut-manager
Inkscape shorcut manager
https://github.com/gillescastel/inkscape-shortcut-manager
inkscape latex productivity shortcut-manager shortcuts vim
Last synced: 2 days ago
JSON representation
Inkscape shorcut manager
- Host: GitHub
- URL: https://github.com/gillescastel/inkscape-shortcut-manager
- Owner: gillescastel
- License: mit
- Created: 2019-04-27T14:16:16.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-11-12T14:46:57.000Z (about 3 years ago)
- Last Synced: 2025-02-04T22:13:25.756Z (3 days ago)
- Topics: inkscape, latex, productivity, shortcut-manager, shortcuts, vim
- Language: Python
- Size: 114 KB
- Stars: 385
- Watchers: 12
- Forks: 101
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Inkscape shortcut manager
*A shortcut manager that speeds up drawing (mathematical) figures in [Inkscape](https://inkscape.org/).*
## Problem
[I write my lecture notes in LaTeX](https://castel.dev/post/lecture-notes-1) and I want to draw figures in real time, i.e. while the lecturer is drawing on the blackboard. While the figures I want to draw quite simple, drawing them in Inkscape with default shortcuts takes too much time to keep up with a fast paced lecture. My goal is to draw figures like this:
![Elliptic curve](./examplefigures/fig_1.png)
![Complex Analysis](./examplefigures/fig_2.png)
## Solution
I created a custom shortcut manager that intercepts all keyboard events sent to Inkscape windows giving me full control of user input. The script has the following features
- **Press clusters of keys (key chords) to apply common styles.** Pressing d+a gives a **d**otted **a**rrow, f+s **f**ills the selection in gray and adds a **s**troke. You want a circle that's **d**otted and **f**illed? Press f + d. Try pressing combinations of s, a, d, g, h, x, e, b, f, w. Being able to combine these common styles by pressing key chords feels quite intuitive after a while.
- **Save custom styles and objects.** Press Shift+S or Shift+A to give a style or object a name. Use it by pressing s or a and typing the name. For common styles that aren't covered by the key chords, this comes in handy.
- **Use your editor to write LaTeX.** Pressing t opens an instance of vim (or any editor you want). Write some LaTeX, close it, and the shortcut manager pastes the text in the figure. Pressing Shift+T does the same but renders the LaTeX as an svg and adds it to the document.
- **Ergonomic shortcuts for frequently used functions**. Press w for pencil, x to toggle snapping, f for Bézier, z to undo, Shift+z to delete and \` to dis/enable the shortcut manager.For more details and context, feel free to read my [blog post](https://castel.dev/post/lecture-notes-2).
## Installing
Note that this script only works on GNU/Linux using Python ≥ 3.6.
It also has the following dependencies:- `Xlib` python library to intercept keyboard events
- `pdflatex` and `pdf2svg` to render LaTeX in Inkscape
- `xclip` to access the clipboard
- `rofi` for a selection dialog when saving styles and objectsUse the shortcut manager by running `python3 main.py` and opening an Inkscape window.
## Configuration
You can configure the shortcut manager by creating a file located at `~/.config/inkscape-shortcut-manager/config.py`. You can override the rofi theme, font, editor, as well as the LaTeX template that's being used. It's merged with the default config located at `config.py`. An example configuration file is located in the `examples` directory.
## Related
* [Inkscape figure manager](https://github.com/gillescastel/inkscape-figures)