v1.0.2: arrow keys, start menu paging support
key press convenience methods, fix logo, docs, add more chars
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 948 KiB After Width: | Height: | Size: 906 KiB |
26
docs/system/keys.md
Normal file
26
docs/system/keys.md
Normal file
@@ -0,0 +1,26 @@
|
||||
Relevant section taken from `src/bin/main.rs`:
|
||||
|
||||
```rust
|
||||
fn key_to_char(key: Key) -> Option<KeyChar> {
|
||||
match key {
|
||||
Key::Char('\n') => Some(KeyChar::Press('𐘂')),
|
||||
Key::Char(c) => Some(KeyChar::Press(c)),
|
||||
Key::Alt(c) => Some(KeyChar::Alt(c)),
|
||||
Key::Ctrl(c) => Some(KeyChar::Ctrl(c)),
|
||||
Key::Backspace => Some(KeyChar::Press('𐘁')),
|
||||
Key::Esc => Some(KeyChar::Press('𐘃')),
|
||||
Key::Up => Some(KeyChar::Press('𐙘')),
|
||||
Key::Down => Some(KeyChar::Press('𐘞')),
|
||||
Key::Left => Some(KeyChar::Press('𐙣')),
|
||||
Key::Right => Some(KeyChar::Press('𐙥')),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The special keys backspace, enter, escape, and the arrows, are represented by a single Linear A char. For ease, there are [methods](https://docs.rs/ming-wm-lib/latest/ming_wm_lib/messages/struct.KeyPress.html) to check whether a key press is a backspace, enter, etc, without pasting the Linear A into the code.
|
||||
|
||||
Although the arrow keys are supported, please try and support the Vim `hjkl` if possible!
|
||||
|
||||
The `Press` events are sent as `WindowMessage::KeyPress(KeyPress)`, and the `Ctrl` events are sent as `WindowMessage::CtrlKeyPress(KeyPress)`. Any keys pressed along with the Alt key are not passed to the windows.
|
||||
|
||||
@@ -101,8 +101,17 @@ mv target/release/mingMisc_Example /usr/bin/mingMisc_Example #or whatever direct
|
||||
|
||||

|
||||
|
||||
## Now what?
|
||||
|
||||
Handle various inputs in `handle_message`, and have it mutate the state. Draw the relevant state in `draw`. Not too hard, eh?
|
||||
|
||||
Besides looking at the examples (Koxinga, `src/bin`), read the [ming-wm-lib docs](https://docs.rs/ming-wm-lib)!
|
||||
|
||||
Also, `docs/system/keys.md` may be useful.
|
||||
|
||||
## Tips
|
||||
|
||||
- For windows that are separate binaries, the Elm Architecture obviously cannot be enforced (unless the window is written in Rust and uses the `ming-wm-lib`. However, the design of the IPC and the nature of the window manager being keyboard-driven makes it so using the Elm Architecture is highly recommended.
|
||||
- Since the window manager currently queries and reads the responses to/from window binaries in the main thread, while the response is being waited for, the window manager is "frozen". Therefore, time-consuming tasks (>1 second) should not be done in the main thread, but rather a separate thread. For example, the ming-wm audio player (`src/bin/audio_player.rs`) does the time-consuming process of reading audio files in a separate thread to not hold up the window manager, and provide quick responses.
|
||||
- Window panics will be logged to `~/.local/share/ming-wm/logs.txt`.
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ Barebones file explorer.
|
||||
|
||||
## Navigation
|
||||
|
||||
- `j`: Move down
|
||||
- `k`: Move up
|
||||
- `j` (or down arrow): Move down
|
||||
- `k` (or up arrow): Move up
|
||||
- `i`: See info about current file / directory (press any key to escape info screen)
|
||||
- `Enter`: Go into directory
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ Tab completion is supported for the `<file>` argument.
|
||||
- `f<char>`
|
||||
- `F<char>`
|
||||
- `x`
|
||||
- `h`, `j`, `k`, `l`
|
||||
- `<num>h`, `<num>j`, `<num>k`, `<num>l`
|
||||
- `h` (or left arrow), `j` (or down arrow), `k` (or up arrow), `l` (or right arrow)
|
||||
- `<num>h`, `<num>j` (or down arrow), `<num>k` (or up arrow), `<num>l`
|
||||
- `0`, `^`, `$`
|
||||
|
||||
### Malvim Specific
|
||||
|
||||
@@ -2,9 +2,8 @@ The start menu, which can be opened and closed with the [Alt+s shortcut](../syst
|
||||
|
||||
## Navigation
|
||||
|
||||
Use the 'j' and 'k' keys to move down and up respectively. Going down past the last option returns the selection to the first option, and vice versa (it loops).
|
||||
Use the 'j' and 'k' keys to move down and up respectively. The up and down arrow keys can also be used. Going down past the last option returns the selection to the first option, and vice versa (it loops).
|
||||
|
||||
Hitting the 'enter' key will either open a subfolder containing window-likes, if a category is selected, or the corresponding window-like, if a window-like is selected. It may also exit a subfolder and return to the category selection if "Back" is selected and 'enter' is hit. There is another special case: hitting 'enter' while the "Logout" option is selected will, as the name implies, logout and return to the lock screen (this does not log out of the Linux user!).
|
||||
|
||||
For faster navigation, hitting any lower-case letter (besides 'j' and 'k') will move the selection to the next option that starts with that letter (non-looping). For example, when first opening the start menu, hitting 'e' will move the selection to "Editing". Hitting any upper-case letter will move the selection to any previous option that starts with that letter (also non-looping). For example, when initially opening the start menu, the selected option is "About". After hitting 'j' (moving down), hitting 'A' will return the selection to "About".
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ The terminal starts off in INPUT mode, which allows entering commands to run. If
|
||||
|
||||
In INPUT mode, commands can be freely typed. There are a few special control sequences:
|
||||
|
||||
- `ctrl+p`: Equivalent to the up arrow in most terminals. Brings up the previous command in the command history, and so on.
|
||||
- `ctrl+n`: Equivalent to the down arrow in most terminals. Either clears the current input if not in a previous command, else brings up the next command in the command history.
|
||||
- `ctrl+p` (or up arrow): Equivalent to the up arrow in most terminals. Brings up the previous command in the command history, and so on.
|
||||
- `ctrl+n` (or down arrow): Equivalent to the down arrow in most terminals. Either clears the current input if not in a previous command, else brings up the next command in the command history.
|
||||
|
||||
Tab completion is also supported, though only for file/directory paths.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user