Compare commits

..

3 Commits

Author SHA1 Message Date
AquaMorph 126504d5f9 refactor: use home dir 2025-11-07 19:06:29 -05:00
AquaMorph d9c5dcbea4 feat(git): add config 2025-11-07 18:51:03 -05:00
AquaMorph 932a969e97 doc: add readme 2025-11-07 18:46:25 -05:00
140 changed files with 3 additions and 11844 deletions
+1
View File
@@ -0,0 +1 @@
home
-142
View File
@@ -1,142 +0,0 @@
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/
-20
View File
@@ -1,21 +1 @@
# Dotfiles
A collection of config files and scripts for Fedora GNU/Linux.
## Install
Run the following command to install
```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]
```
-606
View File
@@ -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"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-32
View File
@@ -1,32 +0,0 @@
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Map Toggle / Sabotage
bind LEFT KEY_TAB
# Use Vent as Imposter
bind STICK_DOWN KEY_V
# Interact
bind G22 KEY_SPACE
# Kill
bind STICK_UP KEY_Q
# Report
bind G6 KEY_R
# Role Ability
bind DOWN KEY_F
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
rgb 255 0 0
Binary file not shown.
-39
View File
@@ -1,39 +0,0 @@
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
bind G20 KEY_RIGHTCTRL
bind G15 KEY_RIGHTCTRL
# Hook
bind STICK_UP KEY_F
bind STICK_DOWN KEY_F
# Enter Batmobile
bind DOWN KEY_E
# Detective Mode
bind G5 LEFT KEY_X
# Choose gadget
bind G14 KEY_G
# Augmented Reality Challenges
bind G19 KEY_ C
# Mission Choice
bind G1 KEY_V
# Electric Tool
bind G6 KEY_4
rgb 255 5 5
Binary file not shown.
-35
View File
@@ -1,35 +0,0 @@
# Cyberpunk 2077
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
bind G15 KEY_LEFTSHIFT
bind G20 KEY_LEFTCTRL
bind G1 KEY_ESC
bind G2 KEY_I
bind G3 KEY_Q
bind G5 KEY_E
bind G6 KEY_R
bind G7 KEY_T
bind G14 KEY_M
bind G16 KEY_Z
bind G17 KEY_X
bind G18 KEY_C
bind G19 KEY_V
bind LEFT KEY_F
bind DOWN KEY_TAB
bind STICK_UP KEY_LEFTALT
rgb 252 236 12
-65
View File
@@ -1,65 +0,0 @@
# ================= =============== =============== ======== ========
# \\ . . . . . . .\\ //. . . . . . .\\ //. . . . . . .\\ \\. . .\\// . . //
# ||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\/ . . .||
# || . .|| ||. . || || . .|| ||. . || || . .|| ||. . || ||. . . . . . . ||
# ||. . || || . .|| ||. . || || . .|| ||. . || || . .|| || . | . . . . .||
# || . .|| ||. _-|| ||-_ .|| ||. . || || . .|| ||. _-|| ||-_.|\ . . . . ||
# ||. . || ||-' || || `-|| || . .|| ||. . || ||-' || || `|\_ . .|. .||
# || . _|| || || || || ||_ . || || . _|| || || || |\ `-_/| . ||
# ||_-' || .|/ || || \|. || `-_|| ||_-' || .|/ || || | \ / |-_.||
# || ||_-' || || `-_|| || || ||_-' || || | \ / | `||
# || `' || || `' || || `' || || | \ / | ||
# || .===' `===. .==='.`===. .===' /==. | \/ | ||
# || .==' \_|-_ `===. .===' _|_ `===. .===' _-|/ `== \/ | ||
# || .==' _-' `-_ `=' _-' `-_ `=' _-' `-_ /| \/ | ||
# || .==' _-' `-__\._-' `-_./__-' `' |. /| | ||
# ||.==' _-' `' | /==.||
# ==' _-' \/ `==
# \ _-' `-_ /
# `'' ``'
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
bind G15 KEY_LEFTSHIFT
# Weapon Select
## Glorykill/Use
bind LEFT KEY_E
## Flame Belch
bind DOWN KEY_R
## Chainsaw
bind G19 KEY_C
## Super Shotgun
bind STICK_LEFT KEY_5
## Rocket Launcher
bind STICK_UP KEY_4
## Heavy Cannon
bind STICK_RIGHT KEY_2
## Plasma Rifle
bind STICK_DOWN KEY_3
## Ballista
bind G6 KEY_6
## BFG-9000
bind G7 KEY_8
## Chaingun
bind G5 KEY_7
# Dossier
bind G1 KEY_TAB
# Mission Informatmation
bind G2 KEY_LEFTALT
rgb 66 00 00
-65
View File
@@ -1,65 +0,0 @@
# ================= =============== =============== ======== ========
# \\ . . . . . . .\\ //. . . . . . .\\ //. . . . . . .\\ \\. . .\\// . . //
# ||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\/ . . .||
# || . .|| ||. . || || . .|| ||. . || || . .|| ||. . || ||. . . . . . . ||
# ||. . || || . .|| ||. . || || . .|| ||. . || || . .|| || . | . . . . .||
# || . .|| ||. _-|| ||-_ .|| ||. . || || . .|| ||. _-|| ||-_.|\ . . . . ||
# ||. . || ||-' || || `-|| || . .|| ||. . || ||-' || || `|\_ . .|. .||
# || . _|| || || || || ||_ . || || . _|| || || || |\ `-_/| . ||
# ||_-' || .|/ || || \|. || `-_|| ||_-' || .|/ || || | \ / |-_.||
# || ||_-' || || `-_|| || || ||_-' || || | \ / | `||
# || `' || || `' || || `' || || | \ / | ||
# || .===' `===. .==='.`===. .===' /==. | \/ | ||
# || .==' \_|-_ `===. .===' _|_ `===. .===' _-|/ `== \/ | ||
# || .==' _-' `-_ `=' _-' `-_ `=' _-' `-_ /| \/ | ||
# || .==' _-' `-__\._-' `-_./__-' `' |. /| | ||
# ||.==' _-' `' | /==.||
# ==' _-' \/ `==
# \ _-' `-_ /
# `'' ``'
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
# Weapon Select
## Pistol
bind STICK_DOWN KEY_1
## Rocket Launcher
bind STICK_LEFT KEY_5
## Heavy Assault Rifle
bind STICK_RIGHT KEY_4
# Combat Shotgun
bind STICK_UP KEY_2
# Chaingun
bind G3 KEY_8
# Super Shotgun
bind DOWN KEY_6
# Other
## Use
bind G6 KEY_E
bind G20 KEY_RIGHTCTRL
bind G15 KEY_RIGHTCTRL
# Other
bind GR KEY_R
bind LEFT KEY_F
bind G18 KEY_C
bind G13 KEY_X
rgb 66 00 00
Binary file not shown.
-48
View File
@@ -1,48 +0,0 @@
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character screen / Confirm Window
bind G5 KEY_E
# Clear cursor / Pipette tool
bind G3 KEY_Q
# Rotate
bind G6 KEY_R
# Flip blueprints horizontal / Pickup ground item
bind G13 KEY_F
# Flip blueprints vertical
bind G14 KEY_G
# Drop Item
bind G16 KEY_Z
# Shoot selected
bind G18 KEY_C
#
bind STICK_UP KEY_1
bind STICK_RIGHT KEY_2
bind STICK_DOWN KEY_3
bind STICK_LEFT KEY_4
# Other
bind G22 KEY_SPACE
bind G15 KEY_LEFTSHIFT
bind G20 KEY_LEFTCTRL
bind DOWN KEY_ENTER
bind LEFT KEY_TAB
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
rgb 230 145 0
Binary file not shown.
-35
View File
@@ -1,35 +0,0 @@
# Fall Guys
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
# Switch Character
bind G3 KEY_Q
bind G5 KEY_E
# Jump
bind G22 KEY_SPACE
# Dive
bind G15 KEY_RIGHTCTRL
# Grab
bind LEFT KEY_LEFTSHIFT
# Show names
bind DOWN KEY_TAB
# Other
bind G1 KEY_ESC
rgb 0 128 180
Binary file not shown.
-22
View File
@@ -1,22 +0,0 @@
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
# Other
bind G3 KEY_Q
bind G5 KEY_E
bind G1 KEY_ESC
bind G22 KEY_SPACE
bind G15 KEY_LEFTSHIFT
bind LEFT KEY_TAB
rgb 128 255 31
Binary file not shown.
-31
View File
@@ -1,31 +0,0 @@
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
bind G20 KEY_RIGHTCTRL
bind G15 KEY_RIGHTCTRL
# Reload
bind G6 KEY_R
# Abilities
bind STICK_UP KEY_LEFTSHIFT
bind STICK_DOWN KEY_E
bind DOWN KEY_Q
# Display
bind LEFT KEY_TAB
bind G18 KEY_C
bind G13 KEY_X
rgb 250 156 29
Binary file not shown.
-33
View File
@@ -1,33 +0,0 @@
# Planet Coaster
# Setup stick bounds
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Camera Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G3 KEY_Q
bind G5 KEY_E
# Pause
bind G22 KEY_P
# Path Length
bind M3 KEY_MINUS
bind MR KEY_EQUAL
# Path Width
bind M1 KEY_LEFTBRACE
bind M2 KEY_RIGHTBRACE
# History
bind G1 KEY_LEFTCTRL+KEY_Z
bing G2 KEY_LEFTCTRL+KEY_Y
rgb 0 120 181
-1
View File
@@ -1 +0,0 @@
窟唢秣鼢顼锵??333??弿摀摀弚篑貊忪沃贊-s;诅oo熆縹xA凅篌黠篑耨cc耨馽莾仚?摀摀333鼄{;抵缅鲵酊
-31
View File
@@ -1,31 +0,0 @@
# Portal
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Character Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G22 KEY_SPACE
bind G20 KEY_RIGHTCTRL
bind G15 KEY_RIGHTCTRL
# Pickup/Use Object
bind G6 KEY_E
# Pause
bind G1 KEY_ESC
# Ping
bind DOWN KEY_F
# Gesture (co-op)
bind LEFT KEY_Q
rgb 61 189 238
Binary file not shown.
-59
View File
@@ -1,59 +0,0 @@
# Set Pink Backlight
rgb 220 48 104
# Setup distinct/non-overlapping 4-Way zones
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Undo and Redo
bind STICK_LEFT KEY_RIGHTCTRL+KEY_Z
bind STICK_RIGHT KEY_LEFTCTRL+KEY_LEFTSHIFT+KEY_Z
# Play
bind G22 KEY_SPACE
# Playback keys
bind G16 KEY_J
bind G17 KEY_K
bind G18 KEY_L
bind G4 KEY_UP
bind G10 KEY_LEFT
bind G11 KEY_DOWN
bind G12 KEY_RIGHT
# In Out Markers
bind G3 KEY_I
bind G5 KEY_O
# Move clips in place
bind G19 KEY_LEFTCTRL+KEY_LEFTSHIFT
bind L1 KEY_N
bind L2 KEY_LEFTCTRL+KEY_LEFTSHIFT+KEY_L
# Select and blade
bind LEFT KEY_A
bind DOWN KEY_B
# Delete
bind STICK_UP KEY_DELETE
bind STICK_DOWN KEY_BACKSPACE
# Change timeline zoom
bind G21 KEY_LEFTALT
# Switch workspaces
bind M1 KEY_LEFTSHIFT+KEY_2
bind M2 KEY_LEFTSHIFT+KEY_3
bind M3 KEY_LEFTSHIFT+KEY_4
bind MR KEY_LEFTSHIFT+KEY_6
# Add to end of timeline
bind G13 KEY_LEFTSHIFT+KEY_F12
# Save
bind BD KEY_LEFTCTRL+KEY_S
Binary file not shown.
-27
View File
@@ -1,27 +0,0 @@
# Two Point Hospital
# Setup stick bounds
stickzone del STICK_PAGEUP
stickzone del STICK_PAGEDOWN
stickzone bounds STICK_LEFT 0.0 0.3 0.2 0.7
stickzone bounds STICK_RIGHT 0.8 0.3 1.0 0.7
stickzone bounds STICK_UP 0.3 0.0 0.7 0.2
stickzone bounds STICK_DOWN 0.3 0.8 0.7 1.0
# Camera Movement
bind G4 KEY_W
bind G10 KEY_A
bind G11 KEY_S
bind G12 KEY_D
bind G3 KEY_Q
bind G5 KEY_E
# Rotate objects
bind STICK_LEFT KEY_Z
bind STICK_RIGHT KEY_X
# Other
bind G22 KEY_SPACE
bing G1 KEY_ESC
rgb 12 167 145
Binary file not shown.
-6
View File
@@ -1,6 +0,0 @@
[Settings]
#gtk-icon-theme-name=Flat-Remix-Blue-Dark
#gtk-theme-name=Flat-Remix-GTK-Blue-Darkest-Solid
gtk-font-name=SF Pro Display 14
gtk-application-prefer-dark-theme=1
gtk-decoration-layout=0
-6
View File
@@ -1,6 +0,0 @@
[Settings]
#gtk-icon-theme-name=Flat-Remix-Blue-Dark
#gtk-theme-name=Flat-Remix-GTK-Blue-Darkest-Solid
gtk-font-name=SF Pro Display 14
gtk-application-prefer-dark-theme=1
gtk-decoration-layout=0
+2
View File
@@ -10,3 +10,5 @@
ui = auto
[branch]
sort = -committerdate
[push]
autoSetupRemote = true
-51
View File
@@ -1,51 +0,0 @@
$mainMod = SUPER
# Keybindings
bind = $mainMod, return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod, C, exit,
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
-17
View File
@@ -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
-4
View File
@@ -1,4 +0,0 @@
# Programs
$terminal = alacritty
$fileManager = dolphin
$menu = rofi -show combi
-43
View File
@@ -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
-40
View File
@@ -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
-6
View File
@@ -1,6 +0,0 @@
# Password manager update
exec-once = pass git pull
# Start up script
exec-once = ~/bin/system/system-start.sh
@@ -1,2 +0,0 @@
exec-once = [workspace 1 silent] brave-browser
exec-once = [workspace 2 silent] $terminal
-120
View File
@@ -1,120 +0,0 @@
# 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
-49
View File
@@ -1,49 +0,0 @@
# 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'"
-230
View File
@@ -1,230 +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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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
-29
View File
@@ -1,29 +0,0 @@
# 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"
-62
View File
@@ -1,62 +0,0 @@
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"
}
-135
View File
@@ -1,135 +0,0 @@
#! /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 git
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
-48
View File
@@ -1,48 +0,0 @@
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
-39
View File
@@ -1,39 +0,0 @@
max-history=10
sort=-time
# Bindings
on-button-left=invoke-default-action
on-button-middle=none
on-button-right=dismiss
on-touch=dismiss
on-notify=none
# Theme
font=NimbusSans 12
background-color=#00000088
text-color=#FFFFFFFF
width=400
height=100
outer-margin=11
margin=5
padding=5
border-size=3
border-color=#0288D1FF
border-radius=0
progress-color=#E91E63FF
icons=1
max-icon-size=64
icon-path=""
icon-location=left
markup=1
actions=1
history=1
text-alignment=left
default-timeout=0
ignore-timeout=0
group-by=none
max-visible=-1
output=""
layer=top
anchor=top-right
@@ -1,5 +0,0 @@
sync_info = update
user_id =
setting_id =
base_id = GFSA04
updated_time = 1702867957
@@ -1,40 +0,0 @@
{
"fan_max_speed": [
"20"
],
"fan_min_speed": [
"10"
],
"filament_cost": [
"19.99"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_settings_id": [
"PETG - Overture @CR-10s"
],
"filament_vendor": [
"Overture"
],
"from": "User",
"inherits": "My Generic PETG",
"is_custom_defined": "0",
"name": "PETG - Overture @CR-10s",
"nozzle_temperature": [
"245"
],
"nozzle_temperature_initial_layer": [
"245"
],
"overhang_fan_speed": [
"40"
],
"pressure_advance": [
"0.26"
],
"slow_down_layer_time": [
"1"
],
"version": "1.6.1.0"
}
@@ -1,5 +0,0 @@
sync_info = update
user_id =
setting_id =
base_id = GFSA04
updated_time = 1696802272
@@ -1,34 +0,0 @@
{
"enable_pressure_advance": [
"1"
],
"filament_cost": [
"19.99"
],
"filament_flow_ratio": [
"0.9025"
],
"filament_settings_id": [
"PETG - Overture"
],
"filament_vendor": [
"Overture"
],
"from": "User",
"inherits": "My Generic PETG",
"is_custom_defined": "0",
"name": "PETG - Overture",
"nozzle_temperature": [
"245"
],
"nozzle_temperature_initial_layer": [
"245"
],
"pressure_advance": [
"0.26"
],
"slow_down_layer_time": [
"1"
],
"version": "1.6.1.0"
}
@@ -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,5 +0,0 @@
sync_info = create
user_id =
setting_id =
base_id = GM001
updated_time = 1695585702
@@ -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
@@ -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.4 nozzle",
"nozzle_type": "brass",
"print_host": "https://cr10.aquamorph.com",
"printable_area": [
"0x0",
"300x0",
"300x300",
"0x300"
],
"printable_height": "400",
"printer_settings_id": "CR-10s 0.4 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": [
"0"
],
"z_hop_types": [
"Auto Lift"
]
}
@@ -1,5 +0,0 @@
sync_info = update
user_id =
setting_id =
base_id = GM001
updated_time = 1702220626
@@ -1,89 +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.6 nozzle",
"nozzle_diameter": [
"0.6"
],
"nozzle_type": "brass",
"print_host": "192.168.20.20",
"printable_area": [
"0x0",
"300x0",
"300x300",
"0x300"
],
"printable_height": "400",
"printer_settings_id": "CR-10s 0.6 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": [
"0"
],
"z_hop_types": [
"Auto Lift"
]
}
@@ -1,5 +0,0 @@
sync_info = update
user_id =
setting_id =
base_id = GM001
updated_time = 1695341948
@@ -1,85 +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": "Ender 3 0.6 nozzle",
"nozzle_diameter": [
"0.6"
],
"nozzle_type": "brass",
"print_host": "192.168.1.6",
"printable_area": [
"0x0",
"235x0",
"235x235",
"0x235"
],
"printer_settings_id": "Ender 3 0.6 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 =
user_id =
setting_id =
base_id = GP004
updated_time = 1735702877
@@ -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"
}
@@ -1,5 +0,0 @@
sync_info = update
user_id =
setting_id =
base_id = GP004
updated_time = 1702867957
@@ -1,41 +0,0 @@
{
"brim_type": "no_brim",
"brim_width": "10",
"default_acceleration": "0",
"enable_support": "1",
"from": "User",
"gap_infill_speed": "30",
"infill_combination": "1",
"inherits": "0.20mm Standard @MyKlipper",
"initial_layer_acceleration": "0",
"initial_layer_infill_speed": "35",
"initial_layer_line_width": "137%",
"initial_layer_speed": "20",
"inner_wall_acceleration": "0",
"inner_wall_line_width": "112%",
"inner_wall_speed": "35",
"internal_solid_infill_line_width": "112%",
"internal_solid_infill_speed": "50",
"is_custom_defined": "0",
"line_width": "100%",
"name": "0.20mm Standard CR-10s",
"outer_wall_acceleration": "0",
"outer_wall_line_width": "80%",
"outer_wall_speed": "35",
"print_settings_id": "0.20mm Standard CR-10s",
"sparse_infill_density": "30%",
"sparse_infill_line_width": "107%",
"sparse_infill_pattern": "adaptivecubic",
"sparse_infill_speed": "60",
"support_interface_speed": "30",
"support_line_width": "95%",
"support_object_xy_distance": "0.75",
"support_speed": "30",
"support_type": "tree(auto)",
"top_surface_acceleration": "0",
"top_surface_line_width": "107%",
"top_surface_speed": "30",
"travel_acceleration": "1500",
"travel_speed": "150",
"version": "1.6.1.0"
}
@@ -1,5 +0,0 @@
sync_info =
user_id =
setting_id =
base_id = GP004
updated_time = 1736606291
@@ -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"
}
-104
View File
@@ -1,104 +0,0 @@
# 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
}
}
}
]
-139
View File
@@ -1,139 +0,0 @@
# 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
}
}
}
]
-266
View File
@@ -1,266 +0,0 @@
# 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" }
]
-195
View File
@@ -1,195 +0,0 @@
[colors]
black = #BB000000
blue = #0288D1
blue-light = #B3E5FC
pink = #E91E63
pink-light = #FFCDD2
alert = #E91E63
white = #FFFFFF
[bar/aqua]
width = 100%
height = 34
radius = 0.0
fixed-center = true
background = ${colors.black}
foreground = ${colors.white}
monitor = ${env:MONITOR:fallback-value}
line-size = 0
line-color = ${colors.pink}
border-size = 0
border-color = ${colors.black}
padding-left = 0
padding-right = 3
module-margin-left = 1
module-margin-right = 3
font-0 = SF Pro Display:semibold:fixed:pixelsize=17;3
; Version 4.7
font-1 = FontAwesome Regular:style=Regular:pixelsize=17
; Version 5 Regular
font-2 = Font Awesome 5 Free Regular:pixelsize=8;
; Version 5 Solid
font-3 = Font Awesome 5 Free Solid:pixelsize=15;2
; Version 5 Brands
font-4 = Font Awesome 5 Brands:pixelsize=18;1
font-5 = Font Awesome 5 Free Solid:pixelsize=70;3
modules-left = i3
modules-center = xwindow
modules-right = backlight volume network battery date
tray-position = right
tray-padding = 2
[module/xwindow]
type = internal/xwindow
label = %title:0:80:...%
format-background = ${colors.black}
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false
strip-wsnumbers = true
fuzzy-match = true
label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.pink}
label-focused = %index%
label-focused-background = ${colors.blue}
label-focused-underline = ${colors.pink}
label-focused-padding = 2
label-unfocused = %index%
label-unfocused-padding = 2
label-visible = %index%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-background}
label-visible-padding = ${self.label-focused-padding}
label-urgent = %index%!
label-urgent-background = ${colors.alert}
label-urgent-padding = 2
[module/date]
type = internal/date
interval = 1.0
time = %I:%M
time-alt = %m-%d-%Y %I:%M:%S
label = %{T4}%{T-}%time%
label-alt =
format-underline = ${colors.blue}
[module/battery]
type = internal/battery
full-at = 99
time-format = %-H:%M
; $ ls -1 /sys/class/power_supply/
battery = BAT0
adapter = ADP1
poll-interval = 5
format-charging = <animation-charging><label-charging>
format-charging-underline = ${colors.blue}
label-charging = %percentage%%~%time%
format-discharging = <ramp-capacity><label-discharging>
format-discharging-underline = ${colors.blue-light}
label-discharging = %percentage%%~%time%
label-full = 100%
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
; Only applies if <animation-charging> is used
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-3 = 
animation-charging-4 = 
; Framerate in milliseconds
animation-charging-framerate = 500
[module/volume]
type = internal/alsa
format-volume = <label-volume>
label-volume =  %percentage%%
label-volume-foreground = ${root.foreground}
format-volume-underline = ${colors.blue}
format-muted-prefix = " "
label-muted =  %percentage%%
format-muted-underline = ${colors.pink}
[module/backlight]
type = internal/backlight
; Use the following command to list available cards:
; $ ls -1 /sys/class/backlight/
card = intel_backlight
format = <label>
label =  %percentage%%
format-underline = ${colors.blue}
[module/temperature]
type = internal/temperature
; Seconds to sleep between updates
; Default: 1
interval = 1
; Thermal zone to use
; To list all the zone types, run
; $ for i in /sys/class/thermal/thermal_zone*; do echo "$i: $(<$i/type)"; done
; Default: 0
thermal-zone = 0
; Full path of temperature sysfs path
; Use `sensors` to find preferred temperature source, then run
; $ for i in /sys/class/hwmon/hwmon*/temp*_input; do echo "$(<$(dirname $i)/name): $(cat ${i%_*}_label 2>/dev/null || echo $(basename ${i%_*})) $(readlink -f $i)"; done
; to find path to desired file
; Default reverts to thermal zone setting
hwmon-path = /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input
; Threshold temperature to display warning label (in degrees celsius)
; Default: 80
warn-temperature = 60
[module/network]
type = internal/network
interface = wlp3s0
interval = 5.0
unknown-as-up = true
label-connected = %essid%
label-connected-underline = ${colors.blue}
label-disconnected =
label-disconnected-underline = ${colors.pink}
[module/mouse-battery]
type = custom/script
exec = ~/bin/get-mouse-battery.sh
label =  %output%
interval = 60
[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
[global/wm]
margin-top = 0
margin-bottom = 0
-6
View File
@@ -1,6 +0,0 @@
configparser
todoist-python
tbapy
holidays
i3ipc
pyautogui
-20
View File
@@ -1,20 +0,0 @@
!/usr/bin/env bash
LIB="/usr/lib64/libpython3.11.so.1.0"
if [[ ! -f "$LIB" ]]; then
echo "Missing $LIB install python3.11-libs" >&2
exit 1
fi
# Force Resolve to use Python 3.11
export LD_PRELOAD="$LIB${LD_PRELOAD:+:$LD_PRELOAD}"
# Use XCB instead of Wayland and disable threaded OpenGL
export QT_QPA_PLATFORM=xcb export __GL_THREADED_OPTIMIZATIONS=0
# HiDPI scaling (change these if you want: e.g. 1.5, 2, 2.5)
export QT_AUTO_SCREEN_SCALE_FACTOR=0 export QT_SCALE_FACTOR=2 export QT_DEVICE_PIXEL_RATIO=2
# Library path
export LD_LIBRARY_PATH="/opt/resolve/libs:/usr/lib64${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
exec /opt/resolve/bin/resolve "$@"
@@ -1,15 +0,0 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=DaVinci Resolve
GenericName=DaVinci Resolve
Comment=Revolutionary new tools for editing, visual effects, color correction and professional audio post production, all in a single application!
Path=/opt/resolve/
#Exec=/opt/resolve/bin/resolve %u
Exec=/home/aqua/.local/bin/resolve-wrapper %U
TryExec=/home/aqua/.local/bin/resolve-wrapper
Terminal=false
MimeType=application/x-resolveproj;
Icon=/opt/resolve/graphics/DV_Resolve.png
StartupNotify=true
Name[en_US]=DaVinci Resolve
-19
View File
@@ -1,19 +0,0 @@
configuration {
modi: "window,drun,ssh,combi";
font: "sf mono medium 24";
fixed-num-lines: true;
show-icons: true;
terminal: "alacritty";
case-sensitive: false;
sidebar-mode: false;
combi-modi: "window,drun,run,ssh";
scroll-method: 0;
click-to-exit: true;
display-window: "window";
display-run: "run";
display-ssh: "ssh";
display-drun: "drun";
display-combi: "combi";
}
@import "./themes/aqua.rasi"
-142
View File
@@ -1,142 +0,0 @@
/******************************************************************************
* ROFI Color theme
* User: AquaMorph
* Copyright: Christian Colglazier
******************************************************************************/
* {
white: #ffffff;
pink: #E91E63;
pink-light: #FFCDD2;
blue: #0288D1;
blue-light: #B3E5FC;
transparent-background: rgba ( 0, 0, 0, 0 % );
foreground: @pink-light;
background: rgba ( 0, 0, 0, 70 % );
normal-foreground: @foreground;
normal-background: @transparent-background;
active-foreground: @pink;
active-background: @transparent-background;
urgent-foreground: @red;
urgent-background: @transparent-background;
selected-normal-foreground: @white;
selected-normal-background: @pink;
selected-active-foreground: @white;
selected-active-background: @pink;
selected-urgent-foreground: @white;
selected-urgent-background: @pink;
alternate-normal-foreground: @foreground;
alternate-normal-background: @transparent-background;
alternate-active-foreground: @active-foreground;
alternate-active-background: @transparent-background;
alternate-urgent-foreground: @urgent-foreground;
alternate-urgent-background: @transparent-background;
separatorcolor: @blue;
/* Main element styles */
border-color: @blue;
spacing: 2;
background-color: @transparent-background;
}
window {
background-color: @background;
border: 4;
padding: 20;
width: 30em;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 1px dash 0px 0px ;
border-color: @separatorcolor;
padding: 1px ;
}
textbox {
text-color: @foreground;
}
listview {
fixed-height: 0;
border: 1px dash 0px 0px ;
border-color: @separatorcolor;
spacing: 2px ;
scrollbar: false;
padding: 8px 0px 0px 0px;
}
element {
border: 0;
padding: 1px 0px 1px 1px;
}
element normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
mode-switcher {
border: 2px dash 0px 0px ;
border-color: @separatorcolor;
}
button selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px ;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
-4
View File
@@ -1,4 +0,0 @@
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess"
-2
View File
@@ -1,2 +0,0 @@
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="2485", ATTR{idProduct}=="50e0", RUN=="systemctl --user start es-9"
ACTION=="remove", SUBSYSTEM=="usb", ATTR{idVendor}=="2485", ATTR{idProduct}=="50e0", RUN=="systemctl --user stop es-9"
-926
View File
@@ -1,926 +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'}
#
# 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.'
}
# 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='/api/models'
else
model_path='/api/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='/api/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}
-11
View File
@@ -1,11 +0,0 @@
#! /bin/bash
# Load user settings from config file.
. ~/.config/settings.conf
for file in *.aax; do
convertedFile="./${file%%.*}.m4b"
if [ ! -f "$convertedFile" ]; then
ffmpeg -y -activation_bytes ${activation_bytes} -i ./${file} -codec copy $convertedFile
fi
done
-159
View File
@@ -1,159 +0,0 @@
#!/bin/bash
# Script to manuage audio mixing the the main audio interface.
# Import library
source $(dirname ${BASH_SOURCE[0]})/audio-lib.sh
INTERFACE_NAME='Clarett+ 8Pre'
INTERFACE_NUM=$(getCardNumber $INTERFACE_NAME)
checkCard "$INTERFACE_NAME" "$INTERFACE_NUM"
# Sets the volume levels of the first mono instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setMonoOne() {
setMono $INTERFACE_NUM 1 $1 $2 $3
}
# Sets the volume levels of the second mono instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setMonoTwo() {
setMono $INTERFACE_NUM 2 $1 $2 $3
}
# Sets the volume levels of the third mono instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setMonoThree() {
setMono $INTERFACE_NUM 3 $1 $2 $3
}
# Sets the volume levels of the first stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoOne() {
setStereo $INTERFACE_NUM 5 $1 $2 $3
}
# Sets the volume levels of the second stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoTwo() {
setStereo $INTERFACE_NUM 7 $1 $2 $3
}
# Sets the volume levels of the third stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoThree() {
setStereo $INTERFACE_NUM 9 $1 $2 $3
}
# Sets the volume levels of the fourth stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoFour() {
setStereo $INTERFACE_NUM 11 $1 $2 $3
}
# Sets the volume levels of the fifth stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoFive() {
setStereo $INTERFACE_NUM 13 $1 $2 $3
}
# Sets the volume levels of the sixth stereo instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setStereoSix() {
setStereo $INTERFACE_NUM 15 $1 $2 $3
}
# Sets the volume levels of the studio microphone.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setMic() {
setMono $INTERFACE_NUM 4 $1 $2 $3
}
# Sets the volume levels of the computer.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setComputerAudio() {
setStereo $INTERFACE_NUM 17 $1 $2 $3
}
# Sets the volume levels of all instrument.
#
# $1 monitor volume
# $2 first headphone volume
# $3 second headphone volume
function setInstruments() {
setMonoOne $1 $2 $3
setMonoTwo $1 $2 $3
setMonoThree $1 $2 $3
setStereoOne $1 $2 $3
setStereoTwo $1 $2 $3
setStereoThree $1 $2 $3
setStereoFour $1 $2 $3
setStereoFive $1 $2 $3
setStereoSix $1 $2 $3
}
function DAWMode() {
setInstruments $MUTE
setMic $MUTE
setComputerAudio $ZERO_DB
}
function NormalMode() {
setInstruments $ZERO_DB
setMic $MUTE
setComputerAudio $ZERO_DB
}
function PrintHelp() {
echo AquaMixer
echo '-h --help print out help options'
echo '-d --daw set interface to DAW mode'
echo '-n --normal set interface to normal mode'
exit 0
}
for var in "$@"; do
if [ $var == '-h' ] || [ $var == '--help' ]; then
PrintHelp
elif [ $var == '-d' ] || [ $var == '--daw' ]; then
DAWMode
elif [ $var == '-n' ] || [ $var == '--normal' ]; then
NormalMode
fi
done
-121
View File
@@ -1,121 +0,0 @@
# Mix names
MONITOR_LEFT='A'
MONITOR_RIGHT='B'
HEADPHONE_01_LEFT='C'
HEADPHONE_01_RIGHT='D'
HEADPHONE_02_LEFT='E'
HEADPHONE_02_RIGHT='F'
BLANK_LEFT="G"
BLANK_RIGHT='H'
# Level constants
MUTE='0'
ZERO_DB='0db'
# Formats a number to match the matrix numbering.
function formatMatrixNum() {
printf "%02d" $1
}
# Returns audio card number with matching card name.
function getCardNumber() {
echo $(cat /proc/asound/cards | grep -m 1 $1 | grep -Po '\d{1,2}' | head -1)
}
# Checks if the card exists and if not exits.
#
# $1 card name
# $2 card number
function checkCard() {
if [ -z "$2" ]; then
echo $1 not connected
exit 1
else
echo $1 found at hw:$2
fi
}
# Prints a list of all controls for the given sound card.
function printControls() {
amixer -c $1 controls
}
# Sets a mix to a level.
#
# $1 card number
# $2 matrix number
# $3 mix channel
function setMix() {
amixer -c $1 set "Mix $3 Input $(formatMatrixNum $2)" $4
}
# Sets the volume levels for a mono mix.
#
# $1 card number
# $2 matrix number
# $3 mix left channel
# $4 mix right channel
# $5 volume
function setMonoMix() {
setMix $1 $2 $3 $5
setMix $1 $2 $4 $5
}
# Sets the volume levels for a stereo mix.
#
# $1 card number
# $2 matrix number
# $3 mix left channel
# $4 mix right channel
# $5 volume
function setStereoMix() {
matrix=$2
setMix $1 $matrix $3 $5
setMix $1 $matrix $4 $MUTE
setMix $1 $((matrix+1)) $3 $MUTE
setMix $1 $((matrix+1)) $4 $5
}
# Sets the volume levels for a mono mix for several outputs.
#
# $1 card number
# $2 matrix number
# $3 mix left channel
# $4 mix right channel
# $5 monitor volume
# $6 first headphone volume
# $7 second headphone volume
function setMono() {
monitor=$3
headphone1=$4
headphone2=$5
if [ -n $headphone1 ]; then headphone1=$monitor; fi
if [ -n $headphone2 ]; then headphone2=$monitor; fi
setMonoMix $1 $2 $MONITOR_LEFT $MONITOR_RIGHT $monitor
setMonoMix $1 $2 $HEADPHONE_01_LEFT $HEADPHONE_01_RIGHT $headphone1
setMonoMix $1 $2 $HEADPHONE_02_LEFT $HEADPHONE_02_RIGHT $headphone2
setMonoMix $1 $2 $BLANK_LEFT $BLANK_RIGHT $MUTE
}
# Sets the volume levels for a stereo mix for several outputs.
#
# $1 card number
# $2 matrix number
# $3 mix left channel
# $4 mix right channel
# $5 monitor volume
# $6 first headphone volume
# $7 second headphone volume
function setStereo() {
monitor=$3
headphone1=$4
headphone2=$5
if [ -n $headphone1 ]; then headphone1=$monitor; fi
if [ -n $headphone2 ]; then headphone2=$monitor; fi
setStereoMix $1 $2 $MONITOR_LEFT $MONITOR_RIGHT $monitor
setStereoMix $1 $2 $HEADPHONE_01_LEFT $HEADPHONE_01_RIGHT $headphone1
setStereoMix $1 $2 $HEADPHONE_02_LEFT $HEADPHONE_02_RIGHT $headphone2
setStereoMix $1 $2 $BLANK_LEFT $BLANK_RIGHT $MUTE
}
-11
View File
@@ -1,11 +0,0 @@
#!/bin/bash
# Script to add another audio interface if available.
DEVICE_NAME='ES-8'
DEVICE_NUM=$(getCardNumber $DEVICE_NAME)
checkCard $DEVICE_NAME $DEVICE_NUM
# Start up audio interface
alsa_in -d hw:$DEVICENUM -j "$DEVICENAME In" -q 1 &
alsa_out -d hw:$DEVICENUM -j "$DEVICENAME Out" -q 1 &
-17
View File
@@ -1,17 +0,0 @@
#!/bin/bash
# Script to add another audio interface if available.
# Import library
source $(dirname $(realpath ${BASH_SOURCE[0]}))/audio-lib.sh
DEVICE_NAME='ES-9'
DEVICE_NUM=$(getCardNumber $DEVICE_NAME)
checkCard $DEVICE_NAME $DEVICE_NUM
# Start up ES-5
pkill es-5-pipewire || true
/opt/es-5-pipewire/es-5-pipewire >/dev/null 2>/dev/null &
sleep 0.1
jack_connect ES-5:output "$DEVICE_NAME:playback_SL" || true
jack_connect ES-5:output "$DEVICE_NAME:playback_AUX6" || true
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
# Script to stop ES-9 audio interface
pkill alsa_in
pkill alsa_out
pkill es-5-pipewire
-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env sh
# Script to bring up a prompt to set synth power state.
current='Keep current state'
off='Power synths off'
on='Power synths on'
selected=$(echo -e "${current}\n${off}\n${on}" | rofi -dmenu -p \
'Change synth power' -theme ~/.config/rofi/themes/aqua)
if [ "$selected" == "$off" ]; then
python ~/.config/scripts/audio/synth-power.py -o
elif [ "$selected" == "$on" ]; then
python ~/.config/scripts/audio/synth-power.py -d
fi
-63
View File
@@ -1,63 +0,0 @@
#!/usr/bin/env python3
# Program to control synthesizers power state.
import argparse
import configparser
import os,sys,inspect
currentDir = os.path.dirname(os.path.abspath(
inspect.getfile(inspect.currentframe())))
parentDir = os.path.dirname(currentDir)
sys.path.insert(0, parentDir)
from homeassistant import HomeAssistant
# Parse settings config
SCRIPT_DIR = os.path.abspath(os.path.dirname(sys.argv[0]))
configString = '[Settings]\n' + open(SCRIPT_DIR + '/../../settings.conf').read()
configParser = configparser.RawConfigParser()
configParser.read_string(configString)
# Load needed credentials
HA_IP = configParser.get('Settings', 'HA_IP')
HA_TOKEN = configParser.get('Settings', 'HA_TOKEN')
# Set power state of the Eurorack.
def setEurorackPower(state):
ha.setOnOff('switch.eurorack_lower', state)
ha.setOnOff('switch.eurorack_top', state)
# Set power state of the Behringer DeepMind 12.
def setDeepMind12Power(state):
ha.setOnOff('switch.deepmind_12', state)
# Set power state of the ASM Hydrasynth.
def setHydrasynthPower(state):
ha.setOnOff('switch.hydrasynth', state)
# Set power state of the Arturia MatrixBrute.
def setMatrixBrutePower(state):
ha.setOnOff('switch.matrixbrute', state)
# Set power state of all synthesizers.
def setSynthsPower(state):
setEurorackPower(state)
setDeepMind12Power(state)
setHydrasynthPower(state)
setMatrixBrutePower(state)
parser = argparse.ArgumentParser(
description='Control power state of synthesizers.')
parser.add_argument('-d', '--daw', action='store_true',
help='enable DAW mode',
dest='daw', default=False, required=False)
parser.add_argument('-o', '--off', action='store_true',
help='turn all synths off',
dest='off', default=False, required=False)
args = parser.parse_args()
ha = HomeAssistant(HA_IP, HA_TOKEN)
if args.daw:
setSynthsPower(True)
elif args.off:
setSynthsPower(False)
-88
View File
@@ -1,88 +0,0 @@
#! /bin/bash
# Kill Pulse.
function killPulse() {
systemctl --user stop pulseaudio.socket
systemctl --user stop pulseaudio.service
pulseaudio -k
killall pulseaudio
}
# Start Pulseaudio properly.
function fixPulse() {
PULSE="$(alsamixer 2>&1 | killall alsamixer)"
if [[ $PULSE == *'Connection refused'* ]]; then
echo 'Fixing Pulseaudio'
killPulse
sleep 0.1
pulseaudio -D
fixPulse
else
echo 'Pulseaudio is working correctly'
fi
}
# Start up programs that use audio.
function launchi3() {
if [ -z "$skipi3" ]; then
echo Opening i3wm sound workspaces
sleep .1 && i3-msg 'workspace 5; exec brave-browser'
#sleep 5.1 && python ~/bin/start-firefox.py
fi
}
# Set up sinks.
function setupSinks() {
pactl set-default-sink speakers
pactl set-default-source sm7b
}
# Connect sinks to audio interface
function connectSinks() {
pw-link speakers:monitor_FL alsa_output.usb-Focusrite_Clarett__8Pre_00002325-00.pro-output-0:playback_AUX0
pw-link speakers:monitor_FR alsa_output.usb-Focusrite_Clarett__8Pre_00002325-00.pro-output-0:playback_AUX1
pw-link alsa_input.usb-Focusrite_Clarett__8Pre_00002325-00.pro-input-0:capture_AUX3 sm7b:input_FL
pw-link alsa_input.usb-Focusrite_Clarett__8Pre_00002325-00.pro-input-0:capture_AUX3 sm7b:input_FR
return $?
}
function renameInterface() {
for n in `seq 0 17` ; do
jack_property -p -s "alsa:pcm:2:hw:2,0:capture:capture_${n}" http://jackaudio.org/metadata/pretty-name "capture_$((n+1))"
done
for n in `seq 0 19` ; do
jack_property -p -s "alsa:pcm:2:hw:2,0:playback:playback_${n}" http://jackaudio.org/metadata/pretty-name "playback_$((n+1))"
done
for n in `seq 0 19` ; do
jack_property -p -s "alsa:pcm:2:hw:2,0:playback:monitor_${n}" http://jackaudio.org/metadata/pretty-name "monitor_$((n+1))"
done
}
# Restart the Wireplumber service.
function restartWireplumber() {
systemctl --user stop wireplumber
sleep 5
systemctl --user restart wireplumber
}
# arg parser
for arg in "$@"
do
# Skip commands for i3wm
if [[ $arg == *"-s"* ]]; then
skipi3=true
fi
done
# Wire sinks
setupSinks
# Eurorack audio interface
sh ~/bin/audio/es9start.sh
launchi3
systemctl --user restart polybar
sleep 5
restartWireplumber
-10
View File
@@ -1,10 +0,0 @@
#! /bin/bash
# Load user settings from config file.
. ~/.config/settings.conf
if nc -z $nasip 80 2>/dev/null; then
mount /mnt/share/lNAS
else
echo "$nasip is unreachable"
fi
-9
View File
@@ -1,9 +0,0 @@
#! /bin/bash
# Create backup directory
mkdir -p ./converted
# Convert files
for file in *.mp4 *.MP4 *.mov *.MOV; do
ffmpeg -i $file -acodec pcm_s16le -vcodec copy ./converted/${file%%.*}.mov
done
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/env python3
import i3ipc, os
def onWindowClose(conn, win):
if(win.ipc_data['container']['window_properties']['class'] == 'Bitwig Studio'):
print(win.ipc_data['container']['window_properties']['title'])
if(win.ipc_data['container']['window_properties']['title'] !=
'DSP Performance Graph'):
os.system('sh ~/.config/scripts/audio/aquamix.sh -n')
os.system('sh ~/.config/scripts/audio/synth-power-prompt.sh')
i3 = i3ipc.Connection()
i3.on('window::close', onWindowClose)
i3.main()
-13
View File
@@ -1,13 +0,0 @@
#!/bin/bash
# Stop all polybar instances
killall -q polybar
while pgrep -x polybar >/dev/null; do sleep 0.1; done
for monitor in $(xrandr -q | grep -e "\sconnected\s" | cut -d' ' -f1); do
if [ $monitor == 'DP-2' ] || [ $monitor == 'LVDS-1' ]; then
MONITOR=$monitor polybar aqua &
fi
done
-7
View File
@@ -1,7 +0,0 @@
#!/bin/bash
# Stop all waybar instances
killall -q waybar
while pgrep -x waybar >/dev/null; do sleep 0.1; done
waybar &
-173
View File
@@ -1,173 +0,0 @@
#!/usr/bin/env python3
# Program to create a photo checklist of a given frc event.
import configparser
import datetime as dt
import re
import operator
import os
import sys
import tbapy
import todoist
# getProjectID() returns the project id that matches the name given.
def getProjectID(api, name):
for project in api.state['projects']:
if project['name'] == name:
return project['id']
print('Error: No project with the name {} found'.format(name))
exit(1)
# getChecklistName()
def getChecklistName(evemt):
return '{} Photos'.format(event['name'])
# getEventListID() returns the id of the checklist for the event and if there is none
# returns -1.
def getEventListID(items, event):
for item in items:
if item['content'] == getChecklistName(event):
return item['id']
return -1
# matchToTeamList() converts a match to two lists of teams
def matchToTeamList(match):
return match['alliances']['red']['team_keys'], match['alliances']['blue']['team_keys']
# createChecklistItem() creates a checklist item of the highest priority.
def createChecklistItem(name, api, projectID, item, date):
return api.items.add(name,
project_id=projectID,
parent_id=item['id'],
date_string=date,
priority=4)
# createPhotoChecklistItem() creates a checklist item that requires a photo.
def createPhotoChecklistItem(name, api, projectID, item, date):
return createChecklistItem('Take photo of **{}**'.format(name),
api, projectID, item, date)
# createPitList() creates a checklist for taking photos of a teams pit.
def createPitList(api, teams, projectID, checklist, date):
item = api.items.add('**Take** Pit Photos',
project_id=projectID,
parent_id=checklist['id'],
date_string=date,
priority=3)
for team in teams:
createChecklistItem('Pit photo of **{}** {}'.format(team['team_number'], team['nickname']),
api, projectID, item, date)
# createGroupsList() creates a checklist of the different groups of volenteers.
def createGroupsList(api, projectID, checklist, date):
item = api.items.add('Groups',
project_id=projectID,
parent_id=checklist['id'],
date_string=date,
priority=3)
groups = ['Judges', 'Robot Inspectors', 'Referees', 'Safety Inspectors',
'Field Reset', 'Queuers', 'CSAs', 'VC and Pit Admin']
for group in groups:
createPhotoChecklistItem(group, api, projectID, item, date)
# createWinnersList() creates a checklist of the winners of an event.
def createWinnersList(api, projectID, checklist, date):
item = api.items.add('Winners',
project_id=projectID,
parent_id=checklist['id'],
date_string=date,
priority=3)
groups = ['Chairman\'s award', 'Engineering Inspiration', 'Rookie All-Star', 'Winning Alliance',
'Winning Team 1', 'Winning Team 2', 'Winning Team 3']
for group in groups:
createPhotoChecklistItem(group, api, projectID, item, date)
# createRobotList() creates a checklist for taking photos of a team's robot.
def createRobotList(api, teams, projectID, checklist, date):
item = api.items.add('**Take** Robot Photos',
project_id=projectID,
parent_id=checklist['id'],
date_string=date,
priority=3)
for team in teams:
createChecklistItem('Robot photo of **{}** {}'.format(team['team_number'], team['nickname']),
api, projectID, item, date)
# Parse settings config
configString = '[Settings]\n' + open('../settings.conf').read()
configParser = configparser.RawConfigParser()
configParser.read_string(configString)
# Load needed credentials
tbaKey = configParser.get('Settings', 'TBAKey')
todoistToken = configParser.get('Settings', 'TodoistToken')
# Setup Todoist
api = todoist.TodoistAPI(todoistToken)
api.sync()
projectID = getProjectID(api, '🤖 Robotics')
items = api.state['items']
# Setup the Blue Alliance
tba = tbapy.TBA(tbaKey)
eventKey = sys.argv[1]
event = tba.event(eventKey)
setupDay = event['start_date']
day1 = (dt.datetime.strptime(setupDay, '%Y-%m-%d') + dt.timedelta(days=1)).strftime('%Y-%m-%d')
day2 = event['end_date']
teams = sorted(tba.event_teams(eventKey), key=operator.attrgetter('team_number'))
def firstMatch(team, matches):
for match in matches:
red, blue = matchToTeamList(match)
if team in red:
return match, 'red'
elif team in blue:
return match, 'blue'
return None, None
# Check if list already exists
eventListID = getEventListID(items, event)
if eventListID == -1:
# Create checklist
checklist = api.items.add(getChecklistName(event),
project_id=projectID,
date_string=day2,
priority=2)
# Setup
createPitList(api, teams, projectID, checklist, setupDay)
createChecklistItem('**Schedule** Judges photo', api, projectID, checklist, setupDay)
createChecklistItem('**Schedule** Inspectors photo', api, projectID, checklist, setupDay)
createChecklistItem('**Schedule** Seniors photo', api, projectID, checklist, setupDay)
createGroupsList(api, projectID, checklist, setupDay)
# Day 1
createPhotoChecklistItem('Guest Speakers', api, projectID, checklist, day1)
createRobotList(api, teams, projectID, checklist, day1)
# Day 2
createPhotoChecklistItem('Guest Speakers', api, projectID, checklist, day2)
createPhotoChecklistItem('Mentors after parade', api, projectID, checklist, day2)
createPhotoChecklistItem('Seniors', api, projectID, checklist, day2)
createPhotoChecklistItem('Alliances Representatives', api, projectID, checklist, day2)
createWinnersList(api, projectID, checklist, day2)
createChecklistItem('**Email** guest speakers and winners photos', api, projectID, checklist, day2)
else:
print('List already created')
matches = sorted(tba.event_matches(eventKey), key=operator.attrgetter('time'))
if not matches:
print('No match schedule yet')
else:
photoParentID = [item['id'] for item in items if 'parent_id' in item
and item['parent_id'] == eventListID
and 'Robot Photos' in item['content']][0]
robotPhotoList = [item for item in items if 'Robot photo of' in item['content']
and item['parent_id'] == photoParentID]
for robot in robotPhotoList:
if 'match' not in robot['content']:
team = 'frc{}'.format(re.findall(r'\d+', robot['content'])[0])
match, side = firstMatch(team, matches)
if match != None:
matchNumber = match['match_number']
matchTime = dt.datetime.fromtimestamp(match['time']).strftime('%Y-%m-%d %I:%M %p')
robot.update(date_string=matchTime, content='{} match {} {}'.format(robot['content'], matchNumber, side))
api.commit()

Some files were not shown because too many files have changed in this diff Show More