mirror of
https://github.com/AquaMorph/dotfiles.git
synced 2026-06-12 17:59:08 +00:00
Compare commits
336 Commits
main
..
390f8d2a0e
| Author | SHA1 | Date | |
|---|---|---|---|
| 390f8d2a0e | |||
| 35f7ddfe63 | |||
| bafcfae28d | |||
| b41a4141f2 | |||
| 547eb10705 | |||
| 4ad576de67 | |||
| 8661d65d55 | |||
| cdd6f23f30 | |||
| 4c1a3d0647 | |||
| 5e6e96e990 | |||
| 48710770b8 | |||
| 694f66c435 | |||
| 6a177305b5 | |||
| 86e889e6cb | |||
| aa57e13930 | |||
| 7de6986353 | |||
| 11a5082632 | |||
| e2a4b4a3e8 | |||
| 2fdf3fab10 | |||
| 07a406ec79 | |||
| b889d0d667 | |||
| f59c3a52c6 | |||
| 241b950ee6 | |||
| c036dafc8a | |||
| edc2b7d692 | |||
| 79b6af74af | |||
| 1165f2ab93 | |||
| f061060796 | |||
| 907ffb0e53 | |||
| d441ad6e34 | |||
| 7dfe52d6e5 | |||
| e85b63649e | |||
| e80a2ed715 | |||
| c2dd1c1942 | |||
| c789c73630 | |||
| 083d50f223 | |||
| f4686e50f7 | |||
| 37cc141f94 | |||
| 75e07a6ff7 | |||
| 869a4ce634 | |||
| 0a3eb6a4b7 | |||
| f319f26fcb | |||
| 2bf416ce93 | |||
| af38abbff2 | |||
| 8ccabe7927 | |||
| 60a2049634 | |||
| b61a1cc192 | |||
| 4a369196c9 | |||
| 4a2341ce6f | |||
| 1208f9c140 | |||
| 1aa1fd18f5 | |||
| 0e5fd8a923 | |||
| 67be4e0b36 | |||
| 19bd5c6dc8 | |||
| fc45f10664 | |||
| 52091439d4 | |||
| c33086e5f6 | |||
| 974706a8c3 | |||
| a91b34cb7f | |||
| 148a34d04f | |||
| 6d04a084cc | |||
| f5fc6c2a0e | |||
| e3d140ebb4 | |||
| a477f33c56 | |||
| d4ab38d7c4 | |||
| 1719a9bb70 | |||
| b4cf9eccef | |||
| c62bdae67d | |||
| 42728fe683 | |||
| 215f5c9bb8 | |||
| be5e6212b1 | |||
| 04f4a9aff2 | |||
| ccd44ffcef | |||
| bf626cbcf6 | |||
| b0d9ad3855 | |||
| 6f51eef489 | |||
| 347df83ffe | |||
| 2c1807d668 | |||
| a98ae738dd | |||
| ab8d6c1f22 | |||
| 6a77a0205e | |||
| fa7684c21e | |||
| aa965aca44 | |||
| 728ed5527d | |||
| 1ef1ab2108 | |||
| 74c78e877b | |||
| d250e6c3ce | |||
| 8622360433 | |||
| 53671fb05c | |||
| c967d9634f | |||
| 4812b349b5 | |||
| 4c078fd92a | |||
| b01c5ff59d | |||
| 854208f469 | |||
| 117e37410e | |||
| 4c68a6211b | |||
| 34a24b2d17 | |||
| a536ee7d47 | |||
| dd3b9efa61 | |||
| 2f0849911d | |||
| ea23e2a4a7 | |||
| e44f969ba2 | |||
| a3b9b70cb7 | |||
| fb2e5616c0 | |||
| 25f653f6af | |||
| 5d4942f074 | |||
| 18409c1140 | |||
| a9142a723b | |||
| ed6757270c | |||
| 616405a484 | |||
| 5699501192 | |||
| 3416d626cf | |||
| 8669d71ebc | |||
| fba07b4d23 | |||
| 226da5bdeb | |||
| cb8044639b | |||
| 26f2cb4963 | |||
| c596064b44 | |||
| d562d87d0a | |||
| 5f8e1c7e7b | |||
| 55fd830007 | |||
| 169ffdc1e1 | |||
| bee0f3a832 | |||
| a413dff644 | |||
| e40ff3bd9d | |||
| ec7bb7394b | |||
| 10e6311851 | |||
| 6b4545b917 | |||
| 880052d80a | |||
| 4d98c61049 | |||
| 8bf1fbdbea | |||
| 32b3e12943 | |||
| e2e6c46f98 | |||
| 90a1de1a10 | |||
| 327f36cce4 | |||
| ed2ab233cd | |||
| 38aa9bbd1b | |||
| f615d3e3db | |||
| f2dfa528ee | |||
| 560318dfa8 | |||
| 65de29ca13 | |||
| f1fcf55f7f | |||
| a0e32f6a38 | |||
| 38d6f07ce6 | |||
| edce94d03c | |||
| dcfc056cb0 | |||
| 410bf4d56a | |||
| af8c799fd1 | |||
| 4b53929cc2 | |||
| 83510a125b | |||
| ee8d5dbce9 | |||
| 80946e9761 | |||
| 7e0337f8a6 | |||
| 04d8aa767f | |||
| f21f0bd89f | |||
| fa93d2fe9d | |||
| 4b2e9e63b9 | |||
| bc4e37a398 | |||
| 89ecb534e0 | |||
| b33f2586b8 | |||
| 4b91be7b57 | |||
| 1056b9292a | |||
| 580f77bb11 | |||
| d28568ee03 | |||
| 87054f8ca1 | |||
| f0d5f70ea5 | |||
| 8ab9980bbf | |||
| b8c9693326 | |||
| 1f44801edb | |||
| 650d747791 | |||
| d77e129b2c | |||
| e0a5ae73d6 | |||
| ce56dd2d85 | |||
| 29df83e3d4 | |||
| 7e6645704a | |||
| f5d9c6d2c5 | |||
| 39efa6380f | |||
| 53890288ba | |||
| a9c4699dae | |||
| 4bc38eadc4 | |||
| e77fb9a73c | |||
| 6f6cc537cf | |||
| 21bb1fb091 | |||
| d51d8d18c1 | |||
| 35c27924e2 | |||
| 914534eb93 | |||
| c7b65101f7 | |||
| 93aedd616d | |||
| 2990cfe9b7 | |||
| 723dd4ac07 | |||
| e7354ec232 | |||
| f93e7739ba | |||
| dd1b7376c1 | |||
| 8196c71d93 | |||
| 49b49fc7bb | |||
| dbe74db2c2 | |||
| 99d0355813 | |||
| 43170cf447 | |||
| 782ace88f3 | |||
| d672031ad0 | |||
| 1bb6e3e9ac | |||
| f1310e517b | |||
| 012e18fb98 | |||
| e165e24847 | |||
| f86a577d26 | |||
| 1f9a810ea9 | |||
| 90c0d3b038 | |||
| c4e62f6db9 | |||
| dee02d73d9 | |||
| d89807b8d6 | |||
| 62b432be1d | |||
| 3b02692c15 | |||
| 2a6adc46d1 | |||
| 4968769ba7 | |||
| a6d30fd86a | |||
| a94b14769a | |||
| 21c0e69d86 | |||
| 58c0118724 | |||
| 580740dbd0 | |||
| 33f82c4ad4 | |||
| 0432c3ac6d | |||
| 165ac2849c | |||
| ea06e7aed2 | |||
| cb7e2d9cd4 | |||
| b2e7930ef9 | |||
| 3bee06e3d7 | |||
| 1d3e87d431 | |||
| 8a63dcd897 | |||
| 9b3ab03ea3 | |||
| 827b6c406b | |||
| 5714ea26cc | |||
| f167b0f12e | |||
| 39d30cd76a | |||
| 585ba6e330 | |||
| 9e39f2b2a0 | |||
| cfa7421c0d | |||
| 012454a147 | |||
| 3905df13d9 | |||
| 0204e53cc2 | |||
| bf5e905388 | |||
| be7f897dd7 | |||
| 9ed5790415 | |||
| bfd5d054c2 | |||
| ed6dfe22b8 | |||
| 754a568335 | |||
| 3b1afd08ec | |||
| c0ae64ccfb | |||
| 8550832516 | |||
| b46d9d080b | |||
| d0a24b844c | |||
| 2362602ed5 | |||
| 3d6fac2664 | |||
| 46b4a3f945 | |||
| 329aa603df | |||
| cd17afb1a1 | |||
| f6d509d5cc | |||
| fa98be2c0c | |||
| faa84f07c4 | |||
| f28aa3d4d2 | |||
| 01d37f6b90 | |||
| ebcacb7bc2 | |||
| 70361efc50 | |||
| 048cddfd3e | |||
| 623ae43ead | |||
| ed0cb9e483 | |||
| 376e0d1303 | |||
| 975cf91c1c | |||
| 9bfe1ab53c | |||
| 5f4927b3e0 | |||
| 1828f1a99b | |||
| 14e51ee50a | |||
| c77cfe7a52 | |||
| 3e26cc0141 | |||
| e0bf2a9a54 | |||
| aee072c7bf | |||
| 826eb66876 | |||
| ebd43ad461 | |||
| dff22f381e | |||
| fac4a81bef | |||
| 18c61b64fa | |||
| 97d703070a | |||
| 39659417e1 | |||
| 6f45dbc0f6 | |||
| ebf268e0ea | |||
| 9e6448c6ae | |||
| 63a9f7a787 | |||
| b864018a7b | |||
| df42eb1140 | |||
| 6d6049ad69 | |||
| 383d9dc6eb | |||
| d9e0917110 | |||
| e9ef53bd5a | |||
| a63569a800 | |||
| 77cd405956 | |||
| 8b2661e4fa | |||
| d328f8aa90 | |||
| 28d3eccb66 | |||
| 694e2abc6c | |||
| f42f59f80a | |||
| 723c164bb1 | |||
| 7ac78a5b58 | |||
| 34cea0c7c8 | |||
| 4c031c7dec | |||
| 45f1e5420f | |||
| d42c2fcb96 | |||
| b57a941535 | |||
| 99743600db | |||
| 1fe307a689 | |||
| 4ee7a5aea7 | |||
| bf7e1fb223 | |||
| bbe3dafed0 | |||
| 3edfb5af32 | |||
| 704ba13af2 | |||
| c41a70ee19 | |||
| 45ff1e0fef | |||
| 3bda2424ac | |||
| 434c2ea90c | |||
| 26f0a146ae | |||
| 86d4b1fdfe | |||
| b3671721a2 | |||
| ffee17ecc1 | |||
| 22831ca8f1 | |||
| 2420127c75 | |||
| 7f3cde64d5 | |||
| e8fcd6d537 | |||
| d0457209f9 | |||
| 28ab8e28ad | |||
| 1c42ec4cab | |||
| cbf3df385c | |||
| 9fb3285e1f | |||
| a56363da9e | |||
| 2530a7fb41 | |||
| cee19832d9 | |||
| a796a862d8 | |||
| 4e1af90a3a | |||
| 72b8fdf26d |
@@ -1,8 +0,0 @@
|
|||||||
Commits
|
|
||||||
## Commit Message Format
|
|
||||||
Follow conventional commits style (all lowercase).
|
|
||||||
- `feat(scope): description` - New feature
|
|
||||||
- `fix(scope): description` - Bug fix
|
|
||||||
- `refactor(scope): description` - Code refactoring
|
|
||||||
- `docs(scope): description` - Documentation changes
|
|
||||||
- Example: `feat(zsh): update dotfiles` or `fix(scripts): use correct pass entry`
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
home
|
|
||||||
+142
@@ -0,0 +1,142 @@
|
|||||||
|
i3/.config/i3/config
|
||||||
|
settings.conf
|
||||||
|
systemd/user/*/*
|
||||||
|
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
cover/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
.pybuilder/
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
# For a library or package, you might want to ignore these files since the code is
|
||||||
|
# intended to run in multiple environments; otherwise, check them in:
|
||||||
|
# .python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# Cython debug symbols
|
||||||
|
cython_debug/
|
||||||
@@ -1,147 +0,0 @@
|
|||||||
# AGENTS.md - Coding Guidelines for Agentic Operations
|
|
||||||
|
|
||||||
This repository is a personal dotfiles collection managed with [chezmoi](https://www.chezmoi.io). It contains configuration files, shell scripts, and Python utilities for system management.
|
|
||||||
|
|
||||||
## Build, Lint & Test Commands
|
|
||||||
|
|
||||||
### Running Scripts
|
|
||||||
- **Shell scripts**: `bash ./home/bin/executable_<script_name>.sh` or run directly if executable
|
|
||||||
- **Python scripts**: `python3 ./home/bin/<script_name>.py`
|
|
||||||
- **Install dependencies**: `pip install -r requirements.txt`
|
|
||||||
|
|
||||||
### Testing
|
|
||||||
No formal test framework is present. Validation is done by:
|
|
||||||
- Running scripts manually with test inputs
|
|
||||||
- Checking for runtime errors (e.g., `python3 -m py_compile <file>` for syntax)
|
|
||||||
- Verifying command outputs match expected behavior
|
|
||||||
|
|
||||||
### Single Test/Script Execution
|
|
||||||
```bash
|
|
||||||
# Run a single Python script
|
|
||||||
python3 ./home/bin/i3-mouse.py
|
|
||||||
|
|
||||||
# Run a single shell script
|
|
||||||
bash ./home/bin/executable_update.sh
|
|
||||||
|
|
||||||
# Check Python syntax without running
|
|
||||||
python3 -m py_compile ./home/bin/homeassistant.py
|
|
||||||
```
|
|
||||||
|
|
||||||
## Code Style Guidelines
|
|
||||||
|
|
||||||
### Python
|
|
||||||
|
|
||||||
#### Imports
|
|
||||||
- Use standard library imports first, then third-party imports, then local imports
|
|
||||||
- Import order: `os`, `sys`, `time` → `requests`, `i3ipc`, `pyautogui` → local modules
|
|
||||||
- Each import on its own line (avoid `import x, y, z`)
|
|
||||||
- Example:
|
|
||||||
```python
|
|
||||||
#!/usr/bin/env python3
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import datetime
|
|
||||||
from requests import get, post
|
|
||||||
import json
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Naming Conventions
|
|
||||||
- **Functions**: `snake_case` (e.g., `getPoints()`, `pointsToDirection()`)
|
|
||||||
- **Classes**: `PascalCase` (e.g., `HomeAssistant`, `Direction`)
|
|
||||||
- **Constants**: `UPPER_SNAKE_CASE`
|
|
||||||
- **Private members**: prefix with underscore `_privateVar`
|
|
||||||
- Enums use `PascalCase` for class and `UPPER_SNAKE_CASE` for members
|
|
||||||
|
|
||||||
#### Formatting
|
|
||||||
- Use 4-space indentation (not tabs)
|
|
||||||
- Line length: Keep to reasonable length (~80-100 chars) where practical
|
|
||||||
- Shebang for executable scripts: `#!/usr/bin/env python3`
|
|
||||||
- Blank lines: 2 between top-level definitions, 1 between method definitions
|
|
||||||
|
|
||||||
#### Types & Documentation
|
|
||||||
- No type hints required (not present in codebase)
|
|
||||||
- Add docstring comments for classes and non-obvious functions
|
|
||||||
- Comment format: `# description` (no colons at end unless explaining)
|
|
||||||
- Example: `# Enum for mouse direction`
|
|
||||||
|
|
||||||
#### Error Handling
|
|
||||||
- Use `raise` for exceptions in API wrappers (e.g., `response.raise_for_status()`)
|
|
||||||
- Return `None` for optional/conditional operations
|
|
||||||
- Handle command availability checks: `if command -v <cmd> &> /dev/null`
|
|
||||||
|
|
||||||
### Shell Scripts
|
|
||||||
|
|
||||||
#### Shebang & Headers
|
|
||||||
- Start with: `#!/bin/bash`
|
|
||||||
- Add brief comment: `# Script purpose description`
|
|
||||||
|
|
||||||
#### Formatting
|
|
||||||
- Use 2-space indentation
|
|
||||||
- Quote variables: `"${variable}"` or `"$variable"`
|
|
||||||
- Use `function name { ... }` syntax for functions
|
|
||||||
|
|
||||||
#### Naming & Structure
|
|
||||||
- Function names: `snake_case`
|
|
||||||
- Variables: lowercase with underscores for clarity
|
|
||||||
- Check for command availability before use:
|
|
||||||
```bash
|
|
||||||
if command -v <cmd> &> /dev/null; then
|
|
||||||
<cmd> <args>
|
|
||||||
fi
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Error Handling
|
|
||||||
- Use `set -e` to exit on error when appropriate
|
|
||||||
- Check command exit status: `if <command>; then ... fi`
|
|
||||||
- Redirect stderr appropriately: `2>/dev/null` or `2>&1`
|
|
||||||
|
|
||||||
### Configuration Files
|
|
||||||
- Before generating a commit, always consult `.agent/COMMITS.md` for the required style.
|
|
||||||
|
|
||||||
#### chezmoi Templates
|
|
||||||
- Dotfiles use chezmoi's templating system
|
|
||||||
- Template syntax: `{{ }}` for variables (Chezmoi specific)
|
|
||||||
- File naming: `dot_` prefix for dotfiles (e.g., `dot_zshrc`)
|
|
||||||
- Executable scripts: `executable_` prefix
|
|
||||||
|
|
||||||
#### Comments
|
|
||||||
- Use `#` for all config file comments
|
|
||||||
- Keep comments concise and descriptive
|
|
||||||
|
|
||||||
## Repository Patterns
|
|
||||||
|
|
||||||
### Commit Message Format
|
|
||||||
Follow conventional commits style (all lowercase).
|
|
||||||
- `feat(scope): description` - New feature
|
|
||||||
- `fix(scope): description` - Bug fix
|
|
||||||
- `refactor(scope): description` - Code refactoring
|
|
||||||
- `docs(scope): description` - Documentation changes
|
|
||||||
- Example: `feat(zsh): update dotfiles` or `fix(scripts): use correct pass entry`
|
|
||||||
|
|
||||||
#### Pushing Remotes
|
|
||||||
- **Do not push git repositories to remote unless explicitly instructed.**
|
|
||||||
|
|
||||||
### File Organization
|
|
||||||
- Shell scripts: `home/bin/executable_<name>.sh`
|
|
||||||
- Python scripts: `home/bin/<name>.py`
|
|
||||||
- Config files: `home/dot_config/<app>/` (following XDG spec)
|
|
||||||
- Dependencies: List in `requirements.txt`
|
|
||||||
|
|
||||||
## Key Dependencies
|
|
||||||
|
|
||||||
- **configparser** - Config file parsing
|
|
||||||
- **todoist-python** - Todoist API
|
|
||||||
- **tbapy** - TBA API for robotics
|
|
||||||
- **holidays** - Holiday detection
|
|
||||||
- **i3ipc** - i3 window manager control
|
|
||||||
- **pyautogui** - Mouse control
|
|
||||||
- **requests** - HTTP library
|
|
||||||
- **dateutil** - Date utilities
|
|
||||||
|
|
||||||
## Development Notes
|
|
||||||
|
|
||||||
- This is a personal configuration repository, not a library
|
|
||||||
- Scripts are system-level utilities and automation scripts
|
|
||||||
- No CI/CD pipeline present (manual validation)
|
|
||||||
- Target OS: Linux (Ubuntu/Fedora compatible)
|
|
||||||
- Python version: Python 3.x minimum
|
|
||||||
@@ -2,9 +2,20 @@
|
|||||||
|
|
||||||
A collection of config files and scripts for Fedora GNU/Linux.
|
A collection of config files and scripts for Fedora GNU/Linux.
|
||||||
|
|
||||||
## Installation
|
## Install
|
||||||
|
|
||||||
```bash
|
Run the following command to install
|
||||||
chezmoi init --apply git@github.com:AquaMorph/dotfiles.git
|
|
||||||
|
```sh
|
||||||
|
cd ~ && git clone git@github.com:AquaMorph/dotfiles.git && sh ~/dotfiles/install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
### frc-photo-checklist.py
|
||||||
|
|
||||||
|
Python script to generate a Todoist checklist for taking photos at an FRC event.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python frc-photo-checklist.py [Event Key]
|
||||||
|
```
|
||||||
|
|||||||
@@ -0,0 +1,603 @@
|
|||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
||||||
|
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty itself.
|
||||||
|
#env:
|
||||||
|
# TERM variable
|
||||||
|
#
|
||||||
|
# This value is used to set the `$TERM` environment variable for
|
||||||
|
# each instance of Alacritty. If it is not present, alacritty will
|
||||||
|
# check the local terminfo database and use `alacritty` if it is
|
||||||
|
# available, otherwise `xterm-256color` is used.
|
||||||
|
#TERM: xterm-256color
|
||||||
|
|
||||||
|
window:
|
||||||
|
# Window dimensions (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of columns/lines, not pixels.
|
||||||
|
# If both are `0`, this setting is ignored.
|
||||||
|
dimensions:
|
||||||
|
columns: 0
|
||||||
|
lines: 0
|
||||||
|
|
||||||
|
# Window position (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of pixels.
|
||||||
|
# If the position is not set, the window manager will handle the placement.
|
||||||
|
#position:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
|
||||||
|
# Window padding (changes require restart)
|
||||||
|
#
|
||||||
|
# Blank space added around the window in pixels. This padding is scaled
|
||||||
|
# by DPI and the specified value is always added at both opposing sides.
|
||||||
|
padding:
|
||||||
|
x: 4
|
||||||
|
y: 4
|
||||||
|
|
||||||
|
# Spread additional padding evenly around the terminal content.
|
||||||
|
dynamic_padding: false
|
||||||
|
|
||||||
|
# Window decorations
|
||||||
|
#
|
||||||
|
# Values for `decorations`:
|
||||||
|
# - full: Borders and title bar
|
||||||
|
# - none: Neither borders nor title bar
|
||||||
|
#
|
||||||
|
# Values for `decorations` (macOS only):
|
||||||
|
# - transparent: Title bar, transparent background and title bar buttons
|
||||||
|
# - buttonless: Title bar, transparent background, but no title bar buttons
|
||||||
|
decorations: full
|
||||||
|
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
startup_mode: Windowed
|
||||||
|
|
||||||
|
# Window title
|
||||||
|
#title: Alacritty
|
||||||
|
|
||||||
|
# Window class (Linux only):
|
||||||
|
#class: Alacritty
|
||||||
|
|
||||||
|
opacity: 0.8
|
||||||
|
|
||||||
|
scrolling:
|
||||||
|
# Maximum number of lines in the scrollback buffer.
|
||||||
|
# Specifying '0' will disable scrolling.
|
||||||
|
history: 10000
|
||||||
|
|
||||||
|
# Number of lines the viewport will move for every line scrolled when
|
||||||
|
# scrollback is enabled (history > 0).
|
||||||
|
multiplier: 3
|
||||||
|
|
||||||
|
# Faux Scrolling
|
||||||
|
#
|
||||||
|
# The `faux_multiplier` setting controls the number of lines the terminal
|
||||||
|
# should scroll when the alternate screen buffer is active. This is used
|
||||||
|
# to allow mouse scrolling for applications like `man`.
|
||||||
|
#
|
||||||
|
# Specifying `0` will disable faux scrolling.
|
||||||
|
multiplier: 3
|
||||||
|
|
||||||
|
# Font configuration (changes require restart)
|
||||||
|
font:
|
||||||
|
# Normal (roman) font face
|
||||||
|
normal:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) Menlo
|
||||||
|
# - (Linux) monospace
|
||||||
|
# - (Windows) Consolas
|
||||||
|
family: Inconsolata
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Monospace #Medium #Regular
|
||||||
|
|
||||||
|
# Bold font face
|
||||||
|
#bold:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
#family: monospace
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Bold
|
||||||
|
|
||||||
|
# Italic font face
|
||||||
|
#italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
#family: monospace
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
#style: Italic
|
||||||
|
|
||||||
|
# Point size
|
||||||
|
size: 16.0
|
||||||
|
|
||||||
|
# Offset is the extra space around each character. `offset.y` can be thought of
|
||||||
|
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
|
||||||
|
offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Glyph offset determines the locations of the glyphs within their cells with
|
||||||
|
# the default being at the bottom. Increasing `x` moves the glyph to the right,
|
||||||
|
# increasing `y` moves the glyph upwards.
|
||||||
|
glyph_offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# If `true`, bold text is drawn using the bright color variants.
|
||||||
|
draw_bold_text_with_bright_colors: true
|
||||||
|
|
||||||
|
# Colors (Tomorrow Night Bright)
|
||||||
|
colors:
|
||||||
|
# Default colors
|
||||||
|
primary:
|
||||||
|
background: '0x000000'
|
||||||
|
foreground: '0x0288d1'
|
||||||
|
|
||||||
|
# Bright and dim foreground colors
|
||||||
|
#
|
||||||
|
# The dimmed foreground color is calculated automatically if it is not present.
|
||||||
|
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
|
||||||
|
# is `false`, the normal foreground color will be used.
|
||||||
|
#dim_foreground: '0x9a9a9a'
|
||||||
|
#bright_foreground: '0xffffff'
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the terminal cursor. If these are unset,
|
||||||
|
# the cursor color will be the inverse of the cell color.
|
||||||
|
#cursor:
|
||||||
|
# text: '0x000000'
|
||||||
|
# cursor: '0xffffff'
|
||||||
|
|
||||||
|
# Selection colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the selection area. If selection
|
||||||
|
# background is unset, selection color will be the inverse of the cell colors.
|
||||||
|
# If only text is unset the cell text color will remain the same.
|
||||||
|
#selection:
|
||||||
|
# text: '0xeaeaea'
|
||||||
|
# background: '0x404040'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0x000000'
|
||||||
|
red: '0xd54e53'
|
||||||
|
green: '0xb9ca4a'
|
||||||
|
yellow: '0xe6c547'
|
||||||
|
blue: '0x7aa6da'
|
||||||
|
magenta: '0xc397d8'
|
||||||
|
cyan: '0x70c0ba'
|
||||||
|
white: '0xeaeaea'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x666666'
|
||||||
|
red: '0xff3334'
|
||||||
|
green: '0x9ec400'
|
||||||
|
yellow: '0xe7c547'
|
||||||
|
blue: '0x7aa6da'
|
||||||
|
magenta: '0xb77ee0'
|
||||||
|
cyan: '0x54ced6'
|
||||||
|
white: '0xffffff'
|
||||||
|
|
||||||
|
# Dim colors
|
||||||
|
#
|
||||||
|
# If the dim colors are not set, they will be calculated automatically based
|
||||||
|
# on the `normal` colors.
|
||||||
|
#dim:
|
||||||
|
# black: '0x000000'
|
||||||
|
# red: '0x8c3336'
|
||||||
|
# green: '0x7a8530'
|
||||||
|
# yellow: '0x97822e'
|
||||||
|
# blue: '0x506d8f'
|
||||||
|
# magenta: '0x80638e'
|
||||||
|
# cyan: '0x497e7a'
|
||||||
|
# white: '0x9a9a9a'
|
||||||
|
|
||||||
|
# Indexed Colors
|
||||||
|
#
|
||||||
|
# The indexed colors include all colors from 16 to 256.
|
||||||
|
# When these are not set, they're filled with sensible defaults.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { index: 16, color: '0xff00ff' }`
|
||||||
|
#
|
||||||
|
indexed_colors: []
|
||||||
|
|
||||||
|
# Visual Bell
|
||||||
|
#
|
||||||
|
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
|
||||||
|
# rung, the terminal background will be set to white and transition back to the
|
||||||
|
# default background color. You can control the rate of this transition by
|
||||||
|
# setting the `duration` property (represented in milliseconds). You can also
|
||||||
|
# configure the transition function by setting the `animation` property.
|
||||||
|
#
|
||||||
|
# Values for `animation`:
|
||||||
|
# - Ease
|
||||||
|
# - EaseOut
|
||||||
|
# - EaseOutSine
|
||||||
|
# - EaseOutQuad
|
||||||
|
# - EaseOutCubic
|
||||||
|
# - EaseOutQuart
|
||||||
|
# - EaseOutQuint
|
||||||
|
# - EaseOutExpo
|
||||||
|
# - EaseOutCirc
|
||||||
|
# - Linear
|
||||||
|
#
|
||||||
|
# Specifying a `duration` of `0` will disable the visual bell.
|
||||||
|
bell:
|
||||||
|
animation: EaseOutExpo
|
||||||
|
duration: 0
|
||||||
|
color: '0xffffff'
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - mouse
|
||||||
|
# - action
|
||||||
|
# - mods (optional)
|
||||||
|
#
|
||||||
|
# Values for `mouse`:
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# All available `mods` and `action` values are documented in the key binding
|
||||||
|
# section.
|
||||||
|
mouse_bindings:
|
||||||
|
- { mouse: Middle, action: PasteSelection }
|
||||||
|
|
||||||
|
mouse:
|
||||||
|
# Click settings
|
||||||
|
#
|
||||||
|
# The `double_click` and `triple_click` settings control the time
|
||||||
|
# alacritty should wait for accepting multiple clicks as one double
|
||||||
|
# or triple click.
|
||||||
|
double_click: { threshold: 300 }
|
||||||
|
triple_click: { threshold: 300 }
|
||||||
|
|
||||||
|
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||||
|
hide_when_typing: false
|
||||||
|
|
||||||
|
hints:
|
||||||
|
# URL launcher
|
||||||
|
#
|
||||||
|
# This program is executed when clicking on a text which is recognized as a URL.
|
||||||
|
# The URL is always added to the command as the last parameter.
|
||||||
|
#
|
||||||
|
# When set to `None`, URL launching will be disabled completely.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) open
|
||||||
|
# - (Linux) xdg-open
|
||||||
|
# - (Windows) explorer
|
||||||
|
#launcher:
|
||||||
|
# program: xdg-open
|
||||||
|
# args: []
|
||||||
|
|
||||||
|
# URL modifiers
|
||||||
|
#
|
||||||
|
# These are the modifiers that need to be held down for opening URLs when clicking
|
||||||
|
# on them. The available modifiers are documented in the key binding section.
|
||||||
|
modifiers: None
|
||||||
|
|
||||||
|
selection:
|
||||||
|
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
|
||||||
|
|
||||||
|
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||||
|
save_to_clipboard: false
|
||||||
|
|
||||||
|
# Allow terminal applications to change Alacritty's window title.
|
||||||
|
window.dynamic_title: true
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
# Cursor style
|
||||||
|
#
|
||||||
|
# Values for `style`:
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
style: Block
|
||||||
|
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
unfocused_hollow: true
|
||||||
|
|
||||||
|
# Live config reload (changes require restart)
|
||||||
|
live_config_reload: true
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
|
||||||
|
# Entries in `shell.args` are passed unmodified as arguments to the shell.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (Linux/macOS) /bin/bash --login
|
||||||
|
# - (Windows) powershell
|
||||||
|
#shell:
|
||||||
|
# program: /bin/bash
|
||||||
|
# args:
|
||||||
|
# - --login
|
||||||
|
|
||||||
|
# Startup directory
|
||||||
|
#
|
||||||
|
# Directory the shell is started in. If this is unset, or `None`, the working
|
||||||
|
# directory of the parent process will be used.
|
||||||
|
working_directory: None
|
||||||
|
|
||||||
|
# Windows 10 ConPTY backend (Windows only)
|
||||||
|
#
|
||||||
|
# This will enable better color support and may resolve other issues,
|
||||||
|
# however this API and its implementation is still young and so is
|
||||||
|
# disabled by default, as stability may not be as good as the winpty
|
||||||
|
# backend.
|
||||||
|
#
|
||||||
|
# Alacritty will fall back to the WinPTY automatically if the ConPTY
|
||||||
|
# backend cannot be initialized.
|
||||||
|
enable_experimental_conpty_backend: false
|
||||||
|
|
||||||
|
debug:
|
||||||
|
# Display the time it takes to redraw each frame.
|
||||||
|
render_timer: false
|
||||||
|
|
||||||
|
# Keep the log file after quitting Alacritty.
|
||||||
|
persistent_logging: false
|
||||||
|
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Values for `log_level`:
|
||||||
|
# - None
|
||||||
|
# - Error
|
||||||
|
# - Warn
|
||||||
|
# - Info
|
||||||
|
# - Debug
|
||||||
|
# - Trace
|
||||||
|
log_level: Warn
|
||||||
|
|
||||||
|
# Print all received window events.
|
||||||
|
print_events: false
|
||||||
|
|
||||||
|
# Record all characters and escape sequences as test data.
|
||||||
|
ref_test: false
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Key bindings are specified as a list of objects. Each binding will specify a
|
||||||
|
# key and modifiers required to trigger it, terminal modes where the binding is
|
||||||
|
# applicable, and what should be done when the key binding fires. It can either
|
||||||
|
# send a byte sequence to the running application (`chars`), execute a
|
||||||
|
# predefined action (`action`) or fork and execute a specified command plus
|
||||||
|
# arguments (`command`).
|
||||||
|
#
|
||||||
|
# Bindings are always filled by default, but will be replaced when a new binding
|
||||||
|
# with the same triggers is defined. To unset a default binding, it can be
|
||||||
|
# mapped to the `None` action.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - key
|
||||||
|
# - mods (optional)
|
||||||
|
# - chars | action | command (exactly one required)
|
||||||
|
# - mode (optional)
|
||||||
|
#
|
||||||
|
# Values for `key`:
|
||||||
|
# - `A` -> `Z`
|
||||||
|
# - `F1` -> `F12`
|
||||||
|
# - `Key1` -> `Key0`
|
||||||
|
#
|
||||||
|
# A full list with available key codes can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Instead of using the name of the keys, the `key` field also supports using
|
||||||
|
# the scancode of the desired key. Scancodes have to be specified as a
|
||||||
|
# decimal number.
|
||||||
|
# This command will allow you to display the hex scancodes for certain keys:
|
||||||
|
# `showkey --scancodes`
|
||||||
|
#
|
||||||
|
# Values for `mods`:
|
||||||
|
# - Command
|
||||||
|
# - Control
|
||||||
|
# - Option
|
||||||
|
# - Super
|
||||||
|
# - Shift
|
||||||
|
# - Alt
|
||||||
|
#
|
||||||
|
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`.
|
||||||
|
# Whitespace and capitalization is relevant and must match the example.
|
||||||
|
#
|
||||||
|
# Values for `chars`:
|
||||||
|
# The `chars` field writes the specified string to the terminal. This makes
|
||||||
|
# it possible to pass escape sequences.
|
||||||
|
# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run
|
||||||
|
# the command `showkey -a` outside of tmux.
|
||||||
|
# Note that applications use terminfo to map escape sequences back to
|
||||||
|
# keys. It is therefore required to update the terminfo when
|
||||||
|
# changing an escape sequence.
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Paste
|
||||||
|
# - PasteSelection
|
||||||
|
# - Copy
|
||||||
|
# - IncreaseFontSize
|
||||||
|
# - DecreaseFontSize
|
||||||
|
# - ResetFontSize
|
||||||
|
# - ScrollPageUp
|
||||||
|
# - ScrollPageDown
|
||||||
|
# - ScrollLineUp
|
||||||
|
# - ScrollLineDown
|
||||||
|
# - ScrollToTop
|
||||||
|
# - ScrollToBottom
|
||||||
|
# - ClearHistory
|
||||||
|
# - Hide
|
||||||
|
# - Quit
|
||||||
|
# - ClearLogNotice
|
||||||
|
# - SpawnNewInstance
|
||||||
|
# - ToggleFullscreen
|
||||||
|
# - None
|
||||||
|
#
|
||||||
|
# Values for `action` (macOS only):
|
||||||
|
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
|
||||||
|
#
|
||||||
|
# Values for `command`:
|
||||||
|
# The `command` field must be a map containing a `program` string and
|
||||||
|
# an `args` array of command line parameter strings.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `command: { program: "alacritty", args: ["-e", "vttest"] }`
|
||||||
|
#
|
||||||
|
# Values for `mode`:
|
||||||
|
# - ~AppCursor
|
||||||
|
# - AppCursor
|
||||||
|
# - ~AppKeypad
|
||||||
|
# - AppKeypad
|
||||||
|
key_bindings:
|
||||||
|
# (Windows/Linux only)
|
||||||
|
#- { key: V, mods: Control|Shift, action: Paste }
|
||||||
|
#- { key: C, mods: Control|Shift, action: Copy }
|
||||||
|
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||||
|
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Add, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Subtract, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
|
||||||
|
# (macOS only)
|
||||||
|
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Add, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: K, mods: Command, action: ClearHistory }
|
||||||
|
#- { key: K, mods: Command, chars: "\x0c" }
|
||||||
|
#- { key: V, mods: Command, action: Paste }
|
||||||
|
#- { key: C, mods: Command, action: Copy }
|
||||||
|
#- { key: H, mods: Command, action: Hide }
|
||||||
|
#- { key: Q, mods: Command, action: Quit }
|
||||||
|
#- { key: W, mods: Command, action: Quit }
|
||||||
|
|
||||||
|
- { key: Paste, action: Paste }
|
||||||
|
- { key: Copy, action: Copy }
|
||||||
|
- { key: L, mods: Control, action: ClearLogNotice }
|
||||||
|
- { key: L, mods: Control, chars: "\x0c" }
|
||||||
|
- { key: Home, mods: Alt, chars: "\x1b[1;3H" }
|
||||||
|
- { key: Home, chars: "\x1bOH", mode: AppCursor }
|
||||||
|
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
|
||||||
|
- { key: End, mods: Alt, chars: "\x1b[1;3F" }
|
||||||
|
- { key: End, chars: "\x1bOF", mode: AppCursor }
|
||||||
|
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
|
||||||
|
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
|
||||||
|
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~", mode: Alt }
|
||||||
|
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
|
||||||
|
- { key: PageUp, mods: Alt, chars: "\x1b[5;3~" }
|
||||||
|
- { key: PageUp, chars: "\x1b[5~" }
|
||||||
|
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
|
||||||
|
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~", mode: Alt }
|
||||||
|
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
|
||||||
|
- { key: PageDown, mods: Alt, chars: "\x1b[6;3~" }
|
||||||
|
- { key: PageDown, chars: "\x1b[6~" }
|
||||||
|
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
|
||||||
|
- { key: Back, chars: "\x7f" }
|
||||||
|
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
|
||||||
|
- { key: Insert, chars: "\x1b[2~" }
|
||||||
|
- { key: Delete, chars: "\x1b[3~" }
|
||||||
|
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
|
||||||
|
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
|
||||||
|
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
|
||||||
|
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
|
||||||
|
- { key: Left, chars: "\x1bOD", mode: AppCursor }
|
||||||
|
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
|
||||||
|
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
|
||||||
|
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
|
||||||
|
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
|
||||||
|
- { key: Right, chars: "\x1bOC", mode: AppCursor }
|
||||||
|
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
|
||||||
|
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
|
||||||
|
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
|
||||||
|
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
|
||||||
|
- { key: Up, chars: "\x1bOA", mode: AppCursor }
|
||||||
|
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
|
||||||
|
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
|
||||||
|
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
|
||||||
|
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
|
||||||
|
- { key: Down, chars: "\x1bOB", mode: AppCursor }
|
||||||
|
- { key: F1, chars: "\x1bOP" }
|
||||||
|
- { key: F2, chars: "\x1bOQ" }
|
||||||
|
- { key: F3, chars: "\x1bOR" }
|
||||||
|
- { key: F4, chars: "\x1bOS" }
|
||||||
|
- { key: F5, chars: "\x1b[15~" }
|
||||||
|
- { key: F6, chars: "\x1b[17~" }
|
||||||
|
- { key: F7, chars: "\x1b[18~" }
|
||||||
|
- { key: F8, chars: "\x1b[19~" }
|
||||||
|
- { key: F9, chars: "\x1b[20~" }
|
||||||
|
- { key: F10, chars: "\x1b[21~" }
|
||||||
|
- { key: F11, chars: "\x1b[23~" }
|
||||||
|
- { key: F12, chars: "\x1b[24~" }
|
||||||
|
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
|
||||||
|
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
|
||||||
|
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
|
||||||
|
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
|
||||||
|
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
|
||||||
|
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
|
||||||
|
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
|
||||||
|
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
|
||||||
|
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
|
||||||
|
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
|
||||||
|
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
|
||||||
|
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
|
||||||
|
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
|
||||||
|
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
|
||||||
|
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
|
||||||
|
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
|
||||||
|
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
|
||||||
|
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
|
||||||
|
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
|
||||||
|
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
|
||||||
|
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
|
||||||
|
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
|
||||||
|
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
|
||||||
|
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
|
||||||
|
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
|
||||||
|
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
|
||||||
|
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
|
||||||
|
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
|
||||||
|
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
|
||||||
|
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
|
||||||
|
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
|
||||||
|
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
|
||||||
|
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
|
||||||
|
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
|
||||||
|
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
|
||||||
|
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
|
||||||
|
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
|
||||||
|
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
|
||||||
|
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
|
||||||
|
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
|
||||||
|
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
|
||||||
|
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
|
||||||
|
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
|
||||||
|
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
|
||||||
|
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
|
||||||
|
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
|
||||||
|
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
|
||||||
|
- { key: F12, mods: Super, chars: "\x1b[24;3~" }
|
||||||
|
- { key: NumpadEnter, chars: "\n" }
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
|||||||
AquaAI/glm-4.7-flash
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
AquaAI
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Be as concise as possible.
|
|
||||||
Be extremely accurate.
|
|
||||||
Recommend things I would not realize I would benefit from.
|
|
||||||
Call out my misconceptions and tell me when I am wrong.
|
|
||||||
For personal matters {{ template "prompts/agent-name" . }} is encouraging but brutally honest.
|
|
||||||
Never sycophantic.
|
|
||||||
Do not use em dashes. If an em dash would normally appear, use a comma for continuing thoughts or a period if it should be a separate sentence.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
You are an AI assistant named {{ template "prompts/agent-name" . }}.
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
# Scripts
|
|
||||||
|
|
||||||
## AquaAI
|
|
||||||
|
|
||||||
AquaAI is bash script that interacts with OpenAI and Ollama APIs to enable terminal based interaction with LLMs.
|
|
||||||
|
|
||||||
## connect-nas.sh
|
|
||||||
|
|
||||||
Connect to long storage NAS.
|
|
||||||
|
|
||||||
## convert-mp4-to-resolve.sh
|
|
||||||
|
|
||||||
Converts mp4 video files to a video format where the audio works with the linux version of Davinci Resolve.
|
|
||||||
|
|
||||||
## frc-photo-checklist.py
|
|
||||||
|
|
||||||
Python script to generate a Todoist checklist for taking photos at an FRC event.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
python frc-photo-checklist.py [Event Key]
|
|
||||||
```
|
|
||||||
|
|
||||||
## get-mouse-battery.sh
|
|
||||||
|
|
||||||
Prints out the battery percentage of a mouse and if it is charging.
|
|
||||||
@@ -1,929 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# This is a bash script to enable interacting with LLMs via the command line.
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
## Modes
|
|
||||||
### Default mode
|
|
||||||
# Default mode uses the default prompt and model for AquaAI. It's nothing
|
|
||||||
# special.
|
|
||||||
### Bash mode
|
|
||||||
# This mode will help with writing bash scripts.
|
|
||||||
### CLI mode
|
|
||||||
# CLI mode prompts the AI with system information and will return terminal
|
|
||||||
# commands. If you wish to run the command simply type run and it will end the
|
|
||||||
# chat and run the command. You are responsible for validating what the command
|
|
||||||
# does before running.
|
|
||||||
### Code Review mode
|
|
||||||
# This will ask you what changes to look at and will provide a code review of
|
|
||||||
# the changes. This mode only works if you are currently in a git repo. It can
|
|
||||||
# look at the past few commits as well as changes that have yet to be committed.
|
|
||||||
### Reasoning mode
|
|
||||||
# This uses the best available reasoning model with the default prompt.
|
|
||||||
# Reasoning models take a task and break them up to subtask to pass to
|
|
||||||
# specialized models. They are very yappy and take a while to run. Can be good
|
|
||||||
# for complex tasks.
|
|
||||||
### Regex mode
|
|
||||||
# This mode will respond only with regex.
|
|
||||||
### Git mode
|
|
||||||
# This mode will respond only with git commands. If you wish to run the command
|
|
||||||
# simply type run and it will end the chat and run the command. You are
|
|
||||||
# responsible for validating what the command does before running.
|
|
||||||
|
|
||||||
## Special Input
|
|
||||||
### Edit
|
|
||||||
# You can type `edit` or `e` as a response and it will open your editor set with
|
|
||||||
# the EDITOR variable in your shell session. You can then type your query and
|
|
||||||
# save and exit. From there the program will send your query to the AI.
|
|
||||||
### Exit
|
|
||||||
# You can type `exit` or `q` to end the chat. Personally, I never do this just
|
|
||||||
# use C-c.
|
|
||||||
### Run
|
|
||||||
# If you are in cli mode you can type `run` or `r` and the script will run the
|
|
||||||
# given commands on your system. You are playing with fire with this, but fire
|
|
||||||
# is useful and fun just be careful.
|
|
||||||
### Save
|
|
||||||
# You can type `save` or `s` as a response and the chat history will be saved
|
|
||||||
# for use at another time. This will also end the chat. Chats are stored in
|
|
||||||
# `~/.local/share/aquaai`
|
|
||||||
|
|
||||||
## Adding custom modes
|
|
||||||
# There are two variables that need to be set to create a custom mode.
|
|
||||||
### $selected_model will set the model to be used for the chat.
|
|
||||||
### $system_prompt will be the prompt that controls how the AI behaves.
|
|
||||||
# introduce more noise into text generation leading to more out there responses.
|
|
||||||
#
|
|
||||||
# Defaults are set for all these but to define a custom mode you should override
|
|
||||||
# at least one of these in a function. Add a custom flag in the switch statement
|
|
||||||
# at the bottom of this file and call the function there. See `--bash` as an
|
|
||||||
# example of how to do this. From there add some documentation to the
|
|
||||||
# print_help() function and then here.
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
# User configurable variables.
|
|
||||||
#
|
|
||||||
# The following are settings that can be overwritten by environment variables.
|
|
||||||
# You can set these in your .bashrc to have them set each time you open a new
|
|
||||||
# shell. This script is designed not to be modified so updates can be applied by
|
|
||||||
# replacing the file with the newest version.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Set the url of the ollama server.
|
|
||||||
#
|
|
||||||
# export AQUAAI_OLLAMA_URL='192.168.1.156:11434'
|
|
||||||
#
|
|
||||||
ollama_url=${AQUAAI_OLLAMA_URL:='https://ai.aquamorph.com/api'}
|
|
||||||
#
|
|
||||||
# Set the default model.
|
|
||||||
#
|
|
||||||
# export AQUAAI_DEFAULT_MODEL='qwen2.5-7b-instruct'
|
|
||||||
#
|
|
||||||
default_model=${AQUAAI_DEFAULT_MODEL:='qwen2.5:32b-instruct'}
|
|
||||||
#
|
|
||||||
# Set the default coding model.
|
|
||||||
#
|
|
||||||
# export AQUAAI_CODING_MODEL='qwen2.5-7b-coder'
|
|
||||||
#
|
|
||||||
coding_model=${AQUAAI_CODING_MODEL:='qwen2.5-32b-coder'}
|
|
||||||
#
|
|
||||||
# In multiline mode, users can input multiple lines of text by pressing the
|
|
||||||
# Enter key. The message will be sent when the user presses C-d on the keyboard.
|
|
||||||
#
|
|
||||||
# export AQUAAI_MULTILINE_MODE=true
|
|
||||||
#
|
|
||||||
multiline_mode=${AQUAAI_MULTILINE_MODE:=false}
|
|
||||||
#
|
|
||||||
# Enable rich formatting for text output. A formatting program is required for
|
|
||||||
# this see below.
|
|
||||||
#
|
|
||||||
# export AQUAAI_RICH_FORMAT_MODE=true
|
|
||||||
#
|
|
||||||
rich_format_mode=${AQUAAI_RICH_FORMAT_MODE:=false}
|
|
||||||
#
|
|
||||||
# Path to the program used for rich formatting. I am currently using streamdown
|
|
||||||
# but you are free to use something different as long as it supports streaming
|
|
||||||
# text and markdown. Go to the GitHub repo to learn to install streamdown and
|
|
||||||
# configure: https://github.com/day50-dev/Streamdown
|
|
||||||
#
|
|
||||||
# export AQUAAI_RICH_FORMAT_PATH=~/.venv/bin/streamdown
|
|
||||||
#
|
|
||||||
rich_format_path=${AQUAAI_RICH_FORMAT_PATH:=streamdown}
|
|
||||||
#
|
|
||||||
# Ignore certificate checks.
|
|
||||||
#
|
|
||||||
# export AQUAAI_INSECURE_MODE=true
|
|
||||||
#
|
|
||||||
insecure_mode=${AQUAAI_INSECURE_MODE:=false}
|
|
||||||
#
|
|
||||||
# Use OpenAI api design instead of Ollama.
|
|
||||||
#
|
|
||||||
# export AQUAAI_OPENAI_API:=true
|
|
||||||
#
|
|
||||||
openai_api=${AQUAAI_OPENAI_API:=true}
|
|
||||||
#
|
|
||||||
# Set key used to authenticate with the API.
|
|
||||||
#
|
|
||||||
# export AQUAAI_KEY:=true
|
|
||||||
#
|
|
||||||
key=${AQUAAI_KEY:=''}
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
# Constants.
|
|
||||||
OLLAMA_URL=${ollama_url}
|
|
||||||
CURL_FLAGS=('-sN')
|
|
||||||
USER=$(whoami)
|
|
||||||
DATA_DIR="${HOME}/.local/share/aquaai"
|
|
||||||
RESPONSE_FIFO="${DATA_DIR}/.response"
|
|
||||||
AGENT_NAME='AquaAI'
|
|
||||||
|
|
||||||
# Colors.
|
|
||||||
CLEAR='\033[0m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
RED='\e[1;31m'
|
|
||||||
LIGHT_GRAY='\e[38;5;247m'
|
|
||||||
|
|
||||||
# Globals.
|
|
||||||
message_history="[]"
|
|
||||||
cli_mode=false
|
|
||||||
git_mode=false
|
|
||||||
code_review_start=false
|
|
||||||
selected_model=${default_model}
|
|
||||||
|
|
||||||
# Error Codes.
|
|
||||||
ERROR_NO_SAVEFILE=1
|
|
||||||
ERROR_INVALID_TEMP=2
|
|
||||||
ERROR_UNKNOWN_OPTION=3
|
|
||||||
ERROR_UNKNOWN_MODEL=4
|
|
||||||
ERROR_NO_GIT_REPO=5
|
|
||||||
ERROR_INVALID_INPUT=6
|
|
||||||
ERROR_NO_AUTOSAVE=7
|
|
||||||
ERROR_INVALID_SSL=8
|
|
||||||
ERROR_UNKNOWN_SSL=9
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
# Give the AI a name. It improves prompting to call it by name.
|
|
||||||
function name_agent() {
|
|
||||||
system_prompt="You are an AI assistant named ${AGENT_NAME}."
|
|
||||||
}
|
|
||||||
|
|
||||||
# Make the AI write and behave better.
|
|
||||||
function set_better_conversions() {
|
|
||||||
system_prompt+=' Be as concise as possible.'
|
|
||||||
system_prompt+=' Be extremely accurate.'
|
|
||||||
system_prompt+=' Recommend things I would not realize I would benefit from.'
|
|
||||||
system_prompt+=' Call out my misconceptions and tell me when I am wrong.'
|
|
||||||
system_prompt+=" For personal matters ${AGENT_NAME} is encouraging"
|
|
||||||
system_prompt+=' but brutally honest.'
|
|
||||||
system_prompt+=' Never sycophantic.'
|
|
||||||
system_prompt+=' Do not use em dashes. If an em dash would normally appear,'
|
|
||||||
system_prompt+=' use a comma for continuing thoughts or a period if it'
|
|
||||||
system_prompt+=' should be a separate sentence.'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the formatting for all reponses.
|
|
||||||
function set_response_format() {
|
|
||||||
system_prompt+=' Do not wrap response in quotation marks or apostrophes.'
|
|
||||||
system_prompt+=' Do not use html to format response.'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Limit format of output to just commands.
|
|
||||||
function format_for_cli() {
|
|
||||||
system_prompt+=" ${AGENT_NAME} does not put commands in quotation marks."
|
|
||||||
system_prompt+=" ${AGENT_NAME} does not put commands in markdown."
|
|
||||||
system_prompt+=" ${AGENT_NAME} only outputs terminal commands."
|
|
||||||
}
|
|
||||||
|
|
||||||
# Default prompt.
|
|
||||||
function set_default_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} follows the users instructions carefully."
|
|
||||||
system_prompt+=" ${AGENT_NAME} responds using extended markdown."
|
|
||||||
set_better_conversions
|
|
||||||
set_response_format
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set chat to help with command line questions.
|
|
||||||
function set_cli_agent() {
|
|
||||||
local os_version=$(cat /etc/os-release | grep 'PRETTY_NAME' | \
|
|
||||||
sed 's/PRETTY_NAME=//g' | tr -d '"')
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} assists users with ${os_version}."
|
|
||||||
format_for_cli
|
|
||||||
set_response_format
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set chat to help with bash questions.
|
|
||||||
function set_bash_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} assists users with POSIXs bash."
|
|
||||||
system_prompt+=' Format output for view in a command line.'
|
|
||||||
system_prompt+=' Do not put commands in quotation marks.'
|
|
||||||
system_prompt+=' Use double spaces and the function keyword.'
|
|
||||||
system_prompt+=' Write documentation before the function declaration.'
|
|
||||||
set_response_format
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set ai to help with code reviews.
|
|
||||||
function set_code_review_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} is a senior software engineer performing a"
|
|
||||||
system_prompt+=' code review for a colleague.'
|
|
||||||
system_prompt+=''
|
|
||||||
set_better_conversions
|
|
||||||
system_prompt+=' Show code snipets when helpful.'
|
|
||||||
system_prompt+="${AGENT_NAME}'s reports should have the following format:"
|
|
||||||
system_prompt+='# Typos'
|
|
||||||
system_prompt+='List of all typos you find.'
|
|
||||||
system_prompt+='# Formatting and Readability Issues'
|
|
||||||
system_prompt+='List of all formatting and readability issues you find.'
|
|
||||||
system_prompt+='# Security Issues'
|
|
||||||
system_prompt+='List of all security issues you find.'
|
|
||||||
system_prompt+='# Other'
|
|
||||||
system_prompt+='List of all other issues you find.'
|
|
||||||
set_response_format
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set chat to help with git.
|
|
||||||
function set_git_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} assists users with git."
|
|
||||||
format_for_cli
|
|
||||||
|
|
||||||
if is_git_repo; then
|
|
||||||
system_prompt+="\n\nHere is some information about the current git repo.\n"
|
|
||||||
local current_branch=$(git branch --show-current)
|
|
||||||
system_prompt+="Current branch: ${current_branch} \n"
|
|
||||||
local git_remotes=$(git remote -v)
|
|
||||||
system_prompt+="Remotes: ${git_remotes}\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set chat to help with regex.
|
|
||||||
function set_regex_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} assists users with regex."
|
|
||||||
system_prompt+=' Only output a single regex expression.'
|
|
||||||
system_prompt+=' Use BRE and ERE regex.'
|
|
||||||
format_for_cli
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set chat to help with Home Assistant.
|
|
||||||
function set_home_assistant_agent() {
|
|
||||||
name_agent
|
|
||||||
system_prompt+=" ${AGENT_NAME} assists users with Home Assistant programming."
|
|
||||||
system_prompt+=" Templating is done with Jinja2."
|
|
||||||
}
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
# Get the first available model from a given list.
|
|
||||||
function get_model_from_list() {
|
|
||||||
local models=("$@")
|
|
||||||
for m in "${models[@]}"; do
|
|
||||||
check_if_model_exists $m true
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "${m}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
print_error "could not find any models on the list."
|
|
||||||
exit $ERROR_UNKNOWN_MODEL
|
|
||||||
}
|
|
||||||
|
|
||||||
function load_model_from_list() {
|
|
||||||
local models=("$@")
|
|
||||||
selected_model=$(get_model_from_list "${models[@]}")
|
|
||||||
if [[ $? -ne 0 ]]; then
|
|
||||||
print_error "could not find any models on the list."
|
|
||||||
exit $ERROR_UNKNOWN_MODEL
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the default coding model.
|
|
||||||
function set_coding_model() {
|
|
||||||
local models=(${coding_model}
|
|
||||||
'qwen2.5-32b-coder'
|
|
||||||
'qwen2.5-7b-coder'
|
|
||||||
'llama3.3-70b-instruct'
|
|
||||||
'hf.co/Qwen/Qwen2.5-Coder-3B-Instruct-GGUF:Q4_K_M'
|
|
||||||
'hf.co/bartowski/Qwen2.5-Coder-1.5B-Instruct-GGUF:Q4_K_M'
|
|
||||||
'qwen2.5-coder:3b'
|
|
||||||
'qwen2.5-coder:0.5b'
|
|
||||||
)
|
|
||||||
load_model_from_list "${models[@]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the default reasoning model.
|
|
||||||
function set_reasoning_model() {
|
|
||||||
local models=(${reasing_model}
|
|
||||||
'qwen3-32b'
|
|
||||||
'gpt-oss-120b'
|
|
||||||
)
|
|
||||||
load_model_from_list "${models[@]}"
|
|
||||||
}
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
# Print out help menu.
|
|
||||||
function print_help() {
|
|
||||||
echo 'Interact with the AquaAI via the command line.'
|
|
||||||
echo ''
|
|
||||||
echo '--delete - delete a chat from history'
|
|
||||||
echo '-l --list - list available models'
|
|
||||||
echo '--load - load a chat from history'
|
|
||||||
echo '--restore - load last auto saved chat'
|
|
||||||
echo ''
|
|
||||||
echo '--bash - help with bash'
|
|
||||||
echo '--cli - help with command line'
|
|
||||||
echo '--code-review - code review of a git project'
|
|
||||||
echo '-r --reason - help with a reasoning model'
|
|
||||||
echo '--regex - help with regex'
|
|
||||||
echo '--git - help with git'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print out error message.
|
|
||||||
function print_error() {
|
|
||||||
local msg=${1}
|
|
||||||
printf "${RED}ERROR: ${msg}\n${CLEAR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if a given program is installed on the system.
|
|
||||||
function check_program() {
|
|
||||||
if ! command -v ${1} 2>&1 >/dev/null; then
|
|
||||||
print_error "${1} not found. Please install ${1}."
|
|
||||||
exit ${ERROR_DEPENDENCY}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check system for required programs.
|
|
||||||
function check_requirements() {
|
|
||||||
check_program curl
|
|
||||||
check_program jq
|
|
||||||
check_program fzf
|
|
||||||
if [ "${rich_format_mode}" == true ]; then
|
|
||||||
check_program ${rich_format_path}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get available models info.
|
|
||||||
function get_models() {
|
|
||||||
local model_path=''
|
|
||||||
if [ "${openai_api}" == true ]; then
|
|
||||||
model_path='/models'
|
|
||||||
else
|
|
||||||
model_path='/tags'
|
|
||||||
fi
|
|
||||||
curl "${CURL_FLAGS[@]}" "${OLLAMA_URL}${model_path}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get a list of available models.
|
|
||||||
function get_models_list() {
|
|
||||||
local jq_filter=''
|
|
||||||
if [ "${openai_api}" == true ]; then
|
|
||||||
jq_filter='.data[].id'
|
|
||||||
else
|
|
||||||
jq_filter='.models[].model'
|
|
||||||
fi
|
|
||||||
get_models | jq -r ${jq_filter}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print list of models.
|
|
||||||
function print_models() {
|
|
||||||
get_models_list | column -t -s $'\t'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print message variable.
|
|
||||||
function print_message_history() {
|
|
||||||
echo ${message_history}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print message variable.
|
|
||||||
function print_debug() {
|
|
||||||
echo "Model: ${selected_model}"
|
|
||||||
echo 'System Prompt:'
|
|
||||||
print_system_prompt
|
|
||||||
echo 'Chat History:'
|
|
||||||
print_message_history | jq
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print the system prompt.
|
|
||||||
function print_system_prompt() {
|
|
||||||
echo -e "${system_prompt}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if the model exists.
|
|
||||||
function check_if_model_exists() {
|
|
||||||
local model=${1}
|
|
||||||
local enable_rc=${2}
|
|
||||||
local model_list=($(get_models_list))
|
|
||||||
|
|
||||||
for m in "${model_list[@]}"; do
|
|
||||||
if [[ "$m" == "$model" ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ${enable_rc} ]; then
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
print_error "model ${model} does not exists."
|
|
||||||
exit $ERROR_UNKNOWN_MODEL
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Convert string to a safe format for later use.
|
|
||||||
function convert_to_safe_text() {
|
|
||||||
echo "${1}" | jq -sR @json
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the text output color for user input.
|
|
||||||
function set_user_color() {
|
|
||||||
printf "${LIGHT_GRAY}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set the text output color for ai response.
|
|
||||||
function set_ai_color() {
|
|
||||||
printf "${CLEAR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set text color to defaults.
|
|
||||||
function set_clear_color() {
|
|
||||||
printf "${CLEAR}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print the header for the ai message
|
|
||||||
function print_ai_start_message() {
|
|
||||||
echo -e "\U1F916 AquaAI"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Print the header for the ai message
|
|
||||||
function print_user_start_message() {
|
|
||||||
echo -e "\U1F464 ${USER}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Opens the user's preferred text editor to allow them to input text.
|
|
||||||
function editor_input() {
|
|
||||||
local editor=${EDITOR:=nano}
|
|
||||||
local temp_file=$(mktemp)
|
|
||||||
|
|
||||||
${editor} ${temp_file}
|
|
||||||
local user_input=$(<"$temp_file")
|
|
||||||
rm "$temp_file"
|
|
||||||
|
|
||||||
msg=${user_input}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if current directory is managed by git.
|
|
||||||
function is_git_repo() {
|
|
||||||
git rev-parse --is-inside-work-tree &> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if current directory is managed by git.
|
|
||||||
function check_git_directory() {
|
|
||||||
if ! git rev-parse --is-inside-work-tree &> /dev/null; then
|
|
||||||
print_error 'The current directory is not inside a git repository.'
|
|
||||||
exit ${ERROR_NO_GIT_REPO}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Asks the user if they want to include staged git change data.
|
|
||||||
function gather_staged_changes() {
|
|
||||||
echo -n 'Do you want to include staged changes? (y/n)? '
|
|
||||||
read response
|
|
||||||
|
|
||||||
if [[ "$response" == 'y' || "$response" == 'yes' ]]; then
|
|
||||||
msg+=$(git diff --cached --patch)
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ask the user if they want to include changes that have not been committed.
|
|
||||||
function gather_uncommitted_changes() {
|
|
||||||
echo -n 'Do you want to include the changes'
|
|
||||||
echo -n ' you have yet to commit or stash (y/n)? '
|
|
||||||
read response
|
|
||||||
|
|
||||||
if [[ "$response" == 'y' || "$response" == 'yes' ]]; then
|
|
||||||
changes=$(git diff)
|
|
||||||
msg+=${changes}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ask the user for number of commit changes to include in code review.
|
|
||||||
# Returns a list of changes for the given number of commits.
|
|
||||||
function gather_commit_changes() {
|
|
||||||
echo -n 'How many previous commits do you want to include? '
|
|
||||||
local count
|
|
||||||
read count
|
|
||||||
|
|
||||||
# Allow hitting enter as a no response.
|
|
||||||
if [ -z "$count" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Validate that the input is a positive integer.
|
|
||||||
if ! [[ "$count" =~ ^[0-9]+$ ]] || [ "$count" -lt 0 ]; then
|
|
||||||
print_error 'Please enter a positive integer for the number of commits.'
|
|
||||||
exit ${ERROR_INVALID_INPUT}
|
|
||||||
fi
|
|
||||||
|
|
||||||
hashes=$(git log --format=%H -n ${count})
|
|
||||||
for h in ${hashes}; do
|
|
||||||
commit_message=$(git show ${h})
|
|
||||||
msg+="${commit_message}"$'\n'
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create fifo for chat responses.
|
|
||||||
function create_response_fifo() {
|
|
||||||
create_data_dir
|
|
||||||
if [ ! -p ${RESPONSE_FIFO} ]; then
|
|
||||||
mkfifo ${RESPONSE_FIFO}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Delete fifo for chat responses.
|
|
||||||
function remove_response_fifo() {
|
|
||||||
if [ -p ${RESPONSE_FIFO} ]; then
|
|
||||||
rm ${RESPONSE_FIFO}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create response trap to allow user to stop AquaAI.
|
|
||||||
function create_response_trap() {
|
|
||||||
trap 'echo "AquaAI has been interrupted...";' SIGINT
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove response trap to allow user to exit program.
|
|
||||||
function remove_response_trap() {
|
|
||||||
trap - SIGINT
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get the first message from a saved chat.
|
|
||||||
function get_first_chat() {
|
|
||||||
local file_path=${1}
|
|
||||||
source <(cat ${file_path} | grep message_history)
|
|
||||||
message_history=$(echo $message_history | \
|
|
||||||
jq -r '[.[] | select(.role == "user")][0].content' \
|
|
||||||
2>/dev/null | sed 's/^"//')
|
|
||||||
echo -e $message_history | sed 's/"$//' | tr -d '\n' | cut -c 1-80 \
|
|
||||||
| sed ':a;N;$!ba;s/\n//g'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get an array of all saved chat files.
|
|
||||||
function get_save_files() {
|
|
||||||
save_files=()
|
|
||||||
create_data_dir
|
|
||||||
|
|
||||||
for f in $(find "$DATA_DIR" -type f -name "*.chat"); do
|
|
||||||
save_files+=("${f}")
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create the data directory if it does not exist.
|
|
||||||
function create_data_dir() {
|
|
||||||
if [ ! -d "$DATA_DIR" ]; then
|
|
||||||
mkdir -p "$DATA_DIR"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Save the current chat to a file.
|
|
||||||
function save_chat() {
|
|
||||||
create_data_dir
|
|
||||||
local filename=${1}
|
|
||||||
|
|
||||||
if [ -z "$filename" ]; then
|
|
||||||
print_error 'No filename provided.'
|
|
||||||
exit ${ERROR_NO_SAVEFILE}
|
|
||||||
fi
|
|
||||||
|
|
||||||
declare -p selected_model system_prompt \
|
|
||||||
message_history cli_mode > "${DATA_DIR}/${filename}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Save the current chat to autosave.
|
|
||||||
function autosave() {
|
|
||||||
save_chat 'autosave.chat'
|
|
||||||
echo 'Chat has been auto saved'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Find all .chat files in DATA_DIR and use fzf to select one.
|
|
||||||
function select_chat_file() {
|
|
||||||
selected_file=$(select_chat_with_fzf)
|
|
||||||
|
|
||||||
if [ -z "$selected_file" ]; then
|
|
||||||
echo 'No file selected.'
|
|
||||||
exit ${ERROR_NO_SAVEFILE}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Delete .chat files in DATA_DIR.
|
|
||||||
function delete_chat_file() {
|
|
||||||
selected_file=$(select_chat_with_fzf)
|
|
||||||
|
|
||||||
if [ -z "$selected_file" ]; then
|
|
||||||
echo 'No file selected.'
|
|
||||||
exit ${ERROR_NO_SAVEFILE}
|
|
||||||
else
|
|
||||||
local pretty_name=$(get_first_chat ${selected_file})
|
|
||||||
echo -n "do you want to delete '${pretty_name}' (y/n)? "
|
|
||||||
read response
|
|
||||||
if [[ "$response" == 'y' || "$response" == 'yes' ]]; then
|
|
||||||
rm -- "${selected_file}"
|
|
||||||
echo "Deleted '${pretty_name}'"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Select saved chat with fzf program.
|
|
||||||
function select_chat_with_fzf() {
|
|
||||||
get_friendly_save_names
|
|
||||||
|
|
||||||
local selected_index=$(printf "%s\n" "${friendly_save_files[@]}" \
|
|
||||||
| cat -n | fzf --with-nth 2.. \
|
|
||||||
| awk '{print $1}')
|
|
||||||
selected_index=$((${selected_index}-1))
|
|
||||||
|
|
||||||
if [[ -n $selected_index ]]; then
|
|
||||||
echo "${save_files[selected_index]}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get an array of the first message in saved chats.
|
|
||||||
function get_friendly_save_names() {
|
|
||||||
get_save_files
|
|
||||||
friendly_save_files=()
|
|
||||||
for f in "${save_files[@]}"; do
|
|
||||||
friendly_save_files+=("$(get_first_chat ${f})")
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Validate site certificate.
|
|
||||||
function check_cert() {
|
|
||||||
curl "${CURL_FLAGS[@]}" ${OLLAMA_URL} 2>&1 >/dev/null
|
|
||||||
local ec=$?
|
|
||||||
if [ "${ec}" == '60' ]; then
|
|
||||||
print_error 'unable to get local issuer certificate.'
|
|
||||||
echo 'Install the certificate on the system.'
|
|
||||||
exit ${ERROR_INVALID_SSL}
|
|
||||||
elif [ "${ec}" != '0' ]; then
|
|
||||||
print_error 'unknown ssl error.'
|
|
||||||
exit ${ERROR_UNKNOWN_SSL}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Update chat history
|
|
||||||
function update_history() {
|
|
||||||
local role="$1"
|
|
||||||
local content="$2"
|
|
||||||
message_history=$(echo "$message_history" \
|
|
||||||
| jq --arg role "$role" --arg content \
|
|
||||||
"$content" '. + [{"role": $role, "content": $content}]')
|
|
||||||
}
|
|
||||||
|
|
||||||
# Read input from the user.
|
|
||||||
function read_user_input() {
|
|
||||||
if [ "${multiline_mode}" == true ]; then
|
|
||||||
msg=$(awk '{if ($0 == "END") exit; else print}')
|
|
||||||
elif [ "${code_review_start}" == true ]; then
|
|
||||||
check_git_directory
|
|
||||||
msg=''
|
|
||||||
gather_uncommitted_changes
|
|
||||||
gather_staged_changes
|
|
||||||
gather_commit_changes
|
|
||||||
code_review_start=false
|
|
||||||
else
|
|
||||||
read msg
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Handle input related to CLI mode.
|
|
||||||
function handle_cli_mode() {
|
|
||||||
# Check for cli mode
|
|
||||||
if [ ${cli_mode} == true ]; then
|
|
||||||
if [[ -z $msg || $msg == 'run' || $msg == 'r' ]]; then
|
|
||||||
set_clear_color
|
|
||||||
autosave
|
|
||||||
echo
|
|
||||||
local commands=()
|
|
||||||
# Get a list of commands
|
|
||||||
while IFS= read -r line; do
|
|
||||||
commands+=("${line}")
|
|
||||||
done <<< "$last_cmd"
|
|
||||||
for c in "${commands[@]}"; do
|
|
||||||
# Using eval to handle commands that include pipes.
|
|
||||||
if [[ "${c}" == *'|'* ]]; then
|
|
||||||
eval "${c}"
|
|
||||||
else
|
|
||||||
${c}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for editor request.
|
|
||||||
function handle_edit() {
|
|
||||||
if [[ $msg == 'edit' || $msg == 'e' ]]; then
|
|
||||||
editor_input
|
|
||||||
set_user_color
|
|
||||||
echo "${msg}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for debug command.
|
|
||||||
function handle_debug() {
|
|
||||||
if [[ $msg == 'debug' ]]; then
|
|
||||||
print_debug
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for save command.
|
|
||||||
function handle_save() {
|
|
||||||
if [[ $msg == 'save' || $msg == 's' ]]; then
|
|
||||||
echo "Saving chat history"
|
|
||||||
save_chat "$(date +%Y%m%d%H%M%S).chat"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Chat converstation loop.
|
|
||||||
function chat_loop() {
|
|
||||||
check_if_model_exists ${selected_model}
|
|
||||||
update_history 'system' "$system_prompt"
|
|
||||||
while true; do
|
|
||||||
chat
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main chat loop.
|
|
||||||
function chat() {
|
|
||||||
# Get user input.
|
|
||||||
set_user_color
|
|
||||||
print_user_start_message
|
|
||||||
read_user_input
|
|
||||||
echo
|
|
||||||
|
|
||||||
# Handle user input.
|
|
||||||
local rc=0
|
|
||||||
handle_edit
|
|
||||||
handle_cli_mode
|
|
||||||
handle_debug
|
|
||||||
rc=$((rc + $?))
|
|
||||||
handle_save
|
|
||||||
rc=$((rc + $?))
|
|
||||||
if [ "$rc" -ne 0 ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
update_history 'user' "${msg}"
|
|
||||||
|
|
||||||
# Prepare JSON payload.
|
|
||||||
JSON_PAYLOAD=$(jq -n \
|
|
||||||
--arg model "$selected_model" \
|
|
||||||
--argjson messages "$message_history" \
|
|
||||||
'{model: $model, messages: $messages, stream: true}')
|
|
||||||
|
|
||||||
set_ai_color
|
|
||||||
print_ai_start_message
|
|
||||||
|
|
||||||
create_response_fifo
|
|
||||||
create_response_trap
|
|
||||||
# Render to console.
|
|
||||||
if [ "${rich_format_mode}" == true ]; then
|
|
||||||
cat ${RESPONSE_FIFO} | ${rich_format_path} &
|
|
||||||
else
|
|
||||||
cat ${RESPONSE_FIFO} &
|
|
||||||
fi
|
|
||||||
local flags=("${CURL_FLAGS[@]}")
|
|
||||||
local chat_path=''
|
|
||||||
local filter=''
|
|
||||||
if [ "${openai_api}" == true ]; then
|
|
||||||
flags+=(-H "Content-Type: application/json")
|
|
||||||
chat_path='/chat/completions'
|
|
||||||
filter='.choices[].delta.content // empty'
|
|
||||||
else
|
|
||||||
chat_path='/api/chat'
|
|
||||||
filter='.message.content // empty'
|
|
||||||
fi
|
|
||||||
local response=$(curl "${flags[@]}" "${OLLAMA_URL}${chat_path}" \
|
|
||||||
-d "${JSON_PAYLOAD}" | stdbuf -o0 sed 's/^data: //' \
|
|
||||||
| stdbuf -o0 jq -j "${filter}" 2>/dev/null \
|
|
||||||
| tee ${RESPONSE_FIFO})
|
|
||||||
wait
|
|
||||||
# Newline for AI response.
|
|
||||||
if [ "${rich_format_mode}" != true ]; then
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
# One line reponses do not print out when formatted with Streamdown.
|
|
||||||
if [[ "$rich_format_path" == *"streamdown"* && \
|
|
||||||
"${rich_format_mode}" == true ]]; then
|
|
||||||
local wc=$(echo "${response}" | wc -l)
|
|
||||||
if [ ${wc} -eq 1 ]; then
|
|
||||||
echo "${response}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
remove_response_trap
|
|
||||||
remove_response_fifo
|
|
||||||
echo
|
|
||||||
update_history "assistant" "${response}"
|
|
||||||
last_cmd="${response}"
|
|
||||||
}
|
|
||||||
|
|
||||||
#===============================================================================
|
|
||||||
|
|
||||||
check_requirements
|
|
||||||
if [ "${insecure_mode}" == true ]; then
|
|
||||||
CURL_FLAGS+=('-k')
|
|
||||||
else
|
|
||||||
check_cert
|
|
||||||
fi
|
|
||||||
if [ "${openai_api}" == true ]; then
|
|
||||||
CURL_FLAGS+=(-H "Authorization: Bearer ${key}")
|
|
||||||
fi
|
|
||||||
cmd=chat_loop
|
|
||||||
set_default_agent
|
|
||||||
|
|
||||||
# Check arguments
|
|
||||||
for i in "$@"; do
|
|
||||||
case $i in
|
|
||||||
-h|--help)
|
|
||||||
cmd=print_help
|
|
||||||
;;
|
|
||||||
-l|--list)
|
|
||||||
cmd=print_models
|
|
||||||
;;
|
|
||||||
--delete)
|
|
||||||
delete_chat_file
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
--load)
|
|
||||||
select_chat_file
|
|
||||||
source ${selected_file}
|
|
||||||
cmd=chat_loop
|
|
||||||
;;
|
|
||||||
--restore)
|
|
||||||
if [ ! -e "${DATA_DIR}/autosave.chat" ]; then
|
|
||||||
print_error 'auto save does not exit'
|
|
||||||
exit ${ERROR_NO_AUTOSAVE}
|
|
||||||
fi
|
|
||||||
source "${DATA_DIR}/autosave.chat"
|
|
||||||
cmd=chat_loop
|
|
||||||
;;
|
|
||||||
# Modes
|
|
||||||
--bash)
|
|
||||||
set_coding_model
|
|
||||||
set_bash_agent
|
|
||||||
cmd=chat_loop
|
|
||||||
;;
|
|
||||||
--cli)
|
|
||||||
set_coding_model
|
|
||||||
set_cli_agent
|
|
||||||
cmd=chat_loop
|
|
||||||
cli_mode=true
|
|
||||||
rich_format_mode=false
|
|
||||||
;;
|
|
||||||
--code-review)
|
|
||||||
set_coding_model
|
|
||||||
set_code_review_agent
|
|
||||||
code_review_start=true
|
|
||||||
cmd=chat_loop
|
|
||||||
;;
|
|
||||||
--git)
|
|
||||||
set_coding_model
|
|
||||||
set_git_agent
|
|
||||||
cmd=chat_loop
|
|
||||||
cli_mode=true
|
|
||||||
rich_format_mode=false
|
|
||||||
;;
|
|
||||||
-r|--reason)
|
|
||||||
set_reasoning_model
|
|
||||||
cmd=chat_loop
|
|
||||||
;;
|
|
||||||
--regex)
|
|
||||||
set_coding_model
|
|
||||||
set_regex_agent
|
|
||||||
cmd=chat_loop
|
|
||||||
rich_format_mode=false
|
|
||||||
;;
|
|
||||||
-ha|--home-assistant)
|
|
||||||
set_coding_model
|
|
||||||
set_home_assistant_agent
|
|
||||||
cmd=chat_loop
|
|
||||||
rich_format_mode=false
|
|
||||||
;;
|
|
||||||
# Other
|
|
||||||
-*|--*)
|
|
||||||
echo "Unknown option ${i}"
|
|
||||||
print_help
|
|
||||||
exit ERROR_UNKNOWN_OPTION
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
${cmd}
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Print help info.
|
|
||||||
function print_help() {
|
|
||||||
echo 'Control the backlight brightness with animation.'
|
|
||||||
echo
|
|
||||||
echo '-i -- increase brightness'
|
|
||||||
echo '-d -- decrease brightness'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Increase backlight brightness.
|
|
||||||
function increase() {
|
|
||||||
run_animation 'light -A 0.1'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Decrease backlight brightness.
|
|
||||||
function decrease() {
|
|
||||||
run_animation 'light -U 0.1'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run animation task.
|
|
||||||
function run_animation() {
|
|
||||||
local cmd="${1}"
|
|
||||||
i=0
|
|
||||||
while [ $i -lt 50 ]; do
|
|
||||||
${cmd}
|
|
||||||
sleep 0.01
|
|
||||||
((i = i + 1));
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
# Check arguments
|
|
||||||
for i in "$@"; do
|
|
||||||
case $i in
|
|
||||||
-h|--help)
|
|
||||||
print_help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-i)
|
|
||||||
increase
|
|
||||||
;;
|
|
||||||
-d)
|
|
||||||
decrease
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Update Passwords
|
|
||||||
pass git pull
|
|
||||||
|
|
||||||
# Desktop
|
|
||||||
~/bin/connect-nas.sh
|
|
||||||
systemctl --user start polybar
|
|
||||||
systemctl --user restart streamdeck
|
|
||||||
waybar &
|
|
||||||
/usr/libexec/polkit-gnome-authentication-agent-1 &
|
|
||||||
|
|
||||||
# Keyring
|
|
||||||
dbus-update-activation-environment --all
|
|
||||||
/usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh
|
|
||||||
|
|
||||||
# NextCloud sync client
|
|
||||||
nextcloud --background &
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
sync_info = create
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GFSA04
|
|
||||||
updated_time = 1734886086
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"filament_flow_ratio": [
|
|
||||||
"0.955"
|
|
||||||
],
|
|
||||||
"filament_settings_id": [
|
|
||||||
"Voron Overture PETG"
|
|
||||||
],
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "Voron Generic PETG",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"name": "Voron Overture PETG",
|
|
||||||
"version": "2.2.0.4"
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
sync_info = update
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GM001
|
|
||||||
updated_time = 1728686097
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "Voron 2.4 350 0.4 nozzle",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"machine_start_gcode": "PRINT_START BED_TEMP=[bed_temperature_initial_layer_single] EXTRUDER_TEMP=[nozzle_temperature_initial_layer]",
|
|
||||||
"name": "AquaVoron 2.4 350 0.4 nozzle",
|
|
||||||
"print_host": "192.168.20.21",
|
|
||||||
"printer_settings_id": "AquaVoron 2.4 350 0.4 nozzle",
|
|
||||||
"version": "1.8.0.0"
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
sync_info = update
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GM003
|
|
||||||
updated_time = 1728686148
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "Voron 2.4 350 0.6 nozzle",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"machine_start_gcode": "PRINT_START BED_TEMP=[bed_temperature_initial_layer_single] EXTRUDER_TEMP=[nozzle_temperature_initial_layer]",
|
|
||||||
"name": "AquaVoron 2.4 350 0.6 nozzle",
|
|
||||||
"print_host": "http://192.168.20.21",
|
|
||||||
"printer_settings_id": "AquaVoron 2.4 350 0.6 nozzle",
|
|
||||||
"retraction_length": [
|
|
||||||
"0.1"
|
|
||||||
],
|
|
||||||
"version": "1.8.0.0"
|
|
||||||
}
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;{layer_z}\n\n",
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "MyKlipper 0.4 nozzle",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"machine_end_gcode": "END_PRINT",
|
|
||||||
"machine_max_acceleration_extruding": [
|
|
||||||
"500",
|
|
||||||
"20000"
|
|
||||||
],
|
|
||||||
"machine_max_acceleration_retracting": [
|
|
||||||
"1000",
|
|
||||||
"5000"
|
|
||||||
],
|
|
||||||
"machine_max_acceleration_x": [
|
|
||||||
"500",
|
|
||||||
"20000"
|
|
||||||
],
|
|
||||||
"machine_max_acceleration_y": [
|
|
||||||
"500",
|
|
||||||
"20000"
|
|
||||||
],
|
|
||||||
"machine_max_acceleration_z": [
|
|
||||||
"100",
|
|
||||||
"200"
|
|
||||||
],
|
|
||||||
"machine_max_jerk_e": [
|
|
||||||
"5",
|
|
||||||
"2.5"
|
|
||||||
],
|
|
||||||
"machine_max_jerk_x": [
|
|
||||||
"8",
|
|
||||||
"9"
|
|
||||||
],
|
|
||||||
"machine_max_jerk_y": [
|
|
||||||
"8",
|
|
||||||
"9"
|
|
||||||
],
|
|
||||||
"machine_max_jerk_z": [
|
|
||||||
"0.4",
|
|
||||||
"0.4"
|
|
||||||
],
|
|
||||||
"machine_max_speed_e": [
|
|
||||||
"60",
|
|
||||||
"25"
|
|
||||||
],
|
|
||||||
"machine_max_speed_z": [
|
|
||||||
"10",
|
|
||||||
"12"
|
|
||||||
],
|
|
||||||
"machine_start_gcode": "START_PRINT BED_TEMP=[bed_temperature_initial_layer_single] EXTRUDER_TEMP=[nozzle_temperature_initial_layer]",
|
|
||||||
"max_layer_height": [
|
|
||||||
"0.48"
|
|
||||||
],
|
|
||||||
"name": "CR-10s 0.25 nozzle",
|
|
||||||
"nozzle_diameter": [
|
|
||||||
"0.25"
|
|
||||||
],
|
|
||||||
"nozzle_type": "brass",
|
|
||||||
"print_host": "192.168.1.5",
|
|
||||||
"printable_area": [
|
|
||||||
"0x0",
|
|
||||||
"300x0",
|
|
||||||
"300x300",
|
|
||||||
"0x300"
|
|
||||||
],
|
|
||||||
"printable_height": "400",
|
|
||||||
"printer_settings_id": "CR-10s 0.25 nozzle",
|
|
||||||
"retract_length_toolchange": [
|
|
||||||
"1"
|
|
||||||
],
|
|
||||||
"retraction_length": [
|
|
||||||
"0.5"
|
|
||||||
],
|
|
||||||
"retraction_minimum_travel": [
|
|
||||||
"2"
|
|
||||||
],
|
|
||||||
"use_firmware_retraction": "1",
|
|
||||||
"version": "1.6.1.0",
|
|
||||||
"wipe": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"z_hop_types": [
|
|
||||||
"Auto Lift"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
sync_info = update
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GM001
|
|
||||||
updated_time = 1695585702
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
sync_info =
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GP004
|
|
||||||
updated_time = 1735702877
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"brim_type": "no_brim",
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "0.18mm Fine 0.6 nozzle @Voron",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"name": "0.18mm Fine 0.6 nozzle @Voron - AquaMorph",
|
|
||||||
"print_settings_id": "0.18mm Fine 0.6 nozzle @Voron - AquaMorph",
|
|
||||||
"version": "2.2.0.4"
|
|
||||||
}
|
|
||||||
-5
@@ -1,5 +0,0 @@
|
|||||||
sync_info =
|
|
||||||
user_id =
|
|
||||||
setting_id =
|
|
||||||
base_id = GP004
|
|
||||||
updated_time = 1736606291
|
|
||||||
-9
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"brim_type": "no_brim",
|
|
||||||
"from": "User",
|
|
||||||
"inherits": "0.30mm Standard 0.6 nozzle @Voron",
|
|
||||||
"is_custom_defined": "0",
|
|
||||||
"name": "0.30mm Standard 0.6 nozzle @Voron - AquaMorph",
|
|
||||||
"print_settings_id": "0.30mm Standard 0.6 nozzle @Voron - AquaMorph",
|
|
||||||
"version": "2.2.0.4"
|
|
||||||
}
|
|
||||||
@@ -1,606 +0,0 @@
|
|||||||
|
|
||||||
[bell]
|
|
||||||
animation = "EaseOutExpo"
|
|
||||||
color = "0xffffff"
|
|
||||||
duration = 0
|
|
||||||
|
|
||||||
[colors]
|
|
||||||
draw_bold_text_with_bright_colors = true
|
|
||||||
|
|
||||||
[colors.bright]
|
|
||||||
black = "0x666666"
|
|
||||||
blue = "0x7aa6da"
|
|
||||||
cyan = "0x54ced6"
|
|
||||||
green = "0x9ec400"
|
|
||||||
magenta = "0xb77ee0"
|
|
||||||
red = "0xff3334"
|
|
||||||
white = "0xffffff"
|
|
||||||
yellow = "0xe7c547"
|
|
||||||
|
|
||||||
[colors.normal]
|
|
||||||
black = "0x000000"
|
|
||||||
blue = "0x7aa6da"
|
|
||||||
cyan = "0x70c0ba"
|
|
||||||
green = "0xb9ca4a"
|
|
||||||
magenta = "0xc397d8"
|
|
||||||
red = "0xd54e53"
|
|
||||||
white = "0xeaeaea"
|
|
||||||
yellow = "0xe6c547"
|
|
||||||
|
|
||||||
[colors.primary]
|
|
||||||
background = "0x000000"
|
|
||||||
foreground = "0x0288d1"
|
|
||||||
|
|
||||||
[cursor]
|
|
||||||
style = "Block"
|
|
||||||
unfocused_hollow = true
|
|
||||||
|
|
||||||
[debug]
|
|
||||||
log_level = "Warn"
|
|
||||||
persistent_logging = false
|
|
||||||
print_events = false
|
|
||||||
render_timer = false
|
|
||||||
|
|
||||||
[font]
|
|
||||||
size = 16.0
|
|
||||||
|
|
||||||
[font.glyph_offset]
|
|
||||||
x = 0
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[font.normal]
|
|
||||||
family = "Inconsolata"
|
|
||||||
style = "Monospace"
|
|
||||||
|
|
||||||
[font.offset]
|
|
||||||
x = 0
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
action = "Paste"
|
|
||||||
key = "Paste"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
action = "Copy"
|
|
||||||
key = "Copy"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
action = "ClearLogNotice"
|
|
||||||
key = "L"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\f"
|
|
||||||
key = "L"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3H"
|
|
||||||
key = "Home"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOH"
|
|
||||||
key = "Home"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[H"
|
|
||||||
key = "Home"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3F"
|
|
||||||
key = "End"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOF"
|
|
||||||
key = "End"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[F"
|
|
||||||
key = "End"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
action = "ScrollPageUp"
|
|
||||||
key = "PageUp"
|
|
||||||
mode = "~Alt"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[5;2~"
|
|
||||||
key = "PageUp"
|
|
||||||
mode = "Alt"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[5;5~"
|
|
||||||
key = "PageUp"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[5;3~"
|
|
||||||
key = "PageUp"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[5~"
|
|
||||||
key = "PageUp"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
action = "ScrollPageDown"
|
|
||||||
key = "PageDown"
|
|
||||||
mode = "~Alt"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[6;2~"
|
|
||||||
key = "PageDown"
|
|
||||||
mode = "Alt"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[6;5~"
|
|
||||||
key = "PageDown"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[6;3~"
|
|
||||||
key = "PageDown"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[6~"
|
|
||||||
key = "PageDown"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[Z"
|
|
||||||
key = "Tab"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u007F"
|
|
||||||
key = "Back"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B\u007F"
|
|
||||||
key = "Back"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[2~"
|
|
||||||
key = "Insert"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[3~"
|
|
||||||
key = "Delete"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2D"
|
|
||||||
key = "Left"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5D"
|
|
||||||
key = "Left"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3D"
|
|
||||||
key = "Left"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[D"
|
|
||||||
key = "Left"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOD"
|
|
||||||
key = "Left"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2C"
|
|
||||||
key = "Right"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5C"
|
|
||||||
key = "Right"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3C"
|
|
||||||
key = "Right"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[C"
|
|
||||||
key = "Right"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOC"
|
|
||||||
key = "Right"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2A"
|
|
||||||
key = "Up"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5A"
|
|
||||||
key = "Up"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3A"
|
|
||||||
key = "Up"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[A"
|
|
||||||
key = "Up"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOA"
|
|
||||||
key = "Up"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2B"
|
|
||||||
key = "Down"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5B"
|
|
||||||
key = "Down"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3B"
|
|
||||||
key = "Down"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[B"
|
|
||||||
key = "Down"
|
|
||||||
mode = "~AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOB"
|
|
||||||
key = "Down"
|
|
||||||
mode = "AppCursor"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOP"
|
|
||||||
key = "F1"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOQ"
|
|
||||||
key = "F2"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOR"
|
|
||||||
key = "F3"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001BOS"
|
|
||||||
key = "F4"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[15~"
|
|
||||||
key = "F5"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[17~"
|
|
||||||
key = "F6"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[18~"
|
|
||||||
key = "F7"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[19~"
|
|
||||||
key = "F8"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[20~"
|
|
||||||
key = "F9"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[21~"
|
|
||||||
key = "F10"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[23~"
|
|
||||||
key = "F11"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[24~"
|
|
||||||
key = "F12"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2P"
|
|
||||||
key = "F1"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2Q"
|
|
||||||
key = "F2"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2R"
|
|
||||||
key = "F3"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;2S"
|
|
||||||
key = "F4"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[15;2~"
|
|
||||||
key = "F5"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[17;2~"
|
|
||||||
key = "F6"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[18;2~"
|
|
||||||
key = "F7"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[19;2~"
|
|
||||||
key = "F8"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[20;2~"
|
|
||||||
key = "F9"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[21;2~"
|
|
||||||
key = "F10"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[23;2~"
|
|
||||||
key = "F11"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[24;2~"
|
|
||||||
key = "F12"
|
|
||||||
mods = "Shift"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5P"
|
|
||||||
key = "F1"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5Q"
|
|
||||||
key = "F2"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5R"
|
|
||||||
key = "F3"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;5S"
|
|
||||||
key = "F4"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[15;5~"
|
|
||||||
key = "F5"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[17;5~"
|
|
||||||
key = "F6"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[18;5~"
|
|
||||||
key = "F7"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[19;5~"
|
|
||||||
key = "F8"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[20;5~"
|
|
||||||
key = "F9"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[21;5~"
|
|
||||||
key = "F10"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[23;5~"
|
|
||||||
key = "F11"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[24;5~"
|
|
||||||
key = "F12"
|
|
||||||
mods = "Control"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;6P"
|
|
||||||
key = "F1"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;6Q"
|
|
||||||
key = "F2"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;6R"
|
|
||||||
key = "F3"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;6S"
|
|
||||||
key = "F4"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[15;6~"
|
|
||||||
key = "F5"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[17;6~"
|
|
||||||
key = "F6"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[18;6~"
|
|
||||||
key = "F7"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[19;6~"
|
|
||||||
key = "F8"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[20;6~"
|
|
||||||
key = "F9"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[21;6~"
|
|
||||||
key = "F10"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[23;6~"
|
|
||||||
key = "F11"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[24;6~"
|
|
||||||
key = "F12"
|
|
||||||
mods = "Alt"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3P"
|
|
||||||
key = "F1"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3Q"
|
|
||||||
key = "F2"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3R"
|
|
||||||
key = "F3"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[1;3S"
|
|
||||||
key = "F4"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[15;3~"
|
|
||||||
key = "F5"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[17;3~"
|
|
||||||
key = "F6"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[18;3~"
|
|
||||||
key = "F7"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[19;3~"
|
|
||||||
key = "F8"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[20;3~"
|
|
||||||
key = "F9"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[21;3~"
|
|
||||||
key = "F10"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[23;3~"
|
|
||||||
key = "F11"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = "\u001B[24;3~"
|
|
||||||
key = "F12"
|
|
||||||
mods = "Super"
|
|
||||||
|
|
||||||
[[keyboard.bindings]]
|
|
||||||
chars = """
|
|
||||||
|
|
||||||
"""
|
|
||||||
key = "NumpadEnter"
|
|
||||||
|
|
||||||
[mouse]
|
|
||||||
hide_when_typing = false
|
|
||||||
|
|
||||||
[[mouse.bindings]]
|
|
||||||
action = "PasteSelection"
|
|
||||||
mouse = "Middle"
|
|
||||||
|
|
||||||
[scrolling]
|
|
||||||
history = 10000
|
|
||||||
multiplier = 3
|
|
||||||
|
|
||||||
[selection]
|
|
||||||
save_to_clipboard = false
|
|
||||||
semantic_escape_chars = ",│`|:\"' ()[]{}<>"
|
|
||||||
|
|
||||||
[window]
|
|
||||||
decorations = "full"
|
|
||||||
dynamic_padding = false
|
|
||||||
opacity = 0.8
|
|
||||||
startup_mode = "Windowed"
|
|
||||||
|
|
||||||
[window.dimensions]
|
|
||||||
columns = 0
|
|
||||||
lines = 0
|
|
||||||
|
|
||||||
[window.padding]
|
|
||||||
x = 4
|
|
||||||
y = 4
|
|
||||||
|
|
||||||
[general]
|
|
||||||
live_config_reload = true
|
|
||||||
working_directory = "None"
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
$mainMod = SUPER
|
|
||||||
|
|
||||||
# Keybindings
|
|
||||||
bind = $mainMod, return, exec, $terminal
|
|
||||||
bind = $mainMod, Q, killactive,
|
|
||||||
bind = $mainMod, E, exec, $fileManager
|
|
||||||
bind = $mainMod, V, togglefloating,
|
|
||||||
bind = $mainMod, D, exec, $menu
|
|
||||||
bind = $mainMod, P, pseudo, # dwindle
|
|
||||||
bind = $mainMod, J, togglesplit, # dwindle
|
|
||||||
bind = $mainMod, L, exec, hyprlock
|
|
||||||
bind = $mainMod, F, fullscreen
|
|
||||||
|
|
||||||
# Move focus window
|
|
||||||
bind = $mainMod, left, movefocus, l
|
|
||||||
bind = $mainMod, right, movefocus, r
|
|
||||||
bind = $mainMod, up, movefocus, u
|
|
||||||
bind = $mainMod, down, movefocus, d
|
|
||||||
|
|
||||||
# Switch workspaces
|
|
||||||
bind = $mainMod, 1, workspace, 1
|
|
||||||
bind = $mainMod, 2, workspace, 2
|
|
||||||
bind = $mainMod, 3, workspace, 3
|
|
||||||
bind = $mainMod, 4, workspace, 4
|
|
||||||
bind = $mainMod, 5, workspace, 5
|
|
||||||
bind = $mainMod, 6, workspace, 6
|
|
||||||
bind = $mainMod, 7, workspace, 7
|
|
||||||
bind = $mainMod, 8, workspace, 8
|
|
||||||
bind = $mainMod, 9, workspace, 9
|
|
||||||
bind = $mainMod, 0, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace
|
|
||||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
|
||||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
|
||||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
|
||||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
|
||||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
|
||||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
|
||||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
|
||||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
|
||||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
|
||||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
bind = $mainMod, mouse_down, workspace, e+1
|
|
||||||
bind = $mainMod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
bindm = $mainMod, mouse:272, movewindow
|
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Screen brightness controls
|
|
||||||
exec-once = light -N 1
|
|
||||||
bind = ,XF86MonBrightnessUp, exec, ~/bin/system/backlight-ctl.sh -i
|
|
||||||
bind = ,XF86MonBrightnessDown, exec, ~/bin/system/backlight-ctl.sh -d
|
|
||||||
|
|
||||||
# Pulse Audio controls
|
|
||||||
bind = ,XF86AudioRaiseVolume, exec, amixer set Master 3%+ #increase sound volume
|
|
||||||
bind = ,XF86AudioLowerVolume, exec, amixer set Master 3%- #decrease sound volume
|
|
||||||
bind = ,XF86AudioMute, exec, amixer set Master toggle # toggle sound
|
|
||||||
|
|
||||||
# Media controls
|
|
||||||
bind = ,XF86AudioPrev, exec, playerctl previous
|
|
||||||
bind = ,XF86AudioPlay, exec, playerctl play-pause
|
|
||||||
bind = ,XF86AudioNext, exec, playerctl next
|
|
||||||
|
|
||||||
# Lockscreen
|
|
||||||
bind = $mainMod, escape, exec, swaylock
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# Programs
|
|
||||||
$terminal = alacritty
|
|
||||||
$fileManager = dolphin
|
|
||||||
$menu = rofi -show combi
|
|
||||||
$browser = brave-browser
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
general {
|
|
||||||
gaps_in = 5
|
|
||||||
gaps_out = 5
|
|
||||||
border_size = 2
|
|
||||||
col.active_border = rgba(e91e63ee) rgba(ffcdd2ee) 45deg
|
|
||||||
col.inactive_border = rgba(0288d1aa)
|
|
||||||
layout = dwindle
|
|
||||||
allow_tearing = false
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
rounding = 5
|
|
||||||
|
|
||||||
blur {
|
|
||||||
enabled = true
|
|
||||||
size = 3
|
|
||||||
passes = 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = yes
|
|
||||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
|
||||||
animation = windows, 1, 3, myBezier
|
|
||||||
animation = windowsOut, 1, 7, default, popin 80%
|
|
||||||
animation = border, 1, 10, default
|
|
||||||
animation = borderangle, 1, 8, default
|
|
||||||
animation = fade, 1, 7, default
|
|
||||||
animation = workspaces, 1, 2, default
|
|
||||||
}
|
|
||||||
|
|
||||||
dwindle {
|
|
||||||
pseudotile = yes
|
|
||||||
preserve_split = yes
|
|
||||||
force_split = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
orientation = right
|
|
||||||
}
|
|
||||||
|
|
||||||
gesture = 3, horizontal, workspace
|
|
||||||
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
monitor=eDP-1,2256x1504@60,auto,1.175
|
|
||||||
|
|
||||||
# Enviroment
|
|
||||||
source = ~/.config/hypr/env.conf
|
|
||||||
|
|
||||||
# Startup programs
|
|
||||||
source = ~/.config/hypr/startup-all.conf
|
|
||||||
source = ~/.config/hypr/startup-framework.conf
|
|
||||||
|
|
||||||
# Default env vars
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
env = QT_QPA_PLATFORMTHEME,qt5ct
|
|
||||||
|
|
||||||
source = ~/.config/hypr/general.conf
|
|
||||||
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
follow_mouse = 1
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = yes
|
|
||||||
}
|
|
||||||
sensitivity = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
force_default_wallpaper = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
windowrulev2 = suppressevent maximize, class:.*
|
|
||||||
|
|
||||||
source = ~/.config/hypr/bind-all.conf
|
|
||||||
source = ~/.config/hypr/bind-framework.conf
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
background {
|
|
||||||
monitor =
|
|
||||||
path = $HOME/.cache/blurred_wallpaper.png
|
|
||||||
}
|
|
||||||
|
|
||||||
input-field {
|
|
||||||
monitor =
|
|
||||||
size = 200, 50
|
|
||||||
outline_thickness = 3
|
|
||||||
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
|
|
||||||
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
|
|
||||||
dots_center = true
|
|
||||||
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
|
|
||||||
outer_color = rgb(151515)
|
|
||||||
inner_color = rgb(FFFFFF)
|
|
||||||
font_color = rgb(10, 10, 10)
|
|
||||||
fade_on_empty = true
|
|
||||||
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
|
|
||||||
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
|
|
||||||
hide_input = false
|
|
||||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
|
||||||
check_color = rgb(204, 136, 34)
|
|
||||||
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
|
||||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
|
|
||||||
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
|
||||||
capslock_color = -1
|
|
||||||
numlock_color = -1
|
|
||||||
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
|
|
||||||
invert_numlock = false # change color if numlock is off
|
|
||||||
swap_font_color = false # see below
|
|
||||||
position = 0, -20
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
monitor =
|
|
||||||
#clock
|
|
||||||
text = cmd[update:1000] echo "$TIME"
|
|
||||||
color = rgba(200, 200, 200, 1.0)
|
|
||||||
font_size = 55
|
|
||||||
font_family = Fira Semibold
|
|
||||||
position = -100, 70
|
|
||||||
halign = right
|
|
||||||
valign = bottom
|
|
||||||
shadow_passes = 5
|
|
||||||
shadow_size = 10
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
monitor =
|
|
||||||
text = $USER
|
|
||||||
color = rgba(200, 200, 200, 1.0)
|
|
||||||
font_size = 20
|
|
||||||
font_family = Fira Semibold
|
|
||||||
position = -100, 160
|
|
||||||
halign = right
|
|
||||||
valign = bottom
|
|
||||||
shadow_passes = 5
|
|
||||||
shadow_size = 10
|
|
||||||
}
|
|
||||||
|
|
||||||
image {
|
|
||||||
monitor =
|
|
||||||
path = $HOME/.cache/square_wallpaper.png
|
|
||||||
size = 280 # lesser side if not 1:1 ratio
|
|
||||||
rounding = -1 # negative values mean circle
|
|
||||||
border_size = 4
|
|
||||||
border_color = rgb(221, 221, 221)
|
|
||||||
rotate = 0 # degrees, counter-clockwise
|
|
||||||
reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
|
|
||||||
# reload_cmd = # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
|
|
||||||
position = 0, 200
|
|
||||||
halign = center
|
|
||||||
valign = center
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
# Password manager update
|
|
||||||
exec-once = pass git pull
|
|
||||||
|
|
||||||
# Start up script
|
|
||||||
exec-once = ~/bin/system/system-start.sh
|
|
||||||
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
exec-once = [workspace 1 silent] $browser
|
|
||||||
exec-once = [workspace 2 silent] $terminal
|
|
||||||
exec-once = [workspace 10 silent] flatpak run org.signal.Signal
|
|
||||||
@@ -1,434 +0,0 @@
|
|||||||
# Set super key as mod
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
# Colors
|
|
||||||
set $blue "#0288D1"
|
|
||||||
set $pink "#E91E63"
|
|
||||||
set $lpink "#FFCDD2"
|
|
||||||
|
|
||||||
# Font for window titles. Will also be used by the bar unless a different font
|
|
||||||
# is used in the bar {} block below.
|
|
||||||
font pango:NimbusSans Bold 10
|
|
||||||
|
|
||||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# start a terminal
|
|
||||||
bindsym $mod+Return exec --no-startup-id alacritty
|
|
||||||
|
|
||||||
# kill focused window
|
|
||||||
bindsym $mod+q kill
|
|
||||||
|
|
||||||
# start program launcher
|
|
||||||
bindsym $mod+d exec --no-startup-id rofi -show combi
|
|
||||||
# change focus
|
|
||||||
bindsym $mod+j focus left
|
|
||||||
bindsym $mod+k focus down
|
|
||||||
bindsym $mod+l focus up
|
|
||||||
bindsym $mod+semicolon focus right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Left focus left
|
|
||||||
bindsym $mod+Down focus down
|
|
||||||
bindsym $mod+Up focus up
|
|
||||||
bindsym $mod+Right focus right
|
|
||||||
|
|
||||||
# move focused window
|
|
||||||
bindsym $mod+Shift+j move left
|
|
||||||
bindsym $mod+Shift+k move down
|
|
||||||
bindsym $mod+Shift+l move up
|
|
||||||
bindsym $mod+Shift+semicolon move right
|
|
||||||
|
|
||||||
# alternatively, you can use the cursor keys:
|
|
||||||
bindsym $mod+Shift+Left move left
|
|
||||||
bindsym $mod+Shift+Down move down
|
|
||||||
bindsym $mod+Shift+Up move up
|
|
||||||
bindsym $mod+Shift+Right move right
|
|
||||||
|
|
||||||
# split in horizontal orientation
|
|
||||||
bindsym $mod+h split h
|
|
||||||
|
|
||||||
# split in vertical orientation
|
|
||||||
bindsym $mod+v split v
|
|
||||||
|
|
||||||
# Cycle workspaces
|
|
||||||
bindsym $mod+apostrophe workspace next_on_output
|
|
||||||
|
|
||||||
# enter fullscreen mode for the focused container
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
|
|
||||||
# change container layout (stacked, tabbed, toggle split)
|
|
||||||
#bindsym $mod+s layout stacking
|
|
||||||
bindsym $mod+w layout tabbed
|
|
||||||
bindsym $mod+e layout toggle split
|
|
||||||
|
|
||||||
# toggle tiling / floating
|
|
||||||
bindsym $mod+Shift+space floating toggle
|
|
||||||
|
|
||||||
# change focus between tiling / floating windows
|
|
||||||
bindsym $mod+space focus mode_toggle
|
|
||||||
|
|
||||||
# focus the parent container
|
|
||||||
bindsym $mod+a focus parent
|
|
||||||
|
|
||||||
# media controls
|
|
||||||
bindsym Ctrl+Left exec playerctl previous
|
|
||||||
bindsym Ctrl+Down exec playerctl play-pause
|
|
||||||
bindsym Ctrl+Right exec playerctl next
|
|
||||||
|
|
||||||
# Gaps
|
|
||||||
set $inner 8
|
|
||||||
set $outer 0
|
|
||||||
gaps inner $inner
|
|
||||||
gaps outer $outer
|
|
||||||
|
|
||||||
# Define names for default workspaces
|
|
||||||
set $ws1 "1"
|
|
||||||
set $ws2 "2"
|
|
||||||
set $ws3 "3"
|
|
||||||
set $ws4 "4"
|
|
||||||
set $ws5 "5"
|
|
||||||
set $ws6 "6"
|
|
||||||
set $ws7 "7"
|
|
||||||
set $ws8 "8"
|
|
||||||
set $ws9 "9"
|
|
||||||
set $ws10 "10"
|
|
||||||
set $wsResolve "11"
|
|
||||||
set $wsReaper "12"
|
|
||||||
set $wsBitwig "13"
|
|
||||||
set $wsGames "14"
|
|
||||||
set $wsSignal "15"
|
|
||||||
|
|
||||||
# switch to workspace
|
|
||||||
bindsym $mod+1 workspace $ws1
|
|
||||||
bindsym $mod+2 workspace $ws2
|
|
||||||
bindsym $mod+3 workspace $ws3
|
|
||||||
bindsym $mod+4 workspace $ws4
|
|
||||||
bindsym $mod+5 workspace $ws5
|
|
||||||
bindsym $mod+6 workspace $ws6
|
|
||||||
bindsym $mod+7 workspace $ws7
|
|
||||||
bindsym $mod+8 workspace $ws8
|
|
||||||
bindsym $mod+9 workspace $ws9
|
|
||||||
bindsym $mod+0 workspace $ws10
|
|
||||||
|
|
||||||
# move focused container to workspace
|
|
||||||
bindsym $mod+Shift+1 move container to workspace $ws1
|
|
||||||
bindsym $mod+Shift+2 move container to workspace $ws2
|
|
||||||
bindsym $mod+Shift+3 move container to workspace $ws3
|
|
||||||
bindsym $mod+Shift+4 move container to workspace $ws4
|
|
||||||
bindsym $mod+Shift+5 move container to workspace $ws5
|
|
||||||
bindsym $mod+Shift+6 move container to workspace $ws6
|
|
||||||
bindsym $mod+Shift+7 move container to workspace $ws7
|
|
||||||
bindsym $mod+Shift+8 move container to workspace $ws8
|
|
||||||
bindsym $mod+Shift+9 move container to workspace $ws9
|
|
||||||
bindsym $mod+Shift+0 move container to workspace $ws10
|
|
||||||
|
|
||||||
# reload the configuration file
|
|
||||||
bindsym $mod+Shift+c exec "sh ~/bin/i3wm-config-gen.sh"
|
|
||||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
|
||||||
bindsym $mod+Shift+r exec "sh ~/bin/i3wm-config-gen.sh" ; restart
|
|
||||||
# exit i3 (logs you out of your X session)
|
|
||||||
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
|
||||||
|
|
||||||
# resize window (you can also use the mouse for that)
|
|
||||||
mode "resize" {
|
|
||||||
# These bindings trigger as soon as you enter the resize mode
|
|
||||||
|
|
||||||
# Pressing left will shrink the window’s width.
|
|
||||||
# Pressing right will grow the window’s width.
|
|
||||||
# Pressing up will shrink the window’s height.
|
|
||||||
# Pressing down will grow the window’s height.
|
|
||||||
bindsym j resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym k resize grow height 10 px or 10 ppt
|
|
||||||
bindsym l resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
bindsym Shift+j resize shrink width 1 px or 1 ppt
|
|
||||||
bindsym Shift+k resize grow height 1 px or 1 ppt
|
|
||||||
bindsym Shift+l resize shrink height 1 px or 1 ppt
|
|
||||||
bindsym Shift+semicolon resize grow width 1 px or 1 ppt
|
|
||||||
|
|
||||||
# same bindings, but for the arrow keys
|
|
||||||
bindsym Left resize shrink width 10 px or 10 ppt
|
|
||||||
bindsym Down resize grow height 10 px or 10 ppt
|
|
||||||
bindsym Up resize shrink height 10 px or 10 ppt
|
|
||||||
bindsym Right resize grow width 10 px or 10 ppt
|
|
||||||
|
|
||||||
bindsym Shift+Left resize shrink width 1 px or 1 ppt
|
|
||||||
bindsym Shift+Down resize grow height 1 px or 1 ppt
|
|
||||||
bindsym Shift+Up resize shrink height 1 px or 1 ppt
|
|
||||||
bindsym Shift+Right resize grow width 1 px or 1 ppt
|
|
||||||
|
|
||||||
# back to normal: Enter or Escape or $mod+r
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym $mod+r mode "default"
|
|
||||||
}
|
|
||||||
|
|
||||||
bindsym $mod+r mode "resize"
|
|
||||||
|
|
||||||
# Set caps lock key to super
|
|
||||||
exec_always --no-startup-id setxkbmap -option 'caps:super'
|
|
||||||
|
|
||||||
# Startup scripts
|
|
||||||
exec --no-startup-id ~/bin/system/system-start.sh
|
|
||||||
|
|
||||||
# class border backgr. text indicator child_border
|
|
||||||
client.focused $pink $pink $pink $pink $pink
|
|
||||||
client.focused_inactive $blue $blue $blue $blue $blue
|
|
||||||
client.unfocused $blue $blue $blue $blue $blue
|
|
||||||
client.urgent $blue $blue $blue $blue $blue
|
|
||||||
client.placeholder $blue $blue $blue $blue $blue
|
|
||||||
|
|
||||||
client.background $blue
|
|
||||||
|
|
||||||
# Removes border and title bar
|
|
||||||
for_window [class="^.*"] border pixel 3
|
|
||||||
#new_window 1pixel
|
|
||||||
#new_float normal 4
|
|
||||||
default_floating_border normal 3
|
|
||||||
#new_window normal 0 px
|
|
||||||
|
|
||||||
# Screenshots
|
|
||||||
bindsym Print exec scrot '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Pictures/screenshots/'
|
|
||||||
bindsym --release $mod+Print exec scrot '%Y:%m:%d:%H:%M:%S.png' -s -e 'mv $f ~/Pictures/screenshots/'
|
|
||||||
bindsym $mod+s exec scrot '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Pictures/screenshots/'
|
|
||||||
bindsym --release $mod+Shift+s exec grim -g "$(slurp)" - | wl-copy
|
|
||||||
|
|
||||||
bindsym $mod+n exec nautilus
|
|
||||||
bindsym $mod+m exec nautilus ~/Videos
|
|
||||||
|
|
||||||
# Steam
|
|
||||||
for_window [class="^steamwebhelper$" title="^Friends$"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title="Steam - News"] floating enable
|
|
||||||
for_window [class="^steamwebhelper" title=".* - Chat"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title="^Settings$"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title=".* - event started"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title=".* CD key"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title="^Steam - Self Updater$"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title="^Screenshot Uploader$"] floating enable
|
|
||||||
for_window [class="^steamwebhelper$" title="^Steam Guard - Computer Authorization Required$"] floating enable
|
|
||||||
for_window [title="^Steam Keyboard$"] floating enable
|
|
||||||
|
|
||||||
# Jetbrains
|
|
||||||
for_window [class="^com-intellij-updater-Runner$" title="^Update$"] floating enable
|
|
||||||
for_window [instance="^sun-awt-X11-XDialogPeer$" title="^Complete Installation$"] floating enable
|
|
||||||
|
|
||||||
# DaVinci Resolve
|
|
||||||
#for_window [class="resolve"] gaps inner current set 0; gaps outer current set 0
|
|
||||||
|
|
||||||
# Bitwig
|
|
||||||
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] gaps inner set 0; gaps outer set 0
|
|
||||||
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec python ~/bin/audio/synth-power.py -d
|
|
||||||
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec sh ~/bin/audio/aquamix.sh -d
|
|
||||||
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec systemctl --user restart i3wm-close-window.service
|
|
||||||
|
|
||||||
#Other
|
|
||||||
for_window [class="Signal"] move to workspace $wsSignal
|
|
||||||
|
|
||||||
#bindsym $mod+F5 gaps inner current set 0; gaps outer current set 0
|
|
||||||
#bindsym $mod+F6 gaps inner current set $inner; gaps outer current set $outer
|
|
||||||
|
|
||||||
{{- if eq .chezmoi.hostname "desktop" }}
|
|
||||||
# Assign workspaces to monitors
|
|
||||||
workspace $ws1 output DP-4
|
|
||||||
workspace $ws2 output DP-4
|
|
||||||
workspace $ws3 output DP-4
|
|
||||||
workspace $ws4 output DP-4
|
|
||||||
workspace $wsGames output DP-4
|
|
||||||
workspace $wsResolve output DP-4
|
|
||||||
workspace $wsReaper output DP-4
|
|
||||||
workspace $wsBitwig output DP-4
|
|
||||||
workspace $ws5 output DP-2
|
|
||||||
workspace $ws6 output DP-2
|
|
||||||
workspace $ws7 output DP-2
|
|
||||||
workspace $ws8 output DP-2
|
|
||||||
workspace $wsSignal output DP-2
|
|
||||||
workspace $ws9 output HDMI-0
|
|
||||||
workspace $ws10 output HDMI-0
|
|
||||||
|
|
||||||
exec --no-startup-id compton &
|
|
||||||
exec --no-startup-id feh --bg-scale ~/Pictures/desktop/0001.jpg &
|
|
||||||
|
|
||||||
mode "$g13" {
|
|
||||||
bindsym 1 exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0; mode "default"
|
|
||||||
bindsym 2 exec --no-startup-id cat ~/.config/g13/resolve.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/resolve.lpbm > /tmp/g13-0; mode "default"
|
|
||||||
bindsym 3 exec --no-startup-id cat ~/.config/g13/planet-coaster.bind > /tmp/g13-0 && sleep 0.1 && cat ~/.config/g13/planet-coaster.lpbm > /tmp/g13-0; mode "default"
|
|
||||||
bindsym 4 exec --no-startup-id cat ~/.config/g13/fall-guys.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/fall-guys.lpbm > /tmp/g13-0; mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
bindsym Return mode "default"
|
|
||||||
}
|
|
||||||
set $g13 G13 Profile: [1] Overwatch [2] Resolve [3] Planet Coaster [4] Fall Guys
|
|
||||||
bindsym $mod+F1 mode "$g13"
|
|
||||||
exec_always --no-startup-id g13d --config ~/.config/g13/resolve.bind --logo ~/.config/g13/resolve.lpbm &
|
|
||||||
|
|
||||||
# Startup programs
|
|
||||||
exec --no-startup-id "workspace $10"
|
|
||||||
exec --no-startup-id "workspace $15; exec flatpak run org.signal.Signal"
|
|
||||||
|
|
||||||
# Starts Jack for audio
|
|
||||||
exec --no-startup-id "workspace $1; exec alacritty"
|
|
||||||
exec --no-startup-id sh ~/bin/audio/system-start-audio.sh
|
|
||||||
|
|
||||||
# Open Google Play Music on workspace 10
|
|
||||||
for_window [title="Google Play Music Desktop Player"] move to workspace $ws10
|
|
||||||
|
|
||||||
# Among Us
|
|
||||||
for_window [class="steam_app_945360" title="Among Us"] move to workspace $wsGames
|
|
||||||
for_window [class="steam_app_945360" title="Among Us"] exec --no-startup-id cat ~/.config/g13/among-us.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/among-us.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Starting Overwatch
|
|
||||||
for_window [class="overwatch.exe" title="Overwatch"] move to workspace $wsGames
|
|
||||||
for_window [class="overwatch.exe" title="Overwatch"] exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0
|
|
||||||
for_window [class="steam_app_2357570" title="Overwatch"] move to workspace $wsGames
|
|
||||||
for_window [class="steam_app_2357570" title="Overwatch"] exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0
|
|
||||||
for_window [class="battle.net.exe" title="Battle.net"] move to workspace $wsGames
|
|
||||||
for_window [class="battle.net.exe" title="Blizzard Battle.net"] move to workspace $wsGames
|
|
||||||
for_window [class="Lutris"] move to workspace $ws4
|
|
||||||
|
|
||||||
# DOOM
|
|
||||||
for_window [class="Wine" title="DOOMx64vk"] move to workspace $wsGames
|
|
||||||
for_window [class="Wine" title="DOOMx64vk"] exec --no-startup-id cat ~/.config/g13/doom.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/doom.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# DOOM Eternal
|
|
||||||
for_window [title="DOOMEternal"] move to workspace $wsGames
|
|
||||||
for_window [title="DOOMEternal"] exec --no-startup-id cat ~/.config/g13/doom-eternal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/doom.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Planet Coaster
|
|
||||||
for_window [class="planetcoaster.exe" title="Planet Coaster"] move to workspace $wsGames
|
|
||||||
for_window [class="planetcoaster.exe" title="Planet Coaster"] exec --no-startup-id cat ~/.config/g13/planet-coaster.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/planet-coaster.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Cyberpunk 2077
|
|
||||||
for_window [class="steam_app_1091500" title="Cyberpunk 2077 (C) 2020 by CD Projekt RED"] move to workspace $wsGames
|
|
||||||
for_window [class="steam_app_1091500" title="Cyberpunk 2077 (C) 2020 by CD Projekt RED"] exec --no-startup-id cat ~/.config/g13/cyberpunk-2077.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/cyberpunk-2077.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Starting DaVinci Resolve
|
|
||||||
for_window [class="resolve"] move to workspace $wsResolve
|
|
||||||
for_window [class="resolve"] exec --no-startup-id cat ~/.config/g13/resolve.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/resolve.lpbm > /tmp/g13-0
|
|
||||||
bindsym $mod+/ gaps inner current set 0; gaps outer current set 0
|
|
||||||
|
|
||||||
# Starting Reaper
|
|
||||||
for_window [class="REAPER"] move to workspace $wsReaper
|
|
||||||
|
|
||||||
# Steam
|
|
||||||
for_window [class="^Steam$"] move to workspace $wsGames
|
|
||||||
for_window [title="^Steam$"] move to workspace $wsGames
|
|
||||||
|
|
||||||
# Bitwig
|
|
||||||
for_window [class="^Show-splash-gtk$"] move to workspace $wsBitwig
|
|
||||||
for_window [class="^Bitwig Studio$"] move to workspace $wsBitwig
|
|
||||||
for_window [class="com.bitwig.BitwigStudio"] exec sleep 1; move to workspace $wsBitwig
|
|
||||||
|
|
||||||
# Fall Guys
|
|
||||||
for_window [title="FallGuys_client"] move to workspace $wsGames
|
|
||||||
for_window [title="FallGuys_client"] exec --no-startup-id cat ~/.config/g13/fall-guys.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/fall-guys.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Portal
|
|
||||||
for_window [class="hl2_linux" title="Portal - OpenGL"] move to workspace $wsGames
|
|
||||||
for_window [class="hl2_linux" title="Portal - OpenGL"] exec --no-startup-id cat ~/.config/g13/portal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/portal.lpbm > /tmp/g13-0
|
|
||||||
for_window [class="portal2_linux" title="PORTAL 2 - OpenGL"] move to workspace $wsGames
|
|
||||||
for_window [class="portal2_linux" title="PORTAL 2 - OpenGL"] exec --no-startup-id cat ~/.config/g13/portal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/portal.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Two Point Hospital
|
|
||||||
for_window [class="TPH.x86_64" title="Two Point Hospital"] move to workspace $wsGames
|
|
||||||
for_window [class="TPH.x86_64" title="Two Point Hospital"] exec --no-startup-id cat ~/.config/g13/two-point-hospital.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/two-point-hospital.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Minecraft
|
|
||||||
for_window [class="Minecraft*" title="Minecraft*"] move to workspace $wsGames
|
|
||||||
for_window [class="Minecraft*" title="Minecraft*"] exec --no-startup-id cat ~/.config/g13/minecraft.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/minecraft.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Arkham Knight
|
|
||||||
for_window [class="steam_app_208650" title="*"] move to workspace $wsGames
|
|
||||||
for_window [class="steam_app_208650" title="*"] exec --no-startup-id cat ~/.config/g13/arkham-knight.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/arkham-knight.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# Factorio
|
|
||||||
for_window [class="factorio" title="Factorio*"] move to workspace $wsGames
|
|
||||||
for_window [class="factorio" title="Factorio*"] exec --no-startup-id cat ~/.config/g13/factorio.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/factorio.lpbm > /tmp/g13-0
|
|
||||||
|
|
||||||
# The side buttons move the desktop around
|
|
||||||
bindsym --whole-window button9 exec --no-startup-id python3 ~/bin/i3-mouse.py back
|
|
||||||
bindsym --whole-window button8 exec --no-startup-id python3 ~/bin/i3-mouse.py forward
|
|
||||||
bindsym $mod+Tab exec --no-startup-id python3 ~/bin/i3-mouse.py thumb
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if eq .chezmoi.hostname "framework" }}
|
|
||||||
# Display
|
|
||||||
output eDP-1 scale 1.25
|
|
||||||
|
|
||||||
# Desktop background
|
|
||||||
output "*" bg ~/Pictures/wallpaper/0000.jpg fill
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
exec light -N 1
|
|
||||||
bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
|
|
||||||
bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
|
|
||||||
|
|
||||||
# Pulse Audio controls
|
|
||||||
bindsym XF86AudioRaiseVolume exec amixer set Master 3%+ #increase sound volume
|
|
||||||
bindsym XF86AudioLowerVolume exec amixer set Master 3%- #decrease sound volume
|
|
||||||
bindsym XF86AudioMute exec amixer set Master toggle # toggle sound
|
|
||||||
|
|
||||||
# Media controls
|
|
||||||
bindsym XF86AudioPrev exec playerctl previous
|
|
||||||
bindsym XF86AudioPlay exec playerctl play-pause
|
|
||||||
bindsym XF86AudioNext exec playerctl next
|
|
||||||
|
|
||||||
# Lockscreen
|
|
||||||
bindsym $mod+Escape exec swaylock
|
|
||||||
|
|
||||||
# Touchpad Settings
|
|
||||||
input "2362:628:PIXA3854:00_093A:0274_Touchpad" {
|
|
||||||
accel_profile flat
|
|
||||||
click_method clickfinger
|
|
||||||
dwt disabled
|
|
||||||
natural_scroll enabled
|
|
||||||
scroll_method two_finger
|
|
||||||
tap enabled
|
|
||||||
pointer_accel 0.8
|
|
||||||
}
|
|
||||||
|
|
||||||
# Move Programs
|
|
||||||
for_window [app_id="firefox"] move to workspace $ws1
|
|
||||||
for_window [class="Emacs"] move to workspace $ws2
|
|
||||||
for_window [class="Steam"] move to workspace $wsGames
|
|
||||||
for_window [class="com.bitwig.BitwigStudio"] move to workspace $wsBitwig
|
|
||||||
|
|
||||||
# Notifications
|
|
||||||
exec mako
|
|
||||||
|
|
||||||
# Startup Programs
|
|
||||||
exec "swaymsg 'workspace $wsSignal; exec flatpak run org.signal.Signal'"
|
|
||||||
exec "swaymsg 'workspace $ws2; exec alacritty'"
|
|
||||||
exec "swaymsg 'workspace $ws1; exec brave-browser'"
|
|
||||||
{{- end }}
|
|
||||||
|
|
||||||
{{- if eq .chezmoi.hostname "w530" }}
|
|
||||||
# Screen brightness controls
|
|
||||||
bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
|
|
||||||
bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
|
|
||||||
|
|
||||||
# Pulse Audio controls
|
|
||||||
bindsym XF86AudioRaiseVolume exec amixer set Master 3%+ #increase sound volume
|
|
||||||
bindsym XF86AudioLowerVolume exec amixer set Master 3%- #decrease sound volume
|
|
||||||
bindsym XF86AudioMute exec amixer set Master toggle # toggle sound
|
|
||||||
bindsym XF86AudioMicMute exec amixer set Capture toggle # toggle mic
|
|
||||||
|
|
||||||
# Turn off trackpad
|
|
||||||
bindsym $mod+Shift+u exec sh ~/dotfiles/scripts/trackpad-toggle.sh
|
|
||||||
exec --no-startup-id ~/dotfiles/scripts/trackpad-toggle.sh
|
|
||||||
|
|
||||||
# Desktop background
|
|
||||||
output "*" bg ~/Pictures/wallpaper/0001.jpg fill
|
|
||||||
|
|
||||||
# Turn off the screen
|
|
||||||
bindsym XF86Launch1 exec xset -display :0.0 dpms force off
|
|
||||||
|
|
||||||
# Start up programs
|
|
||||||
for_window [class="Firefox"] move to workspace $ws1
|
|
||||||
for_window [class="emacs" title="emacs@*"] move to workspace $ws2
|
|
||||||
for_window [class="jetbrains-studio"] move to workspace $ws3
|
|
||||||
for_window [title="Google Play Music Desktop Player"] move to workspace $ws10
|
|
||||||
|
|
||||||
exec mako
|
|
||||||
exec --no-startup-id "firefox"
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
description: Commit currently staged code in git
|
|
||||||
mode: all
|
|
||||||
model: "{{ template "models/small-brain" }}"
|
|
||||||
temperature: 0.1
|
|
||||||
tools:
|
|
||||||
write: false
|
|
||||||
edit: false
|
|
||||||
bash: true
|
|
||||||
---
|
|
||||||
|
|
||||||
{{ template "prompts/name" . }}
|
|
||||||
|
|
||||||
{{ template "prompts/agent-name" . }} is a senior software engineer committing code to a large and professional project.
|
|
||||||
|
|
||||||
Focus on:
|
|
||||||
- Writing a clear and simple commit message.
|
|
||||||
- Describe what the changes do at a high level.
|
|
||||||
- Always mention only the changes, never any file names.
|
|
||||||
- Follow the project formatting for commits.
|
|
||||||
- Only commit files that are currently staged in git.
|
|
||||||
- Only use the word add if strictly necessary.
|
|
||||||
|
|
||||||
Never:
|
|
||||||
- Never mention specific files or what files changed.
|
|
||||||
- Never add files to the staging.
|
|
||||||
|
|
||||||
Use the following command to look at the changes:
|
|
||||||
```sh
|
|
||||||
git diff --cached
|
|
||||||
```
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
description: Review code changes
|
|
||||||
mode: all
|
|
||||||
model: AquaAI/gpt-oss:20b
|
|
||||||
temperature: 0.1
|
|
||||||
tools:
|
|
||||||
write: false
|
|
||||||
edit: false
|
|
||||||
bash: true
|
|
||||||
---
|
|
||||||
|
|
||||||
{{ template "prompts/name" . }}
|
|
||||||
|
|
||||||
{{ template "prompts/agent-name" . }} is a senior software engineer performing a code review for a colleague.
|
|
||||||
|
|
||||||
{{ template "prompts/better-conversations" . }}
|
|
||||||
|
|
||||||
Show code snipets when helpful.
|
|
||||||
{{ template "prompts/agent-name" . }}'s reports should have the following format:
|
|
||||||
```
|
|
||||||
# Typos
|
|
||||||
List of all typos you find.
|
|
||||||
# Formatting and Readability Issues
|
|
||||||
List of all formatting and readability issues you find.
|
|
||||||
# Security Issues
|
|
||||||
List of all security issues you find.
|
|
||||||
# Other
|
|
||||||
List of all other issues you find.
|
|
||||||
```
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
"disabled_providers": ["opencode"],
|
|
||||||
"$schema": "https://opencode.ai/config.json",
|
|
||||||
"share": "disabled",
|
|
||||||
"provider": {
|
|
||||||
"AquaAI": {
|
|
||||||
"npm": "@ai-sdk/openai-compatible",
|
|
||||||
"name": "AquaAI",
|
|
||||||
"options": {
|
|
||||||
"baseURL": "https://ollama.aquamorph.com/v1"
|
|
||||||
},
|
|
||||||
"models": {
|
|
||||||
"gpt-oss:20b": {
|
|
||||||
"name": "GPT OSS 20b"
|
|
||||||
},
|
|
||||||
"gpt-oss:120b": {
|
|
||||||
"name": "GPT OSS 120b"
|
|
||||||
},
|
|
||||||
"qwen3.5:35b": {
|
|
||||||
"name": "Qwen3.5 35b"
|
|
||||||
},
|
|
||||||
"qwen3.5:4b": {
|
|
||||||
"name": "Qwen3.5 4b"
|
|
||||||
},
|
|
||||||
"hf.co/unsloth/Qwen3-4B-Instruct-2507-GGUF:Q3_K_M": {
|
|
||||||
"name": "Qwen3 4b"
|
|
||||||
},
|
|
||||||
"glm-4.7-flash": {
|
|
||||||
"name": "GLM 4.7 Flash"
|
|
||||||
},
|
|
||||||
"qwen3-coder-next": {
|
|
||||||
"name": "Qwen3 Coder Next"
|
|
||||||
},
|
|
||||||
"qwen3.5:4b": {
|
|
||||||
"name": "Test"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
computer={{ .chezmoi.hostname }}
|
|
||||||
activation_bytes={{ pass "self-host/token/audible-activation-bytes" }}
|
|
||||||
AQUAAI_KEY={{ pass "self-host/token/aquaai" }}
|
|
||||||
TodoistToken={{ pass "self-host/token/todoist" }}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
wireplumber.components = [
|
|
||||||
{
|
|
||||||
name = auto-connect-ports.lua, type = script/lua
|
|
||||||
provides = custom.auto-connect-ports
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
wireplumber.profiles = {
|
|
||||||
main = {
|
|
||||||
custom.auto-connect-ports = required
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
[user]
|
|
||||||
name = Christian Colglazier
|
|
||||||
email = christian@cacolglazier.com
|
|
||||||
[core]
|
|
||||||
editor = emacs -nw
|
|
||||||
excludesFile = ~/.gitignore
|
|
||||||
[rerere]
|
|
||||||
enabled = true
|
|
||||||
[column]
|
|
||||||
ui = auto
|
|
||||||
[branch]
|
|
||||||
sort = -committerdate
|
|
||||||
[push]
|
|
||||||
autoSetupRemote = true
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
#### Emacs ####
|
|
||||||
|
|
||||||
# -*- mode: gitignore; -*-
|
|
||||||
*~
|
|
||||||
\#*\#
|
|
||||||
/.emacs.desktop
|
|
||||||
/.emacs.desktop.lock
|
|
||||||
*.elc
|
|
||||||
auto-save-list
|
|
||||||
tramp
|
|
||||||
.\#*
|
|
||||||
|
|
||||||
# Org-mode
|
|
||||||
.org-id-locations
|
|
||||||
*_archive
|
|
||||||
|
|
||||||
# flymake-mode
|
|
||||||
*_flymake.*
|
|
||||||
|
|
||||||
# eshell files
|
|
||||||
/eshell/history
|
|
||||||
/eshell/lastdir
|
|
||||||
|
|
||||||
# elpa packages
|
|
||||||
/elpa/
|
|
||||||
|
|
||||||
# reftex files
|
|
||||||
*.rel
|
|
||||||
|
|
||||||
# AUCTeX auto folder
|
|
||||||
/auto/
|
|
||||||
|
|
||||||
# cask packages
|
|
||||||
.cask/
|
|
||||||
dist/
|
|
||||||
|
|
||||||
# Flycheck
|
|
||||||
flycheck_*.el
|
|
||||||
|
|
||||||
# server auth directory
|
|
||||||
/server/
|
|
||||||
|
|
||||||
# projectiles files
|
|
||||||
.projectile
|
|
||||||
|
|
||||||
# directory configuration
|
|
||||||
.dir-locals.el
|
|
||||||
|
|
||||||
#### vim ####
|
|
||||||
# Swap
|
|
||||||
[._]*.s[a-v][a-z]
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
[._]s[a-v][a-z]
|
|
||||||
[._]sw[a-p]
|
|
||||||
|
|
||||||
# Session
|
|
||||||
Session.vim
|
|
||||||
|
|
||||||
# Temporary
|
|
||||||
.netrwhist
|
|
||||||
*~
|
|
||||||
# Auto-generated tag files
|
|
||||||
tags
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
autoload -Uz vcs_info
|
|
||||||
precmd() { vcs_info }
|
|
||||||
zstyle ':vcs_info:git:*' formats '%b '
|
|
||||||
setopt PROMPT_SUBST
|
|
||||||
PROMPT='%F{white}%n% @%m%f %F{blue}%~%f %F{red}${vcs_info_msg_0_}%f$ '
|
|
||||||
|
|
||||||
setopt appendhistory autocd extendedglob nomatch notify
|
|
||||||
unsetopt beep
|
|
||||||
bindkey -e
|
|
||||||
zstyle :compinstall filename '~/.zshrc'
|
|
||||||
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit
|
|
||||||
|
|
||||||
HISTFILE=~/.zsh_history
|
|
||||||
HISTSIZE=99999999
|
|
||||||
SAVEHIST=99999999
|
|
||||||
|
|
||||||
source "$HOME/.config/settings.conf"
|
|
||||||
|
|
||||||
# Text Editor
|
|
||||||
export EDITOR='emacs -nw'
|
|
||||||
alias emacs="${EDITOR}"
|
|
||||||
alias e="${EDITOR}"
|
|
||||||
export TERM=xterm
|
|
||||||
|
|
||||||
# Search
|
|
||||||
alias g='grep -Irn'
|
|
||||||
|
|
||||||
# Dotfiles
|
|
||||||
alias dot='cd ~/.local/share/chezmoi'
|
|
||||||
export DOT_PROGRAM='chezmoi'
|
|
||||||
alias dota="${DOT_PROGRAM} add"
|
|
||||||
alias dotd="${DOT_PROGRAM} diff"
|
|
||||||
alias dote="${DOT_PROGRAM} edit --apply"
|
|
||||||
alias dotu="${DOT_PROGRAM} update"
|
|
||||||
|
|
||||||
# Other
|
|
||||||
alias i='sudo dnf install'
|
|
||||||
alias d='sudo dnf'
|
|
||||||
alias u='sh ~/bin/update.sh'
|
|
||||||
alias h='cd ~/git/cacolglazier.com/ && hugo server'
|
|
||||||
|
|
||||||
# OpenCode
|
|
||||||
export PATH="$HOME/.opencode/bin:$PATH"
|
|
||||||
OPENCODE='opencode'
|
|
||||||
alias o="${OPENCODE}"
|
|
||||||
alias oc="${OPENCODE} --agent commit run 'Create a commit.'"
|
|
||||||
alias ocr="${OPENCODE} --agent review --prompt 'Code review staged changes.'"
|
|
||||||
alias or="${OPENCODE} --continue"
|
|
||||||
|
|
||||||
# Git
|
|
||||||
gr() { git rebase -i HEAD~$1; }
|
|
||||||
alias c='git commit -m'
|
|
||||||
alias a='git add'
|
|
||||||
alias ga='git add -A'
|
|
||||||
alias gu='git add -u'
|
|
||||||
alias s='git status'
|
|
||||||
alias p='git pull'
|
|
||||||
alias gp='git push'
|
|
||||||
alias gd='git diff $(git rev-parse --abbrev-ref HEAD)'
|
|
||||||
alias stash='git stash create; git stash push'
|
|
||||||
alias pop='git stash pop'
|
|
||||||
|
|
||||||
# AquaAI
|
|
||||||
export AQUAAI_PATH='~/bin/aquaai.sh'
|
|
||||||
alias q=${AQUAAI_PATH}
|
|
||||||
alias qb="${AQUAAI_PATH} --bash"
|
|
||||||
alias qc="${AQUAAI_PATH} --cli"
|
|
||||||
alias qg="${AQUAAI_PATH} --git"
|
|
||||||
alias qr="${AQUAAI_PATH} --code-review"
|
|
||||||
alias qa="${AQUAAI_PATH} --home-assistant"
|
|
||||||
export AQUAAI_DEFAULT_MODEL='hf.co/unsloth/Qwen3-4B-Instruct-2507-GGUF:Q3_K_M'
|
|
||||||
export AQUAAI_CODING_MODEL='hf.co/unsloth/Qwen3-4B-Instruct-2507-GGUF:Q3_K_M'
|
|
||||||
export AQUAAI_RICH_FORMAT_MODE=false
|
|
||||||
export AQUAAI_KEY
|
|
||||||
|
|
||||||
# Daisy build toolkit
|
|
||||||
GCC_PATH=~/dev/gcc-arm-none-eabi-10-2020-q4-major/bin
|
|
||||||
export PATH=$GCC_PATH:$PATH
|
|
||||||
|
|
||||||
# AM auto complete
|
|
||||||
autoload bashcompinit
|
|
||||||
bashcompinit
|
|
||||||
source "/home/aqua/.local/share/bash-completion/completions/am"
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
-- Dump all Wireplumber ports
|
|
||||||
|
|
||||||
function dump(o)
|
|
||||||
if type(o) == 'table' then
|
|
||||||
local s = '{ '
|
|
||||||
for k,v in pairs(o) do
|
|
||||||
if type(k) ~= 'number' then k = '"'..k..'"' end
|
|
||||||
s = s .. '['..k..'] = ' .. dump(v) .. ',\n'
|
|
||||||
end
|
|
||||||
return s .. '} '
|
|
||||||
else
|
|
||||||
return tostring(o)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local port_om = ObjectManager {
|
|
||||||
Interest {
|
|
||||||
type = "port",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
port_om:connect("object-added", function (om, port)
|
|
||||||
print(dump(port.properties) .. '\n\n')
|
|
||||||
end)
|
|
||||||
|
|
||||||
port_om:activate()
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
[Unit]
|
|
||||||
Description=Snapcast
|
|
||||||
After=pipewire.service
|
|
||||||
Requires=pipewire.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
RemainAfterExit=true
|
|
||||||
ExecStart=%h/git/audio/snapcast/bin/snapclient
|
|
||||||
ExecStop=killall -q snapclient
|
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
# Assign workspaces to monitors
|
||||||
|
workspace $ws1 output DP-4
|
||||||
|
workspace $ws2 output DP-4
|
||||||
|
workspace $ws3 output DP-4
|
||||||
|
workspace $ws4 output DP-4
|
||||||
|
workspace $wsGames output DP-4
|
||||||
|
workspace $wsResolve output DP-4
|
||||||
|
workspace $wsReaper output DP-4
|
||||||
|
workspace $wsBitwig output DP-4
|
||||||
|
workspace $ws5 output DP-2
|
||||||
|
workspace $ws6 output DP-2
|
||||||
|
workspace $ws7 output DP-2
|
||||||
|
workspace $ws8 output DP-2
|
||||||
|
workspace $wsSignal output DP-2
|
||||||
|
workspace $ws9 output HDMI-0
|
||||||
|
workspace $ws10 output HDMI-0
|
||||||
|
|
||||||
|
exec --no-startup-id compton &
|
||||||
|
exec --no-startup-id feh --bg-scale ~/Pictures/desktop/0001.jpg &
|
||||||
|
|
||||||
|
mode "$g13" {
|
||||||
|
bindsym 1 exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0; mode "default"
|
||||||
|
bindsym 2 exec --no-startup-id cat ~/.config/g13/resolve.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/resolve.lpbm > /tmp/g13-0; mode "default"
|
||||||
|
bindsym 3 exec --no-startup-id cat ~/.config/g13/planet-coaster.bind > /tmp/g13-0 && sleep 0.1 && cat ~/.config/g13/planet-coaster.lpbm > /tmp/g13-0; mode "default"
|
||||||
|
bindsym 4 exec --no-startup-id cat ~/.config/g13/fall-guys.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/fall-guys.lpbm > /tmp/g13-0; mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym Return mode "default"
|
||||||
|
}
|
||||||
|
set $g13 G13 Profile: [1] Overwatch [2] Resolve [3] Planet Coaster [4] Fall Guys
|
||||||
|
bindsym $mod+F1 mode "$g13"
|
||||||
|
exec_always --no-startup-id g13d --config ~/.config/g13/resolve.bind --logo ~/.config/g13/resolve.lpbm &
|
||||||
|
|
||||||
|
# Startup programs
|
||||||
|
exec --no-startup-id "workspace $10"
|
||||||
|
exec --no-startup-id "workspace $15; exec flatpak run org.signal.Signal"
|
||||||
|
|
||||||
|
# Starts Jack for audio
|
||||||
|
exec --no-startup-id "workspace $1; exec alacritty"
|
||||||
|
exec --no-startup-id sh ~/bin/audio/system-start-audio.sh
|
||||||
|
|
||||||
|
# Open Google Play Music on workspace 10
|
||||||
|
for_window [title="Google Play Music Desktop Player"] move to workspace $ws10
|
||||||
|
|
||||||
|
# Among Us
|
||||||
|
for_window [class="steam_app_945360" title="Among Us"] move to workspace $wsGames
|
||||||
|
for_window [class="steam_app_945360" title="Among Us"] exec --no-startup-id cat ~/.config/g13/among-us.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/among-us.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Starting Overwatch
|
||||||
|
for_window [class="overwatch.exe" title="Overwatch"] move to workspace $wsGames
|
||||||
|
for_window [class="overwatch.exe" title="Overwatch"] exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0
|
||||||
|
for_window [class="steam_app_2357570" title="Overwatch"] move to workspace $wsGames
|
||||||
|
for_window [class="steam_app_2357570" title="Overwatch"] exec --no-startup-id cat ~/.config/g13/overwatch.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/overwatch.lpbm > /tmp/g13-0
|
||||||
|
for_window [class="battle.net.exe" title="Battle.net"] move to workspace $wsGames
|
||||||
|
for_window [class="battle.net.exe" title="Blizzard Battle.net"] move to workspace $wsGames
|
||||||
|
for_window [class="Lutris"] move to workspace $ws4
|
||||||
|
|
||||||
|
# DOOM
|
||||||
|
for_window [class="Wine" title="DOOMx64vk"] move to workspace $wsGames
|
||||||
|
for_window [class="Wine" title="DOOMx64vk"] exec --no-startup-id cat ~/.config/g13/doom.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/doom.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# DOOM Eternal
|
||||||
|
for_window [title="DOOMEternal"] move to workspace $wsGames
|
||||||
|
for_window [title="DOOMEternal"] exec --no-startup-id cat ~/.config/g13/doom-eternal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/doom.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Planet Coaster
|
||||||
|
for_window [class="planetcoaster.exe" title="Planet Coaster"] move to workspace $wsGames
|
||||||
|
for_window [class="planetcoaster.exe" title="Planet Coaster"] exec --no-startup-id cat ~/.config/g13/planet-coaster.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/planet-coaster.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Cyberpunk 2077
|
||||||
|
for_window [class="steam_app_1091500" title="Cyberpunk 2077 (C) 2020 by CD Projekt RED"] move to workspace $wsGames
|
||||||
|
for_window [class="steam_app_1091500" title="Cyberpunk 2077 (C) 2020 by CD Projekt RED"] exec --no-startup-id cat ~/.config/g13/cyberpunk-2077.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/cyberpunk-2077.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Starting DaVinci Resolve
|
||||||
|
for_window [class="resolve"] move to workspace $wsResolve
|
||||||
|
for_window [class="resolve"] exec --no-startup-id cat ~/.config/g13/resolve.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/resolve.lpbm > /tmp/g13-0
|
||||||
|
bindsym $mod+/ gaps inner current set 0; gaps outer current set 0
|
||||||
|
|
||||||
|
# Starting Reaper
|
||||||
|
for_window [class="REAPER"] move to workspace $wsReaper
|
||||||
|
|
||||||
|
# Steam
|
||||||
|
for_window [class="^Steam$"] move to workspace $wsGames
|
||||||
|
for_window [title="^Steam$"] move to workspace $wsGames
|
||||||
|
|
||||||
|
# Bitwig
|
||||||
|
for_window [class="^Show-splash-gtk$"] move to workspace $wsBitwig
|
||||||
|
for_window [class="^Bitwig Studio$"] move to workspace $wsBitwig
|
||||||
|
for_window [class="com.bitwig.BitwigStudio"] exec sleep 1; move to workspace $wsBitwig
|
||||||
|
|
||||||
|
# Fall Guys
|
||||||
|
for_window [title="FallGuys_client"] move to workspace $wsGames
|
||||||
|
for_window [title="FallGuys_client"] exec --no-startup-id cat ~/.config/g13/fall-guys.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/fall-guys.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Portal
|
||||||
|
for_window [class="hl2_linux" title="Portal - OpenGL"] move to workspace $wsGames
|
||||||
|
for_window [class="hl2_linux" title="Portal - OpenGL"] exec --no-startup-id cat ~/.config/g13/portal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/portal.lpbm > /tmp/g13-0
|
||||||
|
for_window [class="portal2_linux" title="PORTAL 2 - OpenGL"] move to workspace $wsGames
|
||||||
|
for_window [class="portal2_linux" title="PORTAL 2 - OpenGL"] exec --no-startup-id cat ~/.config/g13/portal.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/portal.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Two Point Hospital
|
||||||
|
for_window [class="TPH.x86_64" title="Two Point Hospital"] move to workspace $wsGames
|
||||||
|
for_window [class="TPH.x86_64" title="Two Point Hospital"] exec --no-startup-id cat ~/.config/g13/two-point-hospital.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/two-point-hospital.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Minecraft
|
||||||
|
for_window [class="Minecraft*" title="Minecraft*"] move to workspace $wsGames
|
||||||
|
for_window [class="Minecraft*" title="Minecraft*"] exec --no-startup-id cat ~/.config/g13/minecraft.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/minecraft.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Arkham Knight
|
||||||
|
for_window [class="steam_app_208650" title="*"] move to workspace $wsGames
|
||||||
|
for_window [class="steam_app_208650" title="*"] exec --no-startup-id cat ~/.config/g13/arkham-knight.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/arkham-knight.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# Factorio
|
||||||
|
for_window [class="factorio" title="Factorio*"] move to workspace $wsGames
|
||||||
|
for_window [class="factorio" title="Factorio*"] exec --no-startup-id cat ~/.config/g13/factorio.bind > /tmp/g13-0 && sleep .1 && cat ~/.config/g13/factorio.lpbm > /tmp/g13-0
|
||||||
|
|
||||||
|
# The side buttons move the desktop around
|
||||||
|
bindsym --whole-window button9 exec --no-startup-id python3 ~/bin/i3-mouse.py back
|
||||||
|
bindsym --whole-window button8 exec --no-startup-id python3 ~/bin/i3-mouse.py forward
|
||||||
|
bindsym $mod+Tab exec --no-startup-id python3 ~/bin/i3-mouse.py thumb
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# Display
|
||||||
|
output eDP-1 scale 1.25
|
||||||
|
|
||||||
|
# Desktop background
|
||||||
|
output "*" bg ~/Pictures/wallpaper/0000.jpg fill
|
||||||
|
|
||||||
|
# Screen brightness controls
|
||||||
|
exec light -N 1
|
||||||
|
bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
|
||||||
|
bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
|
||||||
|
|
||||||
|
# Pulse Audio controls
|
||||||
|
bindsym XF86AudioRaiseVolume exec amixer set Master 3%+ #increase sound volume
|
||||||
|
bindsym XF86AudioLowerVolume exec amixer set Master 3%- #decrease sound volume
|
||||||
|
bindsym XF86AudioMute exec amixer set Master toggle # toggle sound
|
||||||
|
|
||||||
|
# Media controls
|
||||||
|
bindsym XF86AudioPrev exec playerctl previous
|
||||||
|
bindsym XF86AudioPlay exec playerctl play-pause
|
||||||
|
bindsym XF86AudioNext exec playerctl next
|
||||||
|
|
||||||
|
# Lockscreen
|
||||||
|
bindsym $mod+Escape exec swaylock
|
||||||
|
|
||||||
|
# Touchpad Settings
|
||||||
|
input "2362:628:PIXA3854:00_093A:0274_Touchpad" {
|
||||||
|
accel_profile flat
|
||||||
|
click_method clickfinger
|
||||||
|
dwt disabled
|
||||||
|
natural_scroll enabled
|
||||||
|
scroll_method two_finger
|
||||||
|
tap enabled
|
||||||
|
pointer_accel 0.8
|
||||||
|
}
|
||||||
|
|
||||||
|
# Move Programs
|
||||||
|
for_window [app_id="firefox"] move to workspace $ws1
|
||||||
|
for_window [class="Emacs"] move to workspace $ws2
|
||||||
|
for_window [class="Steam"] move to workspace $wsGames
|
||||||
|
for_window [class="com.bitwig.BitwigStudio"] move to workspace $wsBitwig
|
||||||
|
|
||||||
|
# Notifications
|
||||||
|
exec mako
|
||||||
|
|
||||||
|
# Startup Programs
|
||||||
|
exec "swaymsg 'workspace $wsSignal; exec flatpak run org.signal.Signal'"
|
||||||
|
exec "swaymsg 'workspace $ws2; exec alacritty'"
|
||||||
|
exec "swaymsg 'workspace $ws1; exec firefox'"
|
||||||
|
|
||||||
@@ -0,0 +1,241 @@
|
|||||||
|
# Set super key as mod
|
||||||
|
set $mod Mod4
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
set $blue "#0288D1"
|
||||||
|
set $pink "#E91E63"
|
||||||
|
set $lpink "#FFCDD2"
|
||||||
|
|
||||||
|
# Font for window titles. Will also be used by the bar unless a different font
|
||||||
|
# is used in the bar {} block below.
|
||||||
|
font pango:NimbusSans Bold 10
|
||||||
|
|
||||||
|
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||||
|
floating_modifier $mod
|
||||||
|
|
||||||
|
# start a terminal
|
||||||
|
bindsym $mod+Return exec --no-startup-id alacritty
|
||||||
|
|
||||||
|
# kill focused window
|
||||||
|
bindsym $mod+q kill
|
||||||
|
|
||||||
|
# start program launcher
|
||||||
|
bindsym $mod+d exec --no-startup-id rofi -show combi
|
||||||
|
# change focus
|
||||||
|
bindsym $mod+j focus left
|
||||||
|
bindsym $mod+k focus down
|
||||||
|
bindsym $mod+l focus up
|
||||||
|
bindsym $mod+semicolon focus right
|
||||||
|
|
||||||
|
# alternatively, you can use the cursor keys:
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# move focused window
|
||||||
|
bindsym $mod+Shift+j move left
|
||||||
|
bindsym $mod+Shift+k move down
|
||||||
|
bindsym $mod+Shift+l move up
|
||||||
|
bindsym $mod+Shift+semicolon move right
|
||||||
|
|
||||||
|
# alternatively, you can use the cursor keys:
|
||||||
|
bindsym $mod+Shift+Left move left
|
||||||
|
bindsym $mod+Shift+Down move down
|
||||||
|
bindsym $mod+Shift+Up move up
|
||||||
|
bindsym $mod+Shift+Right move right
|
||||||
|
|
||||||
|
# split in horizontal orientation
|
||||||
|
bindsym $mod+h split h
|
||||||
|
|
||||||
|
# split in vertical orientation
|
||||||
|
bindsym $mod+v split v
|
||||||
|
|
||||||
|
# Cycle workspaces
|
||||||
|
bindsym $mod+apostrophe workspace next_on_output
|
||||||
|
|
||||||
|
# enter fullscreen mode for the focused container
|
||||||
|
bindsym $mod+f fullscreen toggle
|
||||||
|
|
||||||
|
# change container layout (stacked, tabbed, toggle split)
|
||||||
|
#bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# toggle tiling / floating
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# change focus between tiling / floating windows
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# focus the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
|
# media controls
|
||||||
|
bindsym Ctrl+Left exec playerctl previous
|
||||||
|
bindsym Ctrl+Down exec playerctl play-pause
|
||||||
|
bindsym Ctrl+Right exec playerctl next
|
||||||
|
|
||||||
|
# Gaps
|
||||||
|
set $inner 8
|
||||||
|
set $outer 0
|
||||||
|
gaps inner $inner
|
||||||
|
gaps outer $outer
|
||||||
|
|
||||||
|
# Define names for default workspaces
|
||||||
|
set $ws1 "1"
|
||||||
|
set $ws2 "2"
|
||||||
|
set $ws3 "3"
|
||||||
|
set $ws4 "4"
|
||||||
|
set $ws5 "5"
|
||||||
|
set $ws6 "6"
|
||||||
|
set $ws7 "7"
|
||||||
|
set $ws8 "8"
|
||||||
|
set $ws9 "9"
|
||||||
|
set $ws10 "10"
|
||||||
|
set $wsResolve "11"
|
||||||
|
set $wsReaper "12"
|
||||||
|
set $wsBitwig "13"
|
||||||
|
set $wsGames "14"
|
||||||
|
set $wsSignal "15"
|
||||||
|
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+1 workspace $ws1
|
||||||
|
bindsym $mod+2 workspace $ws2
|
||||||
|
bindsym $mod+3 workspace $ws3
|
||||||
|
bindsym $mod+4 workspace $ws4
|
||||||
|
bindsym $mod+5 workspace $ws5
|
||||||
|
bindsym $mod+6 workspace $ws6
|
||||||
|
bindsym $mod+7 workspace $ws7
|
||||||
|
bindsym $mod+8 workspace $ws8
|
||||||
|
bindsym $mod+9 workspace $ws9
|
||||||
|
bindsym $mod+0 workspace $ws10
|
||||||
|
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace $ws1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace $ws2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace $ws3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace $ws4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace $ws5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace $ws6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace $ws7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace $ws8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace $ws9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace $ws10
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c exec "sh ~/bin/i3wm-config-gen.sh"
|
||||||
|
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||||
|
bindsym $mod+Shift+r exec "sh ~/bin/i3wm-config-gen.sh" ; restart
|
||||||
|
# exit i3 (logs you out of your X session)
|
||||||
|
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
|
||||||
|
|
||||||
|
# resize window (you can also use the mouse for that)
|
||||||
|
mode "resize" {
|
||||||
|
# These bindings trigger as soon as you enter the resize mode
|
||||||
|
|
||||||
|
# Pressing left will shrink the window’s width.
|
||||||
|
# Pressing right will grow the window’s width.
|
||||||
|
# Pressing up will shrink the window’s height.
|
||||||
|
# Pressing down will grow the window’s height.
|
||||||
|
bindsym j resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym k resize grow height 10 px or 10 ppt
|
||||||
|
bindsym l resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
bindsym Shift+j resize shrink width 1 px or 1 ppt
|
||||||
|
bindsym Shift+k resize grow height 1 px or 1 ppt
|
||||||
|
bindsym Shift+l resize shrink height 1 px or 1 ppt
|
||||||
|
bindsym Shift+semicolon resize grow width 1 px or 1 ppt
|
||||||
|
|
||||||
|
# same bindings, but for the arrow keys
|
||||||
|
bindsym Left resize shrink width 10 px or 10 ppt
|
||||||
|
bindsym Down resize grow height 10 px or 10 ppt
|
||||||
|
bindsym Up resize shrink height 10 px or 10 ppt
|
||||||
|
bindsym Right resize grow width 10 px or 10 ppt
|
||||||
|
|
||||||
|
bindsym Shift+Left resize shrink width 1 px or 1 ppt
|
||||||
|
bindsym Shift+Down resize grow height 1 px or 1 ppt
|
||||||
|
bindsym Shift+Up resize shrink height 1 px or 1 ppt
|
||||||
|
bindsym Shift+Right resize grow width 1 px or 1 ppt
|
||||||
|
|
||||||
|
# back to normal: Enter or Escape or $mod+r
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
bindsym $mod+r mode "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
# Set caps lock key to super
|
||||||
|
exec_always --no-startup-id setxkbmap -option 'caps:super'
|
||||||
|
|
||||||
|
# Startup scripts
|
||||||
|
exec --no-startup-id sh ~/bin/connect-nas.sh
|
||||||
|
exec --no-startup-id systemctl --user start polybar
|
||||||
|
exec --no-startup-id systemctl --user restart streamdeck
|
||||||
|
exec --no-startup-id waybar &
|
||||||
|
exec --no-startup-id /usr/libexec/polkit-gnome-authentication-agent-1
|
||||||
|
|
||||||
|
# class border backgr. text indicator child_border
|
||||||
|
client.focused $pink $pink $pink $pink $pink
|
||||||
|
client.focused_inactive $blue $blue $blue $blue $blue
|
||||||
|
client.unfocused $blue $blue $blue $blue $blue
|
||||||
|
client.urgent $blue $blue $blue $blue $blue
|
||||||
|
client.placeholder $blue $blue $blue $blue $blue
|
||||||
|
|
||||||
|
client.background $blue
|
||||||
|
|
||||||
|
# Removes border and title bar
|
||||||
|
for_window [class="^.*"] border pixel 3
|
||||||
|
#new_window 1pixel
|
||||||
|
#new_float normal 4
|
||||||
|
default_floating_border normal 3
|
||||||
|
#new_window normal 0 px
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bindsym Print exec scrot '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Pictures/screenshots/'
|
||||||
|
bindsym --release $mod+Print exec scrot '%Y:%m:%d:%H:%M:%S.png' -s -e 'mv $f ~/Pictures/screenshots/'
|
||||||
|
bindsym $mod+s exec scrot '%Y:%m:%d:%H:%M:%S.png' -e 'mv $f ~/Pictures/screenshots/'
|
||||||
|
bindsym --release $mod+Shift+s exec scrot '%Y:%m:%d:%H:%M:%S.png' -s -e 'mv $f ~/Pictures/screenshots/'
|
||||||
|
|
||||||
|
# Keyring
|
||||||
|
exec --no-startup-id dbus-update-activation-environment --all
|
||||||
|
exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh
|
||||||
|
|
||||||
|
# NextCloud sync client
|
||||||
|
exec --no-startup-id nextcloud --background
|
||||||
|
|
||||||
|
bindsym $mod+n exec nautilus
|
||||||
|
bindsym $mod+m exec nautilus ~/Videos
|
||||||
|
|
||||||
|
# Steam
|
||||||
|
for_window [class="^steamwebhelper$" title="^Friends$"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title="Steam - News"] floating enable
|
||||||
|
for_window [class="^steamwebhelper" title=".* - Chat"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title="^Settings$"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title=".* - event started"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title=".* CD key"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title="^Steam - Self Updater$"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title="^Screenshot Uploader$"] floating enable
|
||||||
|
for_window [class="^steamwebhelper$" title="^Steam Guard - Computer Authorization Required$"] floating enable
|
||||||
|
for_window [title="^Steam Keyboard$"] floating enable
|
||||||
|
|
||||||
|
# Jetbrains
|
||||||
|
for_window [class="^com-intellij-updater-Runner$" title="^Update$"] floating enable
|
||||||
|
for_window [instance="^sun-awt-X11-XDialogPeer$" title="^Complete Installation$"] floating enable
|
||||||
|
|
||||||
|
# DaVinci Resolve
|
||||||
|
#for_window [class="resolve"] gaps inner current set 0; gaps outer current set 0
|
||||||
|
|
||||||
|
# Bitwig
|
||||||
|
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] gaps inner set 0; gaps outer set 0
|
||||||
|
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec python ~/bin/audio/synth-power.py -d
|
||||||
|
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec sh ~/bin/audio/aquamix.sh -d
|
||||||
|
for_window [class="^Bitwig Studio$" title="^Bitwig Studio"] exec systemctl --user restart i3wm-close-window.service
|
||||||
|
|
||||||
|
#Other
|
||||||
|
for_window [class="Signal"] move to workspace $wsSignal
|
||||||
|
|
||||||
|
#bindsym $mod+F5 gaps inner current set 0; gaps outer current set 0
|
||||||
|
#bindsym $mod+F6 gaps inner current set $inner; gaps outer current set $outer
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
# Screen brightness controls
|
||||||
|
bindsym XF86MonBrightnessUp exec light -A 5 # increase screen brightness
|
||||||
|
bindsym XF86MonBrightnessDown exec light -U 5 # decrease screen brightness
|
||||||
|
|
||||||
|
# Pulse Audio controls
|
||||||
|
bindsym XF86AudioRaiseVolume exec amixer set Master 3%+ #increase sound volume
|
||||||
|
bindsym XF86AudioLowerVolume exec amixer set Master 3%- #decrease sound volume
|
||||||
|
bindsym XF86AudioMute exec amixer set Master toggle # toggle sound
|
||||||
|
bindsym XF86AudioMicMute exec amixer set Capture toggle # toggle mic
|
||||||
|
|
||||||
|
# Turn off trackpad
|
||||||
|
bindsym $mod+Shift+u exec sh ~/dotfiles/scripts/trackpad-toggle.sh
|
||||||
|
exec --no-startup-id ~/dotfiles/scripts/trackpad-toggle.sh
|
||||||
|
|
||||||
|
# Desktop background
|
||||||
|
output "*" bg ~/Pictures/wallpaper/0001.jpg fill
|
||||||
|
|
||||||
|
# Turn off the screen
|
||||||
|
bindsym XF86Launch1 exec xset -display :0.0 dpms force off
|
||||||
|
|
||||||
|
# Start up programs
|
||||||
|
for_window [class="Firefox"] move to workspace $ws1
|
||||||
|
for_window [class="emacs" title="emacs@*"] move to workspace $ws2
|
||||||
|
for_window [class="jetbrains-studio"] move to workspace $ws3
|
||||||
|
for_window [title="Google Play Music Desktop Player"] move to workspace $ws10
|
||||||
|
|
||||||
|
exec mako
|
||||||
|
exec --no-startup-id "firefox"
|
||||||
|
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
general {
|
||||||
|
output_format = "dzen2"
|
||||||
|
colors = true
|
||||||
|
interval = 5
|
||||||
|
output_format = "i3bar"
|
||||||
|
colors = true
|
||||||
|
color_good = "#0288D1"
|
||||||
|
color_degraded = "#FFCDD2"
|
||||||
|
color_bad = "#E91E63"
|
||||||
|
}
|
||||||
|
|
||||||
|
order += "disk /home"
|
||||||
|
order += "run_watch DHCP"
|
||||||
|
order += "wireless wlp3s0"
|
||||||
|
order += "ethernet eth0"
|
||||||
|
order += "volume master"
|
||||||
|
order += "brightness"
|
||||||
|
order += "battery all"
|
||||||
|
order += "tztime date"
|
||||||
|
order += "tztime local"
|
||||||
|
|
||||||
|
wireless wlp3s0 {
|
||||||
|
format_up = "%essid: %ip, %quality, %bitrate"
|
||||||
|
format_down = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ethernet eth0 {
|
||||||
|
# if you use %speed, i3status requires the cap_net_admin capability
|
||||||
|
format_up = "E: %ip (%speed)"
|
||||||
|
format_down = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
battery all {
|
||||||
|
format = "%status%percentage %remaining"
|
||||||
|
format_down = "No battery"
|
||||||
|
status_chr = "⚡"
|
||||||
|
status_bat = "🔋"
|
||||||
|
status_unk = "?"
|
||||||
|
status_full = "☻"
|
||||||
|
hide_seconds = true
|
||||||
|
last_full_capacity = true
|
||||||
|
path = "/sys/class/power_supply/BAT%d/uevent"
|
||||||
|
low_threshold = 20
|
||||||
|
}
|
||||||
|
|
||||||
|
tztime date {
|
||||||
|
format = "%m/%d"
|
||||||
|
}
|
||||||
|
|
||||||
|
tztime local {
|
||||||
|
format = "%I:%M:%S"
|
||||||
|
}
|
||||||
|
|
||||||
|
disk "/home" {
|
||||||
|
format = "%free"
|
||||||
|
}
|
||||||
|
|
||||||
|
volume master {
|
||||||
|
format = "♪%volume"
|
||||||
|
format_muted = "♪~%volume"
|
||||||
|
device = "default"
|
||||||
|
}
|
||||||
Executable
+134
@@ -0,0 +1,134 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
# Load user settings from config file.
|
||||||
|
if [ -e ~/.config/settings.conf ]; then
|
||||||
|
. ~/.config/settings.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
dotdir=~/dotfiles
|
||||||
|
|
||||||
|
# src dest sudo
|
||||||
|
files=($dotdir/systemd ~/.config/ 'n'
|
||||||
|
$dotdir/settings.conf ~/.config/ 'n')
|
||||||
|
|
||||||
|
# arg parser
|
||||||
|
for arg in "$@"
|
||||||
|
do
|
||||||
|
# Skip commands that need root access
|
||||||
|
if [[ $arg == *"-nr"* ]]; then
|
||||||
|
noRoot=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check emacs setup
|
||||||
|
function emacs {
|
||||||
|
if ! [ -d ~/.emacs.d ]; then
|
||||||
|
echo Installing emacs config
|
||||||
|
cd ~
|
||||||
|
git clone git@github.com:AquaMorph/.emacs.d.git
|
||||||
|
else
|
||||||
|
echo Checking for emacs config updates
|
||||||
|
cd ~/.emacs.d
|
||||||
|
git pull
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check managed dotfiles
|
||||||
|
function dotfiles {
|
||||||
|
echo Setting up dotfiles...
|
||||||
|
|
||||||
|
# Loop through config files
|
||||||
|
for (( i=0; i<${#files[@]} ; i+=3 )) ; do
|
||||||
|
# Check if sudo is needed
|
||||||
|
pre=''
|
||||||
|
if [[ ${files[i+2]} == *'y'* ]]; then
|
||||||
|
if [ $noRoot ]; then
|
||||||
|
echo Skipping ${files[i]} because root is required
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
pre='sudo'
|
||||||
|
fi
|
||||||
|
|
||||||
|
destPath=${files[i+1]}$(basename "${files[i]}")
|
||||||
|
|
||||||
|
# Check if file already exists
|
||||||
|
if [ -e $destPath ]; then
|
||||||
|
# Check if path is not a sybolic link
|
||||||
|
if ! [ -L $destPath ]; then
|
||||||
|
echo Backing up $destPath
|
||||||
|
$pre mv $destPath ${destPath}.bak
|
||||||
|
# File already set up
|
||||||
|
else
|
||||||
|
echo The file $destPath is already set up
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Create missing directories
|
||||||
|
else
|
||||||
|
$pre mkdir -p "$(dirname "$destPath")"
|
||||||
|
fi
|
||||||
|
echo Creating symbolic link from ${files[i]} to ${files[i+1]}
|
||||||
|
$pre ln -sf ${files[i]} ${files[i+1]}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check dotfiles for updates
|
||||||
|
function update {
|
||||||
|
echo Checking for dotfile updates
|
||||||
|
startTime=$(date +%s -r $dotdir)
|
||||||
|
cd $dotdir && git pull
|
||||||
|
endTime=$(date +%s -r $dotdir)
|
||||||
|
if (( "$startTime" < "$endTime" )); then
|
||||||
|
sh $dotdir/scripts/setup.sh
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up settings config file
|
||||||
|
function setup {
|
||||||
|
if [ -e $dotdir/settings.conf ]; then
|
||||||
|
echo Settings file already created
|
||||||
|
else
|
||||||
|
echo Setting up settings config...
|
||||||
|
|
||||||
|
# Computer shortname
|
||||||
|
echo What is the computer shortname?
|
||||||
|
read computer
|
||||||
|
echo computer=$computer >> $dotdir/settings.conf
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function systemd {
|
||||||
|
echo 'Setting up custom systemd services...'
|
||||||
|
systemctl --user enable es-9
|
||||||
|
systemctl --user enable i3wm-close-window
|
||||||
|
}
|
||||||
|
|
||||||
|
function stow_dotfiles {
|
||||||
|
stow wireplumber
|
||||||
|
stow zsh
|
||||||
|
stow alacritty
|
||||||
|
stow g13
|
||||||
|
stow gtk
|
||||||
|
stow i3
|
||||||
|
stow i3status
|
||||||
|
stow kitty
|
||||||
|
stow polybar
|
||||||
|
stow rofi
|
||||||
|
stow waybar
|
||||||
|
stow mako
|
||||||
|
stow scripts
|
||||||
|
stow orcaslicer
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_python_libs {
|
||||||
|
pip install -r requirements.txt
|
||||||
|
}
|
||||||
|
|
||||||
|
setup
|
||||||
|
systemd
|
||||||
|
update
|
||||||
|
dotfiles
|
||||||
|
stow_dotfiles
|
||||||
|
install_python_libs
|
||||||
|
emacs
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
font_family Inconsolata Medium
|
||||||
|
font_size 12.0
|
||||||
|
|
||||||
|
# Text Spacing
|
||||||
|
adjust_line_height 0
|
||||||
|
adjust_column_width 0
|
||||||
|
|
||||||
|
cursor #FFCDD2
|
||||||
|
cursor_shape beam
|
||||||
|
cursor_blink_interval 0.0
|
||||||
|
cursor_stop_blinking_after 0.0
|
||||||
|
|
||||||
|
scrollback_lines 10000
|
||||||
|
|
||||||
|
foreground #0288D1
|
||||||
|
background #000000
|
||||||
|
selection_foreground #FFCDD2
|
||||||
|
selection_background #E91E63
|
||||||
|
|
||||||
|
# Terminal Color Table
|
||||||
|
# black
|
||||||
|
color0 #000000
|
||||||
|
color8 #767676
|
||||||
|
# red
|
||||||
|
color1 #cc0403
|
||||||
|
color9 #f2201f
|
||||||
|
# green
|
||||||
|
color2 #19cb00
|
||||||
|
color10 #23fd00
|
||||||
|
# yellow
|
||||||
|
color3 #cecb00
|
||||||
|
color11 #fffd00
|
||||||
|
# blue
|
||||||
|
color4 #0d73cc
|
||||||
|
color12 #1a8fff
|
||||||
|
# magenta
|
||||||
|
color5 #cb1ed1
|
||||||
|
color13 #fd28ff
|
||||||
|
# cyan
|
||||||
|
color6 #0dcdcd
|
||||||
|
color14 #14ffff
|
||||||
|
# white
|
||||||
|
color7 #dddddd
|
||||||
|
color15 #ffffff
|
||||||
|
|
||||||
|
background_opacity 0.0
|
||||||
|
dynamic_background_opacity no
|
||||||
|
dim_opacity 0.75
|
||||||
+1
-1
@@ -2,4 +2,4 @@ sync_info = update
|
|||||||
user_id =
|
user_id =
|
||||||
setting_id =
|
setting_id =
|
||||||
base_id = GFSA04
|
base_id = GFSA04
|
||||||
updated_time = 1702867957
|
updated_time = 1697299895
|
||||||
-9
@@ -1,10 +1,4 @@
|
|||||||
{
|
{
|
||||||
"fan_max_speed": [
|
|
||||||
"20"
|
|
||||||
],
|
|
||||||
"fan_min_speed": [
|
|
||||||
"10"
|
|
||||||
],
|
|
||||||
"filament_cost": [
|
"filament_cost": [
|
||||||
"19.99"
|
"19.99"
|
||||||
],
|
],
|
||||||
@@ -27,9 +21,6 @@
|
|||||||
"nozzle_temperature_initial_layer": [
|
"nozzle_temperature_initial_layer": [
|
||||||
"245"
|
"245"
|
||||||
],
|
],
|
||||||
"overhang_fan_speed": [
|
|
||||||
"40"
|
|
||||||
],
|
|
||||||
"pressure_advance": [
|
"pressure_advance": [
|
||||||
"0.26"
|
"0.26"
|
||||||
],
|
],
|
||||||
+1
-4
@@ -54,7 +54,7 @@
|
|||||||
],
|
],
|
||||||
"name": "CR-10s 0.4 nozzle",
|
"name": "CR-10s 0.4 nozzle",
|
||||||
"nozzle_type": "brass",
|
"nozzle_type": "brass",
|
||||||
"print_host": "https://cr10.aquamorph.com",
|
"print_host": "192.168.1.5",
|
||||||
"printable_area": [
|
"printable_area": [
|
||||||
"0x0",
|
"0x0",
|
||||||
"300x0",
|
"300x0",
|
||||||
@@ -77,9 +77,6 @@
|
|||||||
"wipe": [
|
"wipe": [
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"z_hop": [
|
|
||||||
"0"
|
|
||||||
],
|
|
||||||
"z_hop_types": [
|
"z_hop_types": [
|
||||||
"Auto Lift"
|
"Auto Lift"
|
||||||
]
|
]
|
||||||
+1
-1
@@ -2,4 +2,4 @@ sync_info = update
|
|||||||
user_id =
|
user_id =
|
||||||
setting_id =
|
setting_id =
|
||||||
base_id = GM001
|
base_id = GM001
|
||||||
updated_time = 1702220626
|
updated_time = 1700927332
|
||||||
+1
-1
@@ -57,7 +57,7 @@
|
|||||||
"0.6"
|
"0.6"
|
||||||
],
|
],
|
||||||
"nozzle_type": "brass",
|
"nozzle_type": "brass",
|
||||||
"print_host": "192.168.20.20",
|
"print_host": "192.168.1.5",
|
||||||
"printable_area": [
|
"printable_area": [
|
||||||
"0x0",
|
"0x0",
|
||||||
"300x0",
|
"300x0",
|
||||||
+1
-1
@@ -2,4 +2,4 @@ sync_info = update
|
|||||||
user_id =
|
user_id =
|
||||||
setting_id =
|
setting_id =
|
||||||
base_id = GP004
|
base_id = GP004
|
||||||
updated_time = 1702867957
|
updated_time = 1697250231
|
||||||
+3
-5
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"brim_type": "no_brim",
|
"brim_type": "brim_ears",
|
||||||
"brim_width": "10",
|
"brim_width": "10",
|
||||||
"default_acceleration": "0",
|
"default_acceleration": "0",
|
||||||
"enable_support": "1",
|
"enable_support": "1",
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"initial_layer_speed": "20",
|
"initial_layer_speed": "20",
|
||||||
"inner_wall_acceleration": "0",
|
"inner_wall_acceleration": "0",
|
||||||
"inner_wall_line_width": "112%",
|
"inner_wall_line_width": "112%",
|
||||||
"inner_wall_speed": "35",
|
"inner_wall_speed": "40",
|
||||||
"internal_solid_infill_line_width": "112%",
|
"internal_solid_infill_line_width": "112%",
|
||||||
"internal_solid_infill_speed": "50",
|
"internal_solid_infill_speed": "50",
|
||||||
"is_custom_defined": "0",
|
"is_custom_defined": "0",
|
||||||
@@ -21,15 +21,13 @@
|
|||||||
"name": "0.20mm Standard CR-10s",
|
"name": "0.20mm Standard CR-10s",
|
||||||
"outer_wall_acceleration": "0",
|
"outer_wall_acceleration": "0",
|
||||||
"outer_wall_line_width": "80%",
|
"outer_wall_line_width": "80%",
|
||||||
"outer_wall_speed": "35",
|
"outer_wall_speed": "40",
|
||||||
"print_settings_id": "0.20mm Standard CR-10s",
|
"print_settings_id": "0.20mm Standard CR-10s",
|
||||||
"sparse_infill_density": "30%",
|
"sparse_infill_density": "30%",
|
||||||
"sparse_infill_line_width": "107%",
|
"sparse_infill_line_width": "107%",
|
||||||
"sparse_infill_pattern": "adaptivecubic",
|
|
||||||
"sparse_infill_speed": "60",
|
"sparse_infill_speed": "60",
|
||||||
"support_interface_speed": "30",
|
"support_interface_speed": "30",
|
||||||
"support_line_width": "95%",
|
"support_line_width": "95%",
|
||||||
"support_object_xy_distance": "0.75",
|
|
||||||
"support_speed": "30",
|
"support_speed": "30",
|
||||||
"support_type": "tree(auto)",
|
"support_type": "tree(auto)",
|
||||||
"top_surface_acceleration": "0",
|
"top_surface_acceleration": "0",
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
# JACK client config file for PipeWire version "0.3.48" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/jack.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/jack.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
mem.mlock-all = true
|
||||||
|
log.level = 0
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# [ args = { <key> = <value> ... } ]
|
||||||
|
# [ flags = [ [ ifexists ] [ nofail ] ]
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Boost the data thread priority.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
#rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
]
|
||||||
|
|
||||||
|
# global properties for all jack clients
|
||||||
|
jack.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.rate = 1/48000
|
||||||
|
#node.quantum = 1024/48000
|
||||||
|
#node.lock-quantum = true
|
||||||
|
#node.force-quantum = 0
|
||||||
|
#jack.show-monitor = true
|
||||||
|
#jack.merge-monitor = false
|
||||||
|
#jack.short-name = false
|
||||||
|
#jack.filter-name = false
|
||||||
|
#
|
||||||
|
# allow: Don't restrict self connect requests
|
||||||
|
# fail-external: Fail self connect requests to external ports only
|
||||||
|
# ignore-external: Ignore self connect requests to external ports only
|
||||||
|
# fail-all: Fail all self connect requests
|
||||||
|
# ignore-all: Ignore all self connect requests
|
||||||
|
#jack.self-connect-mode = allow
|
||||||
|
#jack.locked-process = true
|
||||||
|
#jack.default-as-system = false
|
||||||
|
}
|
||||||
|
|
||||||
|
# client specific properties
|
||||||
|
jack.rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ~ starts regex.
|
||||||
|
#client.name = "Carla"
|
||||||
|
#application.process.binary = "jack_simple_client"
|
||||||
|
#application.name = "~jack_simple_client.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.latency = 512/48000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,139 @@
|
|||||||
|
# PulseAudio config file for PipeWire version "0.3.48" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire-pulse.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire-pulse.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
mem.mlock-all = true
|
||||||
|
#log.level = 2
|
||||||
|
|
||||||
|
#default.clock.quantum-limit = 8192
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
support.* = support/libspa-support
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
#rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
{ name = libpipewire-module-protocol-pulse
|
||||||
|
args = {
|
||||||
|
# the addresses this server listens on
|
||||||
|
server.address = [
|
||||||
|
"unix:native"
|
||||||
|
#"unix:/tmp/something" # absolute paths may be used
|
||||||
|
#"tcp:4713" # IPv4 and IPv6 on all addresses
|
||||||
|
#"tcp:[::]:9999" # IPv6 on all addresses
|
||||||
|
#"tcp:127.0.0.1:8888" # IPv4 on a single address
|
||||||
|
#
|
||||||
|
#{ address = "tcp:4713" # address
|
||||||
|
# max-clients = 64 # maximum number of clients
|
||||||
|
# listen-backlog = 32 # backlog in the server listen queue
|
||||||
|
# client.access = "restricted" # permissions for clients
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
#pulse.min.req = 256/48000 # 5ms
|
||||||
|
#pulse.default.req = 960/48000 # 20 milliseconds
|
||||||
|
#pulse.min.frag = 256/48000 # 5ms
|
||||||
|
#pulse.default.frag = 96000/48000 # 2 seconds
|
||||||
|
#pulse.default.tlength = 96000/48000 # 2 seconds
|
||||||
|
#pulse.min.quantum = 256/48000 # 5ms
|
||||||
|
#pulse.default.format = F32
|
||||||
|
#pulse.default.position = [ FL FR ]
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
vm.overrides = {
|
||||||
|
pulse.min.quantum = 1024/48000 # 22ms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Extra modules can be loaded here. Setup in default.pa can be moved here
|
||||||
|
context.exec = [
|
||||||
|
{ path = "pactl" args = "load-module module-always-sink" }
|
||||||
|
#{ path = "pactl" args = "load-module module-switch-on-connect" }
|
||||||
|
#{ path = "/usr/bin/sh" args = "~/.config/pipewire/default.pw" }
|
||||||
|
]
|
||||||
|
|
||||||
|
stream.properties = {
|
||||||
|
#node.latency = 1024/48000
|
||||||
|
#node.autoconnect = true
|
||||||
|
#resample.quality = 4
|
||||||
|
#channelmix.normalize = true
|
||||||
|
#channelmix.mix-lfe = false
|
||||||
|
#channelmix.upmix = false
|
||||||
|
#channelmix.lfe-cutoff = 0
|
||||||
|
#channelmix.fc-cutoff = 0
|
||||||
|
#channelmix.rear-delay = 12.0
|
||||||
|
#channelmix.stereo-widen = 0.0
|
||||||
|
#channelmix.hilbert-taps = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# client/stream specific properties
|
||||||
|
pulse.rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
# all keys must match the value. ~ starts regex.
|
||||||
|
#client.name = "Firefox"
|
||||||
|
#application.process.binary = "teams"
|
||||||
|
#application.name = "~speech-dispatcher.*"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
#node.latency = 512/48000
|
||||||
|
}
|
||||||
|
# Possible quirks:"
|
||||||
|
# force-s16-info forces sink and source info as S16 format
|
||||||
|
# remove-capture-dont-move removes the capture DONT_MOVE flag
|
||||||
|
#quirks = [ ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# skype does not want to use devices that don't have an S16 sample format.
|
||||||
|
matches = [
|
||||||
|
{ application.process.binary = "teams" }
|
||||||
|
{ application.process.binary = "skypeforlinux" }
|
||||||
|
]
|
||||||
|
actions = { quirks = [ force-s16-info ] }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# firefox marks the capture streams as don't move and then they
|
||||||
|
# can't be moved with pavucontrol or other tools.
|
||||||
|
matches = [ { application.process.binary = "firefox" } ]
|
||||||
|
actions = { quirks = [ remove-capture-dont-move ] }
|
||||||
|
}
|
||||||
|
{
|
||||||
|
# speech dispatcher asks for too small latency and then underruns.
|
||||||
|
matches = [ { application.name = "~speech-dispatcher*" } ]
|
||||||
|
actions = {
|
||||||
|
update-props = {
|
||||||
|
pulse.min.req = 1024/48000 # 21ms
|
||||||
|
pulse.min.quantum = 1024/48000 # 21ms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,266 @@
|
|||||||
|
# Daemon config file for PipeWire version "0.3.48" #
|
||||||
|
#
|
||||||
|
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||||
|
# or in ~/.config/pipewire for local changes.
|
||||||
|
#
|
||||||
|
# It is also possible to place a file with an updated section in
|
||||||
|
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
|
||||||
|
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
|
||||||
|
#
|
||||||
|
|
||||||
|
context.properties = {
|
||||||
|
## Configure properties in the system.
|
||||||
|
#library.name.system = support/libspa-support
|
||||||
|
#context.data-loop.library.name.system = support/libspa-support
|
||||||
|
#support.dbus = true
|
||||||
|
#link.max-buffers = 64
|
||||||
|
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||||
|
#mem.warn-mlock = false
|
||||||
|
#mem.allow-mlock = true
|
||||||
|
#mem.mlock-all = false
|
||||||
|
#clock.power-of-two-quantum = true
|
||||||
|
#log.level = 2
|
||||||
|
#cpu.zero.denormals = false
|
||||||
|
|
||||||
|
core.daemon = true # listening for socket connections
|
||||||
|
core.name = pipewire-0 # core name and socket name
|
||||||
|
|
||||||
|
## Properties for the DSP configuration.
|
||||||
|
#default.clock.rate = 48000
|
||||||
|
#default.clock.allowed-rates = [ 48000 ]
|
||||||
|
#default.clock.quantum = 1024
|
||||||
|
default.clock.min-quantum = 512
|
||||||
|
default.clock.max-quantum = 512
|
||||||
|
default.clock.quantum-limit = 512
|
||||||
|
#default.video.width = 640
|
||||||
|
#default.video.height = 480
|
||||||
|
#default.video.rate.num = 25
|
||||||
|
#default.video.rate.denom = 1
|
||||||
|
#
|
||||||
|
#settings.check-quantum = false
|
||||||
|
#settings.check-rate = false
|
||||||
|
#
|
||||||
|
# These overrides are only applied when running in a vm.
|
||||||
|
vm.overrides = {
|
||||||
|
default.clock.min-quantum = 1024
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
context.spa-libs = {
|
||||||
|
#<factory-name regex> = <library-name>
|
||||||
|
#
|
||||||
|
# Used to find spa factory names. It maps an spa factory name
|
||||||
|
# regular expression to a library name that should contain
|
||||||
|
# that factory.
|
||||||
|
#
|
||||||
|
audio.convert.* = audioconvert/libspa-audioconvert
|
||||||
|
api.alsa.* = alsa/libspa-alsa
|
||||||
|
api.v4l2.* = v4l2/libspa-v4l2
|
||||||
|
api.libcamera.* = libcamera/libspa-libcamera
|
||||||
|
api.bluez5.* = bluez5/libspa-bluez5
|
||||||
|
api.vulkan.* = vulkan/libspa-vulkan
|
||||||
|
api.jack.* = jack/libspa-jack
|
||||||
|
support.* = support/libspa-support
|
||||||
|
#videotestsrc = videotestsrc/libspa-videotestsrc
|
||||||
|
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
|
||||||
|
}
|
||||||
|
|
||||||
|
context.modules = [
|
||||||
|
#{ name = <module-name>
|
||||||
|
# [ args = { <key> = <value> ... } ]
|
||||||
|
# [ flags = [ [ ifexists ] [ nofail ] ]
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Loads a module with the given parameters.
|
||||||
|
# If ifexists is given, the module is ignored when it is not found.
|
||||||
|
# If nofail is given, module initialization failures are ignored.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||||
|
# RTKit if the user doesn't have permission to use regular realtime
|
||||||
|
# scheduling.
|
||||||
|
{ name = libpipewire-module-rt
|
||||||
|
args = {
|
||||||
|
nice.level = -11
|
||||||
|
#rt.prio = 88
|
||||||
|
#rt.time.soft = -1
|
||||||
|
#rt.time.hard = -1
|
||||||
|
}
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The native communication protocol.
|
||||||
|
{ name = libpipewire-module-protocol-native }
|
||||||
|
|
||||||
|
# The profile module. Allows application to access profiler
|
||||||
|
# and performance data. It provides an interface that is used
|
||||||
|
# by pw-top and pw-profiler.
|
||||||
|
{ name = libpipewire-module-profiler }
|
||||||
|
|
||||||
|
# Allows applications to create metadata objects. It creates
|
||||||
|
# a factory for Metadata objects.
|
||||||
|
{ name = libpipewire-module-metadata }
|
||||||
|
|
||||||
|
# Creates a factory for making devices that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-device-factory }
|
||||||
|
|
||||||
|
# Creates a factory for making nodes that run in the
|
||||||
|
# context of the PipeWire server.
|
||||||
|
{ name = libpipewire-module-spa-node-factory }
|
||||||
|
|
||||||
|
# Allows creating nodes that run in the context of the
|
||||||
|
# client. Is used by all clients that want to provide
|
||||||
|
# data to PipeWire.
|
||||||
|
{ name = libpipewire-module-client-node }
|
||||||
|
|
||||||
|
# Allows creating devices that run in the context of the
|
||||||
|
# client. Is used by the session manager.
|
||||||
|
{ name = libpipewire-module-client-device }
|
||||||
|
|
||||||
|
# The portal module monitors the PID of the portal process
|
||||||
|
# and tags connections with the same PID as portal
|
||||||
|
# connections.
|
||||||
|
{ name = libpipewire-module-portal
|
||||||
|
flags = [ ifexists nofail ]
|
||||||
|
}
|
||||||
|
|
||||||
|
# The access module can perform access checks and block
|
||||||
|
# new clients.
|
||||||
|
{ name = libpipewire-module-access
|
||||||
|
args = {
|
||||||
|
# access.allowed to list an array of paths of allowed
|
||||||
|
# apps.
|
||||||
|
#access.allowed = [
|
||||||
|
# /usr/bin/pipewire-media-session
|
||||||
|
#]
|
||||||
|
|
||||||
|
# An array of rejected paths.
|
||||||
|
#access.rejected = [ ]
|
||||||
|
|
||||||
|
# An array of paths with restricted access.
|
||||||
|
#access.restricted = [ ]
|
||||||
|
|
||||||
|
# Anything not in the above lists gets assigned the
|
||||||
|
# access.force permission.
|
||||||
|
#access.force = flatpak
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Makes a factory for wrapping nodes in an adapter with a
|
||||||
|
# converter and resampler.
|
||||||
|
{ name = libpipewire-module-adapter }
|
||||||
|
|
||||||
|
# Makes a factory for creating links between ports.
|
||||||
|
{ name = libpipewire-module-link-factory }
|
||||||
|
|
||||||
|
# Provides factories to make session manager objects.
|
||||||
|
{ name = libpipewire-module-session-manager }
|
||||||
|
|
||||||
|
# Use libcanberra to play X11 Bell
|
||||||
|
#{ name = libpipewire-module-x11-bell
|
||||||
|
# args = {
|
||||||
|
# #sink.name = ""
|
||||||
|
# #sample.name = "bell-window-system"
|
||||||
|
# #x11.display = null
|
||||||
|
# #x11.xauthority = null
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.objects = [
|
||||||
|
#{ factory = <factory-name>
|
||||||
|
# [ args = { <key> = <value> ... } ]
|
||||||
|
# [ flags = [ [ nofail ] ]
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# Creates an object from a PipeWire factory with the given parameters.
|
||||||
|
# If nofail is given, errors are ignored (and no object is created).
|
||||||
|
#
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||||
|
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||||
|
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } }
|
||||||
|
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||||
|
|
||||||
|
# A default dummy driver. This handles nodes marked with the "node.always-driver"
|
||||||
|
# property when no other driver is currently active. JACK clients need this.
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Dummy-Driver
|
||||||
|
node.group = pipewire.dummy
|
||||||
|
priority.driver = 20000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ factory = spa-node-factory
|
||||||
|
args = {
|
||||||
|
factory.name = support.node.driver
|
||||||
|
node.name = Freewheel-Driver
|
||||||
|
priority.driver = 19000
|
||||||
|
node.group = pipewire.freewheel
|
||||||
|
node.freewheel = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# This creates a new Source node. It will have input ports
|
||||||
|
# that you can link, to provide audio for this source.
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = support.null-audio-sink
|
||||||
|
node.name = "sm7b"
|
||||||
|
node.description = "SM7B"
|
||||||
|
media.class = "Audio/Source/Virtual"
|
||||||
|
audio.position = "FL,FR"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ factory = adapter
|
||||||
|
args = {
|
||||||
|
factory.name = support.null-audio-sink
|
||||||
|
node.name = "speakers"
|
||||||
|
node.description = "Speakers"
|
||||||
|
media.class = "Audio/Sink"
|
||||||
|
audio.position = "FL,FR"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This creates a single PCM source device for the given
|
||||||
|
# alsa device path hw:0. You can change source to sink
|
||||||
|
# to make a sink in the same way.
|
||||||
|
#{ factory = adapter
|
||||||
|
# args = {
|
||||||
|
# factory.name = api.alsa.pcm.source
|
||||||
|
# node.name = "alsa-source"
|
||||||
|
# node.description = "PCM Source"
|
||||||
|
# media.class = "Audio/Source"
|
||||||
|
# api.alsa.path = "hw:0"
|
||||||
|
# api.alsa.period-size = 1024
|
||||||
|
# api.alsa.headroom = 0
|
||||||
|
# api.alsa.disable-mmap = false
|
||||||
|
# api.alsa.disable-batch = false
|
||||||
|
# audio.format = "S16LE"
|
||||||
|
# audio.rate = 48000
|
||||||
|
# audio.channels = 2
|
||||||
|
# audio.position = "FL,FR"
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
]
|
||||||
|
|
||||||
|
context.exec = [
|
||||||
|
#{ path = <program-name> [ args = "<arguments>" ] }
|
||||||
|
#
|
||||||
|
# Execute the given program with arguments.
|
||||||
|
#
|
||||||
|
# You can optionally start the session manager here,
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# Run the session manager with -h for options.
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire-media-session" args = "" }
|
||||||
|
#
|
||||||
|
# You can optionally start the pulseaudio-server here as well
|
||||||
|
# but it is better to start it as a systemd service.
|
||||||
|
# It can be interesting to start another daemon here that listens
|
||||||
|
# on another address with the -a option (eg. -a tcp:4713).
|
||||||
|
#
|
||||||
|
#{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
|
||||||
|
]
|
||||||
@@ -178,7 +178,7 @@ label-disconnected-underline = ${colors.pink}
|
|||||||
|
|
||||||
[module/mouse-battery]
|
[module/mouse-battery]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = ~/bin/get-mouse-battery.sh
|
exec = ~/.config/scripts/get-mouse-battery.sh
|
||||||
label = %output%
|
label = %output%
|
||||||
interval = 60
|
interval = 60
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user