Compare commits

...

18 Commits

Author SHA1 Message Date
bac37b6b67 add difftastic 2025-09-11 13:45:41 -04:00
79e501a461 just docker doing its thing 2025-09-11 12:09:05 -04:00
cca255ba83 switch workspaces using the number pad 2025-09-11 12:08:59 -04:00
1f717b9d6d add theme overrides to zed for Python docstrings and operators 2025-09-11 10:50:04 -04:00
e2a0d8fb32 rework window/workspace movement keybinds 2025-09-11 08:40:11 -04:00
fc429a2f3f remove custom screenshot config since omarchy does that now 2025-09-11 07:55:07 -04:00
0a765ae781 rework 1password bindings and window rules 2025-09-11 07:49:47 -04:00
db8203219d add setconf to mise.toml 2025-09-11 07:49:32 -04:00
f48178a488 modify alacritty config (omarchy update?) 2025-09-11 07:49:19 -04:00
68582d6054 configure cargo to use mold as its liknker 2025-09-09 13:46:25 -04:00
e456e3fd45 pin Creddy to monitor and let it manage its own autostart 2025-09-09 06:45:56 -04:00
55abc4e267 disable font ligatures in zed 2025-09-08 21:41:52 -04:00
506321ee1b using {icon} for format gives named workspaces their names 2025-09-08 21:41:43 -04:00
3803f20cb1 more tools 2025-09-08 21:38:53 -04:00
dbd98d0b47 docker configs and modified screenshot script 2025-09-08 21:37:53 -04:00
95b73b38f8 add some window rules 2025-09-08 21:36:55 -04:00
440c2bdacb change a bunch of bindings 2025-09-08 21:36:11 -04:00
7431c5f191 add waybar config, scripts, mic tweaks 2025-09-03 14:48:51 -04:00
18 changed files with 393 additions and 22 deletions

4
dot_cargo/config.toml Normal file
View File

@@ -0,0 +1,4 @@
[target.'cfg(target_os = "linux")']
linker = "clang"
rustflags = ["-C", "link-arg=--ld-path=/home/joe/.local/share/mise/shims/mold"]

View File

