Compare commits
5 Commits
cfcd87dc3c
...
71573df4ae
| Author | SHA1 | Date | |
|---|---|---|---|
| 71573df4ae | |||
| b63175c389 | |||
| 488e286fb3 | |||
| 38e92a7c9c | |||
| 59b4ffb888 |
@@ -1,8 +1,5 @@
|
|||||||
# Extra autostart processes
|
# Extra autostart processes
|
||||||
|
|
||||||
# kanshi for managing multi-monitor setup
|
|
||||||
exec-once = uwsm app -- kanshi
|
|
||||||
|
|
||||||
# assign workspaces to preferred monitors
|
# assign workspaces to preferred monitors
|
||||||
exec = ~/.local/bin/assign-workspace-monitors
|
exec = ~/.local/bin/assign-workspace-monitors
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
listener {
|
listener {
|
||||||
timeout = 300 # 5min
|
timeout = 151 # 5min
|
||||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ input {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Scroll faster in the terminal
|
# 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 {
|
device {
|
||||||
name = pixa3854:00-093a:0274-touchpad
|
name = pixa3854:00-093a:0274-touchpad
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
# datagrip gets its own named workspace
|
# 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
|
# creddy gets some special treatment
|
||||||
# windowrule = workspace special:creddy, class:creddy
|
# windowrule = workspace special:creddy, class:creddy
|
||||||
windowrule = float, class:creddy
|
windowrule = float 1, match:class creddy
|
||||||
windowrule = size 800 600, class:creddy
|
windowrule = size 800 600, match:class creddy
|
||||||
# this just gets ignored when monitor 2 isn't present, which is perfect
|
# 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
|
# 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
|
# quick-access popup doesn't resize automatically when its content changes
|
||||||
# windowrule = size 550 404, class:1Password, title:Quick.*
|
# 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"
|
duckdb = "latest"
|
||||||
tokei = "latest"
|
tokei = "latest"
|
||||||
claude = "latest"
|
claude = "latest"
|
||||||
|
"cargo:shikane" = "latest"
|
||||||
|
xh = "latest"
|
||||||
|
"pipx:asciinema" = "latest"
|
||||||
|
|
||||||
[tools."gitlab:tools/setconf"]
|
[tools."gitlab:tools/setconf"]
|
||||||
version = "latest"
|
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,
|
"spacing": 0,
|
||||||
"height": 26,
|
"height": 26,
|
||||||
"modules-left": ["custom/omarchy", "hyprland/workspaces"],
|
"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": [
|
"modules-right": [
|
||||||
"group/tray-expander",
|
"group/tray-expander",
|
||||||
"bluetooth",
|
"bluetooth",
|
||||||
@@ -91,12 +91,13 @@
|
|||||||
},
|
},
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon}",
|
"format": "{icon}",
|
||||||
"on-click": "omarchy-launch-or-focus-tui wiremix",
|
"on-click": "omarchy-launch-audio",
|
||||||
"on-click-right": "pamixer -t",
|
"on-click-right": "pamixer -t",
|
||||||
"tooltip-format": "Playing at {volume}%",
|
"tooltip-format": "Playing at {volume}%",
|
||||||
"scroll-step": 5,
|
"scroll-step": 5,
|
||||||
"format-muted": "",
|
"format-muted": "",
|
||||||
"format-icons": {
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
"default": ["", "", ""]
|
"default": ["", "", ""]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -118,6 +119,19 @@
|
|||||||
"signal": 8,
|
"signal": 8,
|
||||||
"return-type": "json"
|
"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": {
|
"tray": {
|
||||||
"icon-size": 12,
|
"icon-size": 12,
|
||||||
"spacing": 17
|
"spacing": 17
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ tooltip {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#clock {
|
#clock {
|
||||||
margin-left: 8.75px;
|
margin-left: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hidden {
|
.hidden {
|
||||||
@@ -78,10 +78,20 @@ tooltip {
|
|||||||
|
|
||||||
#custom-screenrecording-indicator {
|
#custom-screenrecording-indicator {
|
||||||
min-width: 12px;
|
min-width: 12px;
|
||||||
margin-left: 8.75px;
|
margin-left: 5px;
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
padding-bottom: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-screenrecording-indicator.active {
|
#custom-screenrecording-indicator.active {
|
||||||
color: #a55555;
|
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
|
// custom settings, run `zed: open default settings` from the
|
||||||
// command palette (cmd-shift-p / ctrl-shift-p)
|
// command palette (cmd-shift-p / ctrl-shift-p)
|
||||||
{
|
{
|
||||||
|
"git_panel": {
|
||||||
|
"tree_view": true
|
||||||
|
},
|
||||||
"agent": {
|
"agent": {
|
||||||
"model_parameters": [],
|
"model_parameters": [],
|
||||||
"default_profile": "write"
|
"default_profile": "write"
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
CONFIG = {
|
CONFIG = [
|
||||||
'Samsung Electric Company LS27A800U HCJW301093': 1,
|
{'make': 'Samsung Electric Company', 'model': 'LS27A800U', 'position': 'left', 'workspace': 1},
|
||||||
'Seanix Technology Inc NX-EDG27X C6F0K3CN07UL': 2,
|
{'make': 'Seanix Technology Inc', 'model': 'NX-EDG27X', 'position': 'center', 'workspace': 2},
|
||||||
'BOE 0x0BCA': 3
|
{'make': 'BOE', 'model': '0x0BCA', 'position': 'right', 'workspace': 3},
|
||||||
}
|
]
|
||||||
|
|
||||||
|
|
||||||
p = subprocess.run(
|
p = subprocess.run(
|
||||||
@@ -17,15 +17,23 @@ p = subprocess.run(
|
|||||||
encoding='utf-8'
|
encoding='utf-8'
|
||||||
)
|
)
|
||||||
monitors = json.loads(p.stdout)
|
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:')
|
print('config matched, assigning:')
|
||||||
dispatches = []
|
dispatches = []
|
||||||
for m in monitors:
|
for conf in CONFIG:
|
||||||
workspace = CONFIG[m['description']]
|
workspace = conf['workspace']
|
||||||
|
monitor_id = monitor_ids[ conf['position'] ]
|
||||||
# move workspace to desired monitor
|
# 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
|
# focus the workspace so that it's visible after moving
|
||||||
dispatches.append(f"workspace {workspace}")
|
dispatches.append(f"workspace {workspace}")
|
||||||
cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)]
|
cmd = ['hyprctl', '--batch', ' ; '.join(dispatches)]
|
||||||
|
|||||||
Reference in New Issue
Block a user