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/* /janus/*
byobu/.ssh-agent 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 /) TOP_SOURCES := $(shell git ls-files | grep -vE 'README|Makefile|^config|^\.git|^\.travis' | grep -v /)
CONFIG_SOURCES := $(shell git ls-files config) CONFIG_SOURCES := $(shell git ls-files config)
LOCAL_BIN_SOURCES := $(shell git ls-files local/bin) LOCAL_BIN_SOURCES := $(shell git ls-files local/bin)
LOCAL_BG_SOURCES := $(shell git ls-files local/share/backgrounds)
TARGETS := \ TARGETS := \
$(patsubst %,$(HOME)/.%,$(TOP_SOURCES)) \ $(patsubst %,$(HOME)/.%,$(TOP_SOURCES)) \
$(patsubst %,$(HOME)/.%,$(CONFIG_SOURCES)) \ $(patsubst %,$(HOME)/.%,$(CONFIG_SOURCES)) \
$(patsubst %,$(HOME)/.%,$(LOCAL_BIN_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)/.%: % $(HOME)/.%: %
$(RM) '$@' && mkdir -p $(dir $@) && ln -svf '$(PWD)/$^' '$@' $(RM) '$@' && mkdir -p $(dir $@) && ln -svf '$(PWD)/$^' '$@'
.PHONY: all .PHONY: all
all: $(HOME)/.config $(HOME)/.local/bin $(TARGETS) all: $(HOME)/.config $(HOME)/.local/bin $(HOME)/.local/share/backgrounds $(TARGETS)
$(HOME)/.config: $(HOME)/.config:
mkdir -p $@ mkdir -p $@
@@ -19,6 +25,15 @@ $(HOME)/.config:
$(HOME)/.local/bin: $(HOME)/.local/bin:
mkdir -p $@ 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 .PHONY: echo
echo: echo:
@echo TOP_SOURCES=$(TOP_SOURCES) @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] [user]
name = Dan Buch name = Dan Buch
email = dan@meatballhat.com email = dan@meatballhat.com
signingkey = A62A7ED9712E9DE1F3A4BF789685130D8B763EA7 signingkey = A12F782281063434!
[github] [github]
user = meatballhat user = meatballhat
@@ -66,9 +66,10 @@
[tag] [tag]
gpgsign = true gpgsign = true
forceSignAnnotated = true
[gpg] [gpg]
program = gpg2 program = gpg-sq
[init] [init]
templatedir = ~/.config/git_template 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 #!/usr/bin/env python
import json import json
import os import shutil
import subprocess import subprocess
import sys import sys
import typing
_BITS = [] __all__ = ["_mem", "_backlight", "_hwtemp"]
_BITS: list[tuple[int, str, typing.Callable]] = []
def _bit(idx): def _bit(idx):
def wrapper(func): def wrapper(func):
_BITS.append([idx, func.__name__.replace('_', ''), func]) _BITS.append((idx, func.__name__.replace("_", ""), func))
return func return func
return wrapper return wrapper
@_bit(6) @_bit(6)
def _mem(): def _mem():
with open('/proc/meminfo') as meminfo_fp: with open("/proc/meminfo") as meminfo_fp:
attrs = {} attrs = {}
for line in meminfo_fp.readlines(): for line in meminfo_fp.readlines():
parts = line.split(':', 2) parts = line.split(":", 2)
attrs[parts[0].strip()] = parts[1].strip() attrs[parts[0].strip()] = parts[1].strip()
avail = int(attrs['MemAvailable'].split()[0]) avail = int(attrs["MemAvailable"].split()[0])
total = int(attrs['MemTotal'].split()[0]) total = int(attrs["MemTotal"].split()[0])
used = int(((total - avail) / total) * 100) used = int(((total - avail) / total) * 100)
color = None color = None
if used > 75: if used > 75:
color = '#ff0000' color = "#ff0000"
if used < 25: if used < 25:
color = '#00ff00' color = "#00ff00"
return 'M:{}%'.format(used), color return "M:{}%".format(used), color
@_bit(0) @_bit(0)
def _backlight(dev_dir='/sys/class/backlight/intel_backlight'): def _backlight(dev_dir="/sys/class/backlight/intel_backlight"):
with open('{}/brightness'.format(dev_dir)) as br_fp: with open("{}/brightness".format(dev_dir)) as br_fp:
with open('{}/max_brightness'.format(dev_dir)) as mb_fp: with open("{}/max_brightness".format(dev_dir)) as mb_fp:
value = int(br_fp.read().strip()) value = int(br_fp.read().strip())
max_value = int(mb_fp.read().strip()) max_value = int(mb_fp.read().strip())
pct = int(float(float(value) / float(max_value)) * 100) pct = int(float(float(value) / float(max_value)) * 100)
color = None color = None
if pct >= 75: if pct >= 75:
color = '#ffaa00' color = "#ffaa00"
if pct <= 25: if pct <= 25:
color = '#5599ff' color = "#5599ff"
return '☼:{}%'.format(pct), color 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) @_bit(7)
def _hwtemp(conf=THINKFAN_CONF, fan=ACPI_IBM_FAN): def _hwtemp(fan=ACPI_IBM_FAN):
if not os.path.exists(conf): acpi_exe = shutil.which("acpi")
if acpi_exe is None:
return None, 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: temps_by_zone = {}
for line in tfc_fp.readlines(): for line in raw_temp.stdout.splitlines():
if not line.startswith('hwmon '): zone_id, value = line.split(":")
continue human_temp = value.split(",")[-1]
try: temps_by_zone[zone_id.lower().lstrip("thermal ")] = float(
with open(line.split(' ')[1].strip()) as temp_fp: human_temp.lower().strip().rstrip("degrees c")
temps.append(float(temp_fp.read())) )
except (OSError, IOError) as exc:
sys.stderr.write(str(exc) + '\n')
avg_temp = float(sum(temps)) / len(temps) / 1000.0 temps = list(temps_by_zone.values())
color = None 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: try:
with open(fan) as fan_fp: with open(fan) as fan_fp:
for line in fan_fp.readlines(): for line in fan_fp.readlines():
if not line.startswith('level:\t\t'): if not line.startswith("level:\t\t"):
continue continue
fan_level = int(line.replace('level:\t\t', '')) fan_level = int(line.replace("level:\t\t", ""))
except (OSError, IOError) as exc: except (OSError, IOError) as exc:
sys.stderr.write(str(exc) + '\n') sys.stderr.write(str(exc) + "\n")
if avg_temp > 75: return "T:{:.1f}°C L:{}".format(avg_temp, fan_level), color
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
def _print_line(message): def _print_line(message):
sys.stdout.write(message + '\n') sys.stdout.write(message + "\n")
sys.stdout.flush() sys.stdout.flush()
@@ -110,9 +118,9 @@ def main(bits=_BITS):
_print_line(_read_line()) _print_line(_read_line())
while True: while True:
line, prefix = _read_line(), '' line, prefix = _read_line(), ""
if line.startswith(','): if line.startswith(","):
line, prefix = line[1:], ',' line, prefix = line[1:], ","
loaded = json.loads(line) loaded = json.loads(line)
for idx, name, func in bits: for idx, name, func in bits:
@@ -127,11 +135,11 @@ def main(bits=_BITS):
loaded.insert(idx, record) loaded.insert(idx, record)
except Exception as exc: except Exception as exc:
sys.stderr.write(str(exc) + '\n') sys.stderr.write(str(exc) + "\n")
sys.stderr.flush() sys.stderr.flush()
_print_line(prefix+json.dumps(loaded)) _print_line(prefix + json.dumps(loaded))
if __name__ == '__main__': if __name__ == "__main__":
main() main()

View File

@@ -3,12 +3,8 @@ set -o errexit
set -o pipefail set -o pipefail
main() { 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 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=( local sshfs_args=(
me@jool:/store/sshfs/meatballhat 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 bind-key C-b last-window
set-option -g default-command /bin/zsh set-option -g default-command /bin/zsh
set-option -g default-shell /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 history-limit 100000
set-option -g prefix C-b set-option -g prefix C-b
set-option -g renumber-windows on set-option -g renumber-windows on

View File

@@ -1,14 +1,17 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -o errexit set -o errexit
set -o pipefail
main() { main() {
export RUNNING_AS="${RUNNING_AS:-me}" export RUNNING_AS="${RUNNING_AS:-dan}"
export RUNNING_AS_ID="$(id -u "${RUNNING_AS}")" RUNNING_AS_ID="$(id -u "${RUNNING_AS}")"
export XINPUT_EXE="${XINPUT_EXE:=xinput}" 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 DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/${RUNNING_AS_ID}/bus"
export DISPLAY=:0 : "${DISPLAY:=0}"
export DISPLAY
export HOME="/home/${RUNNING_AS}" export HOME="/home/${RUNNING_AS}"
@@ -25,8 +28,14 @@ main() {
__get_prop_id "${device_id}" 'Scroll Method Enabled' __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}" "${natscroll_enabled}" 1
__run_xinput_as set-prop "${device_id}" "${scrollmeth_enabled}" 0 0 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() { __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 packloadall
call pathogen#infect()
syntax on syntax on
@@ -7,12 +6,15 @@ filetype on
filetype indent on filetype indent on
filetype plugin on filetype plugin on
let mapleader = ","
set autowrite
set backspace=indent,eol,start set backspace=indent,eol,start
set backupdir^=~/.vim/_backup// set backupdir^=~/.vim/_backup//
set cursorline set cursorline
set cursorcolumn set cursorcolumn
set directory^=~/.vim/_temp// set directory^=~/.vim/_temp//
set encoding=utf8 set encoding=utf-8
set hlsearch set hlsearch
set ignorecase set ignorecase
set incsearch set incsearch
@@ -21,35 +23,96 @@ set linebreak
set modeline set modeline
set nowrap set nowrap
set number set number
set signcolumn=yes
set smartcase set smartcase
set statusline+=%#warningmsg# set statusline+=%#warningmsg#
set statusline+=%* set statusline+=%*
set tabstop=4 set tabstop=4
set textwidth=67 set updatetime=300
set textwidth=1000
if has("persistent_undo") if has("persistent_undo")
set undodir=~/.vim/_undo// set undodir=~/.vim/_undo//
set undofile set undofile
endif endif
au BufRead,BufNewFile Pipfile setfiletype toml
au BufRead,BufNewFile *.gcfg setfiletype gitconfig au BufRead,BufNewFile *.gcfg setfiletype gitconfig
au BufRead,BufNewFile Pipfile setfiletype toml au BufRead,BufNewFile *.gotmpl setfiletype gotexttmpl
au BufRead,BufNewFile Dockerfile* setfiletype dockerfile au BufRead,BufNewFile *.hcl setfiletype hcl
au BufRead,BufNewFile *.nomad setfiletype hcl
au BufRead,BufNewFile *.service setfiletype systemd au BufRead,BufNewFile *.service setfiletype systemd
au BufRead,BufNewFile .Rprofile setfiletype r 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 QuickFixCmdPost *grep* cwindow
au BufWritePre *.py execute ':Black'
map ,t :w<CR> " run :GoBuild or :GoTestCompile based on the go file
map ,- :nohl<CR> function! s:build_go_files()
map ,w :%s/ *$//<CR> 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:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
let g:airline_powerline_fonts = 1 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_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:python_highlight_all = 1
let g:rehash256 = 1
let g:rustfmt_autosave = 1 let g:rustfmt_autosave = 1
let g:shfmt_extra_args = '-i 2' let g:shfmt_extra_args = '-i 2'
let g:shfmt_fmt_on_save = 1 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:vim_markdown_frontmatter = 1
let g:yapf_style = "pep8" let g:yapf_style = "pep8"
if has("python3") if exists('+termguicolors')
python3 from powerline.vim import setup as powerline_setup let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
python3 powerline_setup() let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
python3 del powerline_setup set termguicolors
endif endif
packadd! dracula "colorscheme dichromatic
colorscheme dracula colorscheme dracula
"colorscheme molokai
"colorscheme elflord
hi Comment cterm=NONE ctermfg=DarkRed gui=NONE guifg=red2 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> nmap <leader>sp :call <SID>SynStack()<CR>
function! <SID>SynStack() function! <SID>SynStack()
@@ -77,3 +144,5 @@ function! <SID>SynStack()
endif endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc 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

130
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_DEBUG}" ]] && set -o xtrace
ZSH=$HOME/.oh-my-zsh ZSH=$HOME/.oh-my-zsh
ZSH_THEME=dracula ZSH_THEME="powerlevel10k/powerlevel10k"
CASE_SENSITIVE="true" CASE_SENSITIVE="true"
@@ -29,20 +36,27 @@ COMPLETION_WAITING_DOTS="true"
# much faster. # much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true" # 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=( path=(
$HOME/.rbenv/shims
$HOME/bin $HOME/bin
$HOME/go/bin $HOME/go/bin
$HOME/.local/bin $HOME/.local/bin
$HOME/.cargo/bin $HOME/.cargo/bin
$HOME/.rbenv/bin $HOME/.rbenv/bin
$HOME/.rbenv/shims
$HOME/.phpenv/bin $HOME/.phpenv/bin
$HOME/.pyenv/bin
$HOME/.yarn/bin $HOME/.yarn/bin
$HOME/.pulumi/bin $HOME/.pulumi/bin
${KREW_ROOT:-$HOME/.krew}/bin
$HOME/.local/bin
$HOME/.nix-profile/bin
$HOME/perl5/bin $HOME/perl5/bin
$HOME/Library/Python/3.8/bin $HOME/Library/Python/3.8/bin
/usr/local/opt/python@3.8/bin /usr/local/opt/python@3.8/bin
/usr/bin/core_perl
/usr/local/sbin /usr/local/sbin
/usr/local/bin /usr/local/bin
/usr/bin/vendor_perl /usr/bin/vendor_perl
@@ -58,26 +72,30 @@ path=(
plugins=( plugins=(
archlinux archlinux
autoenv asdf
aws aws
azure
brew
bundler bundler
cargo
command-not-found command-not-found
cp cp
direnv
docker docker
gem gem
git git
golang golang
helm helm
heroku heroku
httpie
kubectl kubectl
mercurial mercurial
minikube
nmap nmap
node node
nvm nvm
pip pip
podman
postgres postgres
pyenv
python python
rails rails
rake-fast rake-fast
@@ -86,28 +104,34 @@ plugins=(
rsync rsync
ruby ruby
rust rust
rustup symfony-complete
terraform
tmux tmux
vagrant vagrant
vault
vi-mode vi-mode
yarn 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 if [[ -d ~/.oh-my-zsh/plugins/just/ ]]; then
plugins+=just plugins+=just
fi fi
fpath=(/usr/local/share/zsh/site-functions $fpath) fpath=(/usr/local/share/zsh/site-functions $fpath)
fpath=("${HOMEBREW_PREFIX}/share/zsh/site-functions" $fpath)
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
unalias gb &>/dev/null unalias gb &>/dev/null
export VISUAL=vim export EDITOR=vim
export PYENV_ROOT="${HOME}/.pyenv" export PYENV_ROOT="${HOME}/.pyenv"
export SDKMAN_DIR="${HOME}/.sdkman" 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: # The completion for aws is not compatible with $fpath :scream_cat:
if [[ -f /usr/local/share/zsh/site-functions/_aws ]] ; then 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' alias ssh-add='ssh-add -t 1h'
fi 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 unsetopt correct_all
bindkey '^R' history-incremental-search-backward bindkey '^R' history-incremental-search-backward
if which pyenv >/dev/null; then if which pyenv >/dev/null; then
eval "$(pyenv init - 2>/dev/null)" 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 fi
if which phpenv >/dev/null; then if which phpenv >/dev/null; then
@@ -151,36 +190,14 @@ if [[ -f ~/.cargo/env ]]; then
fi fi
if gimme --version &>/dev/null; then 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" export GOPATH="$HOME/go"
fi fi
CDPATH="$HOME/code:$HOME/src:$HOME/Development/src:$HOME/repos" cdpath=(
for prefix in github.com github.com/meatballhat code.google.com/p ; do $HOME/code
CDPATH="$HOME/go/src/$prefix:$CDPATH" $HOME/src
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
}
function __maybesource() { function __maybesource() {
if [[ -f "${1}" ]]; then if [[ -f "${1}" ]]; then
@@ -214,7 +231,22 @@ function docker-cleanup() {
done 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" 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/share/nvm/init-nvm.sh silent
__maybesource /usr/local/opt/nvm/nvm.sh silent __maybesource /usr/local/opt/nvm/nvm.sh silent
__maybesource "${NVM_DIR}/nvm.sh" __maybesource "${NVM_DIR}/nvm.sh"
__maybesource /home/linuxbrew/.linuxbrew/opt/nvm/nvm.sh
__maybesource ~/.kiex/scripts/kiex __maybesource ~/.kiex/scripts/kiex
__maybesource ~/.config/tabtab/__tabtab.zsh __maybesource ~/.config/tabtab/__tabtab.zsh
__maybesource ~/.sdkman/bin/sdkman-init.sh __maybesource ~/.sdkman/bin/sdkman-init.sh
@@ -241,13 +274,26 @@ if [[ -d /usr/local/opt/python@3.8/lib/pkgconfig ]]; then
fi fi
if nvm &>/dev/null; then if nvm &>/dev/null; then
nvm use --delete-prefix lts/erbium --silent nvm use --delete-prefix 20 --silent
fi fi
autoload -Uz compinit
compinit
if kitty --version &>/dev/null; then if kitty --version &>/dev/null; then
autoload -Uz compinit
compinit
kitty + complete setup zsh | source /dev/stdin kitty + complete setup zsh | source /dev/stdin
fi 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 true