@@ -13,7 +13,6 @@ size = 10
padding.x = 14 padding.x = 14
padding.y = 14 padding.y = 14
decorations = "None" decorations = "None"
opacity = 0.98
[keyboard] [keyboard]
bindings = [ bindings = [

View File

@@ -9,4 +9,3 @@ exec = ~/.local/bin/assign-workspace-monitors
# autostart various apps in their own special workspaces # autostart various apps in their own special workspaces
exec-once = [workspace special:slack silent] slack exec-once = [workspace special:slack silent] slack
exec-once = [workspace special:1password silent] 1password exec-once = [workspace special:1password silent] 1password
exec-once = [workspace special:creddy silent; float; size 800 600] uwsm app -- creddy

View File

@@ -6,32 +6,44 @@ bindd = SUPER, return, Terminal, exec, $terminal --working-directory=$(omarchy-c
bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window bindd = SUPER, F, File manager, exec, uwsm app -- nautilus --new-window
bindd = SUPER, B, Browser, exec, $browser bindd = SUPER, B, Browser, exec, $browser
bindd = SUPER, M, Music, exec, uwsm app -- spotify bindd = SUPER, M, Music, exec, uwsm app -- spotify
bindd = SUPER, N, Neovim, exec, $terminal -e nvim bindd = SUPER, N, Notes, exec, heynote
bindd = SUPER, T, Activity, exec, $terminal -e btop bindd = SUPER, T, Activity, exec, $terminal -e btop
bindd = SUPER, D, Docker, exec, $terminal -e lazydocker bindd = SUPER ALT, D, Docker, exec, $terminal -e lazydocker
bindd = SUPER, G, Signal, exec, uwsm app -- signal-desktop
bindd = SUPER, O, Obsidian, exec, uwsm app -- obsidian -disable-gpu
bindd = SUPER, slash, Passwords, exec, uwsm app -- 1password
# If your web app url contains #, type it as ## to prevent hyperland treat it as comments # If your web app url contains #, type it as ## to prevent hyperland treat it as comments
bindd = SUPER, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com" bindd = SUPER, A, Claude, exec, omarchy-launch-webapp "https://claude.ai/new"
bindd = SUPER SHIFT, A, Grok, exec, omarchy-launch-webapp "https://grok.com" bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://mail.google.com/mail/u/0/"
bindd = SUPER, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
bindd = SUPER, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/" bindd = SUPER, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
bindd = SUPER SHIFT, G, WhatsApp, exec, omarchy-launch-webapp "https://web.whatsapp.com/" bindd = SUPER, G, GitLab, exec, omarchy-launch-webapp "https://gitlab.modg.net/"
bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations" bindd = SUPER ALT, G, Google Messages, exec, omarchy-launch-webapp "https://messages.google.com/web/conversations"
bindd = SUPER, X, X, exec, omarchy-launch-webapp "https://x.com/" bindd = SUPER, O, modgoffice, exec, omarchy-launch-webapp "https://office.modg.org"
bindd = SUPER SHIFT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space # lazy apps: Launch if not currently running, otherwise just switch to that app
# unbind = SUPER, Space bindd = SUPER, D, Open/focus DataGrip, exec, ~/.local/bin/lazy-app class:jetbrains-datagrip ~/.local/share/JetBrains/Toolbox/apps/datagrip/bin/datagrip
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu
# keybinds for special workspaces # omarchy uses swapwindow for these binds, but I prefer movewindow so that it can cross monitor boundaries
unbind = SUPER SHIFT, left
unbind = SUPER SHIFT, right
unbind = SUPER SHIFT, up
unbind = SUPER SHIFT, down
bindd = SUPER SHIFT, left, Move window to the left, movewindow, l
bindd = SUPER SHIFT, right, Move window to the right, movewindow, r
bindd = SUPER SHIFT, up, Move window up, movewindow, u
bindd = SUPER SHIFT, down, Move window down, movewindow, d
bindd = SUPER ALT, left, Move current workspace to the left, movecurrentworkspacetomonitor, l
bindd = SUPER ALT, right, Move current workspace to the right, movecurrentworkspacetomonitor, r
bindd = SUPER ALT, up, Move current workspace up, movecurrentworkspacetomonitor, u
bindd = SUPER ALT, down, Move current workspace down, movecurrentworkspacetomonitor, d
# create a new workspace
bindd = SUPER, grave, Create a mew workspace, exec, ~/.local/bin/new-workspace
# keybinds for background apps
bindd = SUPER, S, Show/hide Slack, togglespecialworkspace, slack bindd = SUPER, S, Show/hide Slack, togglespecialworkspace, slack
bindd = SUPER, period, Show/hide 1Password, togglespecialworkspace, 1password bindd = SUPER, period, 1Password quick access, exec, 1password --quick-access
bindd = SUPER, Z, Show/hide Creddy, togglespecialworkspace, creddy bindd = SUPER CTRL, period, Show/hide 1Password, togglespecialworkspace, 1password
bindd = SUPER, Z, Show Creddy, exec, creddy shortcut show-window
# I'm used to super+L to lock screen # I'm used to super+L to lock screen
bindd = SUPER, L, Lock screen, exec, omarchy-lock-screen bindd = SUPER, L, Lock screen, exec, omarchy-lock-screen
@@ -39,3 +51,16 @@ bindd = SUPER, L, Lock screen, exec, omarchy-lock-screen
# I don't want ctrl+alt+delete to affect my "special" apps # I don't want ctrl+alt+delete to affect my "special" apps
unbind = CTRL ALT, DELETE unbind = CTRL ALT, DELETE
bindd = CTRL ALT, DELETE, Close all windows (except special), exec, ~/.local/bin/close-non-special-windows bindd = CTRL ALT, DELETE, Close all windows (except special), exec, ~/.local/bin/close-non-special-windows
# for WHATEVER reason, hyprland refuses to use the numeric symbols for keypad keys,
# so we have to use the navigation symbols instead
bindd = SUPER, KP_End, Switch to workspace 1, workspace, 1
bindd = SUPER, KP_Down, Switch to workspace 2, workspace, 2
bindd = SUPER, KP_Next, Switch to workspace 3, workspace, 3
bindd = SUPER, KP_Left, Switch to workspace 4, workspace, 4
bindd = SUPER, KP_Begin, Switch to workspace 5, workspace, 5
bindd = SUPER, KP_Right, Switch to workspace 6, workspace, 6
bindd = SUPER, KP_Home, Switch to workspace 7, workspace, 7
bindd = SUPER, KP_Up, Switch to workspace 8, workspace, 8
bindd = SUPER, kp_Prior, Switch to workspace 9, workspace, 9

View File

@@ -17,3 +17,5 @@ source = ~/.config/hypr/input.conf
source = ~/.config/hypr/bindings.conf source = ~/.config/hypr/bindings.conf
source = ~/.config/hypr/envs.conf source = ~/.config/hypr/envs.conf
source = ~/.config/hypr/autostart.conf source = ~/.config/hypr/autostart.conf
source = ~/.config/hypr/windows.conf

View File

@@ -13,6 +13,9 @@ input {
# Increase sensitity for mouse/trackpack (default: 0) # Increase sensitity for mouse/trackpack (default: 0)
sensitivity = -0.25 sensitivity = -0.25
# enable numlock automatically
numlock_by_default = true
touchpad { touchpad {
# Use natural (inverse) scrolling # Use natural (inverse) scrolling
# natural_scroll = true # natural_scroll = true

View File

@@ -4,7 +4,7 @@
# You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch) # You must relaunch Hyprland after changing any envs (use Super+Esc, then Relaunch)
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K. # Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
env = GDK_SCALE,2 env = GDK_SCALE,1.5
monitor = , preferred, auto, auto monitor = , preferred, auto, auto
# Good compromise for 27" or 32" 4K monitors (but fractional!) # Good compromise for 27" or 32" 4K monitors (but fractional!)

View File

@@ -0,0 +1,18 @@
# datagrip gets its own named workspace
windowrule = workspace name:DataGrip, class:jetbrains-datagrip
# creddy gets some special treatment
windowrule = workspace special:creddy, class:creddy
windowrule = float, class:creddy
windowrule = size 800 600, class:creddy
# this just gets ignored when monitor 2 isn't present, which is perfect
windowrule = monitor 2, class:creddy
windowrule = workspace special:slack, class:Slack
# excluding floating windows allows the unlock and quick-access popups to show in any workspace
windowrule = workspace special:1password, class:1Password, floating:0
# quick-access popup doesn't resize automatically when its content changes
# windowrule = size 550 404, class:1Password, title:Quick.*
windowrule = persistentsize, class:1Password, title:Quick.*

View File

@@ -1,5 +1,6 @@
[settings] [settings]
idiomatic_version_file_enable_tools = ["ruby"] idiomatic_version_file_enable_tools = ["ruby"]
experimental = true
[settings.ruby] [settings.ruby]
ruby_build_opts = "CC=gcc-14 CXX=g++-14" ruby_build_opts = "CC=gcc-14 CXX=g++-14"
@@ -12,8 +13,20 @@ node = "lts"
rust = "latest" rust = "latest"
uv = "latest" uv = "latest"
yay = "latest" yay = "latest"
k9s = "latest"
awscli = "latest"
kubectl = "latest"
difftastic = "latest"
[tools."gitlab:tools/setconf"]
version = "latest"
api_url = "https://gitlab.modg.net/api/v4"
bin = "setconf"
[tools."pipx:harlequin"] [tools."pipx:harlequin"]
version = "latest" version = "latest"
extras = "postgres,odbc" extras = "postgres,odbc"
[settings.python]
uv_venv_auto = true

View File

@@ -0,0 +1,111 @@
{
"reload_style_on_change": true,
"layer": "top",
"position": "top",
"spacing": 0,
"height": 26,
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
"modules-center": ["clock", "custom/update"],
"modules-right": [
"group/tray-expander",
"bluetooth",
"network",
"pulseaudio",
"cpu",
"battery"
],
"hyprland/workspaces": {
"on-click": "activate",
"format": "{icon}",
},
"custom/omarchy": {
"format": "<span font='omarchy'>\ue900</span>",
"on-click": "omarchy-menu",
"tooltip-format": "Omarchy Menu\n\nSuper + Alt + Space"
},
"custom/update": {
"format": "",
"exec": "omarchy-update-available",
"on-click": "omarchy-launch-floating-terminal-with-presentation omarchy-update",
"tooltip-format": "Omarchy update available",
"interval": 3600
},
"cpu": {
"interval": 5,
"format": "󰍛",
"on-click": "alacritty -e btop"
},
"clock": {
"format": "{:%A %H:%M}",
"format-alt": "{:%d %B W%V %Y}",
"tooltip": false,
"on-click-right": "omarchy-cmd-tzupdate"
},
"network": {
"format-icons": ["󰤯", "󰤟", "󰤢", "󰤥", "󰤨"],
"format": "{icon}",
"format-wifi": "{icon}",
"format-ethernet": "󰀂",
"format-disconnected": "󰖪",
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
"tooltip-format-disconnected": "Disconnected",
"interval": 3,
"spacing": 1,
"on-click": "alacritty --class=Impala -e impala"
},
"battery": {
"format": "{capacity}% {icon}",
"format-discharging": "{icon}",
"format-charging": "{icon}",
"format-plugged": "",
"format-icons": {
"charging": ["󰢜", "󰂆", "󰂇", "󰂈", "󰢝", "󰂉", "󰢞", "󰂊", "󰂋", "󰂅"],
"default": ["󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"]
},
"format-full": "󰂅",
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
"interval": 5,
"on-click": "omarchy-menu power",
"states": {
"warning": 20,
"critical": 10
}
},
"bluetooth": {
"format": "",
"format-disabled": "󰂲",
"format-connected": "",
"tooltip-format": "Devices connected: {num_connections}",
"on-click": "blueberry"
},
"pulseaudio": {
"format": "{icon}",
"on-click": "alacritty --class=Wiremix -e wiremix",
"on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%",
"scroll-step": 5,
"format-muted": "󰝟",
"format-icons": {
"default": ["", "", ""]
}
},
"group/tray-expander": {
"orientation": "inherit",
"drawer": {
"transition-duration": 600,
"children-class": "tray-group-item"
},
"modules": ["custom/expand-icon", "tray"]
},
"custom/expand-icon": {
"format": " ",
"tooltip": false
},
"tray": {
"icon-size": 12,
"spacing": 12
}
}

View File

@@ -0,0 +1,67 @@
@import "../omarchy/current/theme/waybar.css";
* {
background-color: @background;
/* color: @foreground; */
border: none;
border-radius: 0;
min-height: 0;
font-family: CaskaydiaMono Nerd Font;
font-size: 12px;
}
.modules-left {
margin-left: 8px;
}
.modules-right {
margin-right: 8px;
}
#workspaces button {
all: initial;
padding: 0 6px;
margin: 0 1.5px;
min-width: 9px;
}
#workspaces button.empty {
opacity: 0.5;
}
#workspaces button.active {
color: #bfe28c;
}
#tray,
#cpu,
#battery,
#network,
#bluetooth,
#pulseaudio,
#custom-omarchy,
#custom-update {
min-width: 12px;
margin: 0 7.5px;
}
#custom-expand-icon {
margin-right: 7px;
}
tooltip {
padding: 2px;
}
#custom-update {
font-size: 10px;
}
#clock {
margin-left: 8.75px;
}
.hidden {
opacity: 0;
}

