Help page refactored. the example page received only positive feedback, so I guess it's good to go.
This commit is contained in:
@@ -1,413 +1,384 @@
|
|||||||
# Welcome to I38 - Accessible i3 Window Manager
|
# Welcome to I38
|
||||||
|
|
||||||
> **Note:** This help guide has been tailored to your specific configuration. You've chosen **@WEBBROWSER@** as your web browser, **@MODKEY@** as your mod key, and your screen reader setting is **@SCREENREADER@**.
|
> **Note:** This help guide has been tailored to your specific configuration. You've chosen **@WEBBROWSER@** as your web browser, **@MODKEY@** as your mod key, and your screen reader setting is **@SCREENREADER@**.
|
||||||
|
|
||||||
## Introduction to I38
|
I38 is a desktop-like environment for blind and low-vision people based on the i3 window manager. All I38 desktop functionality can be accessed and controlled from the keyboard.
|
||||||
|
|
||||||
I38 is a configuration for the i3 window manager that makes it more accessible for blind and low-vision people. It features audio feedback, optional screen reader integration, low-vision-friendly visual settings, and keyboard shortcuts designed for efficient navigation.
|
## Quick Start
|
||||||
|
|
||||||
Unlike traditional desktop environments like GNOME or MATE, i3 is a tiling window manager, which means windows are arranged in a non-overlapping layout. This can be more efficient to navigate by keyboard, as windows are organized in a predictable structure.
|
Use this section when you want the shortest path to moving around I38. You can return to this guide whenever you need it by pressing `@MODKEY@` + `Shift` + `F1`.
|
||||||
|
|
||||||
### Coming from GNOME or MATE?
|
`Alt` + `Tab`: Move focus to the next window in the current workspace.<br>
|
||||||
|
`Alt` + `Shift` + `Tab`: Move focus to the previous window in the current workspace.<br>
|
||||||
|
`@MODKEY@` + `Return`: Open a terminal.<br>
|
||||||
|
`@MODKEY@` + `F1`: Open the applications menu.<br>
|
||||||
|
`@MODKEY@` + `F2`: Open the run dialog.<br>
|
||||||
|
`@MODKEY@` + `F4`: Close the focused window.<br>
|
||||||
|
`@MODKEY@` + `BackSpace`: Toggle fullscreen for the focused window.<br>
|
||||||
|
`Control` + `F1` through `F10`: Switch to workspace 1 through 10.<br>
|
||||||
|
`Control` + `Shift` + `F1` through `F10`: Move the focused window to workspace 1 through 10.<br>
|
||||||
|
`@RATPOISONKEY@`: Enter Ratpoison Mode.<br>
|
||||||
|
@PERSONALMODEKEY@
|
||||||
|
`@RATPOISONKEY@` followed by `apostrophe`: List windows in the current workspace.<br>
|
||||||
|
`Control` + `Alt` + `Tab`: Enter Panel Mode.<br>
|
||||||
|
`F1` in Ratpoison Mode or Panel Mode: Show the keybindings for that mode.<br>
|
||||||
|
`Escape` or `Control` + `g`: Exit Ratpoison Mode, Panel Mode, or Personal Mode without taking action.<br>
|
||||||
|
|
||||||
If you're transitioning from GNOME or MATE, here are some key differences to understand:
|
## Navigating This Document
|
||||||
|
|
||||||
- **Window Management**: In GNOME/MATE, windows can overlap freely and are typically manipulated with a mouse. In i3/I38, windows tile automatically and are primarily controlled with keyboard shortcuts.
|
This guide is organized by heading level so screen reader users can move through it quickly.
|
||||||
- **Panels and Indicators**: Instead of persistent panels with menus and indicators, I38 uses keyboard shortcuts to access functionality.
|
|
||||||
- **Workspace Navigation**: While GNOME/MATE have workspaces that you can switch between, I38's workspaces are more central to the workflow and are accessed via dedicated keyboard shortcuts.
|
|
||||||
- **Application Launching**: Rather than using a start menu or activities overview, I38 provides keyboard shortcuts for launching applications.
|
|
||||||
|
|
||||||
I38 has been configured to make this transition easier by providing a tabbed layout (similar to browser tabs) and shortcuts that may feel somewhat familiar.
|
Heading level 1 is the document title.<br>
|
||||||
|
Heading level 2 marks major topics such as Quick Start, Modes, Panel Mode, Accessibility Features, and Updating I38.<br>
|
||||||
|
Heading level 3 marks subsections inside a topic.<br>
|
||||||
|
Heading level 4 is used only for deeper reference material.
|
||||||
|
|
||||||
|
With common screen-reader browse commands, press `1` to jump to the heading level 1 title near the beginning of the document. Press `2` to move between major topics. Press `3` to move through subsections inside a topic. Press `4` to move through deeper reference sections when they are present. The exact command may vary by screen reader and browser, but heading navigation is the fastest way to learn this document's layout.
|
||||||
|
|
||||||
## Basic Concepts
|
## Basic Concepts
|
||||||
|
|
||||||
### Workspaces
|
### Workspaces
|
||||||
|
|
||||||
Workspaces act like virtual desktops, allowing you to organize applications. You have 10 workspaces available.
|
Workspaces are separate work areas for organizing applications. I38 provides 10 workspaces.
|
||||||
|
|
||||||
- Switch to workspace: `Control` + `F1` through `F10`
|
`Control` + `F1` through `F10`: Switch to workspace 1 through 10.<br>
|
||||||
- Move window to workspace: `Control` + `Shift` + `F1` through `F10`
|
`Control` + `Shift` + `F1` through `F10`: Move the focused window to workspace 1 through 10.<br>
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Similar to workspaces in GNOME/MATE, but with dedicated keyboard shortcuts rather than overview modes or workspace switchers.
|
|
||||||
|
|
||||||
### Window Management
|
### Window Management
|
||||||
|
|
||||||
Windows in I38 are arranged in a tabbed layout by default, which means windows take up the entire screen and you can switch between them like browser tabs.
|
I38 uses a tabbed layout by default. In this layout, the focused window takes the screen, and you switch between windows much like switching between tabs.
|
||||||
|
|
||||||
- Switch between windows: `Alt` + `Tab` (next) or `Alt` + `Shift` + `Tab` (previous)
|
|
||||||
- Launch terminal: `@MODKEY@` + `Return`
|
|
||||||
- Close window: `@MODKEY@` + `F4`
|
|
||||||
- Toggle fullscreen: `@MODKEY@` + `BackSpace`
|
|
||||||
- List windows in current workspace: `@RATPOISONKEY@` then `'` (apostrophe)
|
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Alt+Tab works similarly to GNOME/MATE, but window placement is automatic rather than manual.
|
|
||||||
|
|
||||||
|
`Alt` + `Tab`: Move focus to the next window.<br>
|
||||||
|
`Alt` + `Shift` + `Tab`: Move focus to the previous window.<br>
|
||||||
|
`@MODKEY@` + `Return`: Launch a terminal.<br>
|
||||||
|
`@MODKEY@` + `F4`: Close the focused window.<br>
|
||||||
|
`@MODKEY@` + `BackSpace`: Toggle fullscreen.<br>
|
||||||
|
`@RATPOISONKEY@` followed by `apostrophe`: List windows in the current workspace.<br>
|
||||||
|
`@MODKEY@` + `Shift` + `dash`: Move the focused window to the scratchpad.<br>
|
||||||
|
`@MODKEY@` + `Shift` + `equals sign`: Bind the focused window to the scratchpad so it opens there in the future.<br>
|
||||||
|
`@MODKEY@` + `dash`: Show or cycle scratchpad windows.<br>
|
||||||
|
|
||||||
## Modes in I38
|
## Modes in I38
|
||||||
|
|
||||||
|
I38 uses modes to provide many keyboard shortcuts without taking over every key all the time. A mode is entered with a specific shortcut, then the next key chooses an action.
|
||||||
|
|
||||||
### Default Mode
|
### Default Mode
|
||||||
|
|
||||||
This is the standard mode for working with applications. Most commands start with your mod key (`@MODKEY@`).
|
Default Mode is the normal mode for working with applications. Most commands in Default Mode start with your mod key, `@MODKEY@`.
|
||||||
|
|
||||||
TOPLEVELKEYBINDINGS
|
TOPLEVELKEYBINDINGS
|
||||||
|
|
||||||
### Ratpoison Mode
|
### Ratpoison Mode
|
||||||
|
|
||||||
Ratpoison mode allows quick access to common actions using shorter key combinations. To enter Ratpoison mode, press `@RATPOISONKEY@`. After pressing this key, you can execute commands with single keystrokes.
|
Ratpoison Mode provides quick access to common actions with short key sequences. To enter Ratpoison Mode, press `@RATPOISONKEY@`. After pressing that key, press one of the mode commands below.
|
||||||
|
|
||||||
Common Ratpoison mode commands:
|
`c`: Launch a terminal.<br>
|
||||||
|
`e`: Open the text editor, @TEXTEDITOR@.<br>
|
||||||
| Key | Action |
|
`@MODKEY@` + `e`: Open the email client.<br>
|
||||||
|-----|--------|
|
`f`: Open the file manager, if one was configured.<br>
|
||||||
| `c` | Launch a terminal |
|
`i`: Launch the IRC client, if one was configured.<br>
|
||||||
| `e` | Open text editor (@TEXTEDITOR@) |
|
`w`: Launch the web browser, @WEBBROWSER@.<br>
|
||||||
| `i` | Launch IRC client |
|
`s`: Launch Steam Big Picture, if Steam is installed.<br>
|
||||||
| `w` | Launch web browser (@WEBBROWSER@) |
|
`k`: Close the focused window.<br>
|
||||||
| `k` | Kill (close) the current window |
|
`m`: Launch Mumble, if it is installed.<br>
|
||||||
| `F1` | Show ratpoison mode keybindings |
|
`p`: Launch Pidgin, if it is installed.<br>
|
||||||
| `Escape` or `Control` + `g` | Exit Ratpoison mode without taking action |
|
`Print`: Perform OCR and save to the clipboard, if OCR desktop support is installed.<br>
|
||||||
| `Shift` + `c` | Restart Cthulhu screen reader, if installed |
|
`@MODKEY@` + `r`: Perform OCR and save to the clipboard, if OCR desktop support is installed.<br>
|
||||||
| `Shift` + `o` | Restart Orca screen reader, if installed |
|
`@MODKEY@` + `s`: Adjust screen brightness or enable the screen curtain, if xrandr is available.<br>
|
||||||
| `Shift` + `t` | Toggle screen reader, if one was configured |
|
`F1`: Show Ratpoison Mode keybindings.<br>
|
||||||
| `Control` + `;` | Reload I38 configuration |
|
`Escape` or `Control` + `g`: Exit Ratpoison Mode without taking action.<br>
|
||||||
| `Control` + `q` | Exit i3 (log out) |
|
`Shift` + `c`: Restart the Cthulhu screen reader, if installed.<br>
|
||||||
| `!` | Open run dialog |
|
`Shift` + `o`: Restart the Orca screen reader, if installed.<br>
|
||||||
| `Alt` + `b` | Check battery status |
|
`Shift` + `t`: Toggle the configured screen reader, if one was configured.<br>
|
||||||
| `g` | Check game controller status |
|
`Control` + `semicolon`: Reload the I38 configuration.<br>
|
||||||
|
`Control` + `Shift` + `semicolon`: Restart i3 in place.<br>
|
||||||
*GNOME/MATE comparison:* This mode has no direct equivalent in GNOME/MATE. Think of it as a command palette or quick launcher activated by a single key.
|
`@MODKEY@` + `q`: Exit i3 and end the X session, after confirmation.<br>
|
||||||
|
`Control` + `@MODKEY@` + `q`: Exit i3 and end the X session, after confirmation.<br>
|
||||||
|
`exclamation mark`: Open the run dialog.<br>
|
||||||
|
`Alt` + `b`: Check battery status.<br>
|
||||||
|
`g`: Check game controller status.<br>
|
||||||
|
`a`: Open the AI assistant.<br>
|
||||||
|
`Alt` + `Shift` + `r`: Toggle desktop audio recording and slideshow video conversion.<br>
|
||||||
|
|
||||||
### Bypass Mode
|
### Bypass Mode
|
||||||
|
|
||||||
Bypass mode passes all keys directly to the application, which is useful for applications that need many keyboard shortcuts. To enter bypass mode, press `@MODKEY@` + `Shift` + `BackSpace`. Use the same key combination to exit bypass mode.
|
Bypass Mode passes keys directly to the focused application. This is useful for applications that need many keyboard shortcuts of their own.
|
||||||
|
|
||||||
*GNOME/MATE comparison:* In GNOME/MATE, applications always receive keyboard input directly. Bypass mode simulates this behavior within i3.
|
`@MODKEY@` + `Shift` + `BackSpace`: Enter Bypass Mode.<br>
|
||||||
|
`@MODKEY@` + `Shift` + `BackSpace`: Exit Bypass Mode and return to Default Mode.<br>
|
||||||
|
|
||||||
## Personal Mode
|
## Personal Mode
|
||||||
|
|
||||||
Personal Mode is a user-defined mode for adding your own keybindings that will not be overwritten when you regenerate your I38 configuration.
|
Personal Mode is a user-defined mode for your own keybindings. I38 will not overwrite the personal mode customizations when you regenerate your I38 configuration.
|
||||||
|
|
||||||
### Entering Personal Mode
|
### Entering Personal Mode
|
||||||
|
|
||||||
When you first run I38, you are prompted to choose a personal mode key. If you selected one, press that key to enter Personal Mode.
|
When you first run I38, you are prompted to choose a Personal Mode key. If you selected one, press that key to enter Personal Mode. If you are using Stormux with the default layout, the key for Personal Mode is `Control` + `Escape`.
|
||||||
|
|
||||||
### Adding Custom Bindings
|
### Adding Custom Bindings
|
||||||
|
|
||||||
To add your own shortcuts, edit the file `~/.config/i3/customizations`. This file is never overwritten by I38.
|
To add your own shortcuts, edit `~/.config/i3/customizations`. This file is not overwritten by I38.
|
||||||
|
|
||||||
Inside the `mode "personal" { ... }` block, you can add any i3 `bindsym` commands. Be sure to end each binding with `, mode "default"` so that Personal Mode exits after the action.
|
Inside the `mode "personal" { ... }` block, you can add i3 `bindsym` commands. End each binding with `, mode "default"` when you want Personal Mode to exit after the action.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
```i3
|
<pre><code>
|
||||||
mode "personal" {
|
mode "personal" {
|
||||||
bindsym f exec firefox, mode "default"
|
bindsym f exec firefox, mode "default"
|
||||||
bindsym Shift+f exec firefox --private-window, mode "default"
|
bindsym Shift+f exec firefox --private-window, mode "default"
|
||||||
bindsym Escape mode "default"
|
bindsym Escape mode "default"
|
||||||
bindsym Control+g mode "default"
|
bindsym Control+g mode "default"
|
||||||
}
|
}
|
||||||
```
|
</code></pre>
|
||||||
|
|
||||||
In this example, pressing your personal mode key followed by `f` launches Firefox, and `Shift+f` launches a private Firefox window.
|
In this example, pressing your Personal Mode key followed by `f` launches Firefox, and `Shift` + `f` launches a private Firefox window.
|
||||||
|
|
||||||
### Default Personal Mode Bindings
|
### Default Personal Mode Bindings
|
||||||
|
|
||||||
By default, Personal Mode includes:
|
`F1`: Show Personal Mode keybindings.<br>
|
||||||
- `F1` | Show personal mode keybindings
|
`Escape` or `Control` + `g`: Exit Personal Mode without taking action.<br>
|
||||||
- `Escape` or `Control` + `g` | Exit Personal Mode without taking action
|
|
||||||
|
|
||||||
## Panel Mode
|
## Panel Mode
|
||||||
|
|
||||||
Panel Mode provides quick access to information displays and utility panels. To enter Panel Mode, press `Alt` + `Control` + `Tab`. A distinctive sound will play when Panel Mode is active.
|
Panel Mode provides quick access to information displays and utility panels. To enter Panel Mode, press `Control` + `Alt` + `Tab`. A distinctive sound plays when Panel Mode is active.
|
||||||
|
|
||||||
In Panel Mode, single keypresses launch different information panels:
|
Panel Mode automatically returns you to Default Mode after a selection is made or when you cancel with `Escape` or `Control` + `g`.
|
||||||
|
|
||||||
| Key | Action |
|
### Panel Mode Commands
|
||||||
|-----|--------|
|
|
||||||
| `F1` | Show panel mode keybindings |
|
|
||||||
| `w` | Display weather information |
|
|
||||||
| `Shift` + `w` | Open Magic Wormhole file transfer GUI |
|
|
||||||
| `t` | System Tray - Access minimized applications, status indicators, and background services *(requires waytray)* |
|
|
||||||
| `s` | Show system information |
|
|
||||||
| `r` | Open reminder panel |
|
|
||||||
| `n` | Launch notes application |
|
|
||||||
| `b` | Open Bluetooth *(requires blueman during i3 config generation)* |
|
|
||||||
| `@MODKEY@` + `b` | Speak a quick battery status |
|
|
||||||
| `Shift` + `b` | Show detailed battery information |
|
|
||||||
| `m` | Launch password manager |
|
|
||||||
| `p` | Show power options |
|
|
||||||
| `Control` + `@MODKEY@` + `l` | Lock screen *(if a screen lock method is configured)* |
|
|
||||||
| `Escape` or `Control` + `g` | Exit Panel Mode without taking action |
|
|
||||||
|
|
||||||
Just like Ratpoison Mode, Panel Mode automatically returns you to Default Mode after a selection is made or when you press Escape/Control+g to cancel.
|
`F1`: Show Panel Mode keybindings.<br>
|
||||||
|
`w`: Display weather information.<br>
|
||||||
*GNOME/MATE comparison:* Panel Mode replaces the persistent system tray and status indicators used in GNOME/MATE. Instead of having always-visible panels with clickable icons, I38 provides keyboard shortcuts to access this information on demand.
|
`Shift` + `w`: Open the Magic Wormhole file transfer GUI.<br>
|
||||||
|
`t`: Open the system tray, if waytray was installed when the i3 config was generated.<br>
|
||||||
|
`s`: Show system information.<br>
|
||||||
|
`r`: Open the reminder panel, if remind is installed.<br>
|
||||||
|
`n`: Launch the notes application.<br>
|
||||||
|
`b`: Open Bluetooth, if blueman was installed when the i3 config was generated.<br>
|
||||||
|
`@MODKEY@` + `b`: Speak a quick battery status.<br>
|
||||||
|
`Shift` + `b`: Show detailed battery information.<br>
|
||||||
|
`m`: Launch the password manager.<br>
|
||||||
|
`p`: Show power options.<br>
|
||||||
|
`Control` + `@MODKEY@` + `l`: Lock the screen, if a screen lock method is configured.<br>
|
||||||
|
`Escape` or `Control` + `g`: Exit Panel Mode without taking action.<br>
|
||||||
|
|
||||||
### System Information Panel
|
### System Information Panel
|
||||||
|
|
||||||
The system information panel (`s` key in Panel Mode) displays vital system statistics such as:
|
The system information panel, `s` in Panel Mode, displays system statistics such as CPU usage, memory usage, disk space, and network status.
|
||||||
- CPU usage
|
|
||||||
- Memory usage
|
|
||||||
- Disk space
|
|
||||||
- Network status
|
|
||||||
|
|
||||||
### Battery Information
|
### Battery Information
|
||||||
|
|
||||||
The battery report has two modes. Press `@MODKEY@` + `b` in Panel Mode for a concise spoken announcement of charge level and charging state. Press `Shift` + `b` in Panel Mode for the detailed report, shown in a reviewable text dialog instead of spoken aloud, so the full details can be navigated with the arrow keys: charge, status, health, chemistry, voltage, current, power draw, and cycle count when the hardware exposes them. The quick report is also available with `Alt` + `b` in Ratpoison Mode. If `acpi` is installed it is used for the report, otherwise I38 reads `/sys/class/power_supply` directly. In the detailed dialog, press `Control` + `Home` to jump back to the top of the text.
|
The battery report has two modes. Press `@MODKEY@` + `b` in Panel Mode for a concise spoken announcement of charge level and charging state. Press `Shift` + `b` in Panel Mode for the detailed report. The detailed report is shown in a reviewable text dialog instead of spoken aloud, so the full details can be navigated with the arrow keys.
|
||||||
|
|
||||||
|
The detailed report can include charge, status, health, chemistry, voltage, current, power draw, and cycle count when the hardware exposes them. The quick report is also available with `Alt` + `b` in Ratpoison Mode. If `acpi` is installed, it is used for the report. Otherwise, I38 reads `/sys/class/power_supply` directly. In the detailed dialog, press `Control` + `Home` to jump back to the top of the text.
|
||||||
|
|
||||||
### Weather Panel
|
### Weather Panel
|
||||||
|
|
||||||
The weather panel (`w` key in Panel Mode) provides current weather conditions and forecast information for your configured location.
|
The weather panel, `w` in Panel Mode, provides current weather conditions and forecast information for your configured location.
|
||||||
|
|
||||||
### File Transfer with Magic Wormhole
|
### File Transfer With Magic Wormhole
|
||||||
|
|
||||||
The Magic Wormhole panel (`Shift` + `w` in Panel Mode) provides a graphical user interface to the Magic Wormhole command-line application, allowing you to securely share files with others. This offers a more accessible way to use Magic Wormhole's secure file transfer capabilities.
|
The Magic Wormhole panel, `Shift` + `w` in Panel Mode, provides a graphical interface to the Magic Wormhole command-line application so you can securely share files with others.
|
||||||
|
|
||||||
### Notes Application
|
### Notes Application
|
||||||
|
|
||||||
The notes panel (`n` key in Panel Mode) provides a simple application for creating single-line notes with automatic expiration functionality:
|
The notes panel, `n` in Panel Mode, provides a simple application for creating single-line notes with automatic expiration.
|
||||||
- Create text notes quickly
|
|
||||||
- Set notes to automatically delete after a specified time period
|
- Create text notes quickly.
|
||||||
- Lock important notes to prevent automatic deletion
|
- Set notes to automatically delete after a specified time period.
|
||||||
- Temporary notes will expire after their set time limit
|
- Lock important notes to prevent automatic deletion.
|
||||||
|
- Let temporary notes expire after their set time limit.
|
||||||
|
|
||||||
### Reminder Panel
|
### Reminder Panel
|
||||||
|
|
||||||
The reminder panel (`r` key in Panel Mode) offers the same reminder functionality described in the Reminders and Notifications section, It was previously in ratpoison mode but has been moved to panel mode because it is a better fit.
|
The reminder panel, `r` in Panel Mode, offers the reminder functionality described in the Reminders and Notifications section. It was previously in Ratpoison Mode but has been moved to Panel Mode because it is a better fit.
|
||||||
|
|
||||||
### System Tray (Optional)
|
### System Tray
|
||||||
|
|
||||||
If you have waytray installed, I38 provides keyboard-accessible system tray functionality through the StatusNotifierItem (SNI) protocol. This allows you to interact with applications that use the system tray for status indicators or minimize to tray.
|
If waytray is installed, I38 provides keyboard-accessible system tray functionality through the StatusNotifierItem protocol. This lets you interact with applications that use the system tray for status indicators or background controls.
|
||||||
|
|
||||||
**Features:**
|
Features:
|
||||||
- Access minimized applications (Discord, Slack, Telegram, etc.)
|
|
||||||
- View and interact with status indicators (NetworkManager, volume, VPN, etc.)
|
|
||||||
- Control background services through their tray context menus
|
|
||||||
- Full keyboard navigation without mouse required
|
|
||||||
|
|
||||||
**Usage:**
|
- Access minimized applications.
|
||||||
1. Press `Control` + `Alt` + `Tab` to enter Panel Mode
|
- View and interact with status indicators such as network, volume, and VPN items.
|
||||||
2. Press `t` to open the system tray window
|
- Control background services through their tray context menus.
|
||||||
3. Use arrow keys to navigate between tray items
|
- Use keyboard navigation without a mouse.
|
||||||
4. Press `Enter` or `Space` to activate the selected item
|
|
||||||
5. Press `Menu` key or `Shift` + `F10` to open context menus
|
|
||||||
6. Press `Escape` to close the tray window
|
|
||||||
|
|
||||||
**Installation:**
|
Usage:
|
||||||
waytray is an optional dependency. If installed, I38 will automatically configure it to provide only system tray functionality (battery, weather, and system information are disabled to avoid duplication with I38's panel utilities).
|
|
||||||
|
|
||||||
*Note:* Without waytray installed, applications that require a system tray to run may not work with I38. However, many applications offer alternative ways to run without a tray.
|
1. Press `Control` + `Alt` + `Tab` to enter Panel Mode.
|
||||||
|
2. Press `t` to open the system tray window.
|
||||||
|
3. Use the arrow keys to navigate between tray items.
|
||||||
|
4. Press `Enter` or `Space` to activate the selected item.
|
||||||
|
5. Press `Menu` or `Shift` + `F10` to open context menus.
|
||||||
|
6. Press `Escape` to close the tray window.
|
||||||
|
|
||||||
|
Installation:
|
||||||
|
|
||||||
|
waytray is an optional dependency. If installed, I38 configures it to provide only system tray functionality. Battery, weather, and system information are disabled in waytray to avoid duplicating I38's panel utilities.
|
||||||
|
|
||||||
|
Without waytray installed, applications that require a system tray may not work with I38. Many applications also provide ways to run without a tray.
|
||||||
|
|
||||||
## Accessibility Features
|
## Accessibility Features
|
||||||
|
|
||||||
### Screen Reader
|
### Screen Reader
|
||||||
|
|
||||||
If you configured a screen reader, I38 uses @SCREENREADER@. The screen reader will provide spoken feedback about what's happening on screen so long as there is a window. If you don't have a window open and need to change something screen-reader related, press Control+Alt+d to bring up the desktop, then screen reader keys should work.
|
If you configured a screen reader, I38 uses @SCREENREADER@. The screen reader provides spoken feedback about what is happening on screen as long as there is a window. If no window is open and you need to change something screen-reader related, press `@MODKEY@` + `Control` + `d` to bring up the desktop, then use your screen reader keys.
|
||||||
|
|
||||||
- Toggle screen reader: `@RATPOISONKEY@` then `Shift` + `t`
|
`@RATPOISONKEY@` then `Shift` + `t`: Toggle the configured screen reader.<br>
|
||||||
- Restart screen reader: `@RATPOISONKEY@` then `Shift` + `o` (for Orca, if installed) or `Shift` + `c` (for Cthulhu, if installed)
|
`@RATPOISONKEY@` then `Shift` + `o`: Restart Orca, if installed.<br>
|
||||||
- Interrupt speech: `@MODKEY@` + `Shift` + `F5`
|
`@RATPOISONKEY@` then `Shift` + `c`: Restart Cthulhu, if installed.<br>
|
||||||
|
`@MODKEY@` + `Shift` + `F5`: Interrupt speech.<br>
|
||||||
*GNOME/MATE comparison:* GNOME uses Orca by default with its own keyboard shortcuts. I38 integrates screen readers more deeply with the window manager.
|
|
||||||
|
|
||||||
### Braille Display Support
|
### Braille Display Support
|
||||||
|
|
||||||
If you've enabled braille display support during setup, I38 will start XBrlAPI automatically to provide braille output from your screen reader.
|
If you enabled braille display support during setup, I38 starts XBrlAPI automatically to provide braille output from your screen reader.
|
||||||
|
|
||||||
### Low-Vision Support
|
### Low-Vision Support
|
||||||
|
|
||||||
During setup, I38 asks for the window title font size used by i3. The default is larger than standard i3 so window titles and tab labels are easier to see.
|
During setup, I38 asks for the window title font size used by i3. The default is larger than standard i3 so window titles and tab labels are easier to see.
|
||||||
|
|
||||||
- I38 applies a larger mouse cursor size at startup when xrdb is available.
|
`@MODKEY@` + `Control` + `m`: Move the mouse pointer to the center of the focused window.<br>
|
||||||
- Find the mouse pointer: `@MODKEY@` + `Control` + `m`
|
`@MODKEY@` + `Control` + `z`: Start xzoom magnifier, if it was installed when your i3 config was generated.<br>
|
||||||
- Start xzoom magnifier, if installed when your i3 config was generated: `@MODKEY@` + `Control` + `z`
|
Ratpoison Mode, then `@MODKEY@` + `s`: Adjust screen brightness or enable the screen curtain, if xrandr is available.<br>
|
||||||
- Adjust screen brightness or enable the screen curtain, if xrandr is available: In Ratpoison mode, `Alt` + `s`
|
|
||||||
|
|
||||||
I38 keeps windows in a tabbed layout by default. This gives the focused app most of the screen and reduces visual clutter, but it also means switching windows is usually done with `Alt` + `Tab`, the window list, or workspace keys rather than by clicking overlapping windows.
|
I38 keeps windows in a tabbed layout by default. This gives the focused app most of the screen and reduces visual clutter, but it also means switching windows is usually done with `Alt` + `Tab`, the window list, or workspace keys rather than by clicking overlapping windows.
|
||||||
|
|
||||||
### OCR (Optical Character Recognition)
|
### OCR
|
||||||
|
|
||||||
If required dependencies are installed, you can use OCR to read text from images or inaccessible applications:
|
If the required dependencies are installed, you can use OCR to read text from images or inaccessible applications.
|
||||||
|
|
||||||
- `@MODKEY@` + `F5`: Perform OCR on the entire screen and speak the content
|
`@MODKEY@` + `F5`: Perform OCR on the entire screen and speak the content.<br>
|
||||||
- In Ratpoison mode: `Print` or `@MODKEY@` + `r`: Perform OCR and save to clipboard
|
Ratpoison Mode, then `Print`: Perform OCR and save to the clipboard.<br>
|
||||||
|
Ratpoison Mode, then `@MODKEY@` + `r`: Perform OCR and save to the clipboard.<br>
|
||||||
*GNOME/MATE comparison:* OCR features are typically not integrated into GNOME/MATE by default.
|
|
||||||
|
|
||||||
### Screen Lock
|
### Screen Lock
|
||||||
|
|
||||||
If you enabled a screen lock during setup, press `Control` + `Alt` + `Tab` to enter panel mode, then press `Control` + `@MODKEY@` + `l` to lock the screen.
|
If you enabled a screen lock during setup, press `Control` + `Alt` + `Tab` to enter Panel Mode, then press `Control` + `@MODKEY@` + `l` to lock the screen.
|
||||||
|
|
||||||
I38 can configure either the legacy I38 PIN lock or I38Lock. The PIN lock is a privacy screen only, not a secure system lock. I38Lock is a true PAM-backed locker and unlocks with your account password. On Stormux, install I38Lock from the repository. The I38Lock repository is https://git.stormux.org/storm/i38lock. I38Lock requires Cthulhu or Orca 50 or newer for screen-reader feedback.
|
I38 can configure either the legacy I38 PIN lock or I38Lock. The PIN lock is a privacy screen only, not a secure system lock. I38Lock is a true PAM-backed locker and unlocks with your account password. On Stormux, install I38Lock from the repository. The I38Lock repository is https://git.stormux.org/storm/i38lock. I38Lock requires Cthulhu or Orca 50 or newer for screen-reader feedback.
|
||||||
|
|
||||||
I38 enables only one lock method at a time. When a screen lock method is configured, I38 can also autolock after an idle timeout. The default is never. Autolock is X11/i3-only and requires `xprintidle`; if `playerctl` is installed, I38 will avoid autolocking during likely video playback.
|
I38 enables only one lock method at a time. When a screen lock method is configured, I38 can also autolock after an idle timeout. The default is never. Autolock is X11/i3-only and requires `xprintidle`; if `playerctl` is installed, I38 avoids autolocking during likely video playback.
|
||||||
|
|
||||||
If you chose to lock the screen when I38 starts, I38 launches the configured lock shortly after i3 startup. With the PIN lock, startup lock is meant to prevent casual snooping, not to secure the system against a determined user.
|
If you chose to lock the screen when I38 starts, I38 launches the configured lock shortly after i3 startup. With the PIN lock, startup lock is meant to prevent casual snooping, not to secure the system against a determined user.
|
||||||
|
|
||||||
### Sound Effects
|
### Sound Effects
|
||||||
|
|
||||||
I38 provides audio feedback for many actions:
|
I38 provides audio feedback for many actions.
|
||||||
|
|
||||||
- Window open/close: Ascending/descending tones
|
- Window open and close sounds confirm window changes.
|
||||||
- Mode changes: Distinctive sounds for each mode
|
- Mode sounds confirm when you enter or leave a mode.
|
||||||
- Workspace changes: Subtle audio cues
|
- Workspace sounds confirm workspace changes.
|
||||||
- Fullscreen toggle: Special sound effect
|
- Fullscreen sounds confirm fullscreen changes.
|
||||||
|
|
||||||
This audio feedback provides non-visual confirmation of actions and state changes.
|
|
||||||
|
|
||||||
*GNOME/MATE comparison:* GNOME/MATE typically have fewer sound effects for window management actions.
|
|
||||||
|
|
||||||
## Application Menu and Running Programs
|
## Application Menu and Running Programs
|
||||||
|
|
||||||
Access applications in multiple ways:
|
I38 provides several ways to open applications.
|
||||||
|
|
||||||
- Applications menu: `@MODKEY@` + `F1`
|
`@MODKEY@` + `F1`: Open the applications menu.<br>
|
||||||
- Run dialog: `@MODKEY@` + `F2` or in Ratpoison mode, `!` (exclamation mark)
|
`@MODKEY@` + `F2`: Open the run dialog.<br>
|
||||||
- Common applications have dedicated shortcuts in Ratpoison mode (see table above)
|
Ratpoison Mode, then `exclamation mark`: Open the run dialog.<br>
|
||||||
|
Ratpoison Mode, then one of the application keys listed in the Ratpoison Mode section: Open a common application directly.<br>
|
||||||
The applications menu is organized by categories similar to traditional desktop environments.
|
|
||||||
|
|
||||||
The run dialog suggests previous entries, installed applications, and commands
|
|
||||||
from your `PATH` as you type. Enter a path such as `~/Downloads/` to browse its
|
|
||||||
files and subdirectories. Use the up and down arrows to select a suggestion,
|
|
||||||
Tab to insert it into the entry, and Enter to open or run it.
|
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Instead of clicking on application icons or using a start menu, I38 provides keyboard shortcuts to access applications.
|
|
||||||
|
|
||||||
|
The applications menu is organized by category. The run dialog suggests previous entries, installed applications, and commands from your `PATH` as you type. Enter a path such as `~/Downloads/` to browse its files and subdirectories. Use the up and down arrows to select a suggestion, `Tab` to insert it into the entry, and `Enter` to open or run it.
|
||||||
|
|
||||||
## Reminders and Notifications
|
## Reminders and Notifications
|
||||||
|
|
||||||
I38 includes integration with the `remind` program for managing reminders:
|
I38 includes integration with the `remind` program for managing reminders.
|
||||||
|
|
||||||
- Access the reminder tool: `Alt+Control+Tab` then `r`
|
`Control` + `Alt` + `Tab`, then `r`: Open the reminder tool.<br>
|
||||||
- Create various types of reminders (one-time, daily, weekly, monthly)
|
|
||||||
- Get notification alerts for your reminders
|
|
||||||
|
|
||||||
The reminder tool provides the following features:
|
|
||||||
|
|
||||||
- **One-time Reminders**: Set for a specific date and time
|
|
||||||
- **Daily Reminders**: Occur every day at the specified time
|
|
||||||
- **Weekly Reminders**: Occur on specific days of the week
|
|
||||||
- **Monthly Reminders**: Occur on a specific day each month or the last day of each month
|
|
||||||
- **Custom Reminders**: Create complex reminder patterns
|
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Similar to calendar applications in GNOME/MATE but with a simplified interface optimized for keyboard navigation.
|
|
||||||
|
|
||||||
|
The reminder tool can create one-time, daily, weekly, monthly, and custom reminders. I38 can also provide notification alerts for your reminders.
|
||||||
|
|
||||||
## Volume and Media Controls
|
## Volume and Media Controls
|
||||||
|
|
||||||
### System Volume
|
### System Volume
|
||||||
|
|
||||||
- Increase volume: `@MODKEY@` + `XF86AudioRaiseVolume`
|
`@MODKEY@` + `XF86AudioRaiseVolume`: Increase system volume.<br>
|
||||||
- Decrease volume: `@MODKEY@` + `XF86AudioLowerVolume`
|
`@MODKEY@` + `XF86AudioLowerVolume`: Decrease system volume.<br>
|
||||||
- Mute/unmute: `@MODKEY@` + `XF86AudioMute`
|
`@MODKEY@` + `XF86AudioMute`: Mute or unmute system volume.<br>
|
||||||
|
In Ratpoison Mode, `Alt` + `Shift` + `0`: Increase system volume.<br>
|
||||||
|
In Ratpoison Mode, `Alt` + `Shift` + `9`: Decrease system volume.<br>
|
||||||
|
|
||||||
### Media Player Controls
|
### Media Player Controls
|
||||||
|
|
||||||
- Play/Pause: `XF86AudioPlay`
|
`XF86AudioPlay`: Play music.<br>
|
||||||
- Next track: `XF86AudioNext`
|
`XF86AudioNext`: Move to the next track.<br>
|
||||||
- Previous track: `XF86AudioPrev`
|
`XF86AudioPrev`: Move to the previous track.<br>
|
||||||
- Stop: `XF86AudioStop`
|
`XF86AudioStop`: Stop playback.<br>
|
||||||
- Media info: `@MODKEY@` + `XF86AudioPlay`
|
`@MODKEY@` + `XF86AudioPlay`: Speak media player information.<br>
|
||||||
|
|
||||||
In Ratpoison mode, these are also available with Alt+Shift combinations:
|
In Ratpoison Mode, these media controls are also available:
|
||||||
|
|
||||||
- Increase volume: `Alt` + `Shift` + `=`
|
|
||||||
- Decrease volume: `Alt` + `Shift` + `-`
|
|
||||||
- Previous track: `Alt` + `Shift` + `z`
|
|
||||||
- Pause: `Alt` + `Shift` + `c`
|
|
||||||
- Play: `Alt` + `Shift` + `x`
|
|
||||||
- Stop: `Alt` + `Shift` + `v`
|
|
||||||
- Next track: `Alt` + `Shift` + `b`
|
|
||||||
- Media info: `Alt` + `Shift` + `u`
|
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Media controls are similar to those in GNOME/MATE, with the addition of audio feedback.
|
|
||||||
|
|
||||||
|
`Alt` + `Shift` + `equals sign`: Increase music volume.<br>
|
||||||
|
`Alt` + `Shift` + `dash`: Decrease music volume.<br>
|
||||||
|
`Alt` + `Shift` + `z`: Previous track.<br>
|
||||||
|
`Alt` + `Shift` + `c`: Pause.<br>
|
||||||
|
`Alt` + `Shift` + `x`: Play.<br>
|
||||||
|
`Alt` + `Shift` + `v`: Stop.<br>
|
||||||
|
`Alt` + `Shift` + `b`: Next track.<br>
|
||||||
|
`Alt` + `Shift` + `u`: Speak media player information.<br>
|
||||||
|
|
||||||
## File Management
|
## File Management
|
||||||
|
|
||||||
@FILEBROWSERHELP@
|
@FILEBROWSERHELP@
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Similar functionality to Nautilus (GNOME) or Caja (MATE), but launched via keyboard shortcut rather than from a desktop icon or menu.
|
|
||||||
|
|
||||||
|
|
||||||
## System Operations
|
## System Operations
|
||||||
|
|
||||||
- Reload I38 configuration: In Ratpoison mode, `Control` + `;` (semicolon)
|
Ratpoison Mode, then `Control` + `semicolon`: Reload the I38 configuration.<br>
|
||||||
- Exit i3 (log out): In Ratpoison mode, `Control` + `q`
|
Ratpoison Mode, then `Control` + `Shift` + `semicolon`: Restart i3 in place while preserving your layout and session.<br>
|
||||||
- Check battery status: In Ratpoison mode, `Alt` + `b`
|
Ratpoison Mode, then `@MODKEY@` + `q`: Exit i3 and end the X session, after confirmation.<br>
|
||||||
- Check game controller status: In Ratpoison mode, `g`
|
Ratpoison Mode, then `Control` + `@MODKEY@` + `q`: Exit i3 and end the X session, after confirmation.<br>
|
||||||
- Adjust screen brightness (if xrandr is available): In Ratpoison mode, `Alt` + `s`
|
Ratpoison Mode, then `Alt` + `b`: Check battery status.<br>
|
||||||
- Find the mouse pointer: `@MODKEY@` + `Control` + `m`
|
Ratpoison Mode, then `g`: Check game controller status.<br>
|
||||||
- Start xzoom magnifier, if installed: `@MODKEY@` + `Control` + `z`
|
Ratpoison Mode, then `@MODKEY@` + `s`: Adjust screen brightness, if xrandr is available.<br>
|
||||||
|
`@MODKEY@` + `Control` + `m`: Move the mouse pointer to the center of the focused window.<br>
|
||||||
*GNOME/MATE comparison:* These functions are typically available through system menus or indicators in GNOME/MATE.
|
`@MODKEY@` + `Control` + `z`: Start xzoom magnifier, if it was installed when your i3 config was generated.<br>
|
||||||
|
|
||||||
|
|
||||||
## Keyboard Layouts
|
## Keyboard Layouts
|
||||||
|
|
||||||
Switch between layouts: `Super` + `Space`
|
`Super` + `Space`: Switch between keyboard layouts.
|
||||||
|
|
||||||
This is only available if you chose multiple keyboard layouts during setup.
|
This is only available if you chose multiple keyboard layouts during setup.
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Similar to keyboard layout switching in GNOME/MATE, but with a different default shortcut.
|
|
||||||
|
|
||||||
|
|
||||||
## Desktop and Window Decorations
|
## Desktop and Window Decorations
|
||||||
|
|
||||||
Unlike GNOME or MATE, i3 uses minimal window decorations. Windows don't have title bars with minimize/maximize buttons. Instead, windows fill their available space automatically, and interactions are performed through keyboard shortcuts.
|
I38 uses minimal window decorations. Windows do not use the usual title bars with minimize and maximize buttons. Instead, windows fill their available space automatically, and most interactions are performed through keyboard shortcuts.
|
||||||
|
|
||||||
- Show desktop icons: `@MODKEY@` + `Control` + `d`
|
`@MODKEY@` + `Control` + `d`: Show desktop icons.<br>
|
||||||
|
|
||||||
## Clipboard Management
|
## Clipboard Management
|
||||||
|
|
||||||
I38 includes clipboard management features:
|
`@MODKEY@` + `Control` + `c`: Open clipboard history.<br>
|
||||||
|
|
||||||
- Access clipboard history: `@MODKEY@` + `Control` + `c`
|
|
||||||
|
|
||||||
## Bookmark Management
|
## Bookmark Management
|
||||||
|
|
||||||
- Access bookmarks: `@MODKEY@` + `Control` + `b`
|
`@MODKEY@` + `Control` + `b`: Open bookmarks.<br>
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Bookmarks are typically managed within applications in GNOME/MATE. I38 provides a system-wide bookmark manager.
|
|
||||||
|
|
||||||
## Tips for New Users
|
## Tips for New Users
|
||||||
|
|
||||||
- **Use the window list**: When you're lost, use `@RATPOISONKEY@` then `'` to show all windows in the current workspace.
|
- Use the window list when you are unsure where focus is. Press `@RATPOISONKEY@`, then `apostrophe`, to show all windows in the current workspace.
|
||||||
- **Bookmark important websites**: Use `@MODKEY@` + `Control` + `b` to access bookmarks.
|
- Start with `Alt` + `Tab`, `Alt` + `Shift` + `Tab`, and the workspace keys. Those are the fastest way to get oriented.
|
||||||
- **Remember the help shortcuts**:
|
- Remember the help shortcuts. `@MODKEY@` + `Shift` + `F1` opens this guide. `F1` in Ratpoison Mode or Panel Mode opens quick keybinding help for that mode.
|
||||||
- `@MODKEY@` + `Shift` + `F1` opens the complete I38 HTML guide
|
- Let sound effects confirm mode changes, workspace changes, and fullscreen changes.
|
||||||
- Press `F1` in ratpoison or panel mode for quick keybinding reference specific to that mode
|
- Try OCR when an application or image is not accessible.
|
||||||
- **Let the sound effects guide you**: Pay attention to the audio cues to understand what's happening.
|
|
||||||
- **Take advantage of OCR**: If an application isn't accessible, try the OCR function.
|
|
||||||
|
|
||||||
### Transitioning from GNOME/MATE
|
|
||||||
|
|
||||||
- Start by learning the basic navigation shortcuts before exploring advanced features
|
|
||||||
- The tabbed layout should feel somewhat familiar if you're used to browser tabs
|
|
||||||
- Alt+Tab works similarly to GNOME/MATE for switching between windows
|
|
||||||
- Focus on keyboard commands rather than looking for visual elements like panels or docks
|
|
||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
You can customize I38 by editing the file `~/.config/i3/customizations`. This file will not be overwritten when you update I38.
|
You can customize I38 by editing `~/.config/i3/customizations`. This file is not overwritten when you update I38.
|
||||||
|
|
||||||
Example customizations:
|
Example customizations:
|
||||||
|
|
||||||
```
|
<pre><code>
|
||||||
# Change background color
|
# Change background color
|
||||||
exec_always --no-startup-id xsetroot -solid "#2E3440"
|
exec_always --no-startup-id xsetroot -solid "#2E3440"
|
||||||
|
|
||||||
# Add custom keybinding
|
# Add custom keybinding
|
||||||
bindsym $mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ 100%
|
bindsym $mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ 100%
|
||||||
```
|
</code></pre>
|
||||||
|
|
||||||
To reconfigure I38 completely, run the `i38.sh` script again.
|
To reconfigure I38 completely, run the `i38.sh` script again.
|
||||||
|
|
||||||
*GNOME/MATE comparison:* Much more text-based configuration compared to the graphical settings dialogs in GNOME/MATE.
|
|
||||||
|
|
||||||
## Updating I38
|
## Updating I38
|
||||||
|
|
||||||
I38 checks for updates in the background during your desktop session. If a newer version is found, I38 sends one notification and then stops checking for the rest of that session. If the server is unavailable or your network is down, I38 stays quiet and tries again later.
|
I38 checks for updates in the background during your desktop session. If a newer version is found, I38 sends one notification and then stops checking for the rest of that session. If the server is unavailable or your network is down, I38 stays quiet and tries again later.
|
||||||
@@ -415,26 +386,26 @@ I38 checks for updates in the background during your desktop session. If a newer
|
|||||||
To update I38 on this system:
|
To update I38 on this system:
|
||||||
|
|
||||||
1. Open a terminal with `@MODKEY@` + `Return`.
|
1. Open a terminal with `@MODKEY@` + `Return`.
|
||||||
2. Type `cd "@I38CHECKOUTPATH@"` and press Enter.
|
2. Type `cd "@I38CHECKOUTPATH@"` and press `Enter`.
|
||||||
3. Type `git pull` and press Enter.
|
3. Type `git pull` and press `Enter`.
|
||||||
4. Type `./i38.sh` and press Enter.
|
4. Type `./i38.sh` and press `Enter`.
|
||||||
|
|
||||||
Running `./i38.sh` regenerates your I38 configuration and refreshes the installed scripts. Your personal shortcuts in `~/.config/i3/customizations` are preserved.
|
Running `./i38.sh` regenerates your I38 configuration and refreshes the installed scripts. Your personal shortcuts in `~/.config/i3/customizations` are preserved.
|
||||||
|
|
||||||
To generate the default configuration without prompts, use `./i38.sh -d`. To also generate `~/.xinitrc` and `~/.xprofile` without prompts, use `./i38.sh -D`.
|
To generate the default configuration without prompts, use `./i38.sh -d`. To also generate `~/.xinitrc` and `~/.xprofile` without prompts, use `./i38.sh -D`.
|
||||||
|
|
||||||
Default configuration mode uses I38Lock when it is installed and supported by the screen-reader setup. In that case I38 locks on startup and autolocks after 5 minutes when `xprintidle` is available.
|
Default configuration mode uses I38Lock when it is installed and supported by the screen-reader setup. In that case, I38 locks on startup and autolocks after 5 minutes when `xprintidle` is available.
|
||||||
|
|
||||||
If you only need to copy the latest scripts and do not want to regenerate the full i3 configuration, you can use `./i38.sh -u` instead.
|
If you only need to copy the latest scripts and do not want to regenerate the full i3 configuration, use `./i38.sh -u`.
|
||||||
|
|
||||||
## Getting Help
|
## Getting Help
|
||||||
|
|
||||||
If you need assistance with I38, you can:
|
If you need assistance with I38:
|
||||||
|
|
||||||
- Press `@MODKEY@` + `Shift` + `F1` to view the help documentation
|
- Press `@MODKEY@` + `Shift` + `F1` to view this guide.
|
||||||
- Visit the Stormux website at [stormux.org](https://stormux.org)
|
- Visit the Stormux website at [stormux.org](https://stormux.org).
|
||||||
- Join the Stormux irc at irc.stormux.org #stormux or #a11y
|
- Join the Stormux IRC channels at `irc.stormux.org`, `#stormux` or `#a11y`.
|
||||||
- Check the i3 documentation at [i3wm.org/docs/userguide.html](https://i3wm.org/docs/userguide.html)
|
- Check the i3 documentation at [i3wm.org/docs/userguide.html](https://i3wm.org/docs/userguide.html).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1300,7 +1300,7 @@ bindsym XF86AudioNext exec --no-startup-id play -qV0 "| sox -np synth 0.03 sin 2
|
|||||||
# start a terminal
|
# start a terminal
|
||||||
bindsym \$mod+Return exec $terminalExec
|
bindsym \$mod+Return exec $terminalExec
|
||||||
|
|
||||||
# kill focused window
|
# Close focused window
|
||||||
bindsym \$mod+F4 kill
|
bindsym \$mod+F4 kill
|
||||||
|
|
||||||
# Applications menu
|
# Applications menu
|
||||||
@@ -1315,19 +1315,17 @@ bindsym Mod1+Shift+Tab focus left
|
|||||||
# Focus next window (alt+tab)
|
# Focus next window (alt+tab)
|
||||||
bindsym Mod1+Tab focus right
|
bindsym Mod1+Tab focus right
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
# Toggle fullscreen for the focused window
|
||||||
bindsym \$mod+BackSpace fullscreen toggle
|
bindsym \$mod+BackSpace fullscreen toggle
|
||||||
|
|
||||||
|
|
||||||
# Move the currently focused window to the scratchpad
|
# Move the currently focused window to the scratchpad
|
||||||
bindsym \$mod+Shift+minus move scratchpad
|
bindsym \$mod+Shift+minus move scratchpad
|
||||||
|
|
||||||
# Bind the currently focused window to the scratchpad
|
# Bind the focused window to the scratchpad so it always opens there
|
||||||
# This means it will always open in the scratchpad
|
|
||||||
bindsym \$mod+Shift+equal exec --no-startup-id ${i3Path}/scripts/bind_to_scratchpad.sh
|
bindsym \$mod+Shift+equal exec --no-startup-id ${i3Path}/scripts/bind_to_scratchpad.sh
|
||||||
|
|
||||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
# Show or cycle scratchpad windows
|
||||||
# If there are multiple scratchpad windows, this command cycles through them.
|
|
||||||
bindsym \$mod+minus scratchpad show
|
bindsym \$mod+minus scratchpad show
|
||||||
|
|
||||||
# Define names for default workspaces for which we configure key bindings later on.
|
# Define names for default workspaces for which we configure key bindings later on.
|
||||||
@@ -1422,7 +1420,7 @@ fi
|
|||||||
|
|
||||||
# Create panel mode
|
# Create panel mode
|
||||||
cat << EOF >> "${i3Path}/config"
|
cat << EOF >> "${i3Path}/config"
|
||||||
# Panel mode configuration
|
# Enter Panel Mode
|
||||||
bindsym Control+Mod1+Tab mode "panel"
|
bindsym Control+Mod1+Tab mode "panel"
|
||||||
mode "panel" {
|
mode "panel" {
|
||||||
# Panel mode keybindings help bound to F1
|
# Panel mode keybindings help bound to F1
|
||||||
@@ -1668,7 +1666,7 @@ touch "${i3Path}/customizations"
|
|||||||
touch "${i3Path}/scratchpad"
|
touch "${i3Path}/scratchpad"
|
||||||
# Check for markdown or pandoc for converting the welcome document
|
# Check for markdown or pandoc for converting the welcome document
|
||||||
if command -v pandoc &> /dev/null ; then
|
if command -v pandoc &> /dev/null ; then
|
||||||
pandoc -f markdown-citations -t html "I38.md" -so "${i3Path}/I38.html" --metadata title="Welcome to I38"
|
pandoc -f markdown-citations -t html "I38.md" -so "${i3Path}/I38.html" --metadata pagetitle="Welcome to I38"
|
||||||
elif command -v markdown &> /dev/null ; then
|
elif command -v markdown &> /dev/null ; then
|
||||||
cat << EOF > "${i3Path}/I38.html"
|
cat << EOF > "${i3Path}/I38.html"
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
@@ -1713,6 +1711,21 @@ if [[ -n "$fileBrowser" ]]; then
|
|||||||
else
|
else
|
||||||
fileBrowserHelp="No file manager was configured when this help file was generated."
|
fileBrowserHelp="No file manager was configured when this help file was generated."
|
||||||
fi
|
fi
|
||||||
|
personalModeKeyHelp=""
|
||||||
|
personalModeKeyForHelp=""
|
||||||
|
if [[ "${personalModeEnabled:-1}" -eq 0 && -n "$personalModeKey" ]]; then
|
||||||
|
personalModeKeyForHelp="$personalModeKey"
|
||||||
|
fi
|
||||||
|
if [[ -z "$personalModeKeyForHelp" ]] && [[ -f "${i3Path}/customizations" ]]; then
|
||||||
|
personalModeKeyForHelp="$(awk '/^[[:space:]]*bindsym[[:space:]].*[[:space:]]mode "personal"/ { print $2; exit }' "${i3Path}/customizations")"
|
||||||
|
fi
|
||||||
|
if [[ -n "$personalModeKeyForHelp" ]]; then
|
||||||
|
personalModeKeyDisplay="${personalModeKeyForHelp//Mod1/Alt}"
|
||||||
|
personalModeKeyDisplay="${personalModeKeyDisplay//Mod4/Super}"
|
||||||
|
personalModeKeyDisplay="${personalModeKeyDisplay//Super_L/Super Left}"
|
||||||
|
personalModeKeyDisplay="${personalModeKeyDisplay//Super_R/Super Right}"
|
||||||
|
personalModeKeyHelp="<code>${personalModeKeyDisplay}</code>: Enter Personal Mode.<br>"
|
||||||
|
fi
|
||||||
|
|
||||||
# Extract and categorize top-level keybindings for documentation
|
# Extract and categorize top-level keybindings for documentation
|
||||||
# Generate HTML directly since we're inserting into an already-converted HTML file
|
# Generate HTML directly since we're inserting into an already-converted HTML file
|
||||||
@@ -1730,19 +1743,25 @@ while IFS= read -r line; do
|
|||||||
keybinding="${line#bindsym }"
|
keybinding="${line#bindsym }"
|
||||||
keybinding="${keybinding//\\$/}"
|
keybinding="${keybinding//\\$/}"
|
||||||
|
|
||||||
# Extract just the key combination (first 1-2 words before 'exec', 'workspace', etc)
|
# Extract just the key combination, which is the first word after bindsym.
|
||||||
keyCombo=$(echo "$keybinding" | awk '{print $1, $2}' | sed 's/workspace.*//' | sed 's/exec.*//' | sed 's/kill.*//' | sed 's/fullscreen.*//' | sed 's/scratchpad.*//' | sed 's/mode.*//' | sed 's/ *$//')
|
keyCombo="${keybinding%% *}"
|
||||||
|
|
||||||
# Clean up key combo
|
# Clean up key combo
|
||||||
keyCombo="${keyCombo//\$mod/$mod}"
|
keyCombo="${keyCombo//\$mod/$mod}"
|
||||||
keyCombo="${keyCombo//Mod1/Alt}"
|
keyCombo="${keyCombo//Mod1/Alt}"
|
||||||
keyCombo="${keyCombo//Mod4/Super}"
|
keyCombo="${keyCombo//Mod4/Super}"
|
||||||
|
keyCombo="${keyCombo//+shift+/+Shift+}"
|
||||||
|
keyCombo="${keyCombo//apostrophe/apostrophe}"
|
||||||
|
keyCombo="${keyCombo//semicolon/semicolon}"
|
||||||
|
keyCombo="${keyCombo//exclam/exclamation mark}"
|
||||||
|
keyCombo="${keyCombo//minus/dash}"
|
||||||
|
keyCombo="${keyCombo//equal/equals sign}"
|
||||||
|
|
||||||
# Categorize based on the comment or the action
|
# Categorize based on the comment or the action
|
||||||
if [[ "$keybinding" =~ workspace.*number ]] && [[ "$keybinding" =~ Control+F ]]; then
|
if [[ "$keybinding" == Control+F*workspace*number* ]]; then
|
||||||
# Switch to workspace
|
# Switch to workspace
|
||||||
workspaceSwitch+=("$keyCombo|$lastComment")
|
workspaceSwitch+=("$keyCombo|$lastComment")
|
||||||
elif [[ "$keybinding" =~ move.*container.*workspace ]] && [[ "$keybinding" =~ Control+Shift+F ]]; then
|
elif [[ "$keybinding" == Control+Shift+F*move*container*workspace* ]]; then
|
||||||
# Move to workspace
|
# Move to workspace
|
||||||
workspaceMove+=("$keyCombo|$lastComment")
|
workspaceMove+=("$keyCombo|$lastComment")
|
||||||
elif [[ "$lastComment" =~ (menu|terminal|editor|browser|Run dialog) ]] || [[ "$keybinding" =~ (menu.py|run_dialog) ]]; then
|
elif [[ "$lastComment" =~ (menu|terminal|editor|browser|Run dialog) ]] || [[ "$keybinding" =~ (menu.py|run_dialog) ]]; then
|
||||||
@@ -1791,73 +1810,57 @@ done < <(
|
|||||||
' "${i3Path}/config"
|
' "${i3Path}/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Build HTML tables
|
# Build HTML reference sections without tables, so generated help stays easy to
|
||||||
|
# navigate with basic screen-reader commands.
|
||||||
|
emit_keybinding_group() {
|
||||||
|
local groupTitle="$1"
|
||||||
|
shift
|
||||||
|
local item key desc
|
||||||
|
local -a rows=()
|
||||||
|
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
for item in "$@"; do
|
||||||
|
IFS='|' read -r key desc <<< "$item"
|
||||||
|
if [[ -n "$desc" ]]; then
|
||||||
|
rows+=("$key|$desc")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ${#rows[@]} -eq 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf '<p><strong>%s:</strong><br>\n' "$groupTitle"
|
||||||
|
for item in "${rows[@]}"; do
|
||||||
|
IFS='|' read -r key desc <<< "$item"
|
||||||
|
printf '<code>%s</code>: %s<br>\n' "$key" "$desc"
|
||||||
|
done
|
||||||
|
printf '</p>\n'
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
echo "<h4>Default Mode Keybindings</h4>"
|
echo "<h4>Default Mode Keybindings</h4>"
|
||||||
|
|
||||||
# Applications
|
emit_keybinding_group "Applications" "${applications[@]}"
|
||||||
if [[ ${#applications[@]} -gt 0 ]]; then
|
|
||||||
echo "<p><strong>Applications:</strong></p>"
|
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
|
||||||
for item in "${applications[@]}"; do
|
|
||||||
IFS='|' read -r key desc <<< "$item"
|
|
||||||
echo "<tr><td><code>$key</code></td><td>$desc</td></tr>"
|
|
||||||
done
|
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Workspace Navigation
|
# Workspace Navigation
|
||||||
if [[ ${#workspaceSwitch[@]} -gt 0 ]] || [[ ${#workspaceMove[@]} -gt 0 ]]; then
|
if [[ ${#workspaceSwitch[@]} -gt 0 ]] || [[ ${#workspaceMove[@]} -gt 0 ]]; then
|
||||||
echo "<p><strong>Workspace Navigation:</strong></p>"
|
echo "<p><strong>Workspace Navigation:</strong><br>"
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
echo "<code>Control+F1</code> through <code>F10</code>: Switch to workspace 1-10<br>"
|
||||||
echo "<tr><td><code>Control+F1</code> through <code>F10</code></td><td>Switch to workspace 1-10</td></tr>"
|
echo "<code>Control+Shift+F1</code> through <code>F10</code>: Move window to workspace 1-10<br>"
|
||||||
echo "<tr><td><code>Control+Shift+F1</code> through <code>F10</code></td><td>Move window to workspace 1-10</td></tr>"
|
echo "</p>"
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Window Management
|
emit_keybinding_group "Window Management" "${windowMgmt[@]}"
|
||||||
if [[ ${#windowMgmt[@]} -gt 0 ]]; then
|
|
||||||
echo "<p><strong>Window Management:</strong></p>"
|
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
|
||||||
for item in "${windowMgmt[@]}"; do
|
|
||||||
IFS='|' read -r key desc <<< "$item"
|
|
||||||
echo "<tr><td><code>$key</code></td><td>$desc</td></tr>"
|
|
||||||
done
|
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Utilities
|
emit_keybinding_group "Utilities" "${utilities[@]}"
|
||||||
if [[ ${#utilities[@]} -gt 0 ]]; then
|
|
||||||
echo "<p><strong>Utilities:</strong></p>"
|
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
|
||||||
for item in "${utilities[@]}"; do
|
|
||||||
IFS='|' read -r key desc <<< "$item"
|
|
||||||
echo "<tr><td><code>$key</code></td><td>$desc</td></tr>"
|
|
||||||
done
|
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Modes
|
emit_keybinding_group "Modes" "${modes[@]}"
|
||||||
if [[ ${#modes[@]} -gt 0 ]]; then
|
|
||||||
echo "<p><strong>Modes:</strong></p>"
|
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
|
||||||
for item in "${modes[@]}"; do
|
|
||||||
IFS='|' read -r key desc <<< "$item"
|
|
||||||
echo "<tr><td><code>$key</code></td><td>$desc</td></tr>"
|
|
||||||
done
|
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Media (if any)
|
emit_keybinding_group "Media Controls" "${media[@]}"
|
||||||
if [[ ${#media[@]} -gt 0 ]]; then
|
|
||||||
echo "<p><strong>Media Controls:</strong></p>"
|
|
||||||
echo "<table><thead><tr><th>Key</th><th>Action</th></tr></thead><tbody>"
|
|
||||||
for item in "${media[@]}"; do
|
|
||||||
IFS='|' read -r key desc <<< "$item"
|
|
||||||
echo "<tr><td><code>$key</code></td><td>$desc</td></tr>"
|
|
||||||
done
|
|
||||||
echo "</tbody></table>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
} > "${i3Path}/toplevel_temp.txt"
|
} > "${i3Path}/toplevel_temp.txt"
|
||||||
|
|
||||||
@@ -1876,6 +1879,7 @@ I38_HELP_WEBBROWSER="$webBrowserHelp" \
|
|||||||
I38_HELP_MODKEY="$mod" \
|
I38_HELP_MODKEY="$mod" \
|
||||||
I38_HELP_SCREENREADER="$screenReaderHelp" \
|
I38_HELP_SCREENREADER="$screenReaderHelp" \
|
||||||
I38_HELP_RATPOISONKEY="$escapeKey" \
|
I38_HELP_RATPOISONKEY="$escapeKey" \
|
||||||
|
I38_HELP_PERSONALMODEKEY="$personalModeKeyHelp" \
|
||||||
I38_HELP_TEXTEDITOR="$textEditorHelp" \
|
I38_HELP_TEXTEDITOR="$textEditorHelp" \
|
||||||
I38_HELP_FILEBROWSERHELP="$fileBrowserHelp" \
|
I38_HELP_FILEBROWSERHELP="$fileBrowserHelp" \
|
||||||
I38_HELP_CHECKOUTPATH="$i38CheckoutPath" \
|
I38_HELP_CHECKOUTPATH="$i38CheckoutPath" \
|
||||||
@@ -1890,6 +1894,7 @@ replacements = {
|
|||||||
"@MODKEY@": os.environ["I38_HELP_MODKEY"],
|
"@MODKEY@": os.environ["I38_HELP_MODKEY"],
|
||||||
"@SCREENREADER@": os.environ["I38_HELP_SCREENREADER"],
|
"@SCREENREADER@": os.environ["I38_HELP_SCREENREADER"],
|
||||||
"@RATPOISONKEY@": os.environ["I38_HELP_RATPOISONKEY"],
|
"@RATPOISONKEY@": os.environ["I38_HELP_RATPOISONKEY"],
|
||||||
|
"@PERSONALMODEKEY@": os.environ["I38_HELP_PERSONALMODEKEY"],
|
||||||
"@TEXTEDITOR@": os.environ["I38_HELP_TEXTEDITOR"],
|
"@TEXTEDITOR@": os.environ["I38_HELP_TEXTEDITOR"],
|
||||||
"@FILEBROWSERHELP@": os.environ["I38_HELP_FILEBROWSERHELP"],
|
"@FILEBROWSERHELP@": os.environ["I38_HELP_FILEBROWSERHELP"],
|
||||||
"@I38CHECKOUTPATH@": os.environ["I38_HELP_CHECKOUTPATH"],
|
"@I38CHECKOUTPATH@": os.environ["I38_HELP_CHECKOUTPATH"],
|
||||||
|
|||||||
Reference in New Issue
Block a user