Lots of stuff. Working on refactoring
This commit is contained in:
parent
8230d22739
commit
1b5423997e
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
fish/fishd.*
|
4
NAS_mounts/auto_nas
Executable file
4
NAS_mounts/auto_nas
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
/Users/[[UNAME]]/mnt/music -fstype=smbfs ://[[USERNAME]]:[[PASSWORD]]@nas.loven/music
|
||||||
|
/Users/[[UNAME]]/mnt/video -fstype=smbfs ://[[USERNAME]]:[[PASSWORD]]@nas.loven/video
|
||||||
|
/Users/[[UNAME]]/mnt/photo -fstype=smbfs ://[[USERNAME]]:[[PASSWORD]]@nas.loven/photo
|
||||||
|
/Users/[[UNAME]]/mnt/NAS -fstype=smbfs ://[[USERNAME]]:[[PASSWORD]]@nas.loven/home
|
55
NAS_mounts/fix_mounts.sh
Normal file
55
NAS_mounts/fix_mounts.sh
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# fix_mounts.sh - ensures autofs mounts are mounted by a user and not 'root'
|
||||||
|
#
|
||||||
|
# copyright 2016 scot.mcphee@gmail.com
|
||||||
|
#
|
||||||
|
# GPL 3.0 LICENCE https://www.gnu.org/licenses/gpl.txt
|
||||||
|
#
|
||||||
|
# This file should be run by 'root' as the 'sudo' should execute without stopping
|
||||||
|
# to ask for your password, unless you run this manually. See the
|
||||||
|
# org.autonomous.fixmounts.plist file which accompanies it. This plist executes
|
||||||
|
# the script every 15 seconds. I put mine in /Library/LaunchDaemons where it will
|
||||||
|
# be run as root whether there is a user logged in or not.
|
||||||
|
#
|
||||||
|
# autofsname - the name of the file in /etc/ that is specified in auto_master
|
||||||
|
# e.g.
|
||||||
|
# /- auto_nas -nosuid
|
||||||
|
# then it's 'auto_nas'
|
||||||
|
#
|
||||||
|
# mnt_usr - the userid of the user (you) that you want the mounts for
|
||||||
|
# mnt_pnt - the directory in the user dir where the mounts are
|
||||||
|
# t_mnt - using $mnt_usr and $mnt_pnt; the full path to the mounts
|
||||||
|
# mounts - space-separated list of mounts expected in $t_mnt
|
||||||
|
|
||||||
|
autofsname=auto_nas
|
||||||
|
mnt_usr=[[USERNAME]]
|
||||||
|
mnt_pnt=mnt
|
||||||
|
t_mnt=/Users/${mnt_usr}/${mnt_pnt}
|
||||||
|
mounts="music photo video NAS"
|
||||||
|
|
||||||
|
# don't change below here unless you know what you are doing with shell scripts.
|
||||||
|
|
||||||
|
all_mounts=`/sbin/mount | /usr/bin/grep $t_mnt | /usr/bin/grep -v "map $autofsname on $t_mnt"`
|
||||||
|
|
||||||
|
d=`/bin/date`
|
||||||
|
echo "fix_mounts [$d] checking $t_mnt for $mounts"
|
||||||
|
for mt in $mounts;
|
||||||
|
do
|
||||||
|
full_mount=${t_mnt}/${mt}
|
||||||
|
if [[ $all_mounts == *"$full_mount"* ]];
|
||||||
|
then
|
||||||
|
# it is mounted, let us see if it mounted by the user.
|
||||||
|
mm=`/bin/echo "$all_mounts" | /usr/bin/grep $full_mount`
|
||||||
|
if [[ ! $mm =~ on.$full_mount.*mounted.by.$mnt_usr ]]; then
|
||||||
|
echo "fix_mounts [$d] Remounting: $full_mount - because $mnt_usr not mounted $mm"
|
||||||
|
/usr/bin/sudo /sbin/umount $full_mount
|
||||||
|
# if resource is busy force unmount with diskutil DANGER
|
||||||
|
if [ ! $? ]; then /usr/sbin/diskutil unmount force $full_mount; fi
|
||||||
|
/usr/bin/sudo -u $mnt_usr cd $full_mount
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "fix_mounts [$d] Not mounted: $full_mount - ignoring"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
34
NAS_mounts/org.autonomous.fixmounts.plist
Normal file
34
NAS_mounts/org.autonomous.fixmounts.plist
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>org.autonomous.fixmounts</string>
|
||||||
|
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/Users/[[USERNAME]]/bin/fix_mounts.sh</string>
|
||||||
|
</array>
|
||||||
|
|
||||||
|
<key>Nice</key>
|
||||||
|
<integer>10</integer>
|
||||||
|
|
||||||
|
<key>StartInterval</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
|
||||||
|
<key>ThrottleInterval</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<false/>
|
||||||
|
|
||||||
|
<key>ProcessType</key>
|
||||||
|
<string>Background</string>
|
||||||
|
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>/var/log/fixmounts.log</string>
|
||||||
|
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>/var/log/fixmounts.log</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
49
NAS_mounts/setup.sh
Executable file
49
NAS_mounts/setup.sh
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function create_directories()
|
||||||
|
{
|
||||||
|
mkdir ${HOME}/mnt
|
||||||
|
mkdir ${HOME}/mnt/music
|
||||||
|
mkdir ${HOME}/mnt/photos
|
||||||
|
mkdir ${HOME}/mnt/video
|
||||||
|
mkdir ${HOME}/mnt/NAS
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_automount()
|
||||||
|
{
|
||||||
|
echo -n "Username for NAS: "
|
||||||
|
read NAS_USERNAME
|
||||||
|
echo -n "Password for NAS: "
|
||||||
|
read -s NAS_PASSWORD
|
||||||
|
echo
|
||||||
|
sed -e "s/\[\[USERNAME\]\]/${NAS_USERNAME}/" \
|
||||||
|
-e "s/\[\[PASSWORD\]\]/${NAS_PASSWORD}/" \
|
||||||
|
-e "s/\[\[UNAME\]\]/$(whoami)/" \
|
||||||
|
< "${DOTFILES}/NAS_mounts/auto_nas" \
|
||||||
|
| sudo tee "/etc/auto_nas_$(whoami)" >/dev/null
|
||||||
|
sudo chmod 600 "/etc/auto_nas_$(whoami)"
|
||||||
|
if ! grep "auto_nas_$(whoami)" < /etc/auto_master >/dev/null; then
|
||||||
|
echo "/- auto_nas_$(whoami) -nosuid" \
|
||||||
|
| sudo tee -a /etc/auto_master
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_fixer()
|
||||||
|
{
|
||||||
|
local plist=org.autonomous.fixmounts.plist
|
||||||
|
|
||||||
|
sed -e "s/\[\[USERNAME\]\]/$(whoami)/" \
|
||||||
|
< "${DOTFILES}/NAS_mounts/fix_mounts.sh" \
|
||||||
|
> ${HOME}/bin/fix_mounts.sh
|
||||||
|
chmod +x ${HOME}/bin/fix_mounts.sh
|
||||||
|
sed -e "s/\[\[USERNAME\]\]/$(whoami)/" \
|
||||||
|
< "${DOTFILES}/NAS_mounts/${plist}" \
|
||||||
|
| sudo tee /Library/LaunchDaemons/${plist} \
|
||||||
|
>/dev/null
|
||||||
|
sudo chmod 644 /Library/LaunchDaemons/${plist}
|
||||||
|
sudo launchctl load /Library/LaunchDaemons/${plist}
|
||||||
|
}
|
||||||
|
|
||||||
|
export DOTFILES=/Users/thomas/dotfiles
|
||||||
|
install_automount
|
||||||
|
install_fixer
|
20
fish/config.fish
Executable file
20
fish/config.fish
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
if test "$SHLVL" -le 1
|
||||||
|
set -x DOTFILES {$HOME}/dotfiles
|
||||||
|
|
||||||
|
set -x PATH /usr/local/bin /usr/local/sbin $PATH
|
||||||
|
set -x PATH $DOTFILES/bin $PATH
|
||||||
|
if test -d $HOME/bin
|
||||||
|
set -x PATH $HOME/bin $PATH
|
||||||
|
end
|
||||||
|
set -x PATH . $PATH
|
||||||
|
|
||||||
|
set -x FISH_SETUP_PATH 'yes'
|
||||||
|
end
|
||||||
|
|
||||||
|
set -x LANG sv_SE.UTF-8
|
||||||
|
set -x LC_ALL sv_SE.UTF-8
|
||||||
|
|
||||||
|
set -x EDITOR nvim
|
||||||
|
alias v nvim
|
||||||
|
|
||||||
|
eval (python3 -m virtualfish)
|
6
fish/functions/bubu.fish
Executable file
6
fish/functions/bubu.fish
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
function bubu --description="Update, upgrade and clean up homebrew packages"
|
||||||
|
brew update
|
||||||
|
and brew outdated
|
||||||
|
and brew upgrade
|
||||||
|
and brew cleanup
|
||||||
|
end
|
4
fish/functions/fish_greeting.fish
Executable file
4
fish/functions/fish_greeting.fish
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
function fish_greeting
|
||||||
|
|
||||||
|
end
|
||||||
|
|
29
fish/functions/fish_prompt.fish
Executable file
29
fish/functions/fish_prompt.fish
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
function fish_prompt
|
||||||
|
set -l status_copy $status
|
||||||
|
|
||||||
|
if set -q VIRTUAL_ENV
|
||||||
|
echo -sn "(" (basename "$VIRTUAL_ENV") ")"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Hostname with unique color
|
||||||
|
set_color (hostname -s | md5 | cut -c-6)
|
||||||
|
echo -sn (hostname -s)
|
||||||
|
|
||||||
|
# A yellow separator
|
||||||
|
# The color of this could be used to signify something
|
||||||
|
set_color yellow
|
||||||
|
echo -sn ':'
|
||||||
|
|
||||||
|
# Contracted path to PWD
|
||||||
|
set_color normal
|
||||||
|
echo -sn (prompt_pwd)
|
||||||
|
|
||||||
|
# A green or red >, depending on exit status of last command
|
||||||
|
if test "$status_copy" -ne 0
|
||||||
|
set_color red
|
||||||
|
else
|
||||||
|
set_color green
|
||||||
|
end
|
||||||
|
echo -sn ' > '
|
||||||
|
end
|
||||||
|
|
34
fish/functions/fish_right_prompt.fish
Executable file
34
fish/functions/fish_right_prompt.fish
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
function fish_right_prompt
|
||||||
|
# Check if we are inside a version controlled directory (git only)
|
||||||
|
set -l ref (git symbolic-ref HEAD ^/dev/null)
|
||||||
|
if test -z $ref
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
# Check if any files have changes
|
||||||
|
git diff --no-ext-diff --quiet --exit-code ^/dev/null
|
||||||
|
or set -l dirty 'yes'
|
||||||
|
|
||||||
|
# Check if any files are staged
|
||||||
|
git diff-index --cached --quiet HEAD -- ^/dev/null
|
||||||
|
or set -l staged 'yes'
|
||||||
|
|
||||||
|
set_color normal
|
||||||
|
echo -sn '['
|
||||||
|
|
||||||
|
# Print branch name
|
||||||
|
# red if dirty
|
||||||
|
# yellow if staged
|
||||||
|
# green otherwise
|
||||||
|
if set -q staged
|
||||||
|
set_color yellow
|
||||||
|
else if set -q dirty
|
||||||
|
set_color red
|
||||||
|
else
|
||||||
|
set_color green
|
||||||
|
end
|
||||||
|
echo -sn (string replace refs/heads/ '' -- $ref)
|
||||||
|
|
||||||
|
set_color normal
|
||||||
|
echo -sn ']'
|
||||||
|
end
|
4
fish/functions/fish_user_key_bindings.fish
Executable file
4
fish/functions/fish_user_key_bindings.fish
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
function fish_user_key_bindings
|
||||||
|
bind \t try_subst
|
||||||
|
end
|
||||||
|
|
10
fish/functions/g.fish
Executable file
10
fish/functions/g.fish
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
function g
|
||||||
|
# shortcut to git
|
||||||
|
# If no arguments are given, run git status and git l
|
||||||
|
if count $argv >/dev/null
|
||||||
|
git $argv
|
||||||
|
else
|
||||||
|
git status
|
||||||
|
git l -5
|
||||||
|
end
|
||||||
|
end
|
3
fish/functions/greb.fish
Executable file
3
fish/functions/greb.fish
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
function greb --description "Git rebase entire history, interactively"
|
||||||
|
git rebase --interactive (git rev-list --max-parents=0 HEAD)
|
||||||
|
end
|
40
fish/functions/man.fish
Executable file
40
fish/functions/man.fish
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
function man --description "Format and display the on-line manual pages"
|
||||||
|
# Work around the "builtin" manpage that everything symlinks to,
|
||||||
|
# by prepending our fish datadir to man. This also ensures that man gives fish's
|
||||||
|
# man pages priority, without having to put fish's bin directories first in $PATH
|
||||||
|
|
||||||
|
# My changes (Thomas Lovén)
|
||||||
|
# Add color to the man pager
|
||||||
|
#
|
||||||
|
# blink
|
||||||
|
set -lx LESS_TERMCAP_mb (set_color -o red)
|
||||||
|
# bold
|
||||||
|
set -lx LESS_TERMCAP_md (set_color -o purple)
|
||||||
|
set -lx LESS_TERMCAP_me (set_color normal)
|
||||||
|
# standout
|
||||||
|
set -lx LESS_TERMCAP_so (set_color -b blue) (set_color yellow)
|
||||||
|
set -lx LESS_TERMCAP_se (set_color normal)
|
||||||
|
# underline
|
||||||
|
set -lx LESS_TERMCAP_us (set_color -u green)
|
||||||
|
set -lx LESS_TERMCAP_ue (set_color normal)
|
||||||
|
|
||||||
|
set -l manpath
|
||||||
|
if set -q MANPATH
|
||||||
|
set manpath $MANPATH
|
||||||
|
else if command -qs manpath
|
||||||
|
set manpath (command manpath)
|
||||||
|
end
|
||||||
|
# Notice local exported copy of the variable.
|
||||||
|
set -lx MANPATH $manpath
|
||||||
|
|
||||||
|
set -l fish_manpath (dirname $__fish_datadir)/fish/man
|
||||||
|
if test -d "$fish_manpath" -a -n "$MANPATH"
|
||||||
|
set MANPATH $fish_manpath:$MANPATH
|
||||||
|
# Invoke man with this manpath, and we're done.
|
||||||
|
command man $argv
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
# If fish's man pages could not be found, just invoke man normally
|
||||||
|
command man $argv
|
||||||
|
end
|
4
fish/functions/mcd.fish
Executable file
4
fish/functions/mcd.fish
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
function mcd --description "Make directory and enter it"
|
||||||
|
mkdir -p $argv
|
||||||
|
and cd $argv
|
||||||
|
end
|
14
fish/functions/try_subst.fish
Executable file
14
fish/functions/try_subst.fish
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
function try_subst
|
||||||
|
# Use s/word/replacement<tab> to replace word with replacement
|
||||||
|
# in last command
|
||||||
|
commandline | read -l saved_commandline
|
||||||
|
|
||||||
|
set -l pattern '^s/..*/.*$'
|
||||||
|
|
||||||
|
if commandline -t | grep -E -q "$pattern"
|
||||||
|
commandline -tr (echo -n "$history[1]" | sed -e (commandline -t)/g)
|
||||||
|
else
|
||||||
|
commandline -f complete
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
21
fish/setup.sh
Executable file
21
fish/setup.sh
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function setup_fish()
|
||||||
|
{
|
||||||
|
brew install fish
|
||||||
|
if ! grep /usr/local/bin/fish < /etc/shells >/dev/null; then
|
||||||
|
echo /usr/local/bin/fish | sudo tee -a /etc/shells
|
||||||
|
chsh -s /usr/local/bin/fish
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function link_config()
|
||||||
|
{
|
||||||
|
mkdir ${HOME}/.config
|
||||||
|
ln -s ${DOTFILES}/fish ${HOME}/.config/.
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export DOTFILES=/Users/thomas/dotfiles
|
||||||
|
setup_fish
|
||||||
|
link_config
|
34
install.sh
34
install.sh
@ -26,32 +26,42 @@ function cask()
|
|||||||
|
|
||||||
function install_casks()
|
function install_casks()
|
||||||
{
|
{
|
||||||
|
|
||||||
cask google-chrome
|
cask google-chrome
|
||||||
cask iterm2
|
|
||||||
cask docker
|
cask docker
|
||||||
cask caskroom/drivers/logitech-options
|
cask caskroom/drivers/logitech-options
|
||||||
cask crisidev/chunkwm/chunkwm
|
|
||||||
cask koekeishiya/formulae/khd
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_brews()
|
function install_brews()
|
||||||
{
|
{
|
||||||
#/usr/local/bin/brew update
|
#/usr/local/bin/brew update
|
||||||
brew fish
|
|
||||||
brew tmux
|
brew tmux
|
||||||
brew git
|
brew git
|
||||||
brew arp-scan
|
brew arp-scan
|
||||||
|
brew neovim
|
||||||
}
|
}
|
||||||
|
|
||||||
function setup_fish()
|
|
||||||
|
function setup_kitty()
|
||||||
{
|
{
|
||||||
brew fish
|
# Copy kitty.app to /Applications
|
||||||
echo /usr/local/bin/fish | sudo tee -a /etc/shells
|
#cp ${KITTY_PATH} /Applications/.
|
||||||
chsh -s /usr/local/bin/fish
|
ln -s ${DOTFILES}/kitty.conf ${HOME}/Library/Preferences/kitty/kitty.conf
|
||||||
}
|
}
|
||||||
|
|
||||||
install_brews
|
function setup_ssh()
|
||||||
install_casks
|
{
|
||||||
|
# copy private key to .ssh
|
||||||
|
# cp ${KEYFILE} ~/.ssh/thomas_rsa
|
||||||
|
# chmod 400 ~/.ssh/thomas_rsa
|
||||||
|
# ssh-add -K ~/.ssh/thomas_rsa
|
||||||
|
ln -s ${DOTFILES}/ssh_config ${HOME}/.ssh/config
|
||||||
|
}
|
||||||
|
|
||||||
|
export DOTFILES=/Users/thomas/dotfiles
|
||||||
|
#install_brews
|
||||||
|
#install_casks
|
||||||
#setup_fish
|
#setup_fish
|
||||||
|
#setup_ssh
|
||||||
|
#setup_wm
|
||||||
|
#setup_kitty
|
||||||
|
setup_home
|
||||||
|
30
kitty.conf
Normal file
30
kitty.conf
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
font_size 8.0
|
||||||
|
# macos_hide_titlebar yes
|
||||||
|
|
||||||
|
# term xterm-256color
|
||||||
|
|
||||||
|
background #282828
|
||||||
|
foreground #ebdbb2
|
||||||
|
|
||||||
|
color0 #282828
|
||||||
|
color8 #928374
|
||||||
|
color1 #cc241d
|
||||||
|
color9 #fb4934
|
||||||
|
color2 #98971a
|
||||||
|
color10 #b8bb26
|
||||||
|
color3 #d79921
|
||||||
|
color11 #fabd2f
|
||||||
|
color4 #458588
|
||||||
|
color12 #83a598
|
||||||
|
color5 #b16286
|
||||||
|
color13 #d3869b
|
||||||
|
color6 #689d6a
|
||||||
|
color14 #8ec07c
|
||||||
|
color7 #a89984
|
||||||
|
color15 #ebdbb2
|
||||||
|
|
||||||
|
map super+v paste_from_clipboard
|
||||||
|
map super+c copy_to_clipboard
|
||||||
|
map super+minus increase_font_size
|
||||||
|
map super+shift+minus decrease_font_size
|
||||||
|
map super+0 restore_font_size
|
4
ssh_config
Normal file
4
ssh_config
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Host *
|
||||||
|
UseKeychain yes
|
||||||
|
AddKeysToAgent yes
|
||||||
|
IdentityFile ~/.ssh/thomas_rsa
|
107
wm/chunkwmrc
Executable file
107
wm/chunkwmrc
Executable file
@ -0,0 +1,107 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: specify the absolutepath to the directory to use when
|
||||||
|
# loading a plugin. '~' expansion is supported.
|
||||||
|
#
|
||||||
|
|
||||||
|
chunkc core::plugin_dir /usr/local/opt/chunkwm/share/chunkwm/plugins
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: if enabled, chunkwm will monitor the specified plugin_dir
|
||||||
|
# and automatically reload any '.so' file that is changed.
|
||||||
|
#
|
||||||
|
|
||||||
|
chunkc core::hotload 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: the following are config variables for the chunkwm-tiling plugin.
|
||||||
|
#
|
||||||
|
|
||||||
|
# desktop1 Höger skärm
|
||||||
|
# desktop2 Vänster skärm
|
||||||
|
|
||||||
|
chunkc set global_desktop_mode bsp
|
||||||
|
chunkc set 5_desktop_mode float
|
||||||
|
|
||||||
|
chunkc set 1_desktop_tree ~/.chunkwm_layouts/dev_1
|
||||||
|
|
||||||
|
chunkc set global_desktop_offset_top 20
|
||||||
|
chunkc set global_desktop_offset_bottom 20
|
||||||
|
chunkc set global_desktop_offset_left 20
|
||||||
|
chunkc set global_desktop_offset_right 20
|
||||||
|
chunkc set global_desktop_offset_gap 15
|
||||||
|
|
||||||
|
chunkc set 1_desktop_offset_top 30
|
||||||
|
chunkc set 1_desktop_offset_bottom 30
|
||||||
|
chunkc set 1_desktop_offset_left 30
|
||||||
|
chunkc set 1_desktop_offset_right 30
|
||||||
|
chunkc set 1_desktop_offset_gap 30
|
||||||
|
|
||||||
|
chunkc set 2_desktop_offset_top 20
|
||||||
|
chunkc set 2_desktop_offset_bottom 20
|
||||||
|
chunkc set 2_desktop_offset_left 20
|
||||||
|
chunkc set 2_desktop_offset_right 20
|
||||||
|
chunkc set 2_desktop_offset_gap 20
|
||||||
|
|
||||||
|
chunkc set desktop_padding_step_size 10.0
|
||||||
|
chunkc set desktop_gap_step_size 5.0
|
||||||
|
|
||||||
|
chunkc set bsp_spawn_left 1
|
||||||
|
chunkc set bsp_optimal_ratio 1.618
|
||||||
|
chunkc set bsp_split_mode optimal
|
||||||
|
chunkc set bsp_split_ratio 0.5
|
||||||
|
|
||||||
|
chunkc set window_focus_cycle monitor
|
||||||
|
chunkc set mouse_follows_focus 1
|
||||||
|
chunkc set window_float_next 0
|
||||||
|
chunkc set window_float_center 1
|
||||||
|
chunkc set window_region_locked 1
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: shell commands require escaped quotes
|
||||||
|
# to pass value containing a whitespace.
|
||||||
|
#
|
||||||
|
# chunkc set mouse_modifier \"cmd shift\"
|
||||||
|
chunkc set mouse_modifier fn
|
||||||
|
|
||||||
|
chunkc set preselect_border_color 0xffffff00
|
||||||
|
chunkc set preselect_border_width 4
|
||||||
|
chunkc set preselect_border_radius 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: these settings require chwm-sa.
|
||||||
|
# (https://github.com/koekeishiya/chwm-sa)
|
||||||
|
#
|
||||||
|
|
||||||
|
chunkc set window_float_topmost 0
|
||||||
|
chunkc set window_fade_inactive 0
|
||||||
|
chunkc set window_fade_alpha 0.85
|
||||||
|
chunkc set window_fade_duration 0.5
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: the following are config variables for the chunkwm-border plugin.
|
||||||
|
#
|
||||||
|
|
||||||
|
#chunkc set focused_border_color 0xffc0b18b
|
||||||
|
chunkc set focused_border_color 0xff689d6a
|
||||||
|
chunkc set focused_border_width 4
|
||||||
|
chunkc set focused_border_radius 0
|
||||||
|
chunkc set focused_border_skip_floating 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: specify plugins to load when chunkwm starts.
|
||||||
|
# if chunkc plugin_dir is not set, the absolutepath is necessary.
|
||||||
|
#
|
||||||
|
|
||||||
|
chunkc core::load tiling.so
|
||||||
|
# chunkc core::load ffm.so
|
||||||
|
chunkc core::load border.so
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: shell commands require escaped quotes
|
||||||
|
# to pass value containing a whitespace.
|
||||||
|
#
|
||||||
|
|
||||||
|
chunkc tiling::rule --owner \"System Preferences\" --subrole AXStandardWindow --state tile
|
||||||
|
chunkc tiling::rule --owner Finder --name Copy --state float
|
109
wm/khdrc
Normal file
109
wm/khdrc
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
# reload config
|
||||||
|
cmd + alt + ctrl - r : khd -e "reload"
|
||||||
|
|
||||||
|
# open terminal, blazingly fast compared to iTerm/Hyper
|
||||||
|
cmd - return : open -na /Applications/kitty.app
|
||||||
|
|
||||||
|
# Default border: Aqua
|
||||||
|
khd mode default on_enter chunkc border::color 0xff689d6a
|
||||||
|
# focus window
|
||||||
|
alt - h : chunkc tiling::window --focus west
|
||||||
|
alt - j : chunkc tiling::window --focus south
|
||||||
|
alt - k : chunkc tiling::window --focus north
|
||||||
|
alt - l : chunkc tiling::window --focus east
|
||||||
|
alt + shift - 1 : chunkc tiling::monitor -f 1
|
||||||
|
alt + shift - 2 : chunkc tiling::monitor -f 2
|
||||||
|
|
||||||
|
# Move mode: orange
|
||||||
|
alt - w: khd -e "mode activate move"
|
||||||
|
move + alt - w: khd -e "mode activate default"
|
||||||
|
move - escape: khd -e "mode activate default"
|
||||||
|
move - space: khd -e "mode activate default"
|
||||||
|
khd mode move on_enter chunkc border::color 0xffd65d0e
|
||||||
|
# swap window
|
||||||
|
move - h : chunkc tiling::window --swap west; khd -e "mode activate default"
|
||||||
|
move - j : chunkc tiling::window --swap south; khd -e "mode activate default"
|
||||||
|
move - k : chunkc tiling::window --swap north; khd -e "mode activate default"
|
||||||
|
move - l : chunkc tiling::window --swap east; khd -e "mode activate default"
|
||||||
|
# move window
|
||||||
|
move + shift - h : chunkc tiling::window --warp west; khd -e "mode activate default"
|
||||||
|
move + shift - j : chunkc tiling::window --warp south; khd -e "mode activate default"
|
||||||
|
move + shift - k : chunkc tiling::window --warp north; khd -e "mode activate default"
|
||||||
|
move + shift - l : chunkc tiling::window --warp east; khd -e "mode activate default"
|
||||||
|
# move window to monitor
|
||||||
|
move - 1 : chunkc tiling::window --send-to-monitor 1; chunkc tiling::monitor -f 1; khd -e "mode activate default"
|
||||||
|
move - 2 : chunkc tiling::window --send-to-monitor 2; chunkc tiling::monitor -f 2; khd -e "mode activate default"
|
||||||
|
# move floating windows / windows on a floating space
|
||||||
|
move - up : chunkc tiling::window --warp-floating fullscreen; khd -e "mode activate default"
|
||||||
|
move - left : chunkc tiling::window --warp-floating left; khd -e "mode activate default"
|
||||||
|
move - right : chunkc tiling::window --warp-floating right; khd -e "mode activate default"
|
||||||
|
move + cmd - left : chunkc tiling::window --warp-floating top-left; khd -e "mode activate default"
|
||||||
|
move + cmd - right : chunkc tiling::window --warp-floating top-right; khd -e "mode activate default"
|
||||||
|
move + shift + cmd - left : chunkc tiling::window --warp-floating bottom-left; khd -e "mode activate default"
|
||||||
|
move + shift + cmd - right : chunkc tiling::window --warp-floating bottom-right; khd -e "mode activate default"
|
||||||
|
#
|
||||||
|
# toggle window fullscreen
|
||||||
|
move - f : chunkc tiling::window --toggle fullscreen; khd -e "mode activate default"
|
||||||
|
# toggle window native fullscreen
|
||||||
|
move + shift - f : chunkc tiling::window --toggle native-fullscreen
|
||||||
|
# toggle window parent zoom
|
||||||
|
move - d : chunkc tiling::window --toggle parent; khd -e "mode activate default"
|
||||||
|
# toggle window split type
|
||||||
|
move - e : chunkc tiling::window --toggle split; khd -e "mode activate default"
|
||||||
|
# float / unfloat window
|
||||||
|
move - t : chunkc tiling::window --toggle float; khd -e "mode activate default"
|
||||||
|
# toggle sticky, float and resize to picture-in-picture size
|
||||||
|
move - s : chunkc tiling::window --toggle sticky;\
|
||||||
|
chunkc tiling::window --warp-floating pip-right; khd -e "mode activate default"
|
||||||
|
#
|
||||||
|
# rotate tree
|
||||||
|
move - r : chunkc tiling::desktop --rotate 90
|
||||||
|
# mirror tree y-axis
|
||||||
|
move - y : chunkc tiling::desktop --mirror vertical
|
||||||
|
# mirror tree x-axis
|
||||||
|
move - x : chunkc tiling::desktop --mirror horizontal
|
||||||
|
# toggle desktop offset
|
||||||
|
move - a : chunkc tiling::desktop --toggle offset; khd -e "mode activate default"
|
||||||
|
#
|
||||||
|
# change layout of desktop
|
||||||
|
move + shift - a : chunkc tiling::desktop --layout bsp; khd -e "mode activate default"
|
||||||
|
move + shift - s : chunkc tiling::desktop --layout monocle; khd -e "mode activate default"
|
||||||
|
move + shift - d : chunkc tiling::desktop --layout float; khd -e "mode activate default"
|
||||||
|
|
||||||
|
# Resize mode: yellow
|
||||||
|
alt - e: khd -e "mode activate resize"
|
||||||
|
resize + alt - e: khd -e "mode activate default"
|
||||||
|
resize - space: khd -e "mode activate default"
|
||||||
|
resize - escape: khd -e "mode activate default"
|
||||||
|
khd mode resize on_enter chunkc border::color 0xffd79921
|
||||||
|
# equalize size of windows
|
||||||
|
resize - 0 : chunkc tiling::desktop --equalize
|
||||||
|
# increase region size
|
||||||
|
resize - a : chunkc tiling::window --use-temporary-ratio 0.1 --adjust-window-edge west
|
||||||
|
resize - s : chunkc tiling::window --use-temporary-ratio 0.1 --adjust-window-edge south
|
||||||
|
resize - w : chunkc tiling::window --use-temporary-ratio 0.1 --adjust-window-edge north
|
||||||
|
resize - d : chunkc tiling::window --use-temporary-ratio 0.1 --adjust-window-edge east
|
||||||
|
# decrease region size
|
||||||
|
resize + shift - a : chunkc tiling::window --use-temporary-ratio -0.1 --adjust-window-edge west
|
||||||
|
resize + shift - s : chunkc tiling::window --use-temporary-ratio -0.1 --adjust-window-edge south
|
||||||
|
resize + shift - w : chunkc tiling::window --use-temporary-ratio -0.1 --adjust-window-edge north
|
||||||
|
resize + shift - d : chunkc tiling::window --use-temporary-ratio -0.1 --adjust-window-edge east
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# float next window to be tiled
|
||||||
|
# shift + alt - t : chunkc set window_float_next 1
|
||||||
|
|
||||||
|
|
||||||
|
# ctrl + alt - w : chunkc tiling::desktop --deserialize ~/.chunkwm_layouts/dev_1
|
||||||
|
|
||||||
|
# remap caps-lock to escape for this config only !!!
|
||||||
|
# macos sierra can also perform this remap for a given keyboard
|
||||||
|
# - capslock : khd -p "- escape"
|
||||||
|
|
||||||
|
# key remap for norwegian layout \ { }
|
||||||
|
# cmd - 7 : khd -p "shift + alt - 7"
|
||||||
|
# cmd - 8 : khd -p "shift + alt - 8"
|
||||||
|
# cmd - 9 : khd -p "shift + alt - 9"
|
16
wm/setup.sh
Normal file
16
wm/setup.sh
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
function setup_wm()
|
||||||
|
{
|
||||||
|
brew crisidev/homebrew-chunkwm/chunkwm
|
||||||
|
brew koekeishiya/formulae/khd
|
||||||
|
ln -s ${DOTFILES}/wm/khdrc ${HOME}/.khdrc
|
||||||
|
ln -s ${DOTFILES}/wm/chunkwmrc ${HOME}/.chunkwmrc
|
||||||
|
if ! /usr/local/bin/brew services list | grep chunkwm >/dev/null; then
|
||||||
|
/usr/local/bin/brew services start khd
|
||||||
|
/usr/local/bin/brew services start chunkwm
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
export DOTFILES=/Users/thomas/dotfiles
|
||||||
|
setup_wm
|
Loading…
x
Reference in New Issue
Block a user