View File

@@ -0,0 +1,71 @@
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"agent": {
"model_parameters": [],
"default_profile": "write"
},
// "features": {
// "edit_prediction_provider": "none"
// },
"always_treat_brackets_as_autoclosed": true,
"tab_size": 4,
"base_keymap": "SublimeText",
"format_on_save": "off",
"ui_font_size": 16,
"buffer_font_size": 15,
"buffer_font_features": {
"calt": false
},
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark"
},
"languages": {
"JSON": {
"tab_size": 2
},
"JSONC": {
"tab_size": 2
},
"Elixir": {
"tab_size": 2
},
"Markdown": {
"soft_wrap": "editor_width"
},
"Jinja2": {
"remove_trailing_whitespace_on_save": false
},
"YAML": {
"tab_size": 2
}
},
"file_types": {
"Markdown": ["svx"]
},
"experimental.theme_overrides": {
// use with One Dark Pro theme
// "editor.document_highlight.read_background": "#74ade81a",
"syntax": {
"operator": {
"color": "#fa428f"
},
"string.doc": {
"color": "#a2a3a7"
}
// use with One Dark Pro theme
// "punctuation.special": {
// "color": "#b1574b",
// },
}
}
}

View File

@@ -0,0 +1,35 @@
#!/usr/bin/python
import json
import subprocess
CONFIG = {
'Samsung Electric Company LS27A800U HCJW301093': 1,
'Seanix Technology Inc NX-EDG27X C6F0K3CN07UL': 2,
'BOE 0x0BCA': 3
}
p = subprocess.run(
['hyprctl', 'monitors', '-j'],
capture_output=True,
check=True,
encoding='utf-8'
)
monitors = json.loads(p.stdout)
print('monitors:', monitors)
if set(m['description'] for m in monitors) == CONFIG.keys():
print('config matched, assigning:')
dispatches = []
for m in monitors:
workspace = CONFIG[m['description']]
# move workspace to desired monitor
dispatches.append(f"dispatch moveworkspacetomonitor {workspace} {m['name']}")
# focus the workspace so that it's visible after moving
dispatches.append(f"workspace {workspace}")
cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)]
print('\n'.join(cmd))
subprocess.run(cmd, check=True)
else:
print('config not matched')

