Make readme easier to follow
This commit is contained in:
273
README.md
273
README.md
@@ -1,51 +1,62 @@
|
|||||||
# Linux Scripts and Configs
|
# Linux Scripts and Configs
|
||||||
|
|
||||||
A collection of Linux scripts and configs for use across multiple machines.
|
Dotfiles and scripts for Arch Linux (Manjaro), targeting Wayland (Hyprland / Sway) with an i3 fallback.
|
||||||
|
|
||||||
## Installation
|
## Setup
|
||||||
|
|
||||||
### Submodules
|
```bash
|
||||||
|
git clone --recurse-submodules <repo-url> ~/scripts
|
||||||
|
```
|
||||||
|
|
||||||
After cloning, pull submodules with:
|
If already cloned without submodules:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git submodule update --init --recursive
|
git submodule update --init --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
### Packages
|
Install all packages:
|
||||||
|
|
||||||
Install all packages using `yay`:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
yay -S $(grep -v '^\s*$' ~/scripts/packages.txt | tr '\n' ' ')
|
yay -S $(grep -v '^\s*$' ~/scripts/packages.txt | tr '\n' ' ')
|
||||||
```
|
```
|
||||||
|
|
||||||
### alacritty configuration
|
## Linking Configs
|
||||||
|
|
||||||
Add this to the `.config/alacritty/alacritty.toml`
|
Pick a window manager section below, then add the shared configs.
|
||||||
|
|
||||||
```
|
### Hyprland
|
||||||
import = [
|
|
||||||
"~/scripts/alacritty.toml"
|
```bash
|
||||||
]
|
ln -sf ~/scripts/hyprland/hyprland.conf ~/.config/hypr/hyprland.conf
|
||||||
|
ln -sf ~/scripts/waybar/waybar_hyprland_config.json ~/.config/waybar/config
|
||||||
|
ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css
|
||||||
|
ln -sf ~/scripts/wofi/wofi_style.css ~/.config/wofi/style.css
|
||||||
```
|
```
|
||||||
|
|
||||||
### tmux Configuration
|
### Sway
|
||||||
|
|
||||||
This config uses tmux plugin manager to add session save / reloading with tmux-ressurect.
|
```bash
|
||||||
Before using the config, please download the plugin manager with:
|
ln -sf ~/scripts/sway/swayconfig ~/.config/sway/config
|
||||||
|
ln -sf ~/scripts/waybar/waybar_sway_config.json ~/.config/waybar/config
|
||||||
```
|
ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css
|
||||||
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
ln -sf ~/scripts/wofi/wofi_style.css ~/.config/wofi/style.css
|
||||||
```
|
```
|
||||||
|
|
||||||
Then to use the config file, add to `~/.tmux.conf`:
|
### i3
|
||||||
|
|
||||||
```
|
```bash
|
||||||
source ~/scripts/tmux.conf
|
ln -sf ~/scripts/i3/i3config ~/.config/i3/config
|
||||||
|
ln -sf ~/scripts/i3/i3blocks.conf ~/.config/i3blocks/config
|
||||||
|
ln -sf ~/scripts/i3/i3status.conf ~/.config/i3status/config
|
||||||
```
|
```
|
||||||
|
|
||||||
### Bash/Zsh Configuration
|
### Cursor
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ln -sf ~/scripts/hatsune-miku-windows-linux-cursors/miku-cursor-linux ~/.local/share/icons/"Miku Cursor"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Shell
|
||||||
|
|
||||||
Add to `~/.bashrc` or `~/.zshrc`:
|
Add to `~/.bashrc` or `~/.zshrc`:
|
||||||
|
|
||||||
@@ -54,7 +65,31 @@ source ~/scripts/bashrc # or zshrc
|
|||||||
export PATH="~/scripts/sh:$PATH"
|
export PATH="~/scripts/sh:$PATH"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Vim Configuration
|
### Terminals
|
||||||
|
|
||||||
|
**Alacritty** - add to `~/.config/alacritty/alacritty.toml`:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
import = ["~/scripts/alacritty.toml"]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Kitty** - kitty.conf is used directly by the WM configs.
|
||||||
|
|
||||||
|
### tmux
|
||||||
|
|
||||||
|
Install the plugin manager first:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
```
|
||||||
|
|
||||||
|
Add to `~/.tmux.conf`:
|
||||||
|
|
||||||
|
```
|
||||||
|
source ~/scripts/tmux.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
### Vim
|
||||||
|
|
||||||
Add to `~/.vimrc`:
|
Add to `~/.vimrc`:
|
||||||
|
|
||||||
@@ -62,142 +97,78 @@ Add to `~/.vimrc`:
|
|||||||
source ~/scripts/vimrc
|
source ~/scripts/vimrc
|
||||||
```
|
```
|
||||||
|
|
||||||
### i3 Configuration
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -sf ~/scripts/i3/i3config ~/.config/i3/config
|
|
||||||
ln -sf ~/scripts/i3/i3blocks.conf ~/.config/i3blocks/config
|
|
||||||
ln -sf ~/scripts/i3/i3status.conf ~/.config/i3status/config
|
|
||||||
```
|
|
||||||
|
|
||||||
### Hyprland Configuration
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -sf ~/scripts/hyprland/hyprland.conf ~/.config/hypr/hyprland.conf
|
|
||||||
ln -sf ~/scripts/waybar/waybar_hyprland_config.json ~/.config/waybar/config
|
|
||||||
ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css
|
|
||||||
```
|
|
||||||
|
|
||||||
### Sway Configuration
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -sf ~/scripts/sway/swayconfig ~/.config/sway/config
|
|
||||||
ln -sf ~/scripts/waybar/waybar_sway_config.json ~/.config/waybar/config
|
|
||||||
ln -sf ~/scripts/waybar/waybar_style.css ~/.config/waybar/style.css
|
|
||||||
```
|
|
||||||
|
|
||||||
### Wofi Configuration
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -sf ~/scripts/wofi/wofi_style.css ~/.config/wofi/style.css
|
|
||||||
```
|
|
||||||
|
|
||||||
### Hatsune Miku Cursor
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ln -sf ~/scripts/hatsune-miku-windows-linux-cursors/miku-cursor-linux ~/.local/share/icons/"Miku Cursor"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Keybindings
|
## Keybindings
|
||||||
|
|
||||||
### tmux Keybindings
|
All window managers and tmux use vim-style <kbd>h</kbd><kbd>j</kbd><kbd>k</kbd><kbd>l</kbd> navigation. `$mod` is the Super key.
|
||||||
|
|
||||||
| Keybinding | Description |
|
### Shared across WMs
|
||||||
| ----------------------------------------------------------------------- | --------------------------------------------- |
|
|
||||||
| <kbd>M-f</kbd> | Prefix key (similar to <kbd>$mod</kbd> in i3) |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>Space</kbd> | Send prefix |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>Ctrl</kbd> + <kbd>s</kbd> | Save session |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>Ctrl</kbd> + <kbd>r</kbd> | Restore session |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>?</kbd> | List keys |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>[</kbd> | Enter copy mode |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>]</kbd> | Paste buffer |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>r</kbd> | Refresh client |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>R</kbd> | Reload tmux configuration |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>g</kbd> | Split window horizontally |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>v</kbd> | Split window vertically |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>h</kbd>/<kbd>j</kbd>/<kbd>k</kbd>/<kbd>l</kbd> | Select pane (left/down/up/right) |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>H</kbd>/<kbd>J</kbd>/<kbd>K</kbd>/<kbd>L</kbd> | Resize pane (left/down/up/right) |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>w</kbd> | Choose window |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>1</kbd>-<kbd>0</kbd> | Select window 1-10 |
|
|
||||||
| <kbd>M-1</kbd> to <kbd>M-0</kbd> | Create new window 1-10 |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>!</kbd>-<kbd>)</kbd> | Move current pane to window 1-10 |
|
|
||||||
| <kbd>Prefix</kbd> + <kbd>q</kbd> | Kill selected pane |
|
|
||||||
|
|
||||||
### Hyprland Keybindings
|
| Key | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| `$mod + Return` | Terminal (kitty) |
|
||||||
|
| `$mod + Shift + q` | Kill window |
|
||||||
|
| `$mod + d` | Launcher (wofi / dmenu) |
|
||||||
|
| `$mod + h/j/k/l` | Focus left/down/up/right |
|
||||||
|
| `$mod + Shift + h/j/k/l` | Move window left/down/up/right |
|
||||||
|
| `$mod + g` / `$mod + v` | Split horizontal / vertical |
|
||||||
|
| `$mod + f` | Fullscreen |
|
||||||
|
| `$mod + Shift + Space` | Toggle floating |
|
||||||
|
| `$mod + 1-8` | Switch workspace |
|
||||||
|
| `$mod + Shift + 1-8` | Move window to workspace |
|
||||||
|
| `$mod + Ctrl + 1-8` | Move window silently |
|
||||||
|
| `$mod + -` | Scratchpad show |
|
||||||
|
| `$mod + Shift + -` | Move to scratchpad |
|
||||||
|
| `$mod + b` | Previous workspace |
|
||||||
|
| `$mod + 9` | Lock screen |
|
||||||
|
| `$mod + 0` | System menu (lock/suspend/reboot/shutdown) |
|
||||||
|
| `$mod + r` | Resize mode (hjkl) |
|
||||||
|
| `$mod + m` | Toggle bar |
|
||||||
|
| `$mod + Shift + c` | Reload config |
|
||||||
|
| `$mod + Ctrl + m` | PulseAudio control |
|
||||||
|
| `$mod + F2` | Browser (Waterfox) |
|
||||||
|
| `$mod + F3` | File manager (ranger) |
|
||||||
|
| `$mod + F5` | Music (mocp) |
|
||||||
|
| `Print` | Screenshot |
|
||||||
|
|
||||||
| Keybinding | Description |
|
### System menu (`$mod + 0`)
|
||||||
| ------------------------------------------------------------------------------------------- | ---------------------------------------- |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Return</kbd> | Start terminal (kitty) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>q</kbd> | Kill focused window |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>d</kbd> | Launch wofi |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Ctrl</kbd> + <kbd>m</kbd> | Launch PulseAudio control |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>F2</kbd> | Launch Waterfox browser |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>F3</kbd> | Launch file manager (ranger) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>F3</kbd> | Launch PCManFM |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>F5</kbd> | Launch mocp music player |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>d</kbd> | Restart dunst |
|
|
||||||
| <kbd>Print</kbd> | Screenshot (flameshot gui) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Print</kbd> | Screenshot region to clipboard |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>Print</kbd> | Screenshot region to file |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Ctrl</kbd> + <kbd>x</kbd> | Kill window (hyprctl kill) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>9</kbd> | Lock screen (hyprlock) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>m</kbd> | Toggle waybar visibility |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>c</kbd> | Reload Hyprland config |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>e</kbd> | Exit Hyprland |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>0</kbd> | Enter system submap (lock/suspend/etc.) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>h</kbd>/<kbd>j</kbd>/<kbd>k</kbd>/<kbd>l</kbd> | Move focus (left/down/up/right) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>h</kbd>/<kbd>j</kbd>/<kbd>k</kbd>/<kbd>l</kbd> | Move window (left/down/up/right) |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>f</kbd> | Toggle fullscreen |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>g</kbd>/<kbd>v</kbd> | Tile horizontally/vertically |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>e</kbd> | Toggle split |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> | Toggle floating |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>s</kbd> | Pin floating window |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>-</kbd> | Toggle scratchpad |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>-</kbd> | Move to scratchpad |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>b</kbd> | Switch to previous workspace |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Ctrl</kbd> + <kbd>←</kbd>/<kbd>→</kbd> | Previous/next workspace |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>1</kbd>-<kbd>8</kbd> | Switch to workspace 1-8 |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>1</kbd>-<kbd>8</kbd> | Move window to workspace 1-8 |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>Ctrl</kbd> + <kbd>1</kbd>-<kbd>8</kbd> | Move window to workspace silently |
|
|
||||||
| <kbd>$mod</kbd> + <kbd>r</kbd> | Enter resize submap (hjkl to resize) |
|
|
||||||
|
|
||||||
#### System submap (<kbd>$mod</kbd> + <kbd>0</kbd>)
|
| Key | Action |
|
||||||
|
| --- | --- |
|
||||||
|
| `l` | Lock |
|
||||||
|
| `s` | Suspend |
|
||||||
|
| `h` | Hibernate |
|
||||||
|
| `r` | Reboot |
|
||||||
|
| `Shift + s` | Power off |
|
||||||
|
| `e` | Exit session |
|
||||||
|
| `Return` / `Esc` | Cancel |
|
||||||
|
|
||||||
| Key | Action |
|
### tmux
|
||||||
| --------------------------------- | --------- |
|
|
||||||
| <kbd>l</kbd> | Lock |
|
|
||||||
| <kbd>s</kbd> | Suspend |
|
|
||||||
| <kbd>h</kbd> | Hibernate |
|
|
||||||
| <kbd>r</kbd> | Reboot |
|
|
||||||
| <kbd>Shift</kbd> + <kbd>s</kbd> | Power off |
|
|
||||||
| <kbd>e</kbd> | Exit |
|
|
||||||
| <kbd>Return</kbd>/<kbd>Esc</kbd> | Cancel |
|
|
||||||
|
|
||||||
### i3 Keybindings
|
Prefix is <kbd>Ctrl</kbd> + <kbd>f</kbd>.
|
||||||
|
|
||||||
| Keybinding | Description |
|
| Key | Action |
|
||||||
| ---------------------------------------------------------------------------------------- | --------------------------------- |
|
| --- | --- |
|
||||||
| <kbd>$mod</kbd> + <kbd>Return</kbd> | Start a terminal (Alacritty) |
|
| `Prefix + g` | Split horizontal |
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>q</kbd> | Kill focused window |
|
| `Prefix + v` | Split vertical |
|
||||||
| <kbd>$mod</kbd> + <kbd>d</kbd> | Start program launcher (dmenu) |
|
| `Prefix + h/j/k/l` | Select pane |
|
||||||
| <kbd>$mod</kbd> + <kbd>z</kbd> | Launch categorized menu |
|
| `Prefix + Ctrl + H/J/K/L` | Resize pane |
|
||||||
| <kbd>$mod</kbd> + <kbd>Ctrl</kbd> + <kbd>m</kbd> | Launch PulseAudio control |
|
| `Prefix + 1-0` | Select window 1-10 |
|
||||||
| <kbd>$mod</kbd> + <kbd>F2</kbd> | Launch Firefox browser |
|
| `Alt + 1-0` | Create window 1-10 |
|
||||||
| <kbd>$mod</kbd> + <kbd>F3</kbd> | Launch PCManFM file manager |
|
| `Prefix + !/@ etc.` | Move pane to window 1-10 |
|
||||||
| <kbd>$mod</kbd> + <kbd>h</kbd>/<kbd>j</kbd>/<kbd>k</kbd>/<kbd>l</kbd> | Change focus (left/down/up/right) |
|
| `Prefix + w` | Choose window |
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>h</kbd>/<kbd>j</kbd>/<kbd>k</kbd>/<kbd>l</kbd> | Move focused window |
|
| `Prefix + q` | Kill pane |
|
||||||
| <kbd>$mod</kbd> + <kbd>g</kbd>/<kbd>v</kbd> | Split horizontally/vertically |
|
| `Prefix + [` / `]` | Copy mode / Paste |
|
||||||
| <kbd>$mod</kbd> + <kbd>f</kbd> | Toggle fullscreen |
|
| `Prefix + r` | Refresh |
|
||||||
| <kbd>$mod</kbd> + <kbd>1</kbd>-<kbd>8</kbd> | Switch to workspace 1-8 |
|
| `Prefix + R` | Reload config |
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>1</kbd>-<kbd>8</kbd> | Move container to workspace 1-8 |
|
| `Prefix + Ctrl + s` | Save session (resurrect) |
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>c</kbd> | Reload the configuration file |
|
| `Prefix + Ctrl + r` | Restore session (resurrect) |
|
||||||
| <kbd>$mod</kbd> + <kbd>Shift</kbd> + <kbd>r</kbd> | Restart i3 |
|
|
||||||
|
|
||||||
## Additional Scripts
|
## Scripts
|
||||||
|
|
||||||
### File Sharing Scripts
|
All in `sh/`, added to `$PATH` via the shell config above.
|
||||||
|
|
||||||
- `sharefile {filename}`: Upload file to 0x0.st and return unique identifier
|
| Script | Description |
|
||||||
- `getfile {id}`: Retrieve file from 0x0.st
|
| --- | --- |
|
||||||
|
| `sharefile <file>` | Upload a file to 0x0.st |
|
||||||
Note: These scripts interact with https://0x0.st for file sharing.
|
| `getfile <id>` | Download a file from 0x0.st |
|
||||||
|
| `waybar-history` | Stream the last zsh history entry to waybar |
|
||||||
|
|||||||
Reference in New Issue
Block a user