Compare commits

...

5 Commits

10 changed files with 73 additions and 26 deletions

View File

@@ -1,8 +1,5 @@
# Extra autostart processes
# kanshi for managing multi-monitor setup
exec-once = uwsm app -- kanshi
# assign workspaces to preferred monitors
exec = ~/.local/bin/assign-workspace-monitors

View File

@@ -11,7 +11,7 @@ listener {
}
listener {
timeout = 300 # 5min
timeout = 151 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}

View File

@@ -29,7 +29,8 @@ input {
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, tag:terminal
windowrule = match:class (Alacritty|kitty), scroll_touchpad 1.5
windowrule = match:class com.mitchellh.ghostty, scroll_touchpad 0.2
device {
name = pixa3854:00-093a:0274-touchpad

View File

@@ -1,18 +1,18 @@
# datagrip gets its own named workspace
windowrule = workspace name:DataGrip, class:jetbrains-datagrip
windowrule = workspace name:DataGrip, match:class jetbrains-datagrip
# creddy gets some special treatment
# windowrule = workspace special:creddy, class:creddy
windowrule = float, class:creddy
windowrule = size 800 600, class:creddy
windowrule = float 1, match:class creddy
windowrule = size 800 600, match:class creddy
# this just gets ignored when monitor 2 isn't present, which is perfect
windowrule = monitor 2, class:creddy
windowrule = monitor 1, match:class creddy
windowrule = workspace special:slack, class:Slack
windowrule = workspace special:slack, match: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
windowrule = workspace special:1password, match:class 1Password, match:float 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.*
windowrule = persistent_size 1, match:class 1Password, match:title Quick.*

View File

@@ -21,6 +21,9 @@ rg = "latest"
duckdb = "latest"
tokei = "latest"
claude = "latest"
"cargo:shikane" = "latest"
xh = "latest"
"pipx:asciinema" = "latest"
[tools."gitlab:tools/setconf"]
version = "latest"

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Shikane monitor manager
After=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/mise exec -- shikane
[Install]
WantedBy=default.target

View File

@@ -5,7 +5,7 @@
"spacing": 0,
"height": 26,
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
"modules-center": ["clock", "custom/update", "custom/screenrecording-indicator"],
"modules-center": ["clock", "custom/update", "custom/voxtype", "custom/screenrecording-indicator"],
"modules-right": [
"group/tray-expander",
"bluetooth",
@@ -91,12 +91,13 @@
},
"pulseaudio": {
"format": "{icon}",
"on-click": "omarchy-launch-or-focus-tui wiremix",
"on-click": "omarchy-launch-audio",
"on-click-right": "pamixer -t",
"tooltip-format": "Playing at {volume}%",
"scroll-step": 5,
"format-muted": "",
"format-icons": {
"headphone": "",
"default": ["", "", ""]
}
},
@@ -118,6 +119,19 @@
"signal": 8,
"return-type": "json"
},
"custom/voxtype": {
"exec": "omarchy-voxtype-status",
"return-type": "json",
"format": "{icon}",
"format-icons": {
"idle": "",
"recording": "󰍬",
"transcribing": "󰔟"
},
"tooltip": true,
"on-click-right": "omarchy-voxtype-config",
"on-click": "omarchy-voxtype-model"
},
"tray": {
"icon-size": 12,
"spacing": 17

View File

@@ -69,7 +69,7 @@ tooltip {
}
#clock {
margin-left: 8.75px;
margin-left: 5px;
}
.hidden {
@@ -78,10 +78,20 @@ tooltip {
#custom-screenrecording-indicator {
min-width: 12px;
margin-left: 8.75px;
margin-left: 5px;
font-size: 10px;
padding-bottom: 1px;
}
#custom-screenrecording-indicator.active {
color: #a55555;
}
#custom-voxtype {
min-width: 12px;
margin: 0 0 0 7.5px;
}
#custom-voxtype.recording {
color: #a55555;
}

View File

@@ -7,6 +7,9 @@
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"git_panel": {
"tree_view": true
},
"agent": {
"model_parameters": [],
"default_profile": "write"

View File

@@ -3,11 +3,11 @@
import json
import subprocess
CONFIG = {
'Samsung Electric Company LS27A800U HCJW301093': 1,
'Seanix Technology Inc NX-EDG27X C6F0K3CN07UL': 2,
'BOE 0x0BCA': 3
}
CONFIG = [
{'make': 'Samsung Electric Company', 'model': 'LS27A800U', 'position': 'left', 'workspace': 1},
{'make': 'Seanix Technology Inc', 'model': 'NX-EDG27X', 'position': 'center', 'workspace': 2},
{'make': 'BOE', 'model': '0x0BCA', 'position': 'right', 'workspace': 3},
]
p = subprocess.run(
@@ -17,15 +17,23 @@ p = subprocess.run(
encoding='utf-8'
)
monitors = json.loads(p.stdout)
print('monitors:', monitors)
# print('monitors:', monitors)
if set(m['description'] for m in monitors) == CONFIG.keys():
monitor_ids = {}
for mon in monitors:
for conf in CONFIG:
if conf['make'] == mon['make'] and conf['model'] == mon['model']:
monitor_ids[ conf['position'] ] = mon['id']
if len(monitor_ids) == len(CONFIG):
print('config matched, assigning:')
dispatches = []
for m in monitors:
workspace = CONFIG[m['description']]
for conf in CONFIG:
workspace = conf['workspace']
monitor_id = monitor_ids[ conf['position'] ]
# move workspace to desired monitor
dispatches.append(f"dispatch moveworkspacetomonitor {workspace} {m['name']}")
dispatches.append(f"dispatch moveworkspacetomonitor {workspace} {monitor_id}")
# focus the workspace so that it's visible after moving
dispatches.append(f"workspace {workspace}")
cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)]