Compare commits

...

89 Commits

Author SHA1 Message Date
1101759176 Forever battle 2025-02-16 15:17:21 -05:00
04ce9dcae0 Minimal ghostty config 2025-02-16 15:17:12 -05:00
043d35f0d8 Explicitly use seqoia for git signing 2025-02-16 15:16:17 -05:00
88ea9997d5 Use ghostty in sway 2025-02-16 12:02:55 -05:00
44016ea366 Oh right perl 2024-11-30 19:45:01 -05:00
db877d5f41 Migrate alacritty config 2024-11-30 19:45:01 -05:00
d1053c6541 Good grief vim 2024-10-05 17:09:13 -04:00
ef43de9101 Ignore sqlite files mostly for ipython 2024-10-05 17:07:25 -04:00
068dd457d8 Add stuff I like to ipython profile 2024-10-05 17:06:59 -04:00
b6c3430e20 Add default ipython profile 2024-10-05 17:04:41 -04:00
39c2f883e7 Add script to combine cb uri with URL munging to access via tailscale 2024-09-21 12:35:50 -04:00
950d1a928e What hath gawd wrought 2024-09-06 14:03:42 -04:00
2e449c15bd Making a mess of CoC settings for ruff and clang 2024-09-06 14:03:18 -04:00
a337d579ec fix terminal color at the intersection of tmux and alacritty 2024-09-06 14:03:17 -04:00
f230e41216 Tweak virtualenv/python bits in p10k 2024-09-06 14:03:17 -04:00
946c21e03f Fun with work-ish zsh stuff 2024-09-06 14:02:56 -04:00
f27cf30bd9 Add asdf plugin 2024-07-15 23:11:11 -04:00
8cb46e9a92 Add oh-my-zsh podman plugin 2024-05-23 12:20:33 -04:00
b1b24ba1ed Somewhat magical symfony completion 2024-05-20 11:31:15 -04:00
d4e51b6cd2 Do C style goop 2024-05-20 11:30:26 -04:00
dc30944a89 Updating many thermal and status things 2023-12-31 16:44:44 -05:00
a500a63a53 Minor modernizing of i3wrapper 2023-12-30 13:02:43 -05:00
f54f8bd5a8 Migrate alacritty config 2023-12-30 09:52:39 -05:00
72eee70488 Tofu time 2023-12-09 22:56:00 -05:00
306d54c05d Alacritty config cleanups and using themes 2023-11-17 10:32:19 -05:00
9c03139641 Switch back to dracula vim theme 2023-11-17 10:31:49 -05:00
c9703e735b Please gpg use this tty 2023-11-13 18:30:49 -05:00
6b498fcf35 Trimming cdpath, adding azure plugin, bumping gimme version 2023-11-13 10:53:12 -05:00
dc73294990 Recognize more virtualenv names in p10k 2023-11-13 10:51:04 -05:00
bfe70973e0 Always sign annotated tags 2023-11-13 10:51:04 -05:00
fca5263cf2 Moving color scheme bits in alacritty config 2023-11-13 10:51:04 -05:00
81990d68c5 Too many vimrc changes 2023-11-13 10:51:04 -05:00
0bd59a9115 Türn ôn fün ĉháràctërs 2023-11-12 09:20:44 -05:00
fe187070f3 Boop the cups 2023-11-04 13:03:17 -04:00
a7be93368a Bump default nvm node 2023-11-01 20:50:48 -04:00
9e967c0d1b Pointing at correct signing subkey 2023-11-01 20:46:46 -04:00
830a9f4ef3 Use symbolic pulseaudio devices in bindsym mappings 2023-10-01 09:28:09 -04:00
0a7779ea5e Slight sway bar tweak 2023-09-24 10:49:46 -04:00
7307c46bc3 keyboard goop + better background (for me) 2023-09-24 09:16:27 -04:00
77144a920e Use specific version in gimme 2023-09-21 00:06:01 -04:00
f121ee555f Use wofi in sway land 2023-09-21 00:05:28 -04:00
0dd992eb2f Use systemd ssh-agent user unit socket if available 2023-09-13 00:02:04 -04:00
557e9c690d Add gammastep config 2023-09-13 00:01:49 -04:00
4b967c6dd2 More fun with sway 2023-09-12 19:50:57 -04:00
32c46f2f8d One must toggle and tmpl 2023-09-12 19:35:01 -04:00
b97e96156a Add a sway config 2023-09-12 19:34:36 -04:00
1edb6bdf6d Update to latest alacritty config style 2023-05-14 08:37:21 -04:00
d32ebf77a6 Coc magic 2023-03-01 09:26:47 -05:00
79cbb1d10b Install executable correctly 2023-02-28 16:45:37 -05:00
5ddd23b1d0 Add a full script version of git-sweep
with a smidge more resilience
2023-02-28 16:43:49 -05:00
0390fdb43d Add alias for git sweep 2023-02-28 14:12:55 -05:00
31e7c23c8d Adding and configuring minimap.vim 2023-02-08 11:51:12 -05:00
ebb5b6db13 Attempt to udev better 2023-02-08 11:51:12 -05:00
4c5e73305f One must have access to one's nix 2023-01-28 12:00:26 -05:00
86c087e73b Forcing self to think 2023-01-28 12:00:26 -05:00
070ffaa644 Switch alacritty to windowed 2023-01-10 11:47:08 -05:00
ebccb12337 Use comma-t for Black 2023-01-10 11:46:55 -05:00
6a8f59aa10 Getting messy with powerlevel10k 2022-12-08 11:47:49 -05:00
4c4fc1ec38 Track vim coc bits 2022-12-06 08:19:31 -05:00
a741674a52 Brewing a bit more 2022-11-18 12:07:36 -05:00
2e95d6f84f No more powerline goop yay 2022-11-18 12:06:54 -05:00
70df31a6f8 Always gimme stable 2022-11-12 21:50:13 -05:00
60e6fc730e Update alacritty config per warning + xinput bits per touchscreen 2022-11-11 08:08:17 -05:00
2880bf246d More go mappings 2022-10-27 10:12:21 -04:00
de7fb8f43b Get serious with sshfs 2022-07-13 10:52:20 -04:00
38f4b4591d Do powerline setup better hopefully 2022-07-01 14:48:24 -04:00
ba0a9fbc57 Minor betterment of mount-jool "toy" 2022-06-30 09:57:43 -04:00
219cd1cfed Vim bit for GoReferrers 2022-06-30 09:54:29 -04:00
177d9e8986 Merge branch 'main' of git.meatballhat.com:x/dotfiles 2022-04-28 16:24:03 -04:00
080f32ea0c Fun with go, node, and brew 2022-04-28 16:22:38 -04:00
26833f2fa9 Making a whole mess with vim things egad 2022-04-28 16:21:59 -04:00
e94d0ea6f6 Making messes with xinput and minirc 2022-04-21 11:40:29 -04:00
b115edd210 Leftwm and ssh session goop 2022-03-06 13:46:07 -05:00
376933605c probably hashicorp stuff related 2022-01-15 17:19:11 -05:00
838f675332 Re-remove outdated rust zsh plugins 2022-01-03 10:25:24 -05:00
d9b18382e9 Merge branch 'main' of git.meatballhat.com:x/dotfiles 2022-01-03 10:25:00 -05:00
57046d1197 zsh bits 2022-01-03 10:24:30 -05:00
ee60012b56 Some coc goop 2022-01-03 10:23:57 -05:00
01cf73c62d Doing silly things with window management 2021-12-27 10:39:34 -05:00
26f0098be6 More fun with X 2021-12-20 17:11:53 -05:00
088f42edba Getting updated with shims and direnv and go version 2021-12-20 17:11:52 -05:00
8ae7aee3e7 Merge branch 'main' of https://git.meatballhat.com/x/dotfiles 2021-09-24 21:38:58 -04:00
baa0ef7a1a Switch to default gimme version 1.17.1 2021-09-24 21:38:45 -04:00
e60f59e207 Reorder path to please pyenv 2021-09-24 21:38:16 -04:00
c5b331040d Remove duplicate vimrc line 2021-09-24 21:37:50 -04:00
dec0c9cbb9 Use updated alacrity window opacity syntax 2021-09-24 21:37:02 -04:00
3d9a2f084a bye 2021-08-15 16:18:51 -04:00
e51d00fb7f Add an alias for the pg 2021-08-15 16:17:01 -04:00
ea6e5522cc Add zsh plugin for minikube 2021-07-28 13:46:58 -04:00
42 changed files with 5253 additions and 581 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
/janus/*
byobu/.ssh-agent
*.sqlite

1
.python-version Normal file
View File

@@ -0,0 +1 @@
3.12.0

View File

@@ -1,4 +0,0 @@
---
language: generic
sudo: false
script: make

View File

@@ -1,17 +1,23 @@
SUDO ?= sudo
TOP_SOURCES := $(shell git ls-files | grep -vE 'README|Makefile|^config|^\.git|^\.travis' | grep -v /)
CONFIG_SOURCES := $(shell git ls-files config)
LOCAL_BIN_SOURCES := $(shell git ls-files local/bin)
LOCAL_BG_SOURCES := $(shell git ls-files local/share/backgrounds)
TARGETS := \
$(patsubst %,$(HOME)/.%,$(TOP_SOURCES)) \
$(patsubst %,$(HOME)/.%,$(CONFIG_SOURCES)) \
$(patsubst %,$(HOME)/.%,$(LOCAL_BIN_SOURCES)) \
$(HOME)/.config/i3/config
$(patsubst %,$(HOME)/.%,$(LOCAL_BG_SOURCES)) \
$(HOME)/.config/i3/config \
/etc/udev/rules.d/90-trackman-marble.rules \
/usr/local/bin/handle-trackman-marble
$(HOME)/.%: %
$(RM) '$@' && mkdir -p $(dir $@) && ln -svf '$(PWD)/$^' '$@'
.PHONY: all
all: $(HOME)/.config $(HOME)/.local/bin $(TARGETS)
all: $(HOME)/.config $(HOME)/.local/bin $(HOME)/.local/share/backgrounds $(TARGETS)
$(HOME)/.config:
mkdir -p $@
@@ -19,6 +25,15 @@ $(HOME)/.config:
$(HOME)/.local/bin:
mkdir -p $@
$(HOME)/.local/share/backgrounds:
mkdir -p $@
/etc/udev/rules.d/90-trackman-marble.rules: udev/rules.d/90-trackman-marble.rules
$(SUDO) install -m 0644 -v udev/rules.d/90-trackman-marble.rules $@
/usr/local/bin/handle-trackman-marble: udev/handle-trackman-marble
$(SUDO) install -m 0755 -v udev/handle-trackman-marble $@
.PHONY: echo
echo:
@echo TOP_SOURCES=$(TOP_SOURCES)

View File

@@ -0,0 +1,599 @@
[bell]
animation = "EaseOutExpo"
color = "#ffffff"
duration = 0
[cursor]
unfocused_hollow = true
[debug]
persistent_logging = false
render_timer = false
[font]
size = 6.5
[font.bold]
family = "Comic Code"
style = "Bold"
[font.glyph_offset]
x = 0
y = 0
[font.italic]
family = "Comic Code"
style = "Italic"
[font.normal]
family = "Comic Code"
[font.offset]
x = 0
y = 0
[[hints.enabled]]
command = "xdg-open"
post_processing = true
regex = "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)[^\u0000-\u001F\u007F-Ÿ<>\"\\s{-}\\^⟨⟩`]+"
[hints.enabled.binding]
key = "U"
mods = "Control|Shift"
[hints.enabled.mouse]
enabled = true
mods = "None"
[[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 = ",│`|:\"' ()[]{}<>"
[terminal.shell]
args = ["-l"]
program = "/bin/zsh"
[window]
decorations = "full"
dynamic_padding = false
dynamic_title = true
opacity = 1.0
startup_mode = "Windowed"
[window.padding]
x = 2
y = 2
[general]
live_config_reload = true
import = ["~/.config/alacritty/themes/themes/tender.toml"]
[terminal]

View File

@@ -1,400 +0,0 @@
---
shell:
program: /bin/zsh
args:
- -l
window:
dynamic_title: true
dimensions:
columns: 0
lines: 0
padding:
x: 0
y: 0
dynamic_padding: false
decorations: none
startup_mode: Maximized
scrolling:
history: 10000
multiplier: 3
font:
normal:
family: Comic Code
bold:
family: Comic Code
style: Bold
italic:
family: Comic Code
style: Italic
size: 6.5
offset:
x: 0
y: 0
glyph_offset:
x: 0
y: 0
use_thin_strokes: true
debug:
render_timer: false
persistent_logging: false
draw_bold_text_with_bright_colors: true
colors:
primary:
background: '0x282a36'
foreground: '0xf8f8f2'
normal:
black: '0x000000'
red: '0xff5555'
green: '0x50fa7b'
yellow: '0xf1fa8c'
blue: '0xcaa9fa'
magenta: '0xff79c6'
cyan: '0x8be9fd'
white: '0xbfbfbf'
bright:
black: '0x575b70'
red: '0xff6e67'
green: '0x5af78e'
yellow: '0xf4f99d'
blue: '0xcaa9fa'
magenta: '0xff92d0'
cyan: '0x9aedfe'
white: '0xe6e6e6'
bell:
animation: EaseOutExpo
duration: 0
color: '0xffffff'
background_opacity: 1.0
mouse_bindings:
- mouse: Middle
action: PasteSelection
mouse:
double_click:
threshold: 300
triple_click:
threshold: 300
hide_when_typing: false
hints:
enabled:
- regex: "(mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
command: xdg-open
post_processing: true
mouse:
enabled: true
mods: None
binding:
key: U
mods: Control|Shift
selection:
semantic_escape_chars: ',│`|:"'' ()[]{}<>'
save_to_clipboard: false
cursor:
style: Block
unfocused_hollow: true
live_config_reload: true
enable_experimental_conpty_backend: false
alt_send_esc: true
key_bindings:
- key: Paste
action: Paste
- key: Copy
action: Copy
- key: L
mods: Control
action: ClearLogNotice
- key: L
mods: Control
chars: "\f"
- key: Home
mods: Alt
chars: "\e[1;3H"
- key: Home
chars: "\eOH"
mode: AppCursor
- key: Home
chars: "\e[H"
mode: "~AppCursor"
- key: End
mods: Alt
chars: "\e[1;3F"
- key: End
chars: "\eOF"
mode: AppCursor
- key: End
chars: "\e[F"
mode: "~AppCursor"
- key: PageUp
mods: Shift
action: ScrollPageUp
mode: "~Alt"
- key: PageUp
mods: Shift
chars: "\e[5;2~"
mode: Alt
- key: PageUp
mods: Control
chars: "\e[5;5~"
- key: PageUp
mods: Alt
chars: "\e[5;3~"
- key: PageUp
chars: "\e[5~"
- key: PageDown
mods: Shift
action: ScrollPageDown
mode: "~Alt"
- key: PageDown
mods: Shift
chars: "\e[6;2~"
mode: Alt
- key: PageDown
mods: Control
chars: "\e[6;5~"
- key: PageDown
mods: Alt
chars: "\e[6;3~"
- key: PageDown
chars: "\e[6~"
- key: Tab
mods: Shift
chars: "\e[Z"
- key: Back
chars: "\x7F"
- key: Back
mods: Alt
chars: "\e\x7F"
- key: Insert
chars: "\e[2~"
- key: Delete
chars: "\e[3~"
- key: Left
mods: Shift
chars: "\e[1;2D"
- key: Left
mods: Control
chars: "\e[1;5D"
- key: Left
mods: Alt
chars: "\e[1;3D"
- key: Left
chars: "\e[D"
mode: "~AppCursor"
- key: Left
chars: "\eOD"
mode: AppCursor
- key: Right
mods: Shift
chars: "\e[1;2C"
- key: Right
mods: Control
chars: "\e[1;5C"
- key: Right
mods: Alt
chars: "\e[1;3C"
- key: Right
chars: "\e[C"
mode: "~AppCursor"
- key: Right
chars: "\eOC"
mode: AppCursor
- key: Up
mods: Shift
chars: "\e[1;2A"
- key: Up
mods: Control
chars: "\e[1;5A"
- key: Up
mods: Alt
chars: "\e[1;3A"
- key: Up
chars: "\e[A"
mode: "~AppCursor"
- key: Up
chars: "\eOA"
mode: AppCursor
- key: Down
mods: Shift
chars: "\e[1;2B"
- key: Down
mods: Control
chars: "\e[1;5B"
- key: Down
mods: Alt
chars: "\e[1;3B"
- key: Down
chars: "\e[B"
mode: "~AppCursor"
- key: Down
chars: "\eOB"
mode: AppCursor
- key: F1
chars: "\eOP"
- key: F2
chars: "\eOQ"
- key: F3
chars: "\eOR"
- key: F4
chars: "\eOS"
- key: F5
chars: "\e[15~"
- key: F6
chars: "\e[17~"
- key: F7
chars: "\e[18~"
- key: F8
chars: "\e[19~"
- key: F9
chars: "\e[20~"
- key: F10
chars: "\e[21~"
- key: F11
chars: "\e[23~"
- key: F12
chars: "\e[24~"
- key: F1
mods: Shift
chars: "\e[1;2P"
- key: F2
mods: Shift
chars: "\e[1;2Q"
- key: F3
mods: Shift
chars: "\e[1;2R"
- key: F4
mods: Shift
chars: "\e[1;2S"
- key: F5
mods: Shift
chars: "\e[15;2~"
- key: F6
mods: Shift
chars: "\e[17;2~"
- key: F7
mods: Shift
chars: "\e[18;2~"
- key: F8
mods: Shift
chars: "\e[19;2~"
- key: F9
mods: Shift
chars: "\e[20;2~"
- key: F10
mods: Shift
chars: "\e[21;2~"
- key: F11
mods: Shift
chars: "\e[23;2~"
- key: F12
mods: Shift
chars: "\e[24;2~"
- key: F1
mods: Control
chars: "\e[1;5P"
- key: F2
mods: Control
chars: "\e[1;5Q"
- key: F3
mods: Control
chars: "\e[1;5R"
- key: F4
mods: Control
chars: "\e[1;5S"
- key: F5
mods: Control
chars: "\e[15;5~"
- key: F6
mods: Control
chars: "\e[17;5~"
- key: F7
mods: Control
chars: "\e[18;5~"
- key: F8
mods: Control
chars: "\e[19;5~"
- key: F9
mods: Control
chars: "\e[20;5~"
- key: F10
mods: Control
chars: "\e[21;5~"
- key: F11
mods: Control
chars: "\e[23;5~"
- key: F12
mods: Control
chars: "\e[24;5~"
- key: F1
mods: Alt
chars: "\e[1;6P"
- key: F2
mods: Alt
chars: "\e[1;6Q"
- key: F3
mods: Alt
chars: "\e[1;6R"
- key: F4
mods: Alt
chars: "\e[1;6S"
- key: F5
mods: Alt
chars: "\e[15;6~"
- key: F6
mods: Alt
chars: "\e[17;6~"
- key: F7
mods: Alt
chars: "\e[18;6~"
- key: F8
mods: Alt
chars: "\e[19;6~"
- key: F9
mods: Alt
chars: "\e[20;6~"
- key: F10
mods: Alt
chars: "\e[21;6~"
- key: F11
mods: Alt
chars: "\e[23;6~"
- key: F12
mods: Alt
chars: "\e[24;6~"
- key: F1
mods: Super
chars: "\e[1;3P"
- key: F2
mods: Super
chars: "\e[1;3Q"
- key: F3
mods: Super
chars: "\e[1;3R"
- key: F4
mods: Super
chars: "\e[1;3S"
- key: F5
mods: Super
chars: "\e[15;3~"
- key: F6
mods: Super
chars: "\e[17;3~"
- key: F7
mods: Super
chars: "\e[18;3~"
- key: F8
mods: Super
chars: "\e[19;3~"
- key: F9
mods: Super
chars: "\e[20;3~"
- key: F10
mods: Super
chars: "\e[21;3~"
- key: F11
mods: Super
chars: "\e[23;3~"
- key: F12
mods: Super
chars: "\e[24;3~"
- key: NumpadEnter
chars: "\n"

View File

@@ -0,0 +1,11 @@
[general]
temp-day=5700
temp-night=3500
fade=1
gamma=0.8
location-provider=manual
adjustment-method=wayland
[manual]
lat=40.42
lon=-79.88

48
config/ghostty/config Normal file
View File

@@ -0,0 +1,48 @@
# This is the configuration file for Ghostty.
#
# This template file has been automatically created at the following
# path since Ghostty couldn't find any existing config files on your system:
#
# /home/me/.config/ghostty/config
#
# The template does not set any default options, since Ghostty ships
# with sensible defaults for all options. Users should only need to set
# options that they want to change from the default.
#
# Run `ghostty +show-config --default --docs` to view a list of
# all available config options and their default values.
#
# Additionally, each config option is also explained in detail
# on Ghostty's website, at https://ghostty.org/docs/config.
# Config syntax crash course
# ==========================
# # The config file consists of simple key-value pairs,
# # separated by equals signs.
# font-family = Iosevka
# window-padding-x = 2
#
# # Spacing around the equals sign does not matter.
# # All of these are identical:
# key=value
# key= value
# key =value
# key = value
#
# # Any line beginning with a # is a comment. It's not possible to put
# # a comment after a config option, since it would be interpreted as a
# # part of the value. For example, this will have a value of "#123abc":
# background = #123abc
#
# # Empty values are used to reset config keys to default.
# key =
#
# # Some config options have unique syntaxes for their value,
# # which is explained in the docs for that config option.
# # Just for example:
# resize-overlay-duration = 4s 200ms
font-family = Comic Code
font-family-bold = Comic Code Bold
font-family-italic = Comic Code Italic
font-family-bold-italic = Comic Code Bold Italic

252
config/leftwm/config.toml Normal file
View File

@@ -0,0 +1,252 @@
modkey = "Mod4"
mousekey = "Mod4"
workspaces = []
tags = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
layouts = ["MainAndVertStack", "MainAndHorizontalStack", "MainAndDeck", "GridHorizontal", "EvenHorizontal", "EvenVertical", "Fibonacci", "CenterMain", "CenterMainBalanced", "Monocle", "RightWiderLeftStack", "LeftWiderRightStack"]
layout_mode = "Workspace"
scratchpad = []
disable_current_tag_swap = false
focus_behaviour = "Sloppy"
focus_new_windows = true
[[keybind]]
command = "Execute"
value = "rofi -show run"
modifier = ["modkey"]
key = "p"
[[keybind]]
command = "Execute"
value = "alacritty"
modifier = ["modkey", "Shift"]
key = "Return"
[[keybind]]
command = "CloseWindow"
modifier = ["modkey", "Shift"]
key = "q"
[[keybind]]
command = "SoftReload"
modifier = ["modkey", "Shift"]
key = "r"
[[keybind]]
command = "Execute"
value = "loginctl kill-session $XDG_SESSION_ID"
modifier = ["modkey", "Shift"]
key = "x"
[[keybind]]
command = "Execute"
value = "slock"
modifier = ["modkey", "Control"]
key = "l"
[[keybind]]
command = "ToggleFullScreen"
modifier = ["modkey", "Shift"]
key = "f"
[[keybind]]
command = "MoveToLastWorkspace"
modifier = ["modkey", "Shift"]
key = "w"
[[keybind]]
command = "SwapTags"
modifier = ["modkey"]
key = "w"
[[keybind]]
command = "MoveWindowUp"
modifier = ["modkey", "Shift"]
key = "k"
[[keybind]]
command = "MoveWindowDown"
modifier = ["modkey", "Shift"]
key = "j"
[[keybind]]
command = "MoveWindowTop"
modifier = ["modkey"]
key = "Return"
[[keybind]]
command = "FocusWindowUp"
modifier = ["modkey"]
key = "k"
[[keybind]]
command = "FocusWindowDown"
modifier = ["modkey"]
key = "j"
[[keybind]]
command = "NextLayout"
modifier = ["modkey", "Control"]
key = "k"
[[keybind]]
command = "PreviousLayout"
modifier = ["modkey", "Control"]
key = "j"
[[keybind]]
command = "FocusWorkspaceNext"
modifier = ["modkey"]
key = "l"
[[keybind]]
command = "FocusWorkspacePrevious"
modifier = ["modkey"]
key = "h"
[[keybind]]
command = "MoveWindowUp"
modifier = ["modkey", "Shift"]
key = "Up"
[[keybind]]
command = "MoveWindowDown"
modifier = ["modkey", "Shift"]
key = "Down"
[[keybind]]
command = "FocusWindowUp"
modifier = ["modkey"]
key = "Up"
[[keybind]]
command = "FocusWindowDown"
modifier = ["modkey"]
key = "Down"
[[keybind]]
command = "NextLayout"
modifier = ["modkey", "Control"]
key = "Up"
[[keybind]]
command = "PreviousLayout"
modifier = ["modkey", "Control"]
key = "Down"
[[keybind]]
command = "FocusWorkspaceNext"
modifier = ["modkey"]
key = "Right"
[[keybind]]
command = "FocusWorkspacePrevious"
modifier = ["modkey"]
key = "Left"
[[keybind]]
command = "GotoTag"
value = "1"
modifier = ["modkey"]
key = "1"
[[keybind]]
command = "GotoTag"
value = "2"
modifier = ["modkey"]
key = "2"
[[keybind]]
command = "GotoTag"
value = "3"
modifier = ["modkey"]
key = "3"
[[keybind]]
command = "GotoTag"
value = "4"
modifier = ["modkey"]
key = "4"
[[keybind]]
command = "GotoTag"
value = "5"
modifier = ["modkey"]
key = "5"
[[keybind]]
command = "GotoTag"
value = "6"
modifier = ["modkey"]
key = "6"
[[keybind]]
command = "GotoTag"
value = "7"
modifier = ["modkey"]
key = "7"
[[keybind]]
command = "GotoTag"
value = "8"
modifier = ["modkey"]
key = "8"
[[keybind]]
command = "GotoTag"
value = "9"
modifier = ["modkey"]
key = "9"
[[keybind]]
command = "MoveToTag"
value = "1"
modifier = ["modkey", "Shift"]
key = "1"
[[keybind]]
command = "MoveToTag"
value = "2"
modifier = ["modkey", "Shift"]
key = "2"
[[keybind]]
command = "MoveToTag"
value = "3"
modifier = ["modkey", "Shift"]
key = "3"
[[keybind]]
command = "MoveToTag"
value = "4"
modifier = ["modkey", "Shift"]
key = "4"
[[keybind]]
command = "MoveToTag"
value = "5"
modifier = ["modkey", "Shift"]
key = "5"
[[keybind]]
command = "MoveToTag"
value = "6"
modifier = ["modkey", "Shift"]
key = "6"
[[keybind]]
command = "MoveToTag"
value = "7"
modifier = ["modkey", "Shift"]
key = "7"
[[keybind]]
command = "MoveToTag"
value = "8"
modifier = ["modkey", "Shift"]
key = "8"
[[keybind]]
command = "MoveToTag"
value = "9"
modifier = ["modkey", "Shift"]
key = "9"

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
leftwm-command "SendWorkspaceToTag $1 $2"

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
#set background
if [ -x "$(command -v feh)" ]; then
feh --bg-scale $SCRIPTPATH/down.jpg
fi
echo "UnloadTheme" > $XDG_RUNTIME_DIR/leftwm/commands.pipe
pkill compton
pkill picom
pkill polybar

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

View File

@@ -0,0 +1,422 @@
;==========================================================
;
;
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
;
;
; To learn more about how to configure Polybar
; go to https://github.com/jaagr/polybar
;
; The README contains a lot of information
;
;==========================================================
[colors]
background = #99222222
foreground = #dfdfdf
background-alt = #99444444
foreground-alt = #FFFFFF
primary = #ffb52a
secondary = #e60053
alert = #bd2c40
[bar/mainbar0]
inherit = bar/barbase
modules-left = workspace0
[module/workspace0]
type = custom/script
exec = leftwm-state -w 0 -t $SCRIPTPATH/template.liquid
tail = true
[bar/mainbar1]
inherit = bar/barbase
modules-left = workspace1
[module/workspace1]
type = custom/script
exec = leftwm-state -w 1 -t $SCRIPTPATH/template.liquid
tail = true
[bar/mainbar2]
inherit = bar/barbase
modules-left = workspace2
[module/workspace2]
type = custom/script
exec = leftwm-state -w 2 -t $SCRIPTPATH/template.liquid
tail = true
[bar/mainbar3]
inherit = bar/barbase
modules-left = workspace3
[module/workspace3]
type = custom/script
exec = leftwm-state -w 3 -t $SCRIPTPATH/template.liquid
tail = true
[bar/barbase]
width = ${env:width}
offset-x = ${env:offsetx}
monitor = ${env:monitor}
;offset-y = ${env:y}
;width = 100%
height = 27
fixed-center = false
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 3
line-color = #f00
border-size = 0
border-color = #00000000
padding-left = 0
padding-right = 2
module-margin-left = 1
module-margin-right = 2
font-0 = misc fixed:pixelsize=10;1
font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
font-2 = wuncon siji:pixelsize=10;1
modules-center =
modules-right = filesystem xbacklight pulseaudio xkeyboard memory cpu wlan battery temperature date powermenu
tray-position = right
tray-padding = 2
cursor-click = pointer
cursor-scroll = ns-resize
[module/ewmh]
type = internal/xworkspaces
label-active = " %icon% %name% "
label-active-foreground = ${colors.foreground-alt}
label-active-background = ${colors.background-alt}
label-active-underline = ${colors.primary}
label-occupied = " %icon% %name% "
label-occupied-underline = ${colors.secondary}
label-urgent = " %icon% %name% "
label-urgent-foreground = ${colors.foreground}
label-urgent-background = ${colors.background}
label-urgent-underline = ${colors.alert}
label-empty = " %icon% %name% "
label-empty-foreground = ${colors.foreground}
[module/xwindow]
type = internal/xwindow
label = %title:0:30:...%
[module/xkeyboard]
type = internal/xkeyboard
blacklist-0 = num lock
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}
label-layout = %layout%
label-layout-underline = ${colors.secondary}
label-indicator-padding = 2
label-indicator-margin = 1
label-indicator-background = ${colors.secondary}
label-indicator-underline = ${colors.secondary}
[module/filesystem]
type = internal/fs
interval = 25
mount-0 = /
mount-1 = /home
label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%%
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
[module/bspwm]
type = internal/bspwm
label-focused = %index%
label-focused-background = ${colors.background-alt}
label-focused-underline= ${colors.primary}
label-focused-padding = 2
label-occupied = %index%
label-occupied-padding = 2
label-urgent = %index%!
label-urgent-background = ${colors.alert}
label-urgent-padding = 2
label-empty = %index%
label-empty-foreground = ${colors.foreground-alt}
label-empty-padding = 2
; Separator in between workspaces
; label-separator = |
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false
; Only show workspaces on the same output as the bar
;pin-workspaces = true
label-mode-padding = 2
label-mode-foreground = #000
label-mode-background = ${colors.primary}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-background = ${module/bspwm.label-focused-background}
label-focused-underline = ${module/bspwm.label-focused-underline}
label-focused-padding = ${module/bspwm.label-focused-padding}
; unfocused = Inactive workspace on any monitor
label-unfocused = %index%
label-unfocused-padding = ${module/bspwm.label-occupied-padding}
; visible = Active workspace on unfocused monitor
label-visible = %index%
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
; urgent = Workspace with urgency hint set
label-urgent = %index%
label-urgent-background = ${module/bspwm.label-urgent-background}
label-urgent-padding = ${module/bspwm.label-urgent-padding}
; Separator in between workspaces
; label-separator = |
[module/mpd]
type = internal/mpd
format-online = <label-song> <icon-prev> <icon-stop> <toggle> <icon-next>
icon-prev = 
icon-stop = 
icon-play = 
icon-pause = 
icon-next = 
label-song-maxlen = 25
label-song-ellipsis = true
[module/xbacklight]
type = internal/xbacklight
format = <label> <bar>
label = BL
bar-width = 10
bar-indicator = |
bar-indicator-foreground = #fff
bar-indicator-font = 2
bar-fill = ─
bar-fill-font = 2
bar-fill-foreground = #9f78e1
bar-empty = ─
bar-empty-font = 2
bar-empty-foreground = ${colors.foreground-alt}
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #f90000
label = %percentage:2%%
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colors.foreground-alt}
format-underline = #4bffdc
label = %percentage_used%%
[module/wlan]
type = internal/network
interface = wlan0
interval = 3.0
format-connected = <ramp-signal> <label-connected>
format-connected-underline = #9f78e1
label-connected = %essid%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colors.foreground-alt}
ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-3 = 
ramp-signal-4 = 
ramp-signal-foreground = ${colors.foreground-alt}
[module/date]
type = internal/date
date =  %%{F#99}%m/%d/%Y%%{F-} %%{F#fff}%I:%M %p%{F-}
date-alt = %%{F#fff}%A, %B %d, %Y %%{F#fff}%I:%M:%{F#666}%%{F#fba922}%S%%{F-} %p
;interval = 5
;date =
;date-alt = " %Y-%m-%d"
;time = %H:%M
;time-alt = %H:%M:%S
;format-prefix = 
;format-prefix-foreground = ${colors.foreground-alt}
;format-underline = #0a6cf5
;label = %date% %time%
[module/pulseaudio]
type = internal/pulseaudio
format-volume = <label-volume> <bar-volume>
label-volume = VOL %percentage%%
label-volume-foreground = ${root.foreground}
label-muted = 🔇 muted
label-muted-foreground = #666
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/alsa]
type = internal/alsa
format-volume = <label-volume> <bar-volume>
label-volume = VOL
label-volume-foreground = ${root.foreground}
format-muted-prefix = " "
format-muted-foreground = ${colors.foreground-alt}
label-muted = sound muted
bar-volume-width = 10
bar-volume-foreground-0 = #55aa55
bar-volume-foreground-1 = #55aa55
bar-volume-foreground-2 = #55aa55
bar-volume-foreground-3 = #55aa55
bar-volume-foreground-4 = #55aa55
bar-volume-foreground-5 = #f5a70a
bar-volume-foreground-6 = #ff5555
bar-volume-gradient = false
bar-volume-indicator = |
bar-volume-indicator-font = 2
bar-volume-fill = ─
bar-volume-fill-font = 2
bar-volume-empty = ─
bar-volume-empty-font = 2
bar-volume-empty-foreground = ${colors.foreground-alt}
[module/battery]
type = internal/battery
battery = BAT0
adapter = AC
full-at = 98
format-charging = <animation-charging> <label-charging>
format-charging-underline = #ffb52a
format-discharging = <animation-discharging> <label-discharging>
format-discharging-underline = ${self.format-charging-underline}
format-full-prefix = " "
format-full-prefix-foreground = ${colors.foreground-alt}
format-full-underline = ${self.format-charging-underline}
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-foreground = ${colors.foreground-alt}
animation-charging-0 = 
animation-charging-1 = 
animation-charging-2 = 
animation-charging-foreground = ${colors.foreground-alt}
animation-charging-framerate = 750
animation-discharging-0 = 
animation-discharging-1 = 
animation-discharging-2 = 
animation-discharging-foreground = ${colors.foreground-alt}
animation-discharging-framerate = 750
[module/temperature]
type = internal/temperature
thermal-zone = 0
warn-temperature = 60
format = <ramp> <label>
format-underline = #f50a4d
format-warn = <ramp> <label-warn>
format-warn-underline = ${self.format-underline}
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colors.secondary}
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-foreground = ${colors.foreground-alt}
[module/powermenu]
type = custom/menu
expand-right = true
format-spacing = 1
label-open = 
label-open-foreground = ${colors.secondary}
label-close =  cancel
label-close-foreground = ${colors.secondary}
label-separator = |
label-separator-foreground = ${colors.foreground-alt}
menu-0-0 = reboot
menu-0-0-exec = menu-open-1
menu-0-1 = power off
menu-0-1-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = sudo reboot
menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
[settings]
screenchange-reload = true
; vim:ft=dosini

View File

@@ -0,0 +1,3 @@
{% for workspace in workspaces %}
{{workspace.w}} {{workspace.x}} {{workspace.y}}
{% endfor %}

View File

@@ -0,0 +1,21 @@
{% for tag in workspace.tags %}
{% if tag.mine %}
%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}
%{F#000000}%{B#FFB52A} {{tag.name}} %{B-}%{F-}
%{A}
{% elsif tag.visible %}
%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}
%{F#000000}%{B#E60053} {{tag.name}} %{B-}%{F-}
%{A}
{% elsif tag.busy %}
%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}
%{F#FFB52A} {{tag.name}} %{F-}
%{A}
{% else tag.visible %}
%{A1:$SCRIPTPATH/change_to_tag {{workspace.index}} {{tag.index}}:}
%{F#FFFFFF} {{tag.name}} %{F-}
%{A}
{% endif %}
{% endfor %}
%{c}
{{ window_title }}

View File

@@ -0,0 +1,5 @@
border_width = 0
margin = 0
default_border_color = "#222222"
floating_border_color = "#005500"
focused_border_color = "#FFB53A"

View File

@@ -0,0 +1,38 @@
#!/usr/bin/env bash
export SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
#down the last running theme
if [ -f "/tmp/leftwm-theme-down" ]; then
/tmp/leftwm-theme-down
rm /tmp/leftwm-theme-down
fi
ln -s $SCRIPTPATH/down /tmp/leftwm-theme-down
#boot picom or compton if it exists
if [ -x "$(command -v picom)" ]; then
picom &> /dev/null &
elif [ -x "$(command -v compton)" ]; then
compton &> /dev/null &
fi
#set the theme.toml config
echo "LoadTheme $SCRIPTPATH/theme.toml" > $XDG_RUNTIME_DIR/leftwm/commands.pipe
#set background
if [ -x "$(command -v feh)" ]; then
feh --bg-scale $SCRIPTPATH/background.jpg
fi
index=0
monitor="$(polybar -m | grep +0+0 | sed s/:.*// | tac)"
leftwm-state -q -n -t $SCRIPTPATH/sizes.liquid | sed -r '/^\s*$/d' | while read -r width x y
do
barname="mainbar$index"
monitor=$monitor offsetx=$x width=$width polybar -c $SCRIPTPATH/polybar.config $barname &> /dev/null &
let index=index+1
done

