Compare commits
10 Commits
1f4f7dc0dc
...
eaf6d47bf8
| Author | SHA1 | Date | |
|---|---|---|---|
|
eaf6d47bf8
|
|||
|
21758f9cc5
|
|||
|
ae69d852fe
|
|||
|
42189f6687
|
|||
|
ffcf0f02c2
|
|||
|
da251e7223
|
|||
|
ce611a0e14
|
|||
|
d0ba7f74b1
|
|||
|
3a2db931e0
|
|||
|
42b161fe21
|
16
bash_aliases
Normal file
16
bash_aliases
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Alias sudo to have a space at the end so it can be used with other aliases
|
||||||
|
alias sudo='sudo '
|
||||||
|
|
||||||
|
# Auto remove any packages that may be left over as dependencies
|
||||||
|
alias autorem='pacman -Rsn $(pacman -Qdtq)'
|
||||||
|
|
||||||
|
# Enable basic options for colour etc.
|
||||||
|
alias ls='ls -CFlvh --color=always --group-directories-first'
|
||||||
|
alias grep='grep --color=always'
|
||||||
|
alias less='less -R'
|
||||||
|
|
||||||
|
# Neovim instead of vim
|
||||||
|
alias vim='nvim'
|
||||||
|
|
||||||
|
# Out of habit
|
||||||
|
alias quit='exit'
|
||||||
34
bash_profile
Normal file
34
bash_profile
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Source .bashrc
|
||||||
|
[[ -f "$HOME/.bashrc" ]] && . "$HOME/.bashrc"
|
||||||
|
|
||||||
|
case $HOSTNAME in
|
||||||
|
# More can be added here in the future
|
||||||
|
kanto|tokyo)
|
||||||
|
HEADLESS=0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
HEADLESS=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ $HEADLESS -eq 0 && -z $WAYLAND_DISPLAY && $XDG_VTNR -eq 1 ]];
|
||||||
|
then
|
||||||
|
export GTK_THEME=Adwaita:dark
|
||||||
|
export MOZ_ENABLE_WAYLAND=1
|
||||||
|
export QT_QPA_PLATFORM=wayland-egl
|
||||||
|
export QT_QPA_PLATFORMTHEME=qt5ct
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
|
||||||
|
case $HOSTNAME in
|
||||||
|
kanto)
|
||||||
|
export WLR_NO_HARDWARE_CURSORS=1
|
||||||
|
|
||||||
|
# Desktop with nvidia gpu
|
||||||
|
exec sway --unsupported-gpu
|
||||||
|
;;
|
||||||
|
tokyo)
|
||||||
|
# Laptop with intel gpu
|
||||||
|
exec sway
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
40
bashrc
Normal file
40
bashrc
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Make sure we are running interactively
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
# Source aliases
|
||||||
|
[[ -f "$HOME/.bash_aliases" ]] && . "$HOME/.bash_aliases"
|
||||||
|
|
||||||
|
# Source devkitPro env if available
|
||||||
|
[[ -f "/etc/profile.d/devkit-env.sh" ]] && . "/etc/profile.d/devkit-env.sh"
|
||||||
|
|
||||||
|
# Misc options
|
||||||
|
shopt -s checkwinsize
|
||||||
|
shopt -s globstar
|
||||||
|
|
||||||
|
# History options
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# Disable history file for less
|
||||||
|
export LESSHISTFILE="-"
|
||||||
|
|
||||||
|
# Use neovim as editor
|
||||||
|
export EDITOR=nvim
|
||||||
|
|
||||||
|
# Required for passphrase input with gpg
|
||||||
|
export GPG_TTY="$(tty)"
|
||||||
|
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
|
||||||
|
gpg-connect-agent updatestartuptty /bye > /dev/null
|
||||||
|
|
||||||
|
# Append / to the end of symlinked directories
|
||||||
|
bind 'set mark-symlinked-directories on'
|
||||||
|
|
||||||
|
# Make C-w only delete up to first / in path
|
||||||
|
stty werase undef
|
||||||
|
bind '\C-w:unix-filename-rubout'
|
||||||
|
|
||||||
|
# If available setup execute starship prompt, otherwise default to a basic PS1
|
||||||
|
export PS1="[\033[01;92m\u@\h\033[00m] :: \033[00;34m\w \033[01;36m> \033[0;0m"
|
||||||
|
[[ $(command -v "starship") ]] && eval "$(starship init bash)"
|
||||||
53
config/foot/foot.ini
Normal file
53
config/foot/foot.ini
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Basic
|
||||||
|
#
|
||||||
|
term=xterm-256color
|
||||||
|
font=Ubuntu Mono:size=11.5
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
alpha=1.0
|
||||||
|
background=181818
|
||||||
|
foreground=FFFFFF
|
||||||
|
|
||||||
|
# Normal
|
||||||
|
regular0=181818 # black
|
||||||
|
regular1=FF5866 # red
|
||||||
|
regular2=85FF85 # green
|
||||||
|
regular3=F9DC5C # yellow
|
||||||
|
regular4=3185FC # blue
|
||||||
|
regular5=FF85FF # magenta
|
||||||
|
regular6=85FFFF # cyan
|
||||||
|
regular7=FFFFFF # white
|
||||||
|
|
||||||
|
# Bright
|
||||||
|
bright0=252525 # bright black
|
||||||
|
bright1=FF99A1 # bright red
|
||||||
|
bright2=C2FFC2 # bright green
|
||||||
|
bright3=FCEEB0 # bright yellow
|
||||||
|
bright4=86B8FD # bright blue
|
||||||
|
bright5=FFC2FF # bright magenta
|
||||||
|
bright6=C2FFFF # bright cyan
|
||||||
|
bright7=FFFFFF # bright white
|
||||||
|
|
||||||
|
# Dim
|
||||||
|
dim0=000000 # dim black
|
||||||
|
dim1=F50014 # dim red
|
||||||
|
dim2=5CFF5C # dim green
|
||||||
|
dim3=F6CD13 # dim yellow
|
||||||
|
dim4=0567F1 # dim blue
|
||||||
|
dim5=FF5CFF # dim magenta
|
||||||
|
dim6=00F5F5 # dim cyan
|
||||||
|
dim7=C2C2C2 # dim white
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
jump-labels=181818 FFFFFF
|
||||||
|
urls=FFFFFF
|
||||||
|
|
||||||
|
# @Todo: Could add more colours, supports the full 256 range and sixel
|
||||||
|
|
||||||
|
[csd]
|
||||||
|
preferred=server
|
||||||
|
|
||||||
|
[key-bindings]
|
||||||
|
show-urls-launch=Control+u
|
||||||
|
|
||||||
|
# vim: ft=dosini
|
||||||
32
config/nvim/after/syntax/c.vim
Normal file
32
config/nvim/after/syntax/c.vim
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
syn clear cTodo
|
||||||
|
syn clear cType
|
||||||
|
|
||||||
|
" Custom keywords
|
||||||
|
"
|
||||||
|
syn keyword cStorageClass function export internal global_var thread_var local_persist
|
||||||
|
syn keyword cOperator cast
|
||||||
|
|
||||||
|
" Type highlighting
|
||||||
|
"
|
||||||
|
" There are inconsistencies around this due to the horrific declaration syntax of C/C++ and
|
||||||
|
" trying to capture that inside a regexp statement is near impossible. These are made to mostly
|
||||||
|
" match the way I format my code.
|
||||||
|
"
|
||||||
|
syn match cType "\I\i*\ze\s\+\**\I\i*\s*[=;,\)\[]" " Regular declarations
|
||||||
|
syn match cType "\I\i*\ze\s\+\**\I\i*(" " Function return types
|
||||||
|
|
||||||
|
" Todo notes
|
||||||
|
"
|
||||||
|
syn match cTodo "@\I\i*\((\I\i*)\)\=:\?" contained
|
||||||
|
syn match cNote "\s:\I\i*" contained
|
||||||
|
|
||||||
|
" Functions
|
||||||
|
"
|
||||||
|
syn match cFunction "\I\i*\ze("
|
||||||
|
|
||||||
|
" Contain clusters
|
||||||
|
"
|
||||||
|
syn cluster cCommentGroup add=cNote
|
||||||
|
syn cluster cPreProcGroup add=cFunc,cType
|
||||||
|
|
||||||
|
hi def link cFunction Function
|
||||||
28
config/nvim/after/syntax/qf.vim
Normal file
28
config/nvim/after/syntax/qf.vim
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
syn clear
|
||||||
|
|
||||||
|
" I have completely overriden the formatting for the quickfix and location list buffers so this
|
||||||
|
" has to be changed to give proper highlighting of the new format
|
||||||
|
"
|
||||||
|
syn match qfSignError "\[!\]" contained
|
||||||
|
syn match qfSignWarn "\[#\]" contained
|
||||||
|
syn match qfSignSearch "\[\~\]" contained
|
||||||
|
syn match qfFileName "^[^:]*" contains=@qfSign nextgroup=qfSeparator1
|
||||||
|
syn match qfSeparator1 ":" contained nextgroup=qfLineNr
|
||||||
|
syn match qfLineNr "[^:|]*" contained nextgroup=qfSeparator2,qfSeparator3
|
||||||
|
syn match qfSeparator2 ":" contained nextgroup=qfColumnNr
|
||||||
|
syn match qfColumnNr "[^|]*" contained
|
||||||
|
syn match qfSeparator3 "|" contained
|
||||||
|
|
||||||
|
syn cluster qfSign contains=qfSignError,qfSignWarn,qfSignSearch
|
||||||
|
|
||||||
|
hi clear qfFileName
|
||||||
|
hi clear qfLineNr
|
||||||
|
|
||||||
|
hi def link qfSignError DiagnosticSignError
|
||||||
|
hi def link qfSignWarn DiagnosticSignWarn
|
||||||
|
hi def link qfSignSearch LineNr
|
||||||
|
hi def link qfFileName Function
|
||||||
|
hi def link qfLineNr Number
|
||||||
|
hi def link qfColumnNr Number
|
||||||
|
|
||||||
|
let b:current_syntax = "qf"
|
||||||
71
config/nvim/colors/scheme.vim
Normal file
71
config/nvim/colors/scheme.vim
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
set background=dark
|
||||||
|
hi clear
|
||||||
|
|
||||||
|
if exists("syntax_on")
|
||||||
|
syntax reset
|
||||||
|
endif
|
||||||
|
|
||||||
|
let g:colors_name = "scheme"
|
||||||
|
|
||||||
|
hi clear QuickFixLine
|
||||||
|
|
||||||
|
"
|
||||||
|
" hi Example guifg=NONE guibg=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE
|
||||||
|
"
|
||||||
|
hi Normal guifg=#FFFFFF guibg=#232323
|
||||||
|
hi NonText guifg=#444444
|
||||||
|
|
||||||
|
hi LineNr guifg=#FFFFFF guibg=#18171C
|
||||||
|
hi LineNrAbove guifg=#484848 guibg=#18171C
|
||||||
|
hi LineNrBelow guifg=#484848 guibg=#18171C
|
||||||
|
|
||||||
|
hi VertSplit guifg=#FFFFFF
|
||||||
|
|
||||||
|
hi CursorLineNr guifg=#FFFFFF guibg=#292931 cterm=NONE
|
||||||
|
hi CursorLine guibg=#18171C gui=NONE cterm=NONE
|
||||||
|
|
||||||
|
hi WildMenu guifg=#FFFFFF
|
||||||
|
hi WarningMsg guifg=#EE6C4D
|
||||||
|
hi ErrorMsg guifg=#E84855 guibg=#232323
|
||||||
|
|
||||||
|
hi Comment guifg=#F9DC5C
|
||||||
|
|
||||||
|
hi StatusLine guifg=#FFFFFF guibg=#18171C gui=BOLD
|
||||||
|
hi StatusLineNC guifg=#FFFFFF guibg=#4F5258 gui=BOLD
|
||||||
|
|
||||||
|
hi VertSplit guifg=#18171C guibg=#18171C gui=NONE
|
||||||
|
|
||||||
|
hi Todo guifg=#E84855 guibg=NONE
|
||||||
|
hi cNote guifg=#35FF77 guibg=NONE
|
||||||
|
|
||||||
|
hi PreProc guifg=#EE6C4D
|
||||||
|
|
||||||
|
hi Statement guifg=#FFE74C gui=BOLD cterm=BOLD
|
||||||
|
hi Operator guifg=#FFE74C gui=BOLD cterm=BOLD
|
||||||
|
|
||||||
|
hi Type guifg=#96BBBB gui=NONE cterm=NONE
|
||||||
|
hi Typedef guifg=#8D99AF
|
||||||
|
hi StorageClass guifg=#8D99AF
|
||||||
|
|
||||||
|
hi Function guifg=#FF5866
|
||||||
|
hi Identifier guifg=#96BBBB
|
||||||
|
|
||||||
|
hi Constant guifg=#7BB1FD
|
||||||
|
hi Boolean guifg=#7BB1FD
|
||||||
|
hi String guifg=#3185FC
|
||||||
|
hi Character guifg=#3185FC
|
||||||
|
hi SpecialChar guifg=#EE6C4D
|
||||||
|
|
||||||
|
hi Search guifg=#232323 guibg=#FFC7A2
|
||||||
|
|
||||||
|
hi QuickFixLine guibg=#18171C gui=NONE cterm=NONE
|
||||||
|
|
||||||
|
hi DiagnosticLineError guibg=#660008
|
||||||
|
hi DiagnosticSignError guifg=#FFC0B9
|
||||||
|
hi DiagnosticVirtualTextError guifg=#FFC0B9
|
||||||
|
|
||||||
|
hi DiagnosticLineWarn guibg=#685C27
|
||||||
|
hi DiagnosticSignWarn guifg=#FCEEB0
|
||||||
|
hi DiagnosticVirtualTextWarn guifg=#FCEEB0
|
||||||
|
|
||||||
|
hi DiagnosticOk guifg=#35FF77
|
||||||
@@ -1,3 +1,21 @@
|
|||||||
|
local MAP = vim.keymap.set
|
||||||
|
local AUTOCMD = vim.api.nvim_create_autocmd
|
||||||
|
local NEWCMD = vim.api.nvim_create_user_command
|
||||||
|
|
||||||
|
vim.cmd("colorscheme scheme")
|
||||||
|
vim.cmd("filetype indent on")
|
||||||
|
|
||||||
|
-- Language people you have more important things to do than police the code style, if people
|
||||||
|
-- want consistent styling it should be done at a project level using a linter or .editorconfig
|
||||||
|
vim.g.rust_recommended_style = false
|
||||||
|
vim.g.python_recommended_style = false
|
||||||
|
vim.g.go_recommended_style = false
|
||||||
|
vim.g.zig_recommended_style = false
|
||||||
|
vim.g.markdown_recommended_style = false
|
||||||
|
vim.g.arduino_recommended_style = false
|
||||||
|
vim.g.gdscript_recommended_style = false
|
||||||
|
vim.g.yaml_recommended_style = false
|
||||||
|
|
||||||
-- Basic options
|
-- Basic options
|
||||||
vim.o.tabstop = 2
|
vim.o.tabstop = 2
|
||||||
vim.o.shiftwidth = 0
|
vim.o.shiftwidth = 0
|
||||||
@@ -38,4 +56,442 @@ vim.opt.formatoptions:append("/")
|
|||||||
vim.opt.cinkeys:append("0=break")
|
vim.opt.cinkeys:append("0=break")
|
||||||
vim.opt.listchars:append({ lead = "." })
|
vim.opt.listchars:append({ lead = "." })
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Functions
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- Building & Errors
|
||||||
|
|
||||||
|
-- Diagnostics configuration
|
||||||
|
vim.diagnostic.config({
|
||||||
|
signs = {
|
||||||
|
text = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = "",
|
||||||
|
[vim.diagnostic.severity.WARN] = ""
|
||||||
|
},
|
||||||
|
linehl = {
|
||||||
|
[vim.diagnostic.severity.ERROR] = "DiagnosticLineError",
|
||||||
|
[vim.diagnostic.severity.WARN] = "DiagnosticLineWarn"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
virtual_text = {
|
||||||
|
virt_text_pos = "eol_right_align",
|
||||||
|
prefix =
|
||||||
|
function(d, i, total)
|
||||||
|
return d.severity == vim.diagnostic.severity.ERROR and "!" or "#"
|
||||||
|
end
|
||||||
|
},
|
||||||
|
underline = false,
|
||||||
|
severity_sort = true
|
||||||
|
})
|
||||||
|
|
||||||
|
local _last_build = ""
|
||||||
|
local _quickfix = {}
|
||||||
|
local _namespace = vim.api.nvim_create_namespace("__qf.buffer.errors")
|
||||||
|
|
||||||
|
local function LoadDiagnostics(args)
|
||||||
|
local bufnr = args.buf
|
||||||
|
|
||||||
|
if _quickfix[bufnr] then
|
||||||
|
vim.diagnostic.set(_namespace, bufnr, _quickfix[bufnr])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function ExecuteBuild()
|
||||||
|
vim.cmd("silent make")
|
||||||
|
|
||||||
|
-- Reset currently displayed diagnostics
|
||||||
|
_quickfix = {}
|
||||||
|
vim.diagnostic.reset()
|
||||||
|
|
||||||
|
local entries = vim.fn.getqflist()
|
||||||
|
if #entries ~= 0 then
|
||||||
|
-- Group diagnostics by buffer number
|
||||||
|
local diagnostics = vim.diagnostic.fromqflist(entries)
|
||||||
|
for _, d in ipairs(diagnostics) do
|
||||||
|
if not _quickfix[d.bufnr] then
|
||||||
|
_quickfix[d.bufnr] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(_quickfix[d.bufnr], d)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Display the new diagnostics
|
||||||
|
for it, v in pairs(_quickfix) do
|
||||||
|
vim.diagnostic.set(_namespace, it, v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function PromptBuild()
|
||||||
|
vim.ui.input(
|
||||||
|
{
|
||||||
|
prompt = "Compile: ",
|
||||||
|
completion = "shellcmdline",
|
||||||
|
default = _last_build
|
||||||
|
},
|
||||||
|
function(input)
|
||||||
|
if input ~= nil then
|
||||||
|
local makeprg = vim.o.makeprg
|
||||||
|
vim.o.makeprg = input
|
||||||
|
|
||||||
|
ExecuteBuild()
|
||||||
|
|
||||||
|
_last_build = input
|
||||||
|
vim.o.makeprg = makeprg
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function FormatJumpList()
|
||||||
|
local qf = vim.fn.getqflist( { winid = true, qfbufnr = true })
|
||||||
|
local loc = vim.fn.getloclist(0, { winid = true, qfbufnr = true })
|
||||||
|
|
||||||
|
if qf.winid ~= 0 then
|
||||||
|
-- This means the quickfix list is open and needs formatting
|
||||||
|
local ns = vim.api.nvim_create_namespace("__qf.format")
|
||||||
|
local bufnr = qf.qfbufnr
|
||||||
|
local entries = vim.fn.getqflist()
|
||||||
|
local text = {}
|
||||||
|
local max = { 0, 0, 0 }
|
||||||
|
|
||||||
|
vim.api.nvim_buf_clear_namespace(bufnr, ns, 0, -1)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modifiable", true)
|
||||||
|
|
||||||
|
for _, it in ipairs(entries) do
|
||||||
|
max[1] = math.max(max[1], #tostring(it.lnum))
|
||||||
|
max[2] = math.max(max[2], #tostring(it.col))
|
||||||
|
max[3] = math.max(max[3], #vim.fn.bufname(it.bufnr))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- +2 for the extra colons we put between the filename, line number and column number
|
||||||
|
local extformat = string.format("[%%s] %%-%ds | %%s", max[1] + max[2] + max[3] + 2)
|
||||||
|
|
||||||
|
for _, it in ipairs(entries) do
|
||||||
|
local sign = it.type:lower() == "e" and "!" or "#"
|
||||||
|
local fname = string.format("%s:%d:%d" , vim.fn.bufname(it.bufnr), it.lnum, it.col)
|
||||||
|
|
||||||
|
table.insert(text, extformat:format(sign, fname, it.text))
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, text)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modifiable", false)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modified", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
if loc.winid ~= 0 then
|
||||||
|
-- This means the location list is open and needs formatting
|
||||||
|
local ns = vim.api.nvim_create_namespace("__loc.format")
|
||||||
|
local bufnr = loc.qfbufnr
|
||||||
|
local entries = vim.fn.getloclist(0)
|
||||||
|
local text = {}
|
||||||
|
local max = { 0, 0 }
|
||||||
|
|
||||||
|
vim.api.nvim_buf_clear_namespace(bufnr, ns, 0, -1)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modifiable", true)
|
||||||
|
|
||||||
|
for _, it in ipairs(entries) do
|
||||||
|
max[1] = math.max(max[1], #vim.fn.bufname(it.bufnr))
|
||||||
|
max[2] = math.max(max[2], #tostring(it.lnum))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- +1 for the extra colon we put between the filename and the line number
|
||||||
|
local extformat = string.format("[~] %%-%ds | %%s", max[1] + max[2] + 1)
|
||||||
|
|
||||||
|
for _, it in ipairs(entries) do
|
||||||
|
local fname = string.format("%s:%d", vim.fn.bufname(it.bufnr), it.lnum)
|
||||||
|
table.insert(text, extformat:format(fname, it.text))
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, 0, -1, true, text)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modifiable", false)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modified", false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Buffers
|
||||||
|
|
||||||
|
local function BufferComplete()
|
||||||
|
local pos = vim.api.nvim_win_get_cursor(0)
|
||||||
|
local line = vim.fn.getline('.')
|
||||||
|
local ident = line:sub(1, pos[2]):match("[^ \t]*$")
|
||||||
|
|
||||||
|
return #ident ~= 0 and "<C-P>" or "<Tab>"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function TrimBuffer()
|
||||||
|
local view = vim.fn.winsaveview()
|
||||||
|
vim.cmd("%s/\\s\\+$//e")
|
||||||
|
vim.fn.winrestview(view)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function MakeScratch()
|
||||||
|
local bufnr = vim.api.nvim_create_buf(true, true)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "buftype", "nofile")
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "bufhidden", "hide")
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "swapfile", false)
|
||||||
|
vim.api.nvim_buf_set_option(bufnr, "modified", false)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_name(bufnr, "scratch")
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_text(bufnr, 0, 0, 0, -1, { "-*- Scratch Buffer -*-" })
|
||||||
|
|
||||||
|
-- @Hack: There isn't really any way to get the fullscreen size, 150 greater than the
|
||||||
|
-- half-screen width on all of my devices as we don't want to split in that case
|
||||||
|
if vim.o.columns > 150 then
|
||||||
|
vim.cmd(string.format("vsplit #%d", bufnr))
|
||||||
|
vim.cmd("wincmd p")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function AlignEq()
|
||||||
|
if vim.fn.mode():lower() == "v" then
|
||||||
|
-- Feed an escape to leave visual mode, this updates the '< and '> marks
|
||||||
|
local keys = vim.api.nvim_replace_termcodes('<Esc>', true, false, true)
|
||||||
|
vim.api.nvim_feedkeys(keys, 'x', true)
|
||||||
|
end
|
||||||
|
|
||||||
|
local st = vim.fn.getpos("'<")[2] - 1
|
||||||
|
local ed = vim.fn.getpos("'>")[2]
|
||||||
|
|
||||||
|
local max = 0
|
||||||
|
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(0, st, ed, true)
|
||||||
|
local aligned = {}
|
||||||
|
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
local pos = line:find('=', 1, true)
|
||||||
|
if pos then
|
||||||
|
local trimmed = line:sub(1, pos - 1):gsub("%s+$", "")
|
||||||
|
max = math.max(#trimmed, max)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
local text = line
|
||||||
|
local pos = line:find('=', 1, true)
|
||||||
|
if pos then
|
||||||
|
local before = line:sub(1, pos - 1):gsub("%s+$", "")
|
||||||
|
local after = line:sub(pos + 1):gsub("^%s+", "")
|
||||||
|
|
||||||
|
text = before .. string.rep(" ", max - #before + 1) .. "= " .. after
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(aligned, text)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(0, st, ed, true, aligned)
|
||||||
|
end
|
||||||
|
|
||||||
|
local _comment_leaders = {
|
||||||
|
lua = '--',
|
||||||
|
vim = '"',
|
||||||
|
sh = "#",
|
||||||
|
python = "#",
|
||||||
|
conf = "#",
|
||||||
|
yaml = "#",
|
||||||
|
gdscript = "#",
|
||||||
|
make = "#"
|
||||||
|
}
|
||||||
|
|
||||||
|
local function BlockComment()
|
||||||
|
local leader = _comment_leaders[vim.o.filetype] or '//'
|
||||||
|
|
||||||
|
local st = vim.api.nvim_win_get_cursor(0)[1] - 1
|
||||||
|
local ed = st + 1
|
||||||
|
|
||||||
|
if vim.fn.mode():lower() == "v" then
|
||||||
|
-- Feed keys to leave visual mode, this updates the '< and '> marks
|
||||||
|
local keys = vim.api.nvim_replace_termcodes('<Esc>', true, false, true)
|
||||||
|
vim.api.nvim_feedkeys(keys, 'x', true)
|
||||||
|
|
||||||
|
st = vim.fn.getpos("'<")[2] - 1
|
||||||
|
ed = vim.fn.getpos("'>")[2]
|
||||||
|
end
|
||||||
|
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(0, st, ed, true)
|
||||||
|
local comment = false
|
||||||
|
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
local pos = line:find("%S")
|
||||||
|
if #line > 0 and line:byte(pos) ~= leader:byte(1) then
|
||||||
|
comment = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local adjusted = {}
|
||||||
|
|
||||||
|
for _, line in ipairs(lines) do
|
||||||
|
local text = ""
|
||||||
|
if #line > 0 then
|
||||||
|
if comment then
|
||||||
|
text = leader .. " " .. line
|
||||||
|
else
|
||||||
|
local s, e = line:find(leader, 1, true)
|
||||||
|
|
||||||
|
if line:byte(e + 1) == 0x20 then e = e + 1 end
|
||||||
|
text = line:sub(1, s - 1) .. line:sub(e + 1)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(adjusted, text)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(0, st, ed, true, adjusted)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Windowing
|
||||||
|
|
||||||
|
local _is_help = { help = true, man = true, qf = true }
|
||||||
|
|
||||||
|
function ManageSplit()
|
||||||
|
local windows = vim.api.nvim_tabpage_list_wins(0)
|
||||||
|
local bufnr = vim.api.nvim_win_get_buf(windows[#windows])
|
||||||
|
local filetype = vim.bo[bufnr].filetype
|
||||||
|
|
||||||
|
local target_count = _is_help[filetype] and 3 or 2
|
||||||
|
|
||||||
|
if #windows == target_count then
|
||||||
|
-- We already have the target number of windows open so we should close our split window,
|
||||||
|
-- always close 2 because that is the right-most split. The third window if it exists is
|
||||||
|
-- the bottom most window and is a "help" window
|
||||||
|
vim.api.nvim_win_close(windows[2], false)
|
||||||
|
else
|
||||||
|
-- We have less than the required windows open so split the first window, we open the
|
||||||
|
-- "scratch" buffer in this new window, if it is still open. Otherwise the same buffer in
|
||||||
|
-- the first window is opened.
|
||||||
|
local scratch = vim.fn.bufnr("scratch")
|
||||||
|
local first = vim.api.nvim_win_get_buf(windows[1])
|
||||||
|
|
||||||
|
bufnr = vim.api.nvim_buf_is_loaded(scratch) and scratch or first
|
||||||
|
vim.api.nvim_open_win(bufnr, true, { split = "right", win = windows[1] })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function ProjectSearch()
|
||||||
|
local input = vim.fn.input("Search: ")
|
||||||
|
|
||||||
|
if input and input ~= "" then
|
||||||
|
vim.cmd("silent lgrep! \"" .. input .. "\" **")
|
||||||
|
vim.cmd("lopen | lfirst | wincmd p")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function ExpandHelp(a)
|
||||||
|
local winid = vim.api.nvim_get_current_win()
|
||||||
|
local filetype = vim.bo[vim.api.nvim_win_get_buf(winid)].filetype
|
||||||
|
local height = a.event == "WinEnter" and math.floor(0.8 * vim.o.lines) or 5
|
||||||
|
|
||||||
|
if _is_help[filetype] then
|
||||||
|
vim.api.nvim_win_set_height(winid, height)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function LayoutHelp(a)
|
||||||
|
if _is_help[vim.bo.filetype] then
|
||||||
|
local winid = vim.api.nvim_get_current_win()
|
||||||
|
local windows = vim.api.nvim_tabpage_list_wins(0)
|
||||||
|
|
||||||
|
-- We need to close other "help" windows that may be open so search through the open
|
||||||
|
-- windows. There *should* only ever be 3 windows open if my window handling is working
|
||||||
|
-- correctly
|
||||||
|
for _, w in ipairs(windows) do
|
||||||
|
if w ~= winid then
|
||||||
|
local bufnr = vim.api.nvim_win_get_buf(w)
|
||||||
|
if _is_help[vim.bo[bufnr].filetype] then
|
||||||
|
vim.api.nvim_win_close(w, true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Force the new window to the bottom and expand it to be 80% of the height
|
||||||
|
vim.cmd("wincmd J")
|
||||||
|
vim.cmd(string.format("resize %d", math.floor(0.8 * vim.o.lines)))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Input mappings
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
|
||||||
|
MAP("n", "<A-j>", "mz:m+<CR>")
|
||||||
|
MAP("n", "<A-k>", "mz:m-2<CR>")
|
||||||
|
MAP("n", "<Esc>", ":nohl<CR>")
|
||||||
|
MAP("n", "<Leader>n", ":cnext<CR>")
|
||||||
|
MAP("n", "<Leader>N", ":cprev<CR>")
|
||||||
|
MAP("n", "J", "}")
|
||||||
|
MAP("v", "J", "}")
|
||||||
|
MAP("n", "K", "{")
|
||||||
|
MAP("v", "K", "{")
|
||||||
|
MAP("n", "<Leader>k", ":Man<CR>")
|
||||||
|
MAP("i", "<S-Tab>", "<C-o><<")
|
||||||
|
MAP("i", "<Tab>", BufferComplete, { expr = true })
|
||||||
|
MAP("n", "<Leader>s", ManageSplit)
|
||||||
|
MAP("n", "<Leader>f", ProjectSearch)
|
||||||
|
MAP("n", "<Leader>m", PromptBuild)
|
||||||
|
MAP("v", "<Leader>/", BlockComment)
|
||||||
|
MAP("n", "<Leader>/", BlockComment)
|
||||||
|
MAP("v", "<Leader>=", AlignEq)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Autocommands
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
AUTOCMD('BufEnter', { command = "let b:man_default_sects=\"2,3\"", pattern = "*.c" })
|
||||||
|
AUTOCMD('BufReadPost', { command = "setlocal nornu", pattern = "quickfix" })
|
||||||
|
|
||||||
|
AUTOCMD('BufReadPost', { callback = FormatJumpList, pattern = "quickfix" })
|
||||||
|
AUTOCMD('BufWritePre', { callback = TrimBuffer, pattern = "*" })
|
||||||
|
AUTOCMD('VimEnter', { callback = MakeScratch, pattern = "*" })
|
||||||
|
AUTOCMD('BufWinEnter', { callback = LayoutHelp, pattern = "*" })
|
||||||
|
AUTOCMD('WinEnter', { callback = ExpandHelp, pattern = "*" })
|
||||||
|
AUTOCMD('WinLeave', { callback = ExpandHelp, pattern = "*" })
|
||||||
|
AUTOCMD('BufRead', { callback = LoadDiagnostics, pattern = "*" })
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Custom commands
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local function Tabber(a)
|
||||||
|
local count = tonumber(a.fargs[1])
|
||||||
|
|
||||||
|
if count == nil then
|
||||||
|
vim.notify("[Error] :: Expected number", vim.log.levels.ERROR)
|
||||||
|
else
|
||||||
|
local opts = { ts = vim.o.tabstop, et = vim.o.expandtab }
|
||||||
|
|
||||||
|
vim.o.tabstop = count
|
||||||
|
|
||||||
|
if a.bang then
|
||||||
|
vim.o.expandtab = true
|
||||||
|
vim.cmd("silent retab")
|
||||||
|
else
|
||||||
|
local pos = {
|
||||||
|
view = vim.fn.winsaveview(),
|
||||||
|
vstart = vim.fn.getpos("'<"),
|
||||||
|
vend = vim.fn.getpos("'>")
|
||||||
|
}
|
||||||
|
|
||||||
|
-- gg=G doesn't work in some niche cases so we do a full buffer select, indent and then
|
||||||
|
-- unindent. With expandtab disabled converts leading spaces to tabs
|
||||||
|
vim.o.expandtab = false
|
||||||
|
vim.cmd("silent normal! ggVG>VG<")
|
||||||
|
|
||||||
|
vim.fn.winrestview(pos.view)
|
||||||
|
vim.fn.setpos("'<", pos.vstart)
|
||||||
|
vim.fn.setpos("'>", pos.vend)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.o.tabstop = opts.ts
|
||||||
|
vim.o.expandtab = opts.et
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
NEWCMD('Tabber', Tabber, { nargs = 1, bang = true })
|
||||||
|
|||||||
40
config/rofi/tokyo.rofi
Normal file
40
config/rofi/tokyo.rofi
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
configuration {
|
||||||
|
modi: "drun,window";
|
||||||
|
terminal: "footclient";
|
||||||
|
show-icons: true;
|
||||||
|
icon-theme: "Tela-circle";
|
||||||
|
fixed-num-lines: false;
|
||||||
|
location: 3;
|
||||||
|
drun-match-fields: "name,exec";
|
||||||
|
drun-display-format: "{name}";
|
||||||
|
display-drun: "Launch";
|
||||||
|
display-window: "Window";
|
||||||
|
threads: 2;
|
||||||
|
|
||||||
|
// Select items in the listview with 'Alt+n'
|
||||||
|
kb-select-1: "Alt+1";
|
||||||
|
kb-select-2: "Alt+2";
|
||||||
|
kb-select-3: "Alt+3";
|
||||||
|
kb-select-4: "Alt+4";
|
||||||
|
kb-select-5: "Alt+5";
|
||||||
|
kb-select-6: "Alt+6";
|
||||||
|
kb-select-7: "Alt+7";
|
||||||
|
kb-select-8: "Alt+8";
|
||||||
|
kb-select-9: "Alt+9";
|
||||||
|
kb-select-10: "Alt+0";
|
||||||
|
|
||||||
|
// We have to bind these otherwise rofi complains with an error saying 'Alt+n' is already
|
||||||
|
// bound, even though they are just using the defaults which I don't care about
|
||||||
|
kb-custom-1: "Super+1";
|
||||||
|
kb-custom-2: "Super+2";
|
||||||
|
kb-custom-3: "Super+3";
|
||||||
|
kb-custom-4: "Super+4";
|
||||||
|
kb-custom-5: "Super+5";
|
||||||
|
kb-custom-6: "Super+6";
|
||||||
|
kb-custom-7: "Super+7";
|
||||||
|
kb-custom-8: "Super+8";
|
||||||
|
kb-custom-9: "Super+9";
|
||||||
|
kb-custom-10: "Super+0";
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme "tokyo"
|
||||||
151
config/rofi/tokyo.theme
Normal file
151
config/rofi/tokyo.theme
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
* {
|
||||||
|
font: "Noto Sans CJK JP 11";
|
||||||
|
|
||||||
|
bg: #181818;
|
||||||
|
fg: #FFFFFF;
|
||||||
|
selected: #3185FC;
|
||||||
|
urgent: #0567F1;
|
||||||
|
active: #86B8FD;
|
||||||
|
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: @fg;
|
||||||
|
|
||||||
|
padding: 0px;
|
||||||
|
spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element {
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
border: 0;
|
||||||
|
padding: 1px;
|
||||||
|
spacing: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.normal {
|
||||||
|
background-color: @bg;
|
||||||
|
text-color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.urgent {
|
||||||
|
background-color: @urgent;
|
||||||
|
text-color: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
element normal.active {
|
||||||
|
background-color: @active;
|
||||||
|
text-color: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.normal {
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @bg;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.urgent {
|
||||||
|
background-color: @urgent;
|
||||||
|
text-color: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
element selected.active {
|
||||||
|
background-color: @active;
|
||||||
|
text-color: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-text {
|
||||||
|
background-color: transparent;
|
||||||
|
text-color: inherit;
|
||||||
|
cursor: inherit;
|
||||||
|
highlight: inherit;
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
element-icon {
|
||||||
|
background-color: rgba(0, 0, 0, 0%);
|
||||||
|
size: 1.0000em;
|
||||||
|
cursor: inherit;
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
window {
|
||||||
|
background-color: @bg;
|
||||||
|
border-color: @selected;
|
||||||
|
padding: 4px;
|
||||||
|
border: 1px 1px 1px 1px;
|
||||||
|
border-radius: 0px;
|
||||||
|
width: 30%;
|
||||||
|
x-offset: -5px;
|
||||||
|
y-offset: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
mainbox {
|
||||||
|
padding: 0px;
|
||||||
|
border: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
message {
|
||||||
|
padding: 1px;
|
||||||
|
border-color: @fg;
|
||||||
|
border: 2px dash 0px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox {
|
||||||
|
text-color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
listview {
|
||||||
|
scrollbar: false;
|
||||||
|
border-color: @fg;
|
||||||
|
spacing: 0px;
|
||||||
|
padding: 2px;
|
||||||
|
|
||||||
|
fixed-height: false;
|
||||||
|
lines: 10;
|
||||||
|
require-input: true;
|
||||||
|
border: 1px dash 0px 0px;
|
||||||
|
anchor: west;
|
||||||
|
position: north;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
cursor: pointer;
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
button selected {
|
||||||
|
background-color: @selected;
|
||||||
|
text-color: @bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
inputbar {
|
||||||
|
padding: 1px;
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @fg;
|
||||||
|
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
||||||
|
}
|
||||||
|
|
||||||
|
entry {
|
||||||
|
text-color: @fg;
|
||||||
|
cursor: text;
|
||||||
|
spacing: 0;
|
||||||
|
padding: 0px 0px 2px 0px;
|
||||||
|
placeholder-color: #C2C2C2;
|
||||||
|
placeholder: "Filter";
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt {
|
||||||
|
spacing: 0;
|
||||||
|
text-color: @fg;
|
||||||
|
}
|
||||||
|
|
||||||
|
textbox-prompt-colon {
|
||||||
|
margin: 0px 0.3000em 0.0000em 0.0000em;
|
||||||
|
expand: false;
|
||||||
|
str: ":";
|
||||||
|
text-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* vim:ft=css
|
||||||
33
config/starship.toml
Normal file
33
config/starship.toml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
add_newline = false
|
||||||
|
scan_timeout = 10
|
||||||
|
format = "\\[$username$hostname\\] :: $directory $cmd_duration$character"
|
||||||
|
|
||||||
|
[line_break]
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[hostname]
|
||||||
|
ssh_only = false
|
||||||
|
style = "bright-blue bold"
|
||||||
|
format = "[@$hostname]($style)"
|
||||||
|
|
||||||
|
[username]
|
||||||
|
show_always = true
|
||||||
|
style_user = "bright-blue bold"
|
||||||
|
style_root = "bright-red bold"
|
||||||
|
format="[$user]($style)"
|
||||||
|
|
||||||
|
[directory]
|
||||||
|
truncation_length = 3
|
||||||
|
truncate_to_repo = true
|
||||||
|
style = "blue"
|
||||||
|
read_only = "!"
|
||||||
|
read_only_style = "red"
|
||||||
|
format = "[$path]($style)[$read_only]($read_only_style)"
|
||||||
|
|
||||||
|
[cmd_duration]
|
||||||
|
style = "bold yellow"
|
||||||
|
format = "[+$duration]($style) "
|
||||||
|
|
||||||
|
[character]
|
||||||
|
success_symbol = "[>](cyan bold)"
|
||||||
|
error_symbol = "[>](red bold)"
|
||||||
141
config/sway/tokyo.sway
Normal file
141
config/sway/tokyo.sway
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
#
|
||||||
|
# Variables
|
||||||
|
#
|
||||||
|
|
||||||
|
set $LOCK 'swaylock'
|
||||||
|
|
||||||
|
set $MOD Mod4
|
||||||
|
|
||||||
|
set $WS0 0一
|
||||||
|
set $WS1 1二
|
||||||
|
set $WS2 2三
|
||||||
|
set $WS3 3四
|
||||||
|
set $WS4 4五
|
||||||
|
set $WS5 5六
|
||||||
|
set $WS6 6七
|
||||||
|
set $WS7 7八
|
||||||
|
set $WS8 8九
|
||||||
|
set $WS9 9十
|
||||||
|
|
||||||
|
set $DPY eDP-1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Input & keybinds
|
||||||
|
#
|
||||||
|
|
||||||
|
input "type:keyboard" {
|
||||||
|
xkb_layout gb
|
||||||
|
xkb_options caps:swapescape
|
||||||
|
}
|
||||||
|
|
||||||
|
floating_modifier $MOD normal
|
||||||
|
|
||||||
|
bindsym $MOD+return exec footclient
|
||||||
|
bindsym $MOD+shift+q kill
|
||||||
|
bindsym $MOD+d exec 'rofi -show drun'
|
||||||
|
bindsym $MOD+w exec 'rofi -show window'
|
||||||
|
|
||||||
|
bindsym $MOD+shift+r reload
|
||||||
|
bindsym $MOD+shift+e exec swaynag -t warning -m 'Quit sway?' -b 'Exit' 'swaymsg exit'
|
||||||
|
bindsym $MOD+shift+x exec $LOCK
|
||||||
|
|
||||||
|
bindsym $MOD+shift+space floating toggle
|
||||||
|
bindsym $MOD+f fullscreen
|
||||||
|
bindsym $MOD+s split toggle
|
||||||
|
|
||||||
|
bindsym $MOD+k focus up
|
||||||
|
bindsym $MOD+j focus down
|
||||||
|
bindsym $MOD+h focus left
|
||||||
|
bindsym $MOD+l focus right
|
||||||
|
|
||||||
|
bindsym $MOD+shift+k move up
|
||||||
|
bindsym $MOD+shift+j move down
|
||||||
|
bindsym $MOD+shift+h move left
|
||||||
|
bindsym $MOD+shift+l move right
|
||||||
|
|
||||||
|
bindsym $MOD+1 workspace $WS0
|
||||||
|
bindsym $MOD+2 workspace $WS1
|
||||||
|
bindsym $MOD+3 workspace $WS2
|
||||||
|
bindsym $MOD+4 workspace $WS3
|
||||||
|
bindsym $MOD+5 workspace $WS4
|
||||||
|
bindsym $MOD+6 workspace $WS5
|
||||||
|
bindsym $MOD+7 workspace $WS6
|
||||||
|
bindsym $MOD+8 workspace $WS7
|
||||||
|
bindsym $MOD+9 workspace $WS8
|
||||||
|
bindsym $MOD+0 workspace $WS9
|
||||||
|
|
||||||
|
bindsym $MOD+shift+1 move container to workspace $WS0
|
||||||
|
bindsym $MOD+shift+2 move container to workspace $WS1
|
||||||
|
bindsym $MOD+shift+3 move container to workspace $WS2
|
||||||
|
bindsym $MOD+shift+4 move container to workspace $WS3
|
||||||
|
bindsym $MOD+shift+5 move container to workspace $WS4
|
||||||
|
bindsym $MOD+shift+6 move container to workspace $WS5
|
||||||
|
bindsym $MOD+shift+7 move container to workspace $WS6
|
||||||
|
bindsym $MOD+shift+8 move container to workspace $WS7
|
||||||
|
bindsym $MOD+shift+9 move container to workspace $WS8
|
||||||
|
bindsym $MOD+shift+0 move container to workspace $WS9
|
||||||
|
|
||||||
|
#
|
||||||
|
# Visuals
|
||||||
|
#
|
||||||
|
|
||||||
|
output $DPY position 0 0 mode 1920x1080@60Hz
|
||||||
|
output * background "background" fill #232323
|
||||||
|
|
||||||
|
# Gaps and outline
|
||||||
|
#
|
||||||
|
gaps inner 5
|
||||||
|
default_border pixel 2
|
||||||
|
|
||||||
|
# Window colours
|
||||||
|
#
|
||||||
|
client.focused #3185FC #181818 #FFFFFF #3185FC #3185FC
|
||||||
|
client.focused_inactive #86B8FD #181818 #FFFFFF #86B8FD #86B8FD
|
||||||
|
client.unfocused #252525 #181818 #FFFFFF #252525 #252525
|
||||||
|
|
||||||
|
font pango:Noto Sans CJK JP 11
|
||||||
|
|
||||||
|
# swaybar
|
||||||
|
#
|
||||||
|
bar {
|
||||||
|
id 1
|
||||||
|
|
||||||
|
position top
|
||||||
|
gaps 5
|
||||||
|
workspace_min_width 25
|
||||||
|
strip_workspace_numbers yes
|
||||||
|
separator_symbol '|'
|
||||||
|
status_edge_padding 10
|
||||||
|
|
||||||
|
font pango:Noto Sans CJK JP 11
|
||||||
|
|
||||||
|
# @Todo: Make better or switch to waybar or something but I really can't be bothered using
|
||||||
|
# css to configure my desktop applications. I've already had to do it for rofi. They've
|
||||||
|
# already taken my icons from me
|
||||||
|
#
|
||||||
|
status_command while date +'時間:%a %d %b, %H:%M'; do sleep 10; done
|
||||||
|
|
||||||
|
colors {
|
||||||
|
background #181818
|
||||||
|
statusline #FFFFFF
|
||||||
|
separator #FFFFFF
|
||||||
|
active_workspace #86B8FD #86B8FD #181818
|
||||||
|
inactive_workspace #181818 #181818 #FFFFFF
|
||||||
|
focused_workspace #3185FC #3185FC #181818
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Startup applications
|
||||||
|
#
|
||||||
|
exec $LOCK
|
||||||
|
exec foot --server
|
||||||
|
|
||||||
|
exec swayidle -w \
|
||||||
|
timeout 300 'swaymsg "output * dpms off"' \
|
||||||
|
timeout 600 $LOCK \
|
||||||
|
resume 'swaymsg "output * dpms on"' \
|
||||||
|
before-sleep $LOCK
|
||||||
|
|
||||||
|
# Import any system level configuration changes
|
||||||
|
#
|
||||||
|
include /etc/sway/config.d/*
|
||||||
57
config/swaylock/config
Normal file
57
config/swaylock/config
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Background colour
|
||||||
|
#
|
||||||
|
color=00000
|
||||||
|
|
||||||
|
# Basic options
|
||||||
|
#
|
||||||
|
font=Noto Sans CJK JP
|
||||||
|
font-size=35
|
||||||
|
|
||||||
|
ignore-empty-password
|
||||||
|
daemonize
|
||||||
|
indicator-idle-visible
|
||||||
|
indicator-caps-lock
|
||||||
|
indicator-radius=120
|
||||||
|
indicator-thickness=10
|
||||||
|
|
||||||
|
# Segment colours
|
||||||
|
#
|
||||||
|
key-hl-color=FFFFFF
|
||||||
|
bs-hl-color=C2C2C2
|
||||||
|
|
||||||
|
caps-lock-key-hl-color=3185FC
|
||||||
|
caps-lock-bs-hl-color=86B8FD
|
||||||
|
|
||||||
|
separator-color=252525
|
||||||
|
|
||||||
|
line-uses-inside
|
||||||
|
|
||||||
|
# Normal
|
||||||
|
#
|
||||||
|
inside-color=252525
|
||||||
|
ring-color=676767
|
||||||
|
text-color=FFFFFF
|
||||||
|
|
||||||
|
# Cleared input
|
||||||
|
#
|
||||||
|
inside-clear-color=252525
|
||||||
|
ring-clear-color=FFFFFF
|
||||||
|
text-clear-color=FFFFFF
|
||||||
|
|
||||||
|
# Caps lock enabled
|
||||||
|
#
|
||||||
|
inside-caps-lock-color=252525
|
||||||
|
ring-caps-lock-color=FF99A1
|
||||||
|
text-caps-lock-color=FFFFFF
|
||||||
|
|
||||||
|
# Verifying password
|
||||||
|
#
|
||||||
|
inside-ver-color=252525
|
||||||
|
ring-ver-color=F6CD13
|
||||||
|
text-ver-color=FFFFFF
|
||||||
|
|
||||||
|
# Incorrect password
|
||||||
|
#
|
||||||
|
inside-wrong-color=252525
|
||||||
|
ring-wrong-color=F50014
|
||||||
|
text-wrong-color=FFFFFF
|
||||||
80
dots
Executable file
80
dots
Executable file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
pushd "$(dirname $0)" > /dev/null
|
||||||
|
|
||||||
|
Install() {
|
||||||
|
# Installs current dotfiles onto the system
|
||||||
|
#
|
||||||
|
echo "[Info] :: Installing dotfiles into $1"
|
||||||
|
|
||||||
|
[[ ! -d "$1" ]] && mkdir -p "$1"
|
||||||
|
|
||||||
|
cp "bashrc" "$1/.bashrc"
|
||||||
|
cp "bash_profile" "$1/.bash_profile"
|
||||||
|
cp "bash_aliases" "$1/.bash_aliases"
|
||||||
|
|
||||||
|
mkdir -p "$1/.config"
|
||||||
|
|
||||||
|
cp -r "config/nvim" "$1/.config"
|
||||||
|
cp "config/starship.toml" "$1/.config"
|
||||||
|
|
||||||
|
# Graphical setups
|
||||||
|
#
|
||||||
|
case $HOSTNAME in
|
||||||
|
kanto|tokyo)
|
||||||
|
mkdir -p "$1/.config/sway"
|
||||||
|
mkdir -p "$1/.config/swaylock"
|
||||||
|
mkdir -p "$1/.config/rofi"
|
||||||
|
mkdir -p "$1/.config/foot"
|
||||||
|
|
||||||
|
cp "config/sway/$HOSTNAME.sway" "$1/.config/sway/config"
|
||||||
|
cp "config/swaylock/config" "$1/.config/swaylock"
|
||||||
|
cp "config/rofi/$HOSTNAME.rofi" "$1/.config/rofi/config.rasi"
|
||||||
|
cp "config/rofi/$HOSTNAME.theme" "$1/.config/rofi/$HOSTNAME.rasi"
|
||||||
|
cp "config/foot/foot.ini" "$1/.config/foot/foot.ini"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
Pull() {
|
||||||
|
# Allows system changes to be pulled into the repository to be committed
|
||||||
|
#
|
||||||
|
echo "[Info] :: Pulling dotfile changes from $1"
|
||||||
|
|
||||||
|
cp "$1/.bashrc" "bashrc"
|
||||||
|
cp "$1/.bash_profile" "bash_profile"
|
||||||
|
cp "$1/.bash_aliases" "bash_aliases"
|
||||||
|
|
||||||
|
cp -r "$1/.config/nvim" "config/"
|
||||||
|
cp "$1/.config/starship.toml" "config/starship.toml"
|
||||||
|
|
||||||
|
case $HOSTNAME in
|
||||||
|
kanto|tokyo)
|
||||||
|
cp "$1/.config/sway/config" "config/sway/$HOSTNAME.sway"
|
||||||
|
cp "$1/.config/rofi/config.rasi" "config/rofi/$HOSTNAME.rofi"
|
||||||
|
cp "$1/.config/rofi/$HOSTNAME.rasi" "config/rofi/$HOSTNAME.theme"
|
||||||
|
cp "$1/.config/swaylock/config" "config/swaylock"
|
||||||
|
cp "$1/.config/foot/foot.ini" "config/foot/foot.ini"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTALL_DIR=${2:-$HOME}
|
||||||
|
ACTION=$1
|
||||||
|
|
||||||
|
[[ -z $INSTALL_DIR ]] && echo "[Error] :: Installation directory not set" && exit 1
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
install)
|
||||||
|
Install $INSTALL_DIR
|
||||||
|
;;
|
||||||
|
pull)
|
||||||
|
Pull $INSTALL_DIR
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "usage: $0 <install|pull|diff> [dir]"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
popd > /dev/null
|
||||||
24
install
24
install
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
Pull() {
|
|
||||||
# Allows system changes to be pulled into the repository to be committed
|
|
||||||
#
|
|
||||||
echo "[Info] :: Pulling dotfile changes from $1"
|
|
||||||
|
|
||||||
cp -r "$1/.config/nvim" "config/"
|
|
||||||
}
|
|
||||||
|
|
||||||
INSTALL_DIR=${2:-$HOME}
|
|
||||||
ACTION=${1:-push}
|
|
||||||
|
|
||||||
[[ -z $INSTALL_DIR ]] && echo "[Error] :: Installation directory not set" && exit 1
|
|
||||||
|
|
||||||
case $ACTION in
|
|
||||||
pull)
|
|
||||||
Pull $INSTALL_DIR
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "usage: $0 <push|pull|diff> [dir]"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
Reference in New Issue
Block a user