View File

@@ -0,0 +1,4 @@
#!/usr/bin/bash
# clear all files in ~/Downloads older than 24h
fd --changed-before 1d --full-path ~/Downloads --exec-batch rm -rf

View File

@@ -0,0 +1,3 @@
#!/usr/bin/bash
creddy docker $@

View File

@@ -2,5 +2,9 @@
sudo pacman -U https://git.jfmonty2.com/jfmonty2/creddy/releases/download/v0.6.5/creddy-0.6.5-1-x86_64.pkg.tar.zst sudo pacman -U https://git.jfmonty2.com/jfmonty2/creddy/releases/download/v0.6.5/creddy-0.6.5-1-x86_64.pkg.tar.zst
sudo pacman -S unixodbc sudo pacman -S unixodbc
sudo pacman -S vulkan-radeon
sudo pacman -R amdvlk
yay aur/msodbcsql17 yay msodbcsql17
yay wayfreeze-git
yay heynote-bin

View File

@@ -0,0 +1,7 @@
#!/usr/bin/bash
# generate ids from 1-100, remove the ids of existing workspaces, take the
# first of the remaining numbers and you have the first available workspace id
FIRST_AVAILABLE=$(hyprctl workspaces -j | jq '[range(1; 100)] - map(.id) | .[0]')
hyprctl dispatch workspace $FIRST_AVAILABLE

View File

@@ -0,0 +1,6 @@
{
"auths": {
"686562827170.dkr.ecr.us-east-1.amazonaws.com": {}
},
"credsStore": "creddy"
}