diff options
| -rw-r--r-- | files/darwin-settings/vorssaint_settings.plist | 787 | ||||
| -rw-r--r-- | hosts/RyanMac/configuration.nix | 93 | ||||
| -rw-r--r-- | modules/darwin/yabai/default.nix | 237 |
3 files changed, 1032 insertions, 85 deletions
diff --git a/files/darwin-settings/vorssaint_settings.plist b/files/darwin-settings/vorssaint_settings.plist new file mode 100644 index 0000000..44a5daa --- /dev/null +++ b/files/darwin-settings/vorssaint_settings.plist | |||
| @@ -0,0 +1,787 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| 3 | <plist version="1.0"> | ||
| 4 | <dict> | ||
| 5 | <key>settings</key> | ||
| 6 | <dict> | ||
| 7 | <key>appAppearance</key> | ||
| 8 | <string>system</string> | ||
| 9 | <key>appUpdatesCheckFrequency</key> | ||
| 10 | <string>off</string> | ||
| 11 | <key>appUpdatesIncludeAppStore</key> | ||
| 12 | <true/> | ||
| 13 | <key>appUpdatesNotify</key> | ||
| 14 | <true/> | ||
| 15 | <key>autoCheckUpdates</key> | ||
| 16 | <true/> | ||
| 17 | <key>autoQuitEnabled</key> | ||
| 18 | <true/> | ||
| 19 | <key>autoQuitExceptions</key> | ||
| 20 | <array> | ||
| 21 | <string>com.apple.finder</string> | ||
| 22 | </array> | ||
| 23 | <key>batteryLimitPercent</key> | ||
| 24 | <integer>10</integer> | ||
| 25 | <key>brightnessControlEnabled</key> | ||
| 26 | <false/> | ||
| 27 | <key>brightnessKeysEnabled</key> | ||
| 28 | <false/> | ||
| 29 | <key>brightnessOSDEnabled</key> | ||
| 30 | <false/> | ||
| 31 | <key>cameraPreviewShortcut</key> | ||
| 32 | <string>control+option+command:13</string> | ||
| 33 | <key>cameraPreviewShortcutEnabled</key> | ||
| 34 | <false/> | ||
| 35 | <key>clamshellPreferred</key> | ||
| 36 | <false/> | ||
| 37 | <key>cleanerScheduleFrequency</key> | ||
| 38 | <string>off</string> | ||
| 39 | <key>cleanerScheduleHour</key> | ||
| 40 | <integer>9</integer> | ||
| 41 | <key>cleanerScheduleMinute</key> | ||
| 42 | <integer>0</integer> | ||
| 43 | <key>cleanerScheduleNotify</key> | ||
| 44 | <true/> | ||
| 45 | <key>cleanerScheduleWeekday</key> | ||
| 46 | <integer>2</integer> | ||
| 47 | <key>clipboardHistoryEnabled</key> | ||
| 48 | <false/> | ||
| 49 | <key>clipboardHistoryIncludeImagesFiles</key> | ||
| 50 | <true/> | ||
| 51 | <key>clipboardHistoryLimit</key> | ||
| 52 | <integer>50</integer> | ||
| 53 | <key>clipboardHistoryShortcut</key> | ||
| 54 | <string>control+option+command:9</string> | ||
| 55 | <key>clipboardHistoryShortcutEnabled</key> | ||
| 56 | <true/> | ||
| 57 | <key>clipboardHistorySkipSensitive</key> | ||
| 58 | <true/> | ||
| 59 | <key>colorPickerBareHex</key> | ||
| 60 | <false/> | ||
| 61 | <key>colorPickerFormat</key> | ||
| 62 | <string>hex</string> | ||
| 63 | <key>colorPickerShortcut</key> | ||
| 64 | <string>control+option+command:8</string> | ||
| 65 | <key>colorPickerShortcutEnabled</key> | ||
| 66 | <false/> | ||
| 67 | <key>commandBarAliases</key> | ||
| 68 | <string></string> | ||
| 69 | <key>commandBarDisabledSources</key> | ||
| 70 | <string></string> | ||
| 71 | <key>commandBarHidden</key> | ||
| 72 | <string></string> | ||
| 73 | <key>commandBarPins</key> | ||
| 74 | <string></string> | ||
| 75 | <key>commandBarShortcut</key> | ||
| 76 | <string>option:49</string> | ||
| 77 | <key>commandBarShortcutEnabled</key> | ||
| 78 | <false/> | ||
| 79 | <key>defaultDurationMinutes</key> | ||
| 80 | <integer>0</integer> | ||
| 81 | <key>dockClickCycleWindows</key> | ||
| 82 | <false/> | ||
| 83 | <key>dockClickMinimize</key> | ||
| 84 | <true/> | ||
| 85 | <key>dockPreviewEnabled</key> | ||
| 86 | <true/> | ||
| 87 | <key>extraBrightnessEnabled</key> | ||
| 88 | <false/> | ||
| 89 | <key>extraBrightnessLevel</key> | ||
| 90 | <integer>100</integer> | ||
| 91 | <key>featureAvailable.appUpdates</key> | ||
| 92 | <false/> | ||
| 93 | <key>featureAvailable.autoQuit</key> | ||
| 94 | <true/> | ||
| 95 | <key>featureAvailable.brightness</key> | ||
| 96 | <false/> | ||
| 97 | <key>featureAvailable.cameraPreview</key> | ||
| 98 | <true/> | ||
| 99 | <key>featureAvailable.cleaner</key> | ||
| 100 | <false/> | ||
| 101 | <key>featureAvailable.cleaningMode</key> | ||
| 102 | <false/> | ||
| 103 | <key>featureAvailable.clipboardHistory</key> | ||
| 104 | <false/> | ||
| 105 | <key>featureAvailable.colorPicker</key> | ||
| 106 | <true/> | ||
| 107 | <key>featureAvailable.commandBar</key> | ||
| 108 | <false/> | ||
| 109 | <key>featureAvailable.dockClick</key> | ||
| 110 | <false/> | ||
| 111 | <key>featureAvailable.dockPreview</key> | ||
| 112 | <false/> | ||
| 113 | <key>featureAvailable.extraBrightness</key> | ||
| 114 | <false/> | ||
| 115 | <key>featureAvailable.finderCutPaste</key> | ||
| 116 | <true/> | ||
| 117 | <key>featureAvailable.homebrew</key> | ||
| 118 | <false/> | ||
| 119 | <key>featureAvailable.keepAwake</key> | ||
| 120 | <false/> | ||
| 121 | <key>featureAvailable.keyboardDebounce</key> | ||
| 122 | <false/> | ||
| 123 | <key>featureAvailable.mediaTools</key> | ||
| 124 | <false/> | ||
| 125 | <key>featureAvailable.micMute</key> | ||
| 126 | <false/> | ||
| 127 | <key>featureAvailable.middleClick</key> | ||
| 128 | <false/> | ||
| 129 | <key>featureAvailable.mixer</key> | ||
| 130 | <true/> | ||
| 131 | <key>featureAvailable.monitorCPU</key> | ||
| 132 | <true/> | ||
| 133 | <key>featureAvailable.monitorDisk</key> | ||
| 134 | <true/> | ||
| 135 | <key>featureAvailable.monitorGPU</key> | ||
| 136 | <true/> | ||
| 137 | <key>featureAvailable.monitorMemory</key> | ||
| 138 | <true/> | ||
| 139 | <key>featureAvailable.monitorNetwork</key> | ||
| 140 | <true/> | ||
| 141 | <key>featureAvailable.monitorPower</key> | ||
| 142 | <true/> | ||
| 143 | <key>featureAvailable.mouseButtonShortcuts</key> | ||
| 144 | <false/> | ||
| 145 | <key>featureAvailable.mouseNavigation</key> | ||
| 146 | <false/> | ||
| 147 | <key>featureAvailable.musicBlock</key> | ||
| 148 | <false/> | ||
| 149 | <key>featureAvailable.pastePlain</key> | ||
| 150 | <false/> | ||
| 151 | <key>featureAvailable.quickLauncher</key> | ||
| 152 | <true/> | ||
| 153 | <key>featureAvailable.quickToggles</key> | ||
| 154 | <false/> | ||
| 155 | <key>featureAvailable.radialMenu</key> | ||
| 156 | <true/> | ||
| 157 | <key>featureAvailable.scratchpad</key> | ||
| 158 | <false/> | ||
| 159 | <key>featureAvailable.screenOCR</key> | ||
| 160 | <false/> | ||
| 161 | <key>featureAvailable.screenshot</key> | ||
| 162 | <true/> | ||
| 163 | <key>featureAvailable.scrollInverter</key> | ||
| 164 | <true/> | ||
| 165 | <key>featureAvailable.shelf</key> | ||
| 166 | <true/> | ||
| 167 | <key>featureAvailable.smoothScroll</key> | ||
| 168 | <false/> | ||
| 169 | <key>featureAvailable.soundOutputSwitcher</key> | ||
| 170 | <false/> | ||
| 171 | <key>featureAvailable.superKey</key> | ||
| 172 | <false/> | ||
| 173 | <key>featureAvailable.switcher</key> | ||
| 174 | <false/> | ||
| 175 | <key>featureAvailable.textSnippets</key> | ||
| 176 | <false/> | ||
| 177 | <key>featureAvailable.uninstaller</key> | ||
| 178 | <false/> | ||
| 179 | <key>featureAvailable.urlCleaner</key> | ||
| 180 | <false/> | ||
| 181 | <key>featureAvailable.windowLayout</key> | ||
| 182 | <false/> | ||
| 183 | <key>featureAvailable.windowMaximizer</key> | ||
| 184 | <false/> | ||
| 185 | <key>featuresOnboardingVersion</key> | ||
| 186 | <integer>4</integer> | ||
| 187 | <key>finderCutPasteEnabled</key> | ||
| 188 | <true/> | ||
| 189 | <key>hasOnboarded</key> | ||
| 190 | <true/> | ||
| 191 | <key>hotkeyEnabled</key> | ||
| 192 | <true/> | ||
| 193 | <key>keepAwakeActiveIcon</key> | ||
| 194 | <string>vorssaint</string> | ||
| 195 | <key>keepAwakeAutoStart</key> | ||
| 196 | <false/> | ||
| 197 | <key>keepAwakeConnectedToPower</key> | ||
| 198 | <false/> | ||
| 199 | <key>keepAwakeExternalDisplay</key> | ||
| 200 | <false/> | ||
| 201 | <key>keepAwakeIconTint</key> | ||
| 202 | <string>orange</string> | ||
| 203 | <key>keepAwakeMouseJiggleEnabled</key> | ||
| 204 | <false/> | ||
| 205 | <key>keepAwakeMouseJiggleIntervalMinutes</key> | ||
| 206 | <integer>5</integer> | ||
| 207 | <key>keepAwakeShortcut</key> | ||
| 208 | <string>control+option+command:40</string> | ||
| 209 | <key>keyboardDebounceEnabled</key> | ||
| 210 | <false/> | ||
| 211 | <key>keyboardDebounceKeyWindows</key> | ||
| 212 | <string></string> | ||
| 213 | <key>keyboardDebounceWindowMs</key> | ||
| 214 | <integer>5</integer> | ||
| 215 | <key>lastUpdateIntroVersion</key> | ||
| 216 | <string>3.2.0</string> | ||
| 217 | <key>launchAtLoginWanted</key> | ||
| 218 | <false/> | ||
| 219 | <key>mediaGIFEnd</key> | ||
| 220 | <real>0.0</real> | ||
| 221 | <key>mediaGIFFPS</key> | ||
| 222 | <real>12</real> | ||
| 223 | <key>mediaGIFLoops</key> | ||
| 224 | <true/> | ||
| 225 | <key>mediaGIFQuality</key> | ||
| 226 | <real>0.73999999999999999</real> | ||
| 227 | <key>mediaGIFStart</key> | ||
| 228 | <real>0.0</real> | ||
| 229 | <key>mediaGIFWidth</key> | ||
| 230 | <integer>720</integer> | ||
| 231 | <key>mediaImageFormat</key> | ||
| 232 | <string>jpeg</string> | ||
| 233 | <key>mediaImageMaxDimension</key> | ||
| 234 | <integer>1600</integer> | ||
| 235 | <key>mediaImageQuality</key> | ||
| 236 | <real>0.71999999999999997</real> | ||
| 237 | <key>mediaImageStripMetadata</key> | ||
| 238 | <true/> | ||
| 239 | <key>mediaLastTool</key> | ||
| 240 | <string>videoCompressor</string> | ||
| 241 | <key>mediaTextAccurate</key> | ||
| 242 | <true/> | ||
| 243 | <key>mediaTextLanguageCorrection</key> | ||
| 244 | <true/> | ||
| 245 | <key>mediaVideoCodec</key> | ||
| 246 | <string>h264</string> | ||
| 247 | <key>mediaVideoEnd</key> | ||
| 248 | <real>0.0</real> | ||
| 249 | <key>mediaVideoFPS</key> | ||
| 250 | <real>30</real> | ||
| 251 | <key>mediaVideoKeepAudio</key> | ||
| 252 | <true/> | ||
| 253 | <key>mediaVideoMaxDimension</key> | ||
| 254 | <integer>1280</integer> | ||
| 255 | <key>mediaVideoQuality</key> | ||
| 256 | <real>0.68000000000000005</real> | ||
| 257 | <key>mediaVideoStart</key> | ||
| 258 | <real>0.0</real> | ||
| 259 | <key>menuBarBatteryTemperature</key> | ||
| 260 | <false/> | ||
| 261 | <key>menuBarBatteryTime</key> | ||
| 262 | <false/> | ||
| 263 | <key>menuBarCPU</key> | ||
| 264 | <false/> | ||
| 265 | <key>menuBarCPUTemperature</key> | ||
| 266 | <false/> | ||
| 267 | <key>menuBarCombineTemperatures</key> | ||
| 268 | <true/> | ||
| 269 | <key>menuBarDiskActivity</key> | ||
| 270 | <false/> | ||
| 271 | <key>menuBarDiskUsage</key> | ||
| 272 | <false/> | ||
| 273 | <key>menuBarGPU</key> | ||
| 274 | <false/> | ||
| 275 | <key>menuBarGPUTemperature</key> | ||
| 276 | <false/> | ||
| 277 | <key>menuBarHideIconWithMetrics</key> | ||
| 278 | <false/> | ||
| 279 | <key>menuBarLabelStyle</key> | ||
| 280 | <string>compact</string> | ||
| 281 | <key>menuBarMemoryStyle</key> | ||
| 282 | <string>percent</string> | ||
| 283 | <key>menuBarMetricAppearance</key> | ||
| 284 | <string>values</string> | ||
| 285 | <key>menuBarMetricOrder</key> | ||
| 286 | <string>cpu,cpuTemperature,gpu,gpuTemperature,memory,battery,batteryTime,batteryTemperature,peripheralBattery,network,diskUsage,diskActivity,power</string> | ||
| 287 | <key>menuBarMetricSpacing</key> | ||
| 288 | <string>compact</string> | ||
| 289 | <key>menuBarNetworkUploadFirst</key> | ||
| 290 | <false/> | ||
| 291 | <key>menuBarPeripheralBattery</key> | ||
| 292 | <false/> | ||
| 293 | <key>menuBarPreset</key> | ||
| 294 | <string>dense</string> | ||
| 295 | <key>menuBarSeparateMetrics</key> | ||
| 296 | <false/> | ||
| 297 | <key>menuBarUsageBarCriticalColor</key> | ||
| 298 | <string>#FF453A</string> | ||
| 299 | <key>menuBarUsageBarElevatedColor</key> | ||
| 300 | <string>#FFD60A</string> | ||
| 301 | <key>menuBarUsageBarHighThreshold</key> | ||
| 302 | <integer>90</integer> | ||
| 303 | <key>menuBarUsageBarMediumThreshold</key> | ||
| 304 | <integer>70</integer> | ||
| 305 | <key>menuBarUsageBarNormalColor</key> | ||
| 306 | <string>#64D2FF</string> | ||
| 307 | <key>micMuteMenuBarIndicator</key> | ||
| 308 | <true/> | ||
| 309 | <key>micMuteShortcut</key> | ||
| 310 | <string>control+option+command:46</string> | ||
| 311 | <key>micMuteShortcutEnabled</key> | ||
| 312 | <false/> | ||
| 313 | <key>middleClickEnabled</key> | ||
| 314 | <false/> | ||
| 315 | <key>middleClickExceptions</key> | ||
| 316 | <array/> | ||
| 317 | <key>middleClickTapFingers</key> | ||
| 318 | <integer>0</integer> | ||
| 319 | <key>mixerHeadphonesDisconnectVolumePercent</key> | ||
| 320 | <integer>25</integer> | ||
| 321 | <key>mixerLowerVolumeOnHeadphonesDisconnect</key> | ||
| 322 | <false/> | ||
| 323 | <key>mixerShowFinder</key> | ||
| 324 | <true/> | ||
| 325 | <key>monitorAlertBattery</key> | ||
| 326 | <false/> | ||
| 327 | <key>monitorAlertBatteryPercent</key> | ||
| 328 | <integer>15</integer> | ||
| 329 | <key>monitorAlertCPU</key> | ||
| 330 | <false/> | ||
| 331 | <key>monitorAlertCPUTemperature</key> | ||
| 332 | <false/> | ||
| 333 | <key>monitorAlertCPUTemperatureThreshold</key> | ||
| 334 | <integer>90</integer> | ||
| 335 | <key>monitorAlertCPUThreshold</key> | ||
| 336 | <integer>90</integer> | ||
| 337 | <key>monitorAlertCooldownMinutes</key> | ||
| 338 | <integer>15</integer> | ||
| 339 | <key>monitorAlertDisk</key> | ||
| 340 | <false/> | ||
| 341 | <key>monitorAlertDiskFreePercent</key> | ||
| 342 | <integer>10</integer> | ||
| 343 | <key>monitorAlertMemory</key> | ||
| 344 | <false/> | ||
| 345 | <key>monitorDiskActivity</key> | ||
| 346 | <true/> | ||
| 347 | <key>monitorDiskProtection</key> | ||
| 348 | <true/> | ||
| 349 | <key>monitorDiskSMART</key> | ||
| 350 | <true/> | ||
| 351 | <key>monitorDiskTools</key> | ||
| 352 | <true/> | ||
| 353 | <key>monitorDiskUsage</key> | ||
| 354 | <true/> | ||
| 355 | <key>monitorGraphBattery</key> | ||
| 356 | <true/> | ||
| 357 | <key>monitorGraphCPU</key> | ||
| 358 | <true/> | ||
| 359 | <key>monitorGraphDisk</key> | ||
| 360 | <true/> | ||
| 361 | <key>monitorGraphGPU</key> | ||
| 362 | <true/> | ||
| 363 | <key>monitorGraphMemory</key> | ||
| 364 | <true/> | ||
| 365 | <key>monitorGraphNetwork</key> | ||
| 366 | <true/> | ||
| 367 | <key>monitorGraphPower</key> | ||
| 368 | <true/> | ||
| 369 | <key>monitorIntervalSeconds</key> | ||
| 370 | <integer>2</integer> | ||
| 371 | <key>monitorNetApps</key> | ||
| 372 | <true/> | ||
| 373 | <key>monitorNetSpeed</key> | ||
| 374 | <true/> | ||
| 375 | <key>monitorNetTest</key> | ||
| 376 | <true/> | ||
| 377 | <key>monitorNetTotals</key> | ||
| 378 | <true/> | ||
| 379 | <key>monitorPwrAdapter</key> | ||
| 380 | <true/> | ||
| 381 | <key>monitorPwrBattery</key> | ||
| 382 | <true/> | ||
| 383 | <key>monitorPwrHealth</key> | ||
| 384 | <true/> | ||
| 385 | <key>monitorPwrSystem</key> | ||
| 386 | <true/> | ||
| 387 | <key>monitorPwrTimeRemaining</key> | ||
| 388 | <true/> | ||
| 389 | <key>monitorShowDisk</key> | ||
| 390 | <true/> | ||
| 391 | <key>monitorShowFanControlBeta</key> | ||
| 392 | <false/> | ||
| 393 | <key>monitorShowMixer</key> | ||
| 394 | <true/> | ||
| 395 | <key>monitorShowNetwork</key> | ||
| 396 | <true/> | ||
| 397 | <key>monitorShowPower</key> | ||
| 398 | <true/> | ||
| 399 | <key>monitorShowSystem</key> | ||
| 400 | <true/> | ||
| 401 | <key>monitorSysAlerts</key> | ||
| 402 | <true/> | ||
| 403 | <key>monitorSysBattery</key> | ||
| 404 | <true/> | ||
| 405 | <key>monitorSysCPU</key> | ||
| 406 | <true/> | ||
| 407 | <key>monitorSysGPU</key> | ||
| 408 | <true/> | ||
| 409 | <key>monitorSysMemory</key> | ||
| 410 | <true/> | ||
| 411 | <key>monitorSysTemps</key> | ||
| 412 | <true/> | ||
| 413 | <key>monitorSysUptime</key> | ||
| 414 | <true/> | ||
| 415 | <key>mouseButtonExceptions</key> | ||
| 416 | <array/> | ||
| 417 | <key>mouseButtonShortcuts</key> | ||
| 418 | <dict/> | ||
| 419 | <key>mouseButtonShortcutsEnabled</key> | ||
| 420 | <false/> | ||
| 421 | <key>mouseNavigationEnabled</key> | ||
| 422 | <false/> | ||
| 423 | <key>mouseNavigationExceptions</key> | ||
| 424 | <array/> | ||
| 425 | <key>musicBlockEnabled</key> | ||
| 426 | <false/> | ||
| 427 | <key>musicBlockReplacementPath</key> | ||
| 428 | <string></string> | ||
| 429 | <key>onboardingStep</key> | ||
| 430 | <integer>0</integer> | ||
| 431 | <key>panelCollapsedResetVersion</key> | ||
| 432 | <string>2.15.1</string> | ||
| 433 | <key>panelControlAutoQuit</key> | ||
| 434 | <true/> | ||
| 435 | <key>panelControlCutPaste</key> | ||
| 436 | <true/> | ||
| 437 | <key>panelControlDockClick</key> | ||
| 438 | <true/> | ||
| 439 | <key>panelControlDockClickCycle</key> | ||
| 440 | <true/> | ||
| 441 | <key>panelControlDockPreview</key> | ||
| 442 | <true/> | ||
| 443 | <key>panelControlFilesExpanded</key> | ||
| 444 | <false/> | ||
| 445 | <key>panelControlInputExpanded</key> | ||
| 446 | <false/> | ||
| 447 | <key>panelControlKeyDebounce</key> | ||
| 448 | <true/> | ||
| 449 | <key>panelControlMiddleClick</key> | ||
| 450 | <true/> | ||
| 451 | <key>panelControlMouseButtonShortcuts</key> | ||
| 452 | <true/> | ||
| 453 | <key>panelControlMouseNavigation</key> | ||
| 454 | <true/> | ||
| 455 | <key>panelControlMouseScroll</key> | ||
| 456 | <true/> | ||
| 457 | <key>panelControlRadialMenu</key> | ||
| 458 | <true/> | ||
| 459 | <key>panelControlShelf</key> | ||
| 460 | <true/> | ||
| 461 | <key>panelControlSuperKey</key> | ||
| 462 | <true/> | ||
| 463 | <key>panelControlSwitcher</key> | ||
| 464 | <true/> | ||
| 465 | <key>panelControlTextSnippets</key> | ||
| 466 | <true/> | ||
| 467 | <key>panelControlWindowMaximize</key> | ||
| 468 | <true/> | ||
| 469 | <key>panelControlWindowsExpanded</key> | ||
| 470 | <false/> | ||
| 471 | <key>panelNavigationEnabled</key> | ||
| 472 | <true/> | ||
| 473 | <key>panelPowerOrder</key> | ||
| 474 | <string>system,adapter,battery,remaining,health</string> | ||
| 475 | <key>panelShowBrightness</key> | ||
| 476 | <true/> | ||
| 477 | <key>panelShowControls</key> | ||
| 478 | <true/> | ||
| 479 | <key>panelShowKeepAwake</key> | ||
| 480 | <true/> | ||
| 481 | <key>panelShowToggles</key> | ||
| 482 | <true/> | ||
| 483 | <key>panelShowUtilities</key> | ||
| 484 | <true/> | ||
| 485 | <key>panelToggleDarkMode</key> | ||
| 486 | <true/> | ||
| 487 | <key>panelToggleDesktopIcons</key> | ||
| 488 | <true/> | ||
| 489 | <key>panelToggleDisplayOff</key> | ||
| 490 | <true/> | ||
| 491 | <key>panelToggleEjectDisks</key> | ||
| 492 | <true/> | ||
| 493 | <key>panelToggleEmptyTrash</key> | ||
| 494 | <true/> | ||
| 495 | <key>panelToggleHiddenFiles</key> | ||
| 496 | <true/> | ||
| 497 | <key>panelToggleLockScreen</key> | ||
| 498 | <true/> | ||
| 499 | <key>panelToggleScreenSaver</key> | ||
| 500 | <true/> | ||
| 501 | <key>panelUtilityAppUpdates</key> | ||
| 502 | <true/> | ||
| 503 | <key>panelUtilityCameraPreview</key> | ||
| 504 | <true/> | ||
| 505 | <key>panelUtilityCleaner</key> | ||
| 506 | <true/> | ||
| 507 | <key>panelUtilityCleaning</key> | ||
| 508 | <true/> | ||
| 509 | <key>panelUtilityClipboard</key> | ||
| 510 | <true/> | ||
| 511 | <key>panelUtilityColorPicker</key> | ||
| 512 | <true/> | ||
| 513 | <key>panelUtilityCommandBar</key> | ||
| 514 | <true/> | ||
| 515 | <key>panelUtilityHomebrew</key> | ||
| 516 | <true/> | ||
| 517 | <key>panelUtilityMedia</key> | ||
| 518 | <true/> | ||
| 519 | <key>panelUtilityMicMute</key> | ||
| 520 | <true/> | ||
| 521 | <key>panelUtilityQuickLauncher</key> | ||
| 522 | <true/> | ||
| 523 | <key>panelUtilityScratchpad</key> | ||
| 524 | <true/> | ||
| 525 | <key>panelUtilityScreenOCR</key> | ||
| 526 | <true/> | ||
| 527 | <key>panelUtilityScreenshot</key> | ||
| 528 | <true/> | ||
| 529 | <key>panelUtilityURLCleaner</key> | ||
| 530 | <true/> | ||
| 531 | <key>panelUtilityUninstaller</key> | ||
| 532 | <true/> | ||
| 533 | <key>panelUtilityWindowLayout</key> | ||
| 534 | <true/> | ||
| 535 | <key>pastePlainEnabled</key> | ||
| 536 | <false/> | ||
| 537 | <key>pastePlainShortcut</key> | ||
| 538 | <string>option+shift+command:9</string> | ||
| 539 | <key>previewSize</key> | ||
| 540 | <string>normal</string> | ||
| 541 | <key>quickLauncherHiddenItems</key> | ||
| 542 | <string></string> | ||
| 543 | <key>quickLauncherShortcut</key> | ||
| 544 | <string>control+command:9</string> | ||
| 545 | <key>quickLauncherShortcutEnabled</key> | ||
| 546 | <true/> | ||
| 547 | <key>radialMenuActivationMode</key> | ||
| 548 | <string>pressOrHold</string> | ||
| 549 | <key>radialMenuAtPointer</key> | ||
| 550 | <true/> | ||
| 551 | <key>radialMenuEnabled</key> | ||
| 552 | <false/> | ||
| 553 | <key>radialMenuItems</key> | ||
| 554 | <data> | ||
| 555 | W3sicGF5bG9hZCI6InNjcmVlbnNob3QiLCJjaGlsZHJlbiI6W10sIm5hbWUi | ||
| 556 | OiIiLCJpZCI6IjU1N0M5QjY0LURBRUQtNEY0OS1CMjAyLUE2RTRFMjg3QkE3 | ||
| 557 | MSIsImtpbmQiOiJ0b29sIiwic3ltYm9sTmFtZSI6IiJ9LHsicGF5bG9hZCI6 | ||
| 558 | ImNvbG9yUGlja2VyIiwiY2hpbGRyZW4iOltdLCJuYW1lIjoiIiwiaWQiOiI4 | ||
| 559 | NDc1RTg2OS0yNjFELTQ2OEUtODJEOC1BMjFGM0VFN0VGQjgiLCJraW5kIjoi | ||
| 560 | dG9vbCIsInN5bWJvbE5hbWUiOiIifSx7InBheWxvYWQiOiJjYW1lcmFQcmV2 | ||
| 561 | aWV3IiwiY2hpbGRyZW4iOltdLCJuYW1lIjoiIiwiaWQiOiIzRTNCRUU3MS05 | ||
| 562 | QzgxLTQ5QjMtOTEzNS03OTA5RkY5MDc4QUQiLCJraW5kIjoidG9vbCIsInN5 | ||
| 563 | bWJvbE5hbWUiOiIifV0= | ||
| 564 | </data> | ||
| 565 | <key>radialMenuMouseButton</key> | ||
| 566 | <string>off</string> | ||
| 567 | <key>radialMenuShortcut</key> | ||
| 568 | <string>control+option+command:49</string> | ||
| 569 | <key>releaseNotesOnUpdate</key> | ||
| 570 | <true/> | ||
| 571 | <key>scratchpadCloseOnClickOutside</key> | ||
| 572 | <true/> | ||
| 573 | <key>scratchpadRetention</key> | ||
| 574 | <string>never</string> | ||
| 575 | <key>scratchpadShortcut</key> | ||
| 576 | <string>control+option+command:45</string> | ||
| 577 | <key>scratchpadShortcutEnabled</key> | ||
| 578 | <false/> | ||
| 579 | <key>screenOCRDetectQRCodes</key> | ||
| 580 | <true/> | ||
| 581 | <key>screenOCRShortcut</key> | ||
| 582 | <string>control+option+command:17</string> | ||
| 583 | <key>screenOCRShortcutEnabled</key> | ||
| 584 | <false/> | ||
| 585 | <key>screenshotAnnotationShadows</key> | ||
| 586 | <false/> | ||
| 587 | <key>screenshotBackdropPresets</key> | ||
| 588 | <string>[]</string> | ||
| 589 | <key>screenshotBackdropStyle</key> | ||
| 590 | <string></string> | ||
| 591 | <key>screenshotCopyToClipboard</key> | ||
| 592 | <true/> | ||
| 593 | <key>screenshotDefaultAction</key> | ||
| 594 | <string></string> | ||
| 595 | <key>screenshotDelay</key> | ||
| 596 | <integer>0</integer> | ||
| 597 | <key>screenshotDownscale</key> | ||
| 598 | <false/> | ||
| 599 | <key>screenshotFileNamePattern</key> | ||
| 600 | <string></string> | ||
| 601 | <key>screenshotFileNumberNext</key> | ||
| 602 | <integer>1</integer> | ||
| 603 | <key>screenshotFileNumberStart</key> | ||
| 604 | <integer>1</integer> | ||
| 605 | <key>screenshotFreeze</key> | ||
| 606 | <true/> | ||
| 607 | <key>screenshotIncludePointer</key> | ||
| 608 | <false/> | ||
| 609 | <key>screenshotLastColor</key> | ||
| 610 | <string>red</string> | ||
| 611 | <key>screenshotLastSticker</key> | ||
| 612 | <string>check</string> | ||
| 613 | <key>screenshotLastStroke</key> | ||
| 614 | <string>medium</string> | ||
| 615 | <key>screenshotLastTool</key> | ||
| 616 | <string>select</string> | ||
| 617 | <key>screenshotOpenEditorDirectly</key> | ||
| 618 | <false/> | ||
| 619 | <key>screenshotSaveFolder</key> | ||
| 620 | <string></string> | ||
| 621 | <key>screenshotSaveSubfolder</key> | ||
| 622 | <string></string> | ||
| 623 | <key>screenshotShortcut</key> | ||
| 624 | <string>control+option+command:21</string> | ||
| 625 | <key>screenshotShortcutEnabled</key> | ||
| 626 | <true/> | ||
| 627 | <key>screenshotShowLastRegion</key> | ||
| 628 | <true/> | ||
| 629 | <key>screenshotToolOrder</key> | ||
| 630 | <string>select,arrow,pixelate,crop,text,sticker,rect,highlight,freehand,line,ellipse,counter,redact</string> | ||
| 631 | <key>screenshotToolShortcutsEnabled</key> | ||
| 632 | <true/> | ||
| 633 | <key>scrollInverterEnabled</key> | ||
| 634 | <true/> | ||
| 635 | <key>scrollInverterExceptions</key> | ||
| 636 | <array/> | ||
| 637 | <key>shelfAutomaticExclusions</key> | ||
| 638 | <array/> | ||
| 639 | <key>shelfCloseAfterDrop</key> | ||
| 640 | <false/> | ||
| 641 | <key>shelfDropZoneEnabled</key> | ||
| 642 | <true/> | ||
| 643 | <key>shelfEnabled</key> | ||
| 644 | <true/> | ||
| 645 | <key>shelfRemoveAfterDrop</key> | ||
| 646 | <true/> | ||
| 647 | <key>shelfShakeToOpen</key> | ||
| 648 | <true/> | ||
| 649 | <key>shelfShortcut</key> | ||
| 650 | <string>control+option+command:2</string> | ||
| 651 | <key>shelfShortcutEnabled</key> | ||
| 652 | <true/> | ||
| 653 | <key>showCountdownInMenuBar</key> | ||
| 654 | <false/> | ||
| 655 | <key>smoothScrollEnabled</key> | ||
| 656 | <false/> | ||
| 657 | <key>smoothScrollExceptions</key> | ||
| 658 | <array/> | ||
| 659 | <key>smoothScrollStep</key> | ||
| 660 | <integer>40</integer> | ||
| 661 | <key>snippetLibraryEnabled</key> | ||
| 662 | <false/> | ||
| 663 | <key>snippetLibraryShortcut</key> | ||
| 664 | <string>control+option+command:37</string> | ||
| 665 | <key>soundOutputSwitcherEnabled</key> | ||
| 666 | <false/> | ||
| 667 | <key>soundOutputSwitcherShortcut</key> | ||
| 668 | <string>control+option+command:1</string> | ||
| 669 | <key>superKeyEnabled</key> | ||
| 670 | <false/> | ||
| 671 | <key>superKeySoloAction</key> | ||
| 672 | <string>none</string> | ||
| 673 | <key>supportUpdateIntroVersion</key> | ||
| 674 | <string>3.1.13</string> | ||
| 675 | <key>switcherCurrentSpaceOnly</key> | ||
| 676 | <false/> | ||
| 677 | <key>switcherEnabled</key> | ||
| 678 | <true/> | ||
| 679 | <key>switcherIconRowMode</key> | ||
| 680 | <false/> | ||
| 681 | <key>switcherMergeTabs</key> | ||
| 682 | <false/> | ||
| 683 | <key>switcherShortcut</key> | ||
| 684 | <string>command:48</string> | ||
| 685 | <key>switcherShowWindowlessFinder</key> | ||
| 686 | <true/> | ||
| 687 | <key>switcherSimpleMode</key> | ||
| 688 | <false/> | ||
| 689 | <key>switcherWindowShortcut</key> | ||
| 690 | <string>command:50</string> | ||
| 691 | <key>switcherWindowlessApps</key> | ||
| 692 | <string>finder</string> | ||
| 693 | <key>temperatureUnit</key> | ||
| 694 | <string>celsius</string> | ||
| 695 | <key>textSnippetsEnabled</key> | ||
| 696 | <false/> | ||
| 697 | <key>updateHighlightsSeenVersion</key> | ||
| 698 | <string>3.2.0</string> | ||
| 699 | <key>urlCleanerEnabled</key> | ||
| 700 | <false/> | ||
| 701 | <key>whatsAppDownloadsAutomaticEnabled</key> | ||
| 702 | <false/> | ||
| 703 | <key>whatsAppDownloadsCategories</key> | ||
| 704 | <string>image,video,audio</string> | ||
| 705 | <key>whatsAppDownloadsIncludeExisting</key> | ||
| 706 | <false/> | ||
| 707 | <key>whatsAppDownloadsNotify</key> | ||
| 708 | <true/> | ||
| 709 | <key>whatsAppDownloadsRetentionDays</key> | ||
| 710 | <integer>7</integer> | ||
| 711 | <key>whatsAppOrganizerCategories</key> | ||
| 712 | <string>image,video,audio,document,archive,other</string> | ||
| 713 | <key>whatsAppOrganizerDelayMinutes</key> | ||
| 714 | <integer>5</integer> | ||
| 715 | <key>whatsAppOrganizerDuplicateAction</key> | ||
| 716 | <string>trashNew</string> | ||
| 717 | <key>whatsAppOrganizerEnabled</key> | ||
| 718 | <false/> | ||
| 719 | <key>whatsAppOrganizerLayout</key> | ||
| 720 | <string>flat</string> | ||
| 721 | <key>windowGestureEnabled</key> | ||
| 722 | <false/> | ||
| 723 | <key>windowGestureModifiers</key> | ||
| 724 | <string>control+command</string> | ||
| 725 | <key>windowGestureRaiseWindow</key> | ||
| 726 | <false/> | ||
| 727 | <key>windowLayoutHiddenActions</key> | ||
| 728 | <string></string> | ||
| 729 | <key>windowLayoutShortcutBottom</key> | ||
| 730 | <string>control+option:125</string> | ||
| 731 | <key>windowLayoutShortcutBottomCenterSixth</key> | ||
| 732 | <string>none</string> | ||
| 733 | <key>windowLayoutShortcutBottomLeft</key> | ||
| 734 | <string>control+option:38</string> | ||
| 735 | <key>windowLayoutShortcutBottomLeftSixth</key> | ||
| 736 | <string>none</string> | ||
| 737 | <key>windowLayoutShortcutBottomRight</key> | ||
| 738 | <string>control+option:40</string> | ||
| 739 | <key>windowLayoutShortcutBottomRightSixth</key> | ||
| 740 | <string>none</string> | ||
| 741 | <key>windowLayoutShortcutCenter</key> | ||
| 742 | <string>control+option:8</string> | ||
| 743 | <key>windowLayoutShortcutCenterThird</key> | ||
| 744 | <string>control+option:3</string> | ||
| 745 | <key>windowLayoutShortcutFullScreen</key> | ||
| 746 | <string>none</string> | ||
| 747 | <key>windowLayoutShortcutLeft</key> | ||
| 748 | <string>control+option:123</string> | ||
| 749 | <key>windowLayoutShortcutLeftThird</key> | ||
| 750 | <string>control+option:2</string> | ||
| 751 | <key>windowLayoutShortcutLeftTwoThirds</key> | ||
| 752 | <string>control+option:14</string> | ||
| 753 | <key>windowLayoutShortcutMaximize</key> | ||
| 754 | <string>control+option:36</string> | ||
| 755 | <key>windowLayoutShortcutNextDisplay</key> | ||
| 756 | <string>control+option+command:124</string> | ||
| 757 | <key>windowLayoutShortcutRestore</key> | ||
| 758 | <string>control+option:15</string> | ||
| 759 | <key>windowLayoutShortcutRight</key> | ||
| 760 | <string>control+option:124</string> | ||
| 761 | <key>windowLayoutShortcutRightThird</key> | ||
| 762 | <string>control+option:5</string> | ||
| 763 | <key>windowLayoutShortcutRightTwoThirds</key> | ||
| 764 | <string>control+option:17</string> | ||
| 765 | <key>windowLayoutShortcutTop</key> | ||
| 766 | <string>control+option:126</string> | ||
| 767 | <key>windowLayoutShortcutTopCenterSixth</key> | ||
| 768 | <string>none</string> | ||
| 769 | <key>windowLayoutShortcutTopLeft</key> | ||
| 770 | <string>control+option:32</string> | ||
| 771 | <key>windowLayoutShortcutTopLeftSixth</key> | ||
| 772 | <string>none</string> | ||
| 773 | <key>windowLayoutShortcutTopRight</key> | ||
| 774 | <string>control+option:34</string> | ||
| 775 | <key>windowLayoutShortcutTopRightSixth</key> | ||
| 776 | <string>none</string> | ||
| 777 | <key>windowLayoutShortcutsEnabled</key> | ||
| 778 | <false/> | ||
| 779 | <key>windowMaximizeEnabled</key> | ||
| 780 | <true/> | ||
| 781 | </dict> | ||
| 782 | <key>vorssaintBackupAppVersion</key> | ||
| 783 | <string>3.2.0</string> | ||
| 784 | <key>vorssaintBackupVersion</key> | ||
| 785 | <integer>1</integer> | ||
| 786 | </dict> | ||
| 787 | </plist> | ||
diff --git a/hosts/RyanMac/configuration.nix b/hosts/RyanMac/configuration.nix index e8339e6..307c7f0 100644 --- a/hosts/RyanMac/configuration.nix +++ b/hosts/RyanMac/configuration.nix | |||
| @@ -24,20 +24,6 @@ let | |||
| 24 | ]; | 24 | ]; |
| 25 | }); | 25 | }); |
| 26 | 26 | ||
| 27 | mkSpace = i: { | ||
| 28 | name = toString (117+i); | ||
| 29 | value = { | ||
| 30 | enabled = true; | ||
| 31 | value = { | ||
| 32 | type = "standard"; | ||
| 33 | parameters = [ (48 + i) (builtins.elemAt [ 18 19 20 21 22 23 25 26 28 ] (i - 1)) 524288 ]; # opt + num | ||
| 34 | #parameters = [ (48 + i) (builtins.elemAt [ 18 19 20 21 22 23 25 26 28 ] (i - 1)) 1048576 ]; # cmd + num | ||
| 35 | }; | ||
| 36 | }; | ||
| 37 | }; | ||
| 38 | |||
| 39 | spaceHotkeys = builtins.listToAttrs (map mkSpace (lib.range 1 9)); | ||
| 40 | |||
| 41 | manualHotkeys = { | 27 | manualHotkeys = { |
| 42 | "64" = { | 28 | "64" = { |
| 43 | enabled = true; | 29 | enabled = true; |
| @@ -49,6 +35,7 @@ in { | |||
| 49 | imports = [ | 35 | imports = [ |
| 50 | inputs.nix-homebrew.darwinModules.nix-homebrew | 36 | inputs.nix-homebrew.darwinModules.nix-homebrew |
| 51 | ../../modules/darwin/random-wallpaper | 37 | ../../modules/darwin/random-wallpaper |
| 38 | ../../modules/darwin/yabai | ||
| 52 | ]; | 39 | ]; |
| 53 | 40 | ||
| 54 | # Define the system's user and home dir location | 41 | # Define the system's user and home dir location |
| @@ -69,43 +56,14 @@ in { | |||
| 69 | }; | 56 | }; |
| 70 | 57 | ||
| 71 | # Configure yabai | 58 | # Configure yabai |
| 72 | services.yabai = { | 59 | local.yabai = { |
| 73 | enable = true; | 60 | enable = true; |
| 74 | enableScriptingAddition = false; | 61 | defaultPadding = 10; |
| 75 | config = { | 62 | defaultTopPadding = 10; |
| 76 | mouse_follows_focus = "on"; | 63 | displayTopPadding = { |
| 77 | layout = "bsp"; | 64 | "6131F10F-6020-4D7E-8222-8702B5AEF45E" = 40; |
| 78 | window_placement = "second_child"; | ||
| 79 | top_padding = "10"; | ||
| 80 | bottom_padding = "10"; | ||
| 81 | left_padding = "10"; | ||
| 82 | right_padding = "10"; | ||
| 83 | window_gap = "10"; | ||
| 84 | mouse_modifier = "alt"; | ||
| 85 | mouse_drop_action = "swap"; | ||
| 86 | mouse_action1 = "move"; | ||
| 87 | mouse_action2 = "resize"; | ||
| 88 | focus_follows_mouse = "autofocus"; | ||
| 89 | }; | 65 | }; |
| 90 | extraConfig = '' | 66 | extraSymbolicHotkeys = manualHotkeys; |
| 91 | yabai -m rule --add app='System Settings' manage=off | ||
| 92 | yabai -m rule --add app="^Zen$" title="^Picture-in-Picture$" manage=off | ||
| 93 | '' | ||
| 94 | # Add simple-bar signals if enabled | ||
| 95 | + lib.optionalString config.home-manager.users.${username}.ryan.simple-bar.enable '' | ||
| 96 | yabai -m signal --add event=window_focused action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows when focused application changes" | ||
| 97 | yabai -m signal --add event=window_resized action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows when a window is resized" | ||
| 98 | yabai -m signal --add event=window_destroyed action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-ba spaces & windows when an application window is closed" | ||
| 99 | yabai -m signal --add event=space_changed action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows on space change" | ||
| 100 | yabai -m signal --add event=display_changed action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows on display focus change" | ||
| 101 | yabai -m signal --add event=window_title_changed action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows when current window title changes" | ||
| 102 | yabai -m signal --add event=space_destroyed action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows on space removal" | ||
| 103 | yabai -m signal --add event=space_created action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows on space creation" | ||
| 104 | yabai -m signal --add event=application_activated action="curl http://localhost:7776/yabai/spaces/refresh && curl http://localhost:7776/yabai/windows/refresh" label="Refresh simple-bar spaces & windows when application is activated" | ||
| 105 | yabai -m signal --add event=display_added action="curl http://localhost:7776/yabai/displays/refresh" label="Refresh simple-bar displays when a new dispay is added" | ||
| 106 | yabai -m signal --add event=display_removed action="curl http://localhost:7776/yabai/displays/refresh" label="Refresh simple-bar displays when a dispay is removed" | ||
| 107 | yabai -m signal --add event=display_moved action="curl http://localhost:7776/yabai/displays/refresh" label="Refresh simple-bar displays when a dispay is moved" | ||
| 108 | ''; | ||
| 109 | }; | 67 | }; |
| 110 | 68 | ||
| 111 | # Configure JankyBorders | 69 | # Configure JankyBorders |
| @@ -200,6 +158,7 @@ in { | |||
| 200 | "gimp" | 158 | "gimp" |
| 201 | "kdenlive" | 159 | "kdenlive" |
| 202 | "rustdesk" | 160 | "rustdesk" |
| 161 | "vorssaint" | ||
| 203 | ]; | 162 | ]; |
| 204 | }; | 163 | }; |
| 205 | 164 | ||
| @@ -209,35 +168,6 @@ in { | |||
| 209 | skhdConfig = '' | 168 | skhdConfig = '' |
| 210 | alt - d : osascript -e 'tell application "System Events" to key code 49 using {command down}' | 169 | alt - d : osascript -e 'tell application "System Events" to key code 49 using {command down}' |
| 211 | alt - return : osascript -e 'tell application "Ghostty"' -e 'new window' -e 'activate' -e 'end tell' | 170 | alt - return : osascript -e 'tell application "Ghostty"' -e 'new window' -e 'activate' -e 'end tell' |
| 212 | |||
| 213 | shift + alt - q : ${pkgs.yabai}/bin/yabai -m window --close | ||
| 214 | |||
| 215 | alt - up : ${pkgs.yabai}/bin/yabai -m window --focus north || ${pkgs.yabai}/bin/yabai -m display --focus north | ||
| 216 | shift + alt - up : ${pkgs.yabai}/bin/yabai -m window --swap north || ${pkgs.yabai}/bin/yabai -m window --display north | ||
| 217 | alt - down : ${pkgs.yabai}/bin/yabai -m window --focus south || ${pkgs.yabai}/bin/yabai -m display --focus south | ||
| 218 | shift + alt - down : ${pkgs.yabai}/bin/yabai -m window --swap south || ${pkgs.yabai}/bin/yabai -m window --display south | ||
| 219 | alt - right : ${pkgs.yabai}/bin/yabai -m window --focus east || ${pkgs.yabai}/bin/yabai -m display --focus east | ||
| 220 | shift + alt - right : ${pkgs.yabai}/bin/yabai -m window --swap east || ${pkgs.yabai}/bin/yabai -m window --display east | ||
| 221 | alt - left : ${pkgs.yabai}/bin/yabai -m window --focus west || ${pkgs.yabai}/bin/yabai -m display --focus west | ||
| 222 | shift + alt - left: ${pkgs.yabai}/bin/yabai -m window --swap west || ${pkgs.yabai}/bin/yabai -m window --display west | ||
| 223 | |||
| 224 | shift + alt - space: ${pkgs.yabai}/bin/yabai -m window --toggle float | ||
| 225 | |||
| 226 | shift + alt - return: ${pkgs.yabai}/bin/yabai -m window --toggle sticky | ||
| 227 | |||
| 228 | alt - f : ${pkgs.yabai}/bin/yabai -m window --toggle zoom-fullscreen | ||
| 229 | |||
| 230 | shift + alt - f: ${pkgs.yabai}/bin/yabai -m window --toggle native-fullscreen | ||
| 231 | |||
| 232 | shift + alt - 1 : ${pkgs.yabai}/bin/yabai -m window --space 1 | ||
| 233 | shift + alt - 2 : ${pkgs.yabai}/bin/yabai -m window --space 2 | ||
| 234 | shift + alt - 3 : ${pkgs.yabai}/bin/yabai -m window --space 3 | ||
| 235 | shift + alt - 4 : ${pkgs.yabai}/bin/yabai -m window --space 4 | ||
| 236 | shift + alt - 5 : ${pkgs.yabai}/bin/yabai -m window --space 5 | ||
| 237 | shift + alt - 6 : ${pkgs.yabai}/bin/yabai -m window --space 6 | ||
| 238 | shift + alt - 7 : ${pkgs.yabai}/bin/yabai -m window --space 7 | ||
| 239 | shift + alt - 8 : ${pkgs.yabai}/bin/yabai -m window --space 8 | ||
| 240 | shift + alt - 9 : ${pkgs.yabai}/bin/yabai -m window --space 9 | ||
| 241 | ''; | 171 | ''; |
| 242 | }; | 172 | }; |
| 243 | 173 | ||
| @@ -250,9 +180,6 @@ in { | |||
| 250 | }; | 180 | }; |
| 251 | 181 | ||
| 252 | system.defaults = { | 182 | system.defaults = { |
| 253 | WindowManager = { | ||
| 254 | EnableTilingOptionAccelerator = false; | ||
| 255 | }; | ||
| 256 | NSGlobalDomain = { | 183 | NSGlobalDomain = { |
| 257 | # 24 hour time | 184 | # 24 hour time |
| 258 | AppleICUForce24HourTime = true; | 185 | AppleICUForce24HourTime = true; |
| @@ -391,10 +318,6 @@ in { | |||
| 391 | "com.apple.Accessibility" = { | 318 | "com.apple.Accessibility" = { |
| 392 | ReduceMotionEnabled = 1; | 319 | ReduceMotionEnabled = 1; |
| 393 | }; | 320 | }; |
| 394 | |||
| 395 | "com.apple.symbolichotkeys" = { | ||
| 396 | AppleSymbolicHotKeys = manualHotkeys // spaceHotkeys; | ||
| 397 | }; | ||
| 398 | }; | 321 | }; |
| 399 | universalaccess.reduceMotion = true; | 322 | universalaccess.reduceMotion = true; |
| 400 | }; | 323 | }; |
diff --git a/modules/darwin/yabai/default.nix b/modules/darwin/yabai/default.nix new file mode 100644 index 0000000..8e64dd1 --- /dev/null +++ b/modules/darwin/yabai/default.nix | |||
| @@ -0,0 +1,237 @@ | |||
| 1 | # modules/darwin/yabai/default.nix | ||
| 2 | { config, lib, pkgs, ... }: | ||
| 3 | |||
| 4 | let | ||
| 5 | cfg = config.local.yabai; | ||
| 6 | |||
| 7 | # symbolic hotkey IDs 118..126 == "Switch to Desktop 1".."Switch to Desktop 9" | ||
| 8 | spaceKeycodes = [ 18 19 20 21 22 23 25 26 28 ]; | ||
| 9 | |||
| 10 | mkSpaceHotkey = i: { | ||
| 11 | name = toString (117 + i); | ||
| 12 | value = { | ||
| 13 | enabled = true; | ||
| 14 | value = { | ||
| 15 | type = "standard"; | ||
| 16 | parameters = [ | ||
| 17 | (48 + i) # ASCII '1'..'9' | ||
| 18 | (builtins.elemAt spaceKeycodes (i - 1)) # virtual keycode | ||
| 19 | cfg.spaceHotkeys.modifierMask | ||
| 20 | ]; | ||
| 21 | }; | ||
| 22 | }; | ||
| 23 | }; | ||
| 24 | |||
| 25 | spaceHotkeys = builtins.listToAttrs | ||
| 26 | (map mkSpaceHotkey (lib.range 1 cfg.spaceHotkeys.count)); | ||
| 27 | |||
| 28 | padArms = lib.concatStringsSep "\n" (lib.mapAttrsToList | ||
| 29 | (uuid: pad: " ${uuid}) pad=${toString pad} ;;") | ||
| 30 | cfg.displayTopPadding); | ||
| 31 | |||
| 32 | displayPaddingScript = pkgs.writeShellScript "yabai-display-padding" '' | ||
| 33 | set -eu | ||
| 34 | yabai="${cfg.package}/bin/yabai" | ||
| 35 | |||
| 36 | "$yabai" -m query --displays \ | ||
| 37 | | ${lib.getExe pkgs.jq} -r '.[] | "\(.uuid) \(.spaces | map(tostring) | join(" "))"' \ | ||
| 38 | | while read -r uuid spaces; do | ||
| 39 | case "$uuid" in | ||
| 40 | ${padArms} | ||
| 41 | *) pad=${toString cfg.defaultPadding} ;; | ||
| 42 | esac | ||
| 43 | for s in $spaces; do | ||
| 44 | for k in top_padding; do | ||
| 45 | "$yabai" -m config --space "$s" "$k" "$pad" || true | ||
| 46 | done | ||
| 47 | done | ||
| 48 | done | ||
| 49 | ''; | ||
| 50 | |||
| 51 | yabaiBin = "${cfg.package}/bin/yabai"; | ||
| 52 | |||
| 53 | directionBinds = lib.concatStringsSep "\n" (map (d: '' | ||
| 54 | alt - ${d.key} : ${yabaiBin} -m window --focus ${d.dir} || ${yabaiBin} -m display --focus ${d.dir} | ||
| 55 | shift + alt - ${d.key} : ${yabaiBin} -m window --swap ${d.dir} || ${yabaiBin} -m window --display ${d.dir} | ||
| 56 | '') [ | ||
| 57 | { key = "up"; dir = "north"; } | ||
| 58 | { key = "down"; dir = "south"; } | ||
| 59 | { key = "right"; dir = "east"; } | ||
| 60 | { key = "left"; dir = "west"; } | ||
| 61 | ]); | ||
| 62 | |||
| 63 | spaceMoveBinds = lib.concatStringsSep "\n" | ||
| 64 | (map (i: "shift + alt - ${toString i} : ${yabaiBin} -m window --space ${toString i}") | ||
| 65 | (lib.range 1 cfg.spaceHotkeys.count)); | ||
| 66 | |||
| 67 | in { | ||
| 68 | options.local.yabai = { | ||
| 69 | enable = lib.mkEnableOption "yabai tiling window manager setup"; | ||
| 70 | |||
| 71 | package = lib.mkOption { | ||
| 72 | type = lib.types.package; | ||
| 73 | default = pkgs.yabai; | ||
| 74 | description = "yabai package. Referenced by keybindings and the padding script."; | ||
| 75 | }; | ||
| 76 | |||
| 77 | enableScriptingAddition = lib.mkOption { | ||
| 78 | type = lib.types.bool; | ||
| 79 | default = false; | ||
| 80 | description = '' | ||
| 81 | Only gates space creation/destruction and moving windows between | ||
| 82 | spaces. Window geometry and padding work without it. | ||
| 83 | ''; | ||
| 84 | }; | ||
| 85 | |||
| 86 | defaultPadding = lib.mkOption { | ||
| 87 | type = lib.types.int; | ||
| 88 | default = 10; | ||
| 89 | description = '' | ||
| 90 | Padding and window_gap for any display not listed in displayTopPadding. | ||
| 91 | Sized for Retina (2x) panels. | ||
| 92 | ''; | ||
| 93 | }; | ||
| 94 | |||
| 95 | defaultTopPadding = lib.mkOption { | ||
| 96 | type = lib.types.int; | ||
| 97 | default = 10; | ||
| 98 | description = '' | ||
| 99 | Padding for top edge of screen | ||
| 100 | ''; | ||
| 101 | }; | ||
| 102 | |||
| 103 | displayTopPadding = lib.mkOption { | ||
| 104 | type = lib.types.attrsOf lib.types.int; | ||
| 105 | default = { }; | ||
| 106 | example = lib.literalExpression '' | ||
| 107 | { "37D8832A-2D66-02CA-B9F7-8F30A301B230" = 40; } | ||
| 108 | ''; | ||
| 109 | description = '' | ||
| 110 | Display UUID -> padding value. The value is applied to all four | ||
| 111 | paddings and to window_gap for every space on that display. | ||
| 112 | |||
| 113 | Get UUIDs with: | ||
| 114 | yabai -m query --displays | jq -r '.[] | "\(.uuid) \(.frame)"' | ||
| 115 | |||
| 116 | Do not key off frame dimensions: yabai reports points, not pixels, | ||
| 117 | so a scaled 1080p panel will not report 1920x1080. | ||
| 118 | ''; | ||
| 119 | }; | ||
| 120 | |||
| 121 | manageKeybindings = lib.mkOption { | ||
| 122 | type = lib.types.bool; | ||
| 123 | default = true; | ||
| 124 | description = "Emit yabai skhd bindings into services.skhd.skhdConfig."; | ||
| 125 | }; | ||
| 126 | |||
| 127 | spaceHotkeys = { | ||
| 128 | enable = lib.mkEnableOption "opt+<n> macOS space-switching hotkeys" // { | ||
| 129 | default = true; | ||
| 130 | }; | ||
| 131 | |||
| 132 | count = lib.mkOption { | ||
| 133 | type = lib.types.ints.between 1 9; | ||
| 134 | default = 9; | ||
| 135 | description = "Number of spaces to bind. macOS exposes 9 symbolic hotkeys."; | ||
| 136 | }; | ||
| 137 | |||
| 138 | modifierMask = lib.mkOption { | ||
| 139 | type = lib.types.int; | ||
| 140 | default = 524288; # option | ||
| 141 | description = "Carbon modifier mask. 524288 = option, 1048576 = command."; | ||
| 142 | }; | ||
| 143 | }; | ||
| 144 | |||
| 145 | extraSymbolicHotkeys = lib.mkOption { | ||
| 146 | type = lib.types.attrs; | ||
| 147 | default = { }; | ||
| 148 | description = '' | ||
| 149 | Merged into com.apple.symbolichotkeys alongside the space hotkeys. | ||
| 150 | Put non-yabai symbolic hotkeys here rather than defining | ||
| 151 | CustomUserPreferences."com.apple.symbolichotkeys" in the host config -- | ||
| 152 | CustomUserPreferences is types.attrs and merges shallowly, so a second | ||
| 153 | definition of that domain silently clobbers this one. | ||
| 154 | ''; | ||
| 155 | }; | ||
| 156 | |||
| 157 | extraSettings = lib.mkOption { | ||
| 158 | type = lib.types.attrs; | ||
| 159 | default = { }; | ||
| 160 | description = "Extra keys merged into services.yabai.config."; | ||
| 161 | }; | ||
| 162 | |||
| 163 | extraConfig = lib.mkOption { | ||
| 164 | type = lib.types.lines; | ||
| 165 | default = ""; | ||
| 166 | description = "Extra shell appended to yabairc (rules, signals)."; | ||
| 167 | }; | ||
| 168 | }; | ||
| 169 | |||
| 170 | config = lib.mkIf cfg.enable { | ||
| 171 | services.yabai = { | ||
| 172 | enable = true; | ||
| 173 | inherit (cfg) package enableScriptingAddition; | ||
| 174 | |||
| 175 | config = { | ||
| 176 | mouse_follows_focus = "on"; | ||
| 177 | layout = "bsp"; | ||
| 178 | window_placement = "second_child"; | ||
| 179 | top_padding = toString cfg.defaultTopPadding; | ||
| 180 | bottom_padding = toString cfg.defaultPadding; | ||
| 181 | left_padding = toString cfg.defaultPadding; | ||
| 182 | right_padding = toString cfg.defaultPadding; | ||
| 183 | window_gap = toString cfg.defaultPadding; | ||
| 184 | mouse_modifier = "alt"; | ||
| 185 | mouse_drop_action = "swap"; | ||
| 186 | mouse_action1 = "move"; | ||
| 187 | mouse_action2 = "resize"; | ||
| 188 | focus_follows_mouse = "autofocus"; | ||
| 189 | } // cfg.extraSettings; | ||
| 190 | |||
| 191 | extraConfig = '' | ||
| 192 | yabai -m rule --add app='System Settings' manage=off | ||
| 193 | yabai -m rule --add app="^Zen$" title="^Picture-in-Picture$" manage=off | ||
| 194 | '' | ||
| 195 | + lib.optionalString (cfg.displayTopPadding != { }) '' | ||
| 196 | |||
| 197 | # Per-display padding. space_created is required, not redundant: | ||
| 198 | # display_added fires when yabai sees the display, which can precede | ||
| 199 | # macOS finishing space creation on it, so the first pass may find | ||
| 200 | # zero or one space. display_removed is required because yabai | ||
| 201 | # reindexes spaces on disconnect and the overrides are keyed by index. | ||
| 202 | yabai -m signal --add event=display_added action="${displayPaddingScript}" label="per-display padding (added)" | ||
| 203 | yabai -m signal --add event=display_removed action="${displayPaddingScript}" label="per-display padding (removed)" | ||
| 204 | yabai -m signal --add event=space_created action="${displayPaddingScript}" label="per-display padding (space)" | ||
| 205 | ${displayPaddingScript} | ||
| 206 | '' | ||
| 207 | + cfg.extraConfig; | ||
| 208 | }; | ||
| 209 | |||
| 210 | services.skhd = lib.mkIf cfg.manageKeybindings { | ||
| 211 | enable = true; | ||
| 212 | skhdConfig = '' | ||
| 213 | shift + alt - q : ${yabaiBin} -m window --close | ||
| 214 | |||
| 215 | ${directionBinds} | ||
| 216 | |||
| 217 | shift + alt - space : ${yabaiBin} -m window --toggle float | ||
| 218 | shift + alt - return : ${yabaiBin} -m window --toggle sticky | ||
| 219 | alt - f : ${yabaiBin} -m window --toggle zoom-fullscreen | ||
| 220 | shift + alt - f : ${yabaiBin} -m window --toggle native-fullscreen | ||
| 221 | |||
| 222 | ${spaceMoveBinds} | ||
| 223 | ''; | ||
| 224 | }; | ||
| 225 | |||
| 226 | # Prerequisites, not preferences: yabai requires per-display spaces, and | ||
| 227 | # macOS's own tiling fights it for window placement. | ||
| 228 | system.defaults = { | ||
| 229 | spaces."spans-displays" = false; | ||
| 230 | WindowManager.EnableTilingOptionAccelerator = false; | ||
| 231 | |||
| 232 | CustomUserPreferences."com.apple.symbolichotkeys".AppleSymbolicHotKeys = | ||
| 233 | cfg.extraSymbolicHotkeys | ||
| 234 | // (lib.optionalAttrs cfg.spaceHotkeys.enable spaceHotkeys); | ||
| 235 | }; | ||
| 236 | }; | ||
| 237 | } | ||
