Compare commits
5 Commits
cfcd87dc3c
...
71573df4ae
| Author | SHA1 | Date | |
|---|---|---|---|
| 71573df4ae | |||
| b63175c389 | |||
| 488e286fb3 | |||
| 38e92a7c9c | |||
| 59b4ffb888 |
@@ -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
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ listener {
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5min
|
||||
timeout = 151 # 5min
|
||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.*
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
11
dot_config/systemd/user/shikane.service
Normal file
11
dot_config/systemd/user/shikane.service
Normal 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user