quake 0.5.0

Simple knowledge management tool for geek.
# 1. opensource technology decision

日期: 2021-11-18

## 状态

2021-11-18 提议

## 背景

Low level window Handle:

- [https://github.com/rust-windowing/winit]https://github.com/rust-windowing/winit is a window creation and management library. It can create windows and lets you handle events (for example: the window being resized, a key being pressed, a mouse movement, etc.) produced by window.

Gui Frameworks:

- [https://github.com/emilk/egui]https://github.com/emilk/egui  is a simple, fast, and highly portable immediate mode GUI library for Rust. egui runs on the web, natively, and in your favorite game engine (or will soon).
- [https://github.com/linebender/druid]https://github.com/linebender/druid is a data-first Rust-native UI design toolkit.
- [https://github.com/hecrj/iced]https://github.com/hecrj/iced is a cross-platform GUI library for Rust, inspired by Elm

Mac App Framework:

- [https://github.com/mrmekon/fruitbasket]https://github.com/mrmekon/fruitbasket fruitbasket provides two different (but related) services for helping you run your Rust binaries as native AppKit/Cocoa applications on Mac OS X.

Tray:

- ~~[Trayicon]https://github.com/ciantic/trayicon-rs/~~ not support macOS.
- [tray-item-rs]https://github.com/olback/tray-item-rs is a  Multi-platform Tray Indicator.
- [ksni]https://github.com/iovxw/ksni is A Rust implementation of the KDE/freedesktop StatusNotifierItem specification.

Tray Samples:

- [https://github.com/mrmekon/connectr]https://github.com/mrmekon/connectr is a super lightweight Spotify controller


# Spike

- [ ] hotkey binding
    - GUI based Shortcuts
        - [ ] [livesplit-hotkey](https://github.com/LiveSplit/livesplit-core/tree/master/crates/livesplit-hotkey)
        - [ ] libinput binding [input.rs]https://github.com/Smithay/input.rs
    - Terminal based Shortcuts
        - [ ] [Cursive](https://github.com/gyscos/Cursive) is a  A Text User Interface library for the Rust programming language.
        - [ ] [tui-rs](https://github.com/fdehau/tui-rs) is a  Build terminal user interfaces and dashboards using Rust.
        - [ ] [termion](https://crates.io/crates/termion) is a bindless library for manipulating terminals.
        - [ ] [Crossterm](https://github.com/crossterm-rs/crossterm) is a pure-rust, terminal manipulation library that makes it possible to write cross-platform text-based interfaces (see features).
        - [ ] Demo: [verco]https://github.com/vamolessa/verco is a simple Git/Mercurial/PlasticSCM tui client based on keyboard shortcuts.
- [ ] input simulation
    - [ ] [Enigo](https://github.com/Enigo-rs/Enigo) is a  Cross platform input simulation in Rust
    - [ ] [rdev](https://github.com/Narsil/rdev) is a Simple library to listen and send events globally to keyboard and mouse on MacOS, Windows and Linux (x11).
- [ ] Gui
    - [ ] gui framework
    - [ ] webview render
- [ ] Daemon?
    - [ ] try `.plist`?
    - [ ] libs: [daemonize]https://github.com/knsd/daemonize
    - [ ] sample: [https://github.com/Spotifyd/spotifyd]https://github.com/Spotifyd/spotifyd
- [ ] Webview?
    - [ ] [https://github.com/Boscop/web-view](https://github.com/Boscop/web-view)
- [ ] Global auto fill
    - [ ] [espanso](https://github.com/federico-terzi/espanso) is a  Cross-platform Text Expander written in Rust.
- [ ] Script Languages. [https://github.com/alilleybrinker/langs-in-rust]https://github.com/alilleybrinker/langs-in-rust
    - [ ] [rhai](https://github.com/rhaiscript/rhai) an embedded scripting language for Rust.
    - [ ] [Boa](https://github.com/boa-dev/boa) an experimental Javascript lexer, parser and interpreter written in Rust. Currently, it has support for some of the language.
    - [ ] [gluon](https://github.com/gluon-lang/gluon) is a small, statically-typed, functional programming language designed for application embedding.
    - [ ] [rune](https://github.com/rune-rs/rune)
    - [ ] [Goscript](https://github.com/oxfeeefeee/goscript)
- [ ] Code Highlight
    - [ ] [syntect](https://github.com/trishume/syntect) is a  Rust library for syntax highlighting using Sublime Text syntax definitions.
- [ ] Markdown
    - [ ] [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) is a pull parser for CommonMark, written in Rust.


## 决策

在这里补充上决策信息...

## 后果

在这里记录结果...