11
config/rofi/config.rasi Normal file
View File

@@ -0,0 +1,11 @@
configuration {
timeout {
action: "kb-cancel";
delay: 0;
}
filebrowser {
directories-first: true;
sorting-method: "name";
}
}
@theme "/usr/share/rofi/themes/Arc-Dark.rasi"

180
config/sway/config Normal file
View File

@@ -0,0 +1,180 @@
## BEGIN (modified) defaults from /etc/sway/config {{
set $mod Mod4
set $left h
set $down j
set $up k
set $right l
set $menu wofi --show=run
output * bg ~/.local/share/backgrounds/hubble-extreme-deep-field-1214a-1920x1675.jpg fill
# Start a terminal
bindsym $mod+Return exec $term
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
# Change normal to inverse to use left mouse button for resizing and right
# mouse button for dragging.
floating_modifier $mod normal
# Reload the configuration file
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
# Move your focus around
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# Or use $mod+[up|down|left|right]
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# Move the focused window with the same, but add Shift
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# Ditto, with arrow 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
# Switch to workspace
bindsym $mod+1 workspace number 1
bindsym $mod+2 workspace number 2
bindsym $mod+3 workspace number 3
bindsym $mod+4 workspace number 4
bindsym $mod+5 workspace number 5
bindsym $mod+6 workspace number 6
bindsym $mod+7 workspace number 7
bindsym $mod+8 workspace number 8
bindsym $mod+9 workspace number 9
bindsym $mod+0 workspace number 10
# Move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number 1
bindsym $mod+Shift+2 move container to workspace number 2
bindsym $mod+Shift+3 move container to workspace number 3
bindsym $mod+Shift+4 move container to workspace number 4
bindsym $mod+Shift+5 move container to workspace number 5
bindsym $mod+Shift+6 move container to workspace number 6
bindsym $mod+Shift+7 move container to workspace number 7
bindsym $mod+Shift+8 move container to workspace number 8
bindsym $mod+Shift+9 move container to workspace number 9
bindsym $mod+Shift+0 move container to workspace number 10
# You can "split" the current object of your focus with
# $mod+b or $mod+v, for horizontal and vertical splits
# respectively.
bindsym $mod+b splith
bindsym $mod+v splitv
# Switch the current container between different layout styles
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# Make the current focus fullscreen
bindsym $mod+f fullscreen
# Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle
# Swap focus between the tiling area and the floating area
bindsym $mod+space focus mode_toggle
# Move focus to the parent container
bindsym $mod+a focus parent
# Move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
mode "resize" {
# left will shrink the containers width
# right will grow the containers width
# up will shrink the containers height
# down will grow the containers height
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
# Ditto, with arrow keys
bindsym Left resize shrink width 10px
bindsym Down resize grow height 10px
bindsym Up resize shrink height 10px
bindsym Right resize grow width 10px
# Return to default mode
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
## }} END defaults from /etc/sway/config
font pango:Comic Code Bold 12
xwayland enable
set $term ghostty
exec swayidle -w \
timeout 300 'swaylock -f -c 000000' \
timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
before-sleep 'swaylock -f -c 000000'
input "type:keyboard" {
xkb_layout us(dvorak),us
xkb_options compose:ralt
xkb_numlock enabled
}
input "type:touchpad" {
tap disabled
natural_scroll enabled
dwt enabled
}
bindsym --locked Xf86MonBrightnessDown exec brightnessctl set 5%-
bindsym --locked Xf86MonBrightnessUp exec brightnessctl set 5%+
bindsym --locked XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -1000
bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +1000
bindsym --locked XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym Print exec grim -g "$(slurp)" - | swappy -f -
bindsym $mod+Print exec grim - | swappy -f -
bar {
position bottom
status_command "i3status | python ~/.local/bin/i3wrapper.py"
colors {
statusline #ffffff
background #32323288
inactive_workspace #32323288 #32323288 #acacaccc
}
}
include ~/.config/sway/config.d/*

42
config/xinit_functions.sh Normal file
View File

@@ -0,0 +1,42 @@
function _xinit_setup_xinput() {
if ! xinput list >/dev/null; then
return
fi
_xinit_setup_xinput_touchpad
_xinit_setup_xinput_trackman_marble
_xinit_setup_xinput_touchscreen
}
function _xinit_setup_xinput_touchpad() {
if ! xinput list-props 'Elan Touchpad' >/dev/null; then
return
fi
xinput set-prop 'Elan Touchpad' \
'libinput Natural Scrolling Enabled' 1
}
function _xinit_setup_xinput_touchscreen() {
if ! xinput list-props \
'Wacom Pen and multitouch sensor Finger' >/dev/null; then
return
fi
xinput set-prop 'Wacom Pen and multitouch sensor Finger' \
'Device Enabled' 0
}
function _xinit_setup_xinput_trackman_marble() {
if ! xinput list-props 'Logitech USB Trackball' >/dev/null; then
return
fi
xinput set-button-map \
'Logitech USB Trackball' \
1 2 3 4 5 6 7 8 9
xinput set-prop \
'Logitech USB Trackball' \
'libinput Scroll Method Enabled' \
0, 0, 1
}

1
cups/lpoptions Normal file
View File

@@ -0,0 +1 @@
Default home

View File

@@ -3,7 +3,7 @@
[user]
name = Dan Buch
email = dan@meatballhat.com
signingkey = A62A7ED9712E9DE1F3A4BF789685130D8B763EA7
signingkey = A12F782281063434!
[github]
user = meatballhat
@@ -66,9 +66,10 @@
[tag]
gpgsign = true
forceSignAnnotated = true
[gpg]
program = gpg2
program = gpg-sq
[init]
templatedir = ~/.config/git_template

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
This is the IPython startup directory
.py and .ipy files in this directory will be run *prior* to any code or files specified
via the exec_lines or exec_files configurables whenever you load this profile.
Files will be run in lexicographical order, so you can control the execution order of files
with a prefix, e.g.::
00-first.py
50-middle.py
99-last.ipy

27
local/bin/cb-uri-tailscale Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env python3
import subprocess
import sys
import urllib.parse
def main(sysargs=sys.argv[:]):
cb_uri = subprocess.check_output(["cb", "uri", *sysargs[1:]], text=True)
parsed_cb_uri = urllib.parse.urlsplit(cb_uri)
tailscale_cb_uri = parsed_cb_uri._replace(
netloc=str(parsed_cb_uri.username)
+ ":"
+ str(parsed_cb_uri.password)
+ "@"
+ str(parsed_cb_uri.hostname).split(".")[1]
+ ":"
+ str(parsed_cb_uri.port)
)
print(tailscale_cb_uri.geturl())
return 0
if __name__ == "__main__":
sys.exit(main())

6
local/bin/git-sweep Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
git branch --merged "$([[ "${1}" != "-f" ]] && git rev-parse HEAD)" |
grep -Ev '(^\*|^\s*(main|master|develop)$)' |
while read -r branch_name; do
git branch -d "${branch_name}"
done

View File

@@ -1,97 +1,105 @@
#!/usr/bin/env python
import json
import os
import shutil
import subprocess
import sys
import typing
_BITS = []
__all__ = ["_mem", "_backlight", "_hwtemp"]
_BITS: list[tuple[int, str, typing.Callable]] = []
def _bit(idx):
def wrapper(func):
_BITS.append([idx, func.__name__.replace('_', ''), func])
_BITS.append((idx, func.__name__.replace("_", ""), func))
return func
return wrapper
@_bit(6)
def _mem():
with open('/proc/meminfo') as meminfo_fp:
with open("/proc/meminfo") as meminfo_fp:
attrs = {}
for line in meminfo_fp.readlines():
parts = line.split(':', 2)
parts = line.split(":", 2)
attrs[parts[0].strip()] = parts[1].strip()
avail = int(attrs['MemAvailable'].split()[0])
total = int(attrs['MemTotal'].split()[0])
avail = int(attrs["MemAvailable"].split()[0])
total = int(attrs["MemTotal"].split()[0])
used = int(((total - avail) / total) * 100)
color = None
if used > 75:
color = '#ff0000'
color = "#ff0000"
if used < 25:
color = '#00ff00'
return 'M:{}%'.format(used), color
color = "#00ff00"
return "M:{}%".format(used), color
@_bit(0)
def _backlight(dev_dir='/sys/class/backlight/intel_backlight'):
with open('{}/brightness'.format(dev_dir)) as br_fp:
with open('{}/max_brightness'.format(dev_dir)) as mb_fp:
def _backlight(dev_dir="/sys/class/backlight/intel_backlight"):
with open("{}/brightness".format(dev_dir)) as br_fp:
with open("{}/max_brightness".format(dev_dir)) as mb_fp:
value = int(br_fp.read().strip())
max_value = int(mb_fp.read().strip())
pct = int(float(float(value) / float(max_value)) * 100)
color = None
if pct >= 75:
color = '#ffaa00'
color = "#ffaa00"
if pct <= 25:
color = '#5599ff'
return '☼:{}%'.format(pct), color
color = "#5599ff"
return "☼:{}%".format(pct), color
THINKFAN_CONF = '/etc/thinkfan.conf'
ACPI_IBM_FAN = '/proc/acpi/ibm/fan'
ACPI_IBM_FAN = "/proc/acpi/ibm/fan"
@_bit(7)
def _hwtemp(conf=THINKFAN_CONF, fan=ACPI_IBM_FAN):
if not os.path.exists(conf):
def _hwtemp(fan=ACPI_IBM_FAN):
acpi_exe = shutil.which("acpi")
if acpi_exe is None:
return None, None
temps = []
raw_temp = subprocess.run(
[acpi_exe, "-t"],
text=True,
capture_output=True,
check=False,
)
if raw_temp.returncode != 0 or raw_temp.stdout is None:
return None, None
with open('/etc/thinkfan.conf') as tfc_fp:
for line in tfc_fp.readlines():
if not line.startswith('hwmon '):
continue
try:
with open(line.split(' ')[1].strip()) as temp_fp:
temps.append(float(temp_fp.read()))
except (OSError, IOError) as exc:
sys.stderr.write(str(exc) + '\n')
temps_by_zone = {}
for line in raw_temp.stdout.splitlines():
zone_id, value = line.split(":")
human_temp = value.split(",")[-1]
temps_by_zone[zone_id.lower().lstrip("thermal ")] = float(
human_temp.lower().strip().rstrip("degrees c")
)
avg_temp = float(sum(temps)) / len(temps) / 1000.0
color = None
temps = list(temps_by_zone.values())
avg_temp = float(sum(temps)) / len(temps)
color = "#5599ff"
if avg_temp > 75:
color = "#ff0000"
if avg_temp >= 50:
color = "#ffaa00"
fan_level = 'unset'
fan_level = "unset"
try:
with open(fan) as fan_fp:
for line in fan_fp.readlines():
if not line.startswith('level:\t\t'):
if not line.startswith("level:\t\t"):
continue
fan_level = int(line.replace('level:\t\t', ''))
fan_level = int(line.replace("level:\t\t", ""))
except (OSError, IOError) as exc:
sys.stderr.write(str(exc) + '\n')
sys.stderr.write(str(exc) + "\n")
if avg_temp > 75:
color = '#ff0000'
if avg_temp >= 50:
color = '#ffaa00'
if avg_temp <= 25:
color = '#5599ff'
return 'T:{:.1f}°C L:{}'.format(avg_temp, fan_level), color
return "T:{:.1f}°C L:{}".format(avg_temp, fan_level), color
def _print_line(message):
sys.stdout.write(message + '\n')
sys.stdout.write(message + "\n")
sys.stdout.flush()
@@ -110,9 +118,9 @@ def main(bits=_BITS):
_print_line(_read_line())
while True:
line, prefix = _read_line(), ''
if line.startswith(','):
line, prefix = line[1:], ','
line, prefix = _read_line(), ""
if line.startswith(","):
line, prefix = line[1:], ","
loaded = json.loads(line)
for idx, name, func in bits:
@@ -127,11 +135,11 @@ def main(bits=_BITS):
loaded.insert(idx, record)
except Exception as exc:
sys.stderr.write(str(exc) + '\n')
sys.stderr.write(str(exc) + "\n")
sys.stderr.flush()
_print_line(prefix+json.dumps(loaded))
_print_line(prefix + json.dumps(loaded))
if __name__ == '__main__':
if __name__ == "__main__":
main()

View File

@@ -3,12 +3,8 @@ set -o errexit
set -o pipefail
main() {
if [[ "${REMOUNT}" == enabled ]]; then
killall -9 -q -w -r 'sshfs.+me@jool:/store/sshfs/meatballhat.+' || true
fusermount -u ~/mnt/jool 2>/dev/null || true
elif [[ -f ~/mnt/jool/.mounted ]]; then
printf 'Already mounted\n' >&2
exit 0
fi
local sshfs_args=(
me@jool:/store/sshfs/meatballhat

View File

@@ -1,52 +0,0 @@
#!/usr/bin/env bash
set -o errexit
set -o pipefail
main() {
if [[ -f "${1}" ]]; then
exec 1>"${1}"
shift
fi
if [[ -f /etc/default/thinkfan-confgen ]]; then
source /etc/default/thinkfan-confgen
fi
: "${THINKFAN_LOWER_BOUND:=30}"
: "${THINKFAN_STEP:=4}"
printf '# thinkfan-confgen created %s\n' "$(date -u)"
printf '# THINKFAN_LOWER_BOUND=%s\n' "${THINKFAN_LOWER_BOUND}"
printf '# THINKFAN_STEP=%s\n\n' "${THINKFAN_STEP}"
find /sys -type f -name 'temp*_input' | while read -r line; do
if [[ "${line}" =~ thinkpad_hwmon ]]; then
continue
fi
printf 'hwmon %s\n' "${line}"
done
printf '\ntp_fan /proc/acpi/ibm/fan\n\n'
local halfstep="$((THINKFAN_STEP / 2))"
local cur="${THINKFAN_LOWER_BOUND}"
for level in 0 1 2 3 4 5 6 7; do
if [[ "${level}" == 0 ]]; then
printf '(0, 0, %s)\n' "${cur}"
continue
fi
if [[ "${level}" == 7 ]]; then
printf '(7, %s, 32767)\n' "$((cur - halfstep))"
continue
fi
printf '(%s, %s, %s)\n' \
"${level}" "$((cur - halfstep))" "$((cur + THINKFAN_STEP))"
cur="$((cur + THINKFAN_STEP))"
done
}
main "${@}"

126
local/bin/thinkfan_confgen.py Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/env python
import argparse
import datetime
import json
import os
import pathlib
import sys
import typing
class ThinkfanConfig(typing.TypedDict):
sensors: list[dict[str, str]]
fans: list[dict[str, str]]
levels: list[dict[str, int | list[int]]]
def main(sysargs=sys.argv[:]) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
"-l",
"--lower-bound",
default=int(os.environ.get("THINKFAN_LOWER_BOUND", "30")),
type=int,
help="lower bound of sensor value for min fan speed (THINKFAN_LOWER_BOUND)",
)
parser.add_argument(
"-u",
"--upper-bound",
default=int(os.environ.get("THINKFAN_UPPER_BOUND", "32767")),
type=int,
help="upper bound of sensor value for max fan speed (THINKFAN_UPPER_BOUND)",
)
parser.add_argument(
"-s",
"--step",
default=int(os.environ.get("THINKFAN_STEP", "4")),
type=int,
help="step size between fan speed levels (THINKFAN_STEP)",
)
args = parser.parse_args(sysargs[1:])
cfg: ThinkfanConfig = {
"sensors": [],
"fans": [],
"levels": [],
}
acpi_fan = pathlib.Path("/proc/acpi/ibm/fan")
if acpi_fan.exists():
cfg["fans"].append({"tpacpi": str(acpi_fan)})
acpi_thermal = pathlib.Path("/proc/acpi/ibm/thermal")
n_sensors: int = 0
if acpi_thermal.exists():
cfg["sensors"].append({"tpacpi": str(acpi_thermal)})
n_sensors = len(
[
l
for l in acpi_thermal.read_text().splitlines()
if l.startswith("temperatures:")
][0]
.split(":")[1]
.strip()
.split()
)
else:
for dirpath, dirnames, filenames in pathlib.Path("/sys/devices").walk(
on_error=print, follow_symlinks=False
):
if "thinkpad_hwmon" in dirnames:
dirnames.remove("thinkpad_hwmon")
for filename in filenames:
if filename.startswith("temp") and filename.endswith("_input"):
cfg["sensors"].append({"hwmon": str(dirpath.joinpath(filename))})
n_sensors += 1
cur: int = args.lower_bound
step: int = args.step
halfstep = step // 2
for level in range(8):
if level == 0:
cfg["levels"].append(
{
"speed": 0,
"lower_limit": [0] * n_sensors,
"upper_limit": [cur] * n_sensors,
}
)
continue
if level == 7:
cfg["levels"].append(
{
"speed": 7,
"upper_limit": [args.upper_bound] * n_sensors,
"lower_limit": [cur - halfstep] * n_sensors,
}
)
continue
cfg["levels"].append(
{
"speed": level,
"lower_limit": [cur - halfstep] * n_sensors,
"upper_limit": [cur + step] * n_sensors,
},
)
cur += step
print(f"# thinkfan_confgen.py created {datetime.datetime.now(datetime.UTC)}")
print(json.dumps(cfg))
return 0
if __name__ == "__main__":
sys.exit(main())

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

7
minirc.dfl Normal file
View File

@@ -0,0 +1,7 @@
pu baudrate 115200
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No
pu xonxoff No

1753
p10k.zsh Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,8 @@
bind-key C-b last-window
set-option -g default-command /bin/zsh
set-option -g default-shell /bin/zsh
set-option -g default-terminal 'screen-256color'
set-option -s default-terminal 'tmux-256color'
set -ga terminal-overrides ',alacritty:RGB,*256col*:RGB'
set-option -g history-limit 100000
set-option -g prefix C-b
set-option -g renumber-windows on

View File

@@ -1,14 +1,17 @@
#!/usr/bin/env bash
set -o errexit
set -o pipefail
main() {
export RUNNING_AS="${RUNNING_AS:-me}"
export RUNNING_AS_ID="$(id -u "${RUNNING_AS}")"
export XINPUT_EXE="${XINPUT_EXE:=xinput}"
export RUNNING_AS="${RUNNING_AS:-dan}"
RUNNING_AS_ID="$(id -u "${RUNNING_AS}")"
export RUNNING_AS_ID
export XAUTHORITY="/home/${RUNNING_AS}/.Xauthority"
export XINPUT_EXE="${XINPUT_EXE:=xinput}"
export XAUTHORITY="/run/user/${RUNNING_AS_ID}/gdm/Xauthority"
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUNNING_AS_ID}/bus"
export DISPLAY=:0
: "${DISPLAY:=0}"
export DISPLAY
export HOME="/home/${RUNNING_AS}"
@@ -25,8 +28,14 @@ main() {
__get_prop_id "${device_id}" 'Scroll Method Enabled'
)"
local scrollbutton
scrollbutton="$(
__get_prop_id "${device_id}" 'Button Scrolling Button'
)"
__run_xinput_as set-prop "${device_id}" "${natscroll_enabled}" 1
__run_xinput_as set-prop "${device_id}" "${scrollmeth_enabled}" 0 0 1
__run_xinput_as set-prop "${device_id}" "${scrollbutton}" 8
}
__get_device_id() {

View File

@@ -1 +1 @@
ACTION=="bind", SUBSYSTEM=="usb", ENV{ID_VENDOR}=="Logitech", ENV{ID_SERIAL}=="Logitech_USB_Trackball", RUN:="/usr/local/bin/handle-trackman-marble"
ACTION=="bind", SUBSYSTEM=="usb", ENV{NAME}=="Logitech USB Trackball", MODE="0660", TAG+="uaccess", RUN:="/usr/local/bin/handle-trackman-marble"

49
vim/coc-settings.json Normal file
View File

@@ -0,0 +1,49 @@
{
"languageserver": {
"terraform": {
"command": "terraform-lsp",
"filetypes": [
"terraform"
]
},
"R": {
"command": "R",
"args": [
"--slave",
"-e",
"languageserver::run()"
],
"filetypes": [
"r"
]
},
"bash": {
"command": "bash-language-server",
"args": [
"start"
],
"filetypes": [
"sh"
],
"ignoredRootPaths": [
"~"
]
},
"ruff-lsp": {
"command": [
"ruff-lsp"
],
"filetypes": [
"python"
]
}
},
"pyright.enable": true,
"pyright.inlayHints.functionReturnTypes": true,
"pyright.inlayHints.variableTypes": true,
"pyright.organizeimports.provider": "ruff",
"pyright.testing.provider": "pytest",
"python.formatting.provider": "ruff",
"python.linting.ruffEnabled": true,
"clangd.path": "~/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/bin/clangd"
}

101
vimrc
View File

@@ -1,5 +1,4 @@
packloadall
call pathogen#infect()
syntax on
@@ -7,12 +6,15 @@ filetype on
filetype indent on
filetype plugin on
let mapleader = ","
set autowrite
set backspace=indent,eol,start
set backupdir^=~/.vim/_backup//
set cursorline
set cursorcolumn
set directory^=~/.vim/_temp//
set encoding=utf8
set encoding=utf-8
set hlsearch
set ignorecase
set incsearch
@@ -21,35 +23,96 @@ set linebreak
set modeline
set nowrap
set number
set signcolumn=yes
set smartcase
set statusline+=%#warningmsg#
set statusline+=%*
set tabstop=4
set textwidth=67
set updatetime=300
set textwidth=1000
if has("persistent_undo")
set undodir=~/.vim/_undo//
set undofile
endif
au BufRead,BufNewFile Pipfile setfiletype toml
au BufRead,BufNewFile *.gcfg setfiletype gitconfig
au BufRead,BufNewFile Pipfile setfiletype toml
au BufRead,BufNewFile Dockerfile* setfiletype dockerfile
au BufRead,BufNewFile *.gotmpl setfiletype gotexttmpl
au BufRead,BufNewFile *.hcl setfiletype hcl
au BufRead,BufNewFile *.nomad setfiletype hcl
au BufRead,BufNewFile *.service setfiletype systemd
au BufRead,BufNewFile .Rprofile setfiletype r
au BufWritePre *.py execute ':Black'
au BufRead,BufNewFile .envrc setfiletype sh
au BufRead,BufNewFile Dockerfile* setfiletype dockerfile
au BufRead,BufNewFile Pipfile setfiletype toml
au BufRead,BufNewFile kubectl-edit-status-* setfiletype yaml
au BufRead,BufNewFile *kubeconfig* setfiletype yaml
au BufRead,BufNewFile */.kube/config setfiletype yaml
au BufRead,BufNewFile .lintr setfiletype yaml
au BufRead,BufNewFile devcontainer.json setfiletype jsonc
au BufRead,BufNewFile devcontainer-feature.json setfiletype jsonc
au BufRead,BufNewFile *.bicepparam setfiletype bicep
au BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4
au FileType go nmap <leader>r <Plug>(go-run)
au FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
au FileType sh set expandtab
au QuickFixCmdPost *grep* cwindow
au BufWritePre *.py execute ':Black'
map ,t :w<CR>
map ,- :nohl<CR>
map ,w :%s/ *$//<CR>
" run :GoBuild or :GoTestCompile based on the go file
function! s:build_go_files()
let l:file = expand('%')
if l:file =~# '^\f\+_test\.go$'
call go#test#Test(0, 1)
elseif l:file =~# '^\f\+\.go$'
call go#cmd#Build(0)
endif
endfunction
au FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
au FileType go nmap <leader>d :GoDef<CR>
au FileType go nmap <leader>N :GoRename<CR>
au FileType go nmap <leader>R :GoReferrers<CR>
map <leader>t :w<CR>
map <leader>- :nohl<CR>
map <leader>w :%s/ *$//<CR>
map <leader>l :Minimap<CR>
map <leader>L :MinimapClose<CR>
nmap <F8> :TagbarToggle<CR>
"augroup black_on_save
" autocmd!
" autocmd BufWritePre *.py Black
"augroup end
autocmd BufNewFile,BufRead *.c set formatprg=astyle\ -t4\ -A14
let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
let g:airline_powerline_fonts = 1
let g:black_use_virtualenv = 1
let g:coc_global_extensions = ['coc-tsserver']
let g:coc_node_path = "/home/dan/.nvm/versions/node/v16.9.1/bin/node"
let g:go_auto_sameids = 1
let g:go_auto_type_info = 1
let g:go_def_mode = 'gopls'
let g:go_fmt_command = "goimports"
let g:go_highlight_build_constraints = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_functions = 1
let g:go_highlight_operators = 1
let g:go_info_mode = 'gopls'
let g:html_indent_script1 = "inc"
let g:html_indent_style1 = "inc"
let g:minimap_auto_start = 1
let g:minimap_auto_start_win_enter = 1
let g:minimap_highlight_range = 1
let g:minimap_highlight_search = 1
let g:minimap_enable_highlight_colorgroup = 1
let g:minimap_width = 10
let g:python_highlight_all = 1
let g:rehash256 = 1
let g:rustfmt_autosave = 1
let g:shfmt_extra_args = '-i 2'
let g:shfmt_fmt_on_save = 1
@@ -59,16 +122,20 @@ let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_frontmatter = 1
let g:yapf_style = "pep8"
if has("python3")
python3 from powerline.vim import setup as powerline_setup
python3 powerline_setup()
python3 del powerline_setup
if exists('+termguicolors')
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
set termguicolors
endif
packadd! dracula
"colorscheme dichromatic
colorscheme dracula
"colorscheme molokai
"colorscheme elflord
hi Comment cterm=NONE ctermfg=DarkRed gui=NONE guifg=red2
hi minimapCursor ctermbg=59 ctermfg=228 guibg=#5F5F5F guifg=#FFFF87
hi minimapRange ctermbg=242 ctermfg=228 guibg=#4F4F4F guifg=#FFFF87
nmap <leader>sp :call <SID>SynStack()<CR>
function! <SID>SynStack()
@@ -77,3 +144,5 @@ function! <SID>SynStack()
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc
"source ~/.vimrc.coc

13
xinitrc Normal file
View File

@@ -0,0 +1,13 @@
# vim:filetype=bash:expandtab:ts=2:sts=2
setxkbmap dvorak
. ~/.config/xinit_functions.sh
_xinit_setup_xinput
eval "$(ssh-agent)"
if [ -n "${WM}" ]; then
exec "${WM}"
fi
exec false

2
zprofile Normal file
View File

@@ -0,0 +1,2 @@
GPG_TTY=$(tty)
export GPG_TTY

128
zshrc
View File

@@ -1,7 +1,14 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
[[ "${ZSH_DEBUG}" ]] && set -o xtrace
ZSH=$HOME/.oh-my-zsh
ZSH_THEME=dracula
ZSH_THEME="powerlevel10k/powerlevel10k"
CASE_SENSITIVE="true"
@@ -29,20 +36,27 @@ COMPLETION_WAITING_DOTS="true"
# much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
if [[ -e "${XDG_RUNTIME_DIR}/ssh-agent.socket" ]]; then
export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
fi
path=(
$HOME/.rbenv/shims
$HOME/bin
$HOME/go/bin
$HOME/.local/bin
$HOME/.cargo/bin
$HOME/.rbenv/bin
$HOME/.rbenv/shims
$HOME/.phpenv/bin
$HOME/.pyenv/bin
$HOME/.yarn/bin
$HOME/.pulumi/bin
${KREW_ROOT:-$HOME/.krew}/bin
$HOME/.local/bin
$HOME/.nix-profile/bin
$HOME/perl5/bin
$HOME/Library/Python/3.8/bin
/usr/local/opt/python@3.8/bin
/usr/bin/core_perl
/usr/local/sbin
/usr/local/bin
/usr/bin/vendor_perl
@@ -58,26 +72,30 @@ path=(
plugins=(
archlinux
autoenv
asdf
aws
azure
brew
bundler
cargo
command-not-found
cp
direnv
docker
gem
git
golang
helm
heroku
httpie
kubectl
mercurial
minikube
nmap
node
nvm
pip
podman
postgres
pyenv
python
rails
rake-fast
@@ -86,28 +104,34 @@ plugins=(
rsync
ruby
rust
rustup
terraform
symfony-complete
tmux
vagrant
vault
vi-mode
yarn
)
if [[ -x /home/linuxbrew/.linuxbrew/bin/brew ]]; then
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
fi
if [[ -d ~/.oh-my-zsh/plugins/just/ ]]; then
plugins+=just
fi
fpath=(/usr/local/share/zsh/site-functions $fpath)
fpath=("${HOMEBREW_PREFIX}/share/zsh/site-functions" $fpath)
source $ZSH/oh-my-zsh.sh
unalias gb &>/dev/null
export VISUAL=vim
export EDITOR=vim
export PYENV_ROOT="${HOME}/.pyenv"
export SDKMAN_DIR="${HOME}/.sdkman"
export VISUAL=vim
export PTD_CACHE="${HOME}/.local/ptd"
export PTD_ROOT="${HOME}/code/rstudio/ptd/infra"
# The completion for aws is not compatible with $fpath :scream_cat:
if [[ -f /usr/local/share/zsh/site-functions/_aws ]] ; then
@@ -135,11 +159,26 @@ if command -v ssh-add &>/dev/null; then
alias ssh-add='ssh-add -t 1h'
fi
if psql --version &>/dev/null; then
alias pgme='psql -d postgres://me@jool.meatballhat.com:15744/me'
fi
if terraform version &>/dev/null; then
alias terraform=tofu
alias tf=tofu
fi
unsetopt correct_all
bindkey '^R' history-incremental-search-backward
if which pyenv >/dev/null; then
if [[ "${HATCH_ENV_ACTIVE}" ]]; then
: skipping pyenv when inside a hatch env
else
path=($HOME/.pyenv/shims $HOME/.pyenv/bin "${path[@]}")
plugins=("${plugins[@]}" pyenv)
eval "$(pyenv init - 2>/dev/null)"
fi
fi
if which phpenv >/dev/null; then
@@ -151,36 +190,14 @@ if [[ -f ~/.cargo/env ]]; then
fi
if gimme --version &>/dev/null; then
eval "$(gimme '1.16.x')" 2>/dev/null
eval "$(gimme 1.21.4)" 2>/dev/null
export GOPATH="$HOME/go"
fi
CDPATH="$HOME/code:$HOME/src:$HOME/Development/src:$HOME/repos"
for prefix in github.com github.com/meatballhat code.google.com/p ; do
CDPATH="$HOME/go/src/$prefix:$CDPATH"
done
export GPG_TTY=$(tty)
function dump-ssh-agent() {
env | awk '/SSH/ {
sub(/=/, "=\"", $1)
sub(/$/, "\"", $1)
print "export " $1
}' | tee ~/.ssh/agent.out
}
function load-ssh-agent() {
source ~/.ssh/agent.out
}
function start-ssh-agent() {
ssh-agent >~/.ssh/agent.out
}
function setup-ssh-agent() {
start-ssh-agent && load-ssh-agent
}
cdpath=(
$HOME/code
$HOME/src
)
function __maybesource() {
if [[ -f "${1}" ]]; then
@@ -214,7 +231,22 @@ function docker-cleanup() {
done
}
load-ssh-agent &>/dev/null
function ptd-completion() {
if command -v ptd &>/dev/null; then
eval "$(_PTD_COMPLETE=zsh_source ptd)"
fi
}
function mksecret() {
local nbytes="${1:-42}"
python3 <<EOPYTHON | tr -d '/' | tr -d '+' | cut -b1-$((nbytes - 1))
import secrets
import base64
print(base64.b64encode(secrets.token_bytes(${nbytes} * 2)).decode(), end="")
EOPYTHON
}
export NVM_DIR="${HOME}/.nvm"
@@ -224,6 +256,7 @@ __maybesource ~/google-cloud-sdk/completion.zsh.inc
__maybesource /usr/share/nvm/init-nvm.sh silent
__maybesource /usr/local/opt/nvm/nvm.sh silent
__maybesource "${NVM_DIR}/nvm.sh"
__maybesource /home/linuxbrew/.linuxbrew/opt/nvm/nvm.sh
__maybesource ~/.kiex/scripts/kiex
__maybesource ~/.config/tabtab/__tabtab.zsh
__maybesource ~/.sdkman/bin/sdkman-init.sh
@@ -241,13 +274,26 @@ if [[ -d /usr/local/opt/python@3.8/lib/pkgconfig ]]; then
fi
if nvm &>/dev/null; then
nvm use --delete-prefix lts/erbium --silent
nvm use --delete-prefix 20 --silent
fi
autoload -Uz compinit
compinit
if kitty --version &>/dev/null; then
autoload -Uz compinit
compinit
kitty + complete setup zsh | source /dev/stdin
fi
compdef _symfony_complete composer
compdef _symfony_complete dep
alias fz=fuzzbucket-client
if ptd --version &>/dev/null; then
ptd-completion
fi
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
true