Compare commits

...

3 Commits

Author SHA1 Message Date
michael 196c9c767f more updates 2023-10-21 14:56:42 -07:00
michael 84a3b1c661 Merge branch 'master' of https://github.com/turtlebasket/env 2023-10-21 14:54:29 -07:00
michael 764a757bfd updates 2023-10-21 14:54:26 -07:00
7 changed files with 373 additions and 161 deletions

View File

@ -1,5 +1,6 @@
wf=hs.window.filter
browser = "Brave Browser"
ffBrowser = "Firefox"
chromiumBrowser = "Brave Browser"
-- browser = "Chromium"
-- Open new / focus existing Finder window in current desktop space
@ -70,10 +71,10 @@ end)
-- Open new / focus existing browser window in current desktop space
hs.hotkey.bind({"cmd", "ctrl"}, "W", function()
function focusOrOpenFirefox()
-- wf_browser = wf.new(false):setAppFilter(browser, {currentSpace=true}):setScreens({hs.screen.mainScreen()})
wf_browser = wf.new(false):setAppFilter(browser, {currentSpace=true})
-- assumes wf_browser is the name of a firefox-based browser
wf_browser = wf.new(false):setAppFilter(ffBrowser, {currentSpace=true, visible=true})
local wins = wf_browser:getWindows()
local count = 0
@ -82,16 +83,45 @@ hs.hotkey.bind({"cmd", "ctrl"}, "W", function()
if (count > 0)
then
wf_browser:getWindows()[1]:focus()
print(count)
else
-- for firefox:
hs.osascript.applescript(string.format([[
tell application "System Events" to tell process "%s"
click menu item "New Window" of menu "File" of menu bar 1
set frontmost to true
end tell
]], ffBrowser))
end
end
function focusOrOpenChromium()
-- assumes wf_browser is the name of a chromium-based browser
wf_browser = wf.new(false):setAppFilter(chromiumBrowser, {currentSpace=true, visible=true})
local wins = wf_browser:getWindows()
local count = 0
for _ in pairs(wins) do count = count + 1 end
if (count > 0)
then
wf_browser:getWindows()[1]:focus()
print(count)
else
hs.osascript.applescript(string.format([[
tell application "%s"
make new window
activate
end tell
]], browser))
]], chromiumBrowser))
end
end)
end
hs.hotkey.bind({"cmd", "ctrl"}, "W", focusOrOpenChromium)
-- CHROMIUM-BASED BROWSERS ONLY: Open new tab to right of current browser
@ -99,7 +129,7 @@ hs.hotkey.bind({"cmd", "option"}, "T", function()
local focusedAppName = hs.window.focusedWindow():application():title()
if focusedAppName == browser
if focusedAppName == chromiumBrowser
then
hs.osascript.applescript(string.format([[
tell application "System Events" to tell process "%s"
@ -121,18 +151,15 @@ function openVsCode(app)
local count = 0
for _ in pairs(wins) do count = count + 1 end
if (count > 0)
then
if (count > 0) then
wf_app:getWindows()[1]:focus()
else
hs.osascript.applescript(string.format([[
tell application "System Events" to tell process "%s"
click menu item "New Window" of menu "File" of menu bar 1
set frontmost to true
end tell
]], app))
hs.osascript.applescript(string.format([[
tell application "System Events" to tell process "%s"
click menu item "New Window" of menu "File" of menu bar 1
set frontmost to true
end tell
]], app))
end
end
@ -142,13 +169,14 @@ hs.hotkey.bind({"cmd", "ctrl"}, "E", function()
openVsCode("Code")
end)
hs.hotkey.bind({"cmd", "ctrl"}, "V", function()
-- hs.hotkey.bind({"cmd", "ctrl"}, "V", function()
-- openVsCode("Code")
-- openVsCode("VSCodium")
-- No neovide function because it doesn't support system events (yet)
hs.application.open("Neovide")
end)
-- hs.application.open("Neovide")
-- end)
@ -180,14 +208,20 @@ end)
-- APP-AGNOSTIC GLOBAL OPEN/FOCUS BINDINGS
-- hs.hotkey.bind({"cmd", "ctrl"}, "E", function() hs.application.open("Emacs") end)
hs.hotkey.bind({"cmd", "ctrl"}, "O", function() hs.application.open("Obsidian") end)
hs.hotkey.bind({"cmd", "ctrl"}, "R", function() hs.application.open("Obsidian") end)
hs.hotkey.bind({"cmd", "ctrl"}, "A", function() hs.application.open("Apebrain") end)
hs.hotkey.bind({"cmd", "ctrl"}, "N", function() hs.application.open("Obsidian") end)
hs.hotkey.bind({"cmd", "ctrl"}, "C", function() hs.application.open("Numi") end)
-- common apps
-- hs.hotkey.bind({"cmd", "ctrl"}, "Z", function() hs.application.open("Todoist") end)
-- hs.hotkey.bind({"cmd", "ctrl"}, "R", function() hs.application.open("Obsidian") end)
hs.hotkey.bind({"cmd", "ctrl"}, "M", function() hs.application.open("Spotify") end)
hs.hotkey.bind({"cmd", "ctrl"}, "S", function() hs.application.open("Signal") end)
hs.hotkey.bind({"cmd", "ctrl"}, "G", function() hs.application.open("Godot") end)
hs.hotkey.bind({"cmd", "ctrl"}, "G", function() hs.application.open("Google Calendar") end)
hs.hotkey.bind({"cmd", "ctrl"}, "Z", function() hs.application.open("Preview") end)
-- annoying apps (manually open only)
hs.hotkey.bind({"cmd", "ctrl"}, "K", function() switchToIfOpen("KiCad") end)
hs.hotkey.bind({"cmd", "ctrl"}, "C", function() switchToIfOpen("CLion") end)
hs.hotkey.bind({"cmd", "ctrl"}, "J", function() hs.application.open("IntelliJ IDEA CE") end)
hs.hotkey.bind({"cmd", "ctrl"}, "I", function() hs.application.open("Insomnia") end)
-- Clear clipboard
@ -197,6 +231,47 @@ hs.hotkey.bind({"cmd", "shift", "ctrl"}, "C", function()
end)
--------------------------------------
-- DESKTOP SWITCHING (axed)
-- Retroactive note: it should be harder, not easier, to context-switch :P
--------------------------------------
-- function gotoDesktopNumber(desktop)
-- local deskstr = string.format("Desktop %d", desktop)
-- local index = 0
-- for item in hs.spaces.spacesForScreen("Main") do
-- if item == deskstr then
-- break
-- else
-- index = index + 1
-- end
-- end
-- print("INDEX ", index)
-- hs.spaces.gotoSpace(index)
-- end
--
-- hs.hotkey.bind({"cmd", "ctrl"}, "1", function() gotoDesktopNumber(1) end)
-- hs.hotkey.bind({"cmd", "ctrl"}, "2", function() gotoDesktopNumber(2) end)
-- hs.hotkey.bind({"cmd", "ctrl"}, "3", function() gotoDesktopNumber(3) end)
-- hs.hotkey.bind({"cmd", "ctrl"}, "4", function() gotoDesktopNumber(4) end)
--------------------------------------
-- SWITCH TO IF OPEN
-- Switches to application if there's an instance of it open
--------------------------------------
function switchToIfOpen(app)
wf_app = wf.new(false):setAppFilter(app, {currentSpace=true, visible=true})
local wins = wf_app:getWindows()
local count = 0
for _ in pairs(wins) do count = count + 1 end
if (count > 0) then
wf_app:getWindows()[1]:focus()
end
end
--------------------------------------
-- KEY COMBO TO APPLICATION
-- Sends keystrokes but only if the specified application is focused

View File

@ -4,16 +4,6 @@
<dict>
<key>AlternateMouseScroll</key>
<true/>
<key>AppleAntiAliasingThreshold</key>
<integer>1</integer>
<key>ApplePressAndHoldEnabled</key>
<false/>
<key>AppleScrollAnimationEnabled</key>
<integer>0</integer>
<key>AppleSmoothFixedFontsSizeThreshold</key>
<integer>1</integer>
<key>AppleWindowTabbingMode</key>
<string>manual</string>
<key>Custom Color Presets</key>
<dict>
<key>Brogrammer</key>
@ -1117,7 +1107,7 @@
<key>Non-ASCII Anti Aliased</key>
<true/>
<key>Normal Font</key>
<string>CaskaydiaCoveNerdFontComplete- 13</string>
<string>MesloLGS-NF-Regular 13</string>
<key>Option Key Sends</key>
<integer>0</integer>
<key>Prompt Before Closing 2</key>

View File

@ -1,106 +1,124 @@
-- INSTALL PACKER:
-- git clone --depth 1 https://github.com/wbthomason/packer.nvim\
-- ~/.local/share/nvim/site/pack/packer/start/packer.nvim
-- check for vscode nvim plugin
-- (https://github.com/vscode-neovim/vscode-neovim)
if not vim.g.vscode then
-- aliases
local o = vim.o
local c = vim.cmd
local map = vim.api.nvim_set_keymap
-- options
o.termguicolors = true
o.mouse = 'a'
-- o.autoindent = true
o.smartindent = true -- replacing autoindent with this
o.wrap = true
o.nobinary = true
o.relativenumber = true
o.tabstop = 4
o.shiftwidth = 4
o.expandtab = true
-- NOTE: pcall prevents plugin system from shitting itself on first load
if not pcall(function()
c.colorscheme 'catppuccin'
end) then
print("Failed to load colorscheme - probably has not been installed")
if vim.g.vscode then
do return end
else
if vim.g.neovide then
vim.o.guifont = "CaskaydiaCove Nerd Font:h14"
vim.g.neovide_hide_mouse_when_typing = true
end
-- keybinds
-- file management
map('n', '<c-t>', ':CHADopen<cr>', {silent = true})
map('n', '<c-`>', ':ToggleTerm direction="float"<cr>', {silent = true})
-- exit terminal requires <Cmd> prefix
map('t', '<c-`>', '<Cmd>:ToggleTerm<cr>', {silent = true})
map('n', '<Space>gs', ':Telescope git_status<cr>', {silent = true})
map('n', '<Space>gc', ':Telescope git_commits<cr>', {silent = true})
map('n', '<Space>:', ':Telescope commands<cr>', {silent = true})
map('n', '<Space><Space>', ':Telescope find_files<cr>', {silent = true})
map('n', '<Space>f', ':Telescope grep_string<cr>', {silent = true})
-- buffer management
map('n', '<c-h>', ':bp<cr>', {silent = true})
map('n', '<c-l>', ':bn<cr>', {silent = true})
-- plugin configs
vim.g['airline_powerline_fonts'] = 1
vim.g['airline_theme'] = 'powerlineish'
vim.g['airline#extensions#tabline#enabled'] = 1
vim.g['airline#extensions#tabline#fnamemod'] = ':t'
-- plugin imports
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
-- Visual
use 'vim-airline/vim-airline'
use 'vim-airline/vim-airline-themes'
use { "catppuccin/nvim", as = "catppuccin" }
use 'airblade/vim-gitgutter'
-- Editor
use {'neovim/nvim-lspconfig', config = function()
local lspc = require('lspconfig')
lspc['pyright'].setup{}
lspc['tsserver'].setup{}
lspc['clojure_lsp'].setup{}
lspc['racket_langserver'].setup{}
lspc['rust_analyzer'].setup{}
lspc['gopls'].setup{}
end}
use 'hrsh7th/cmp-nvim-lsp'
use {'hrsh7th/nvim-cmp', config = function()
local cmp = require 'cmp'
cmp.setup {
sources = {
{ name = 'nvim_lsp' },
}
}
end}
use {'ms-jpq/chadtree', branch = 'chad'}
use 'nvim-lua/plenary.nvim'
use 'nvim-telescope/telescope.nvim'
use {"akinsho/toggleterm.nvim", tag = '*', config = function()
require("toggleterm").setup()
end}
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = function()
require'nvim-treesitter.configs'.setup{
highlight = {enable = true}
}
end}
end)
end
-- aliases
local o = vim.o
local c = vim.cmd
local map = vim.api.nvim_set_keymap
-- options
o.termguicolors = true
o.mouse = 'a'
-- o.autoindent = true
o.smartindent = true -- replacing autoindent with this
o.wrap = false
o.nobinary = true
o.relativenumber = true
o.tabstop = 4
o.shiftwidth = 4
o.expandtab = true
-- NOTE: pcall prevents plugin system from shitting itself on first load
if not pcall(function()
c.colorscheme 'catppuccin'
end) then
print("Failed to load colorscheme - probably has not been installed")
end
-- keybinds
-- file management
-- map('n', '<c-t>', ':CHADopen<cr>', {silent = true})
map('n', '<c-b>', ':NvimTreeToggle<cr>', {silent = true})
map('n', '<c-`>', ':ToggleTerm direction="float"<cr>', {silent = true})
-- exit terminal requires <Cmd> prefix
map('t', '<c-`>', '<Cmd>:ToggleTerm<cr>', {silent = true})
map('n', '<Space>gs', ':Telescope git_status<cr>', {silent = true})
map('n', '<Space>gc', ':Telescope git_commits<cr>', {silent = true})
map('n', '<Space>:', ':Telescope commands<cr>', {silent = true})
map('n', '<Space><Space>', ':Telescope find_files<cr>', {silent = true})
map('n', '<Space>f', ':Telescope grep_string<cr>', {silent = true})
-- buffer management
map('n', '<c-h>', ':bp<cr>', {silent = true})
map('n', '<c-l>', ':bn<cr>', {silent = true})
-- plugin configs
vim.g['airline_powerline_fonts'] = 1
vim.g['airline_theme'] = 'powerlineish'
vim.g['airline#extensions#tabline#enabled'] = 1
vim.g['airline#extensions#tabline#fnamemod'] = ':t'
-- plugin imports
return require('packer').startup(function(use)
-- Packer can manage itself
use 'wbthomason/packer.nvim'
-- Visual
use 'vim-airline/vim-airline'
use 'vim-airline/vim-airline-themes'
use { "catppuccin/nvim", as = "catppuccin" }
use 'airblade/vim-gitgutter'
-- Editor
use {'neovim/nvim-lspconfig', config = function()
local lspc = require('lspconfig')
lspc['pyright'].setup{}
lspc['tsserver'].setup{}
lspc['clojure_lsp'].setup{}
lspc['racket_langserver'].setup{}
lspc['rust_analyzer'].setup{}
lspc['gopls'].setup{}
end}
use 'hrsh7th/cmp-nvim-lsp'
use {'hrsh7th/nvim-cmp', config = function()
local cmp = require 'cmp'
cmp.setup {
sources = {
{ name = 'nvim_lsp' },
}
}
end}
-- use {'ms-jpq/chadtree', branch = 'chad'}
use {"nvim-tree/nvim-tree.lua", config = function()
require("nvim-tree").setup()
end}
use {"nvim-tree/nvim-web-devicons"}
use 'nvim-lua/plenary.nvim'
use 'nvim-telescope/telescope.nvim'
use {"akinsho/toggleterm.nvim", tag = '*', config = function()
require("toggleterm").setup()
end}
use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate', config = function()
require'nvim-treesitter.configs'.setup{
highlight = {enable = true}
}
end}
-- NOTE: requires Node.js >= 17
-- use {'github/copilot.vim', run = ':Copilot setup'}
end)

View File

@ -47,7 +47,7 @@
},
"footprintAlpha" : {
"float" : 0.30000001192092896
"float" : 0.3
},
"footprintBorderWidth" : {
"float" : 2
@ -65,7 +65,7 @@
"float" : 0
},
"hideMenubarIcon" : {
"bool" : false
"bool" : true
},
"ignoredSnapAreas" : {
"int" : 0
@ -146,7 +146,7 @@
"bool" : false
},
"todo" : {
"int" : 0
"int" : 2
},
"todoApplication" : {
@ -164,14 +164,22 @@
"int" : 0
},
"windowSnapping" : {
"int" : 1
"int" : 2
}
},
"shortcuts" : {
"almostMaximize" : {
"keyCode" : 43,
"modifierFlags" : 1441792
},
"bottomHalf" : {
"keyCode" : 38,
"modifierFlags" : 1441792
},
"center" : {
"keyCode" : 25,
"modifierFlags" : 1441792
},
"centerThird" : {
"keyCode" : 3,
"modifierFlags" : 786432
@ -184,6 +192,10 @@
"keyCode" : 14,
"modifierFlags" : 786432
},
"larger" : {
"keyCode" : 24,
"modifierFlags" : 1441792
},
"lastThird" : {
"keyCode" : 5,
"modifierFlags" : 786432
@ -200,6 +212,10 @@
"keyCode" : 46,
"modifierFlags" : 1441792
},
"maximizeHeight" : {
"keyCode" : 29,
"modifierFlags" : 1441792
},
"nextDisplay" : {
"keyCode" : 124,
"modifierFlags" : 1441792
@ -212,6 +228,10 @@
"keyCode" : 37,
"modifierFlags" : 1441792
},
"smaller" : {
"keyCode" : 27,
"modifierFlags" : 1441792
},
"topHalf" : {
"keyCode" : 40,
"modifierFlags" : 1441792

View File

@ -1,5 +1,4 @@
// Keybinds in here override the editor defaults
// Place your key bindings in this file to override the defaultsauto[]
[
{
"key": "cmd+1",
@ -74,11 +73,132 @@
"command": "-workbench.action.openEditorAtIndex9"
},
{
"key": "cmd",
"command": "workbench.action.openEditorAtIndex"
"key": "alt+cmd+1",
"command": "workbench.action.focusFirstEditorGroup"
},
{
"key": "cmd+1",
"command": "-workbench.action.focusFirstEditorGroup"
},
{
"key": "alt+cmd+3",
"command": "workbench.action.focusThirdEditorGroup"
},
{
"key": "cmd+3",
"command": "-workbench.action.focusThirdEditorGroup"
},
{
"key": "alt+cmd+6",
"command": "workbench.action.focusSixthEditorGroup"
},
{
"key": "cmd+6",
"command": "-workbench.action.focusSixthEditorGroup"
},
{
"key": "alt+cmd+7",
"command": "workbench.action.focusSeventhEditorGroup"
},
{
"key": "cmd+7",
"command": "-workbench.action.focusSeventhEditorGroup"
},
{
"key": "alt+cmd+2",
"command": "workbench.action.focusSecondEditorGroup"
},
{
"key": "cmd+2",
"command": "-workbench.action.focusSecondEditorGroup"
},
{
"key": "alt+cmd+4",
"command": "workbench.action.focusFourthEditorGroup"
},
{
"key": "cmd+4",
"command": "-workbench.action.focusFourthEditorGroup"
},
{
"key": "alt+cmd+5",
"command": "workbench.action.focusFifthEditorGroup"
},
{
"key": "cmd+5",
"command": "-workbench.action.focusFifthEditorGroup"
},
{
"key": "alt+cmd+8",
"command": "workbench.action.focusEighthEditorGroup"
},
{
"key": "cmd+8",
"command": "-workbench.action.focusEighthEditorGroup"
},
{
"key": "alt+cmd+0",
"command": "workbench.action.focusLastEditorGroup"
},
{
"key": "cmd+h",
"command": "workbench.action.toggleAuxiliaryBar"
},
{
"key": "cmd+g",
"command": "git-graph.view"
},
{
"key": "cmd+m",
"command": "editor.action.toggleMinimap"
}
"command": "-markdown.extension.editing.toggleMath",
"when": "editorTextFocus && !editorReadonly && editorLangId == 'markdown'"
},
{
"key": "ctrl+shift+tab",
"command": "workbench.action.showPreviousWindowTab"
},
{
"key": "ctrl+tab",
"command": "workbench.action.showNextWindowTab"
},
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenLeastRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "ctrl+shift+tab",
"command": "-workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup",
"when": "!activeEditorGroupEmpty"
},
{
"key": "ctrl+tab",
"command": "-workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen"
},
{
"key": "shift+cmd+z",
"command": "workbench.action.toggleZenMode"
},
{
"key": "ctrl+shift+1",
"command": "workbench.action.terminal.focusAtIndex1"
},
{
"key": "ctrl+shift+2",
"command": "workbench.action.terminal.focusAtIndex2"
},
{
"key": "ctrl+shift+3",
"command": "workbench.action.terminal.focusAtIndex3"
},
{
"key": "ctrl+shift+4",
"command": "workbench.action.terminal.focusAtIndex4"
},
]

View File

@ -1,7 +1,8 @@
#!/bin/bash
# PROJECT DIR PRUNING SCRIPT
# Lists projects in current directory with a clean git status,
# sorted in reverse by date modified
printf "%-40s%-20s%s\n" 'Clean git, oldest to newest' 'Date Modified' 'Size'
printf "%-40s%-20s%s\n" '===========================' '=============' '===='

View File

@ -1,12 +0,0 @@
_____ _ _ _____ _ _ _ ________ ___ ______
|_ _| | | |_ _| \ | || | / /| ___ \/ _ \| _ \
| | | |_| | | | | \| || |/ / | |_/ / /_\ \ | | |
| | | _ | | | | . ` || \ | __/| _ | | | |
| | | | | |_| |_| |\ || |\ \| | | | | | |/ /
\_/ \_| |_/\___/\_| \_/\_| \_/\_| \_| |_/___/
===========================================================
WARNING: DO NOT RESTART. THIS MACHINE'S SSD IS ENCRYPTED.
===========================================================