refactor *
This commit is contained in:
parent
0d4b6f0107
commit
e97bfa4226
12 changed files with 223 additions and 957 deletions
|
@ -1,669 +0,0 @@
|
||||||
" stolen and modified from https://github.com/doums/darcula
|
|
||||||
|
|
||||||
" This Source Code Form is subject to the terms of the Mozilla Public
|
|
||||||
" License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
||||||
" file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
||||||
|
|
||||||
if exists("g:darcula")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
let g:darcula = 1
|
|
||||||
highlight clear
|
|
||||||
if exists("syntax_on")
|
|
||||||
syntax reset
|
|
||||||
endif
|
|
||||||
|
|
||||||
let g:colors_name='darcula'
|
|
||||||
|
|
||||||
let s:p={
|
|
||||||
\ 'null': ['NONE', 'NONE'],
|
|
||||||
\ 'bg': ['#2B2B2B', 235],
|
|
||||||
\ 'fg': ['#A9B7C6', 145],
|
|
||||||
\ 'cursor': ['#BBBBBB', 250],
|
|
||||||
\ 'identifierUnderCaret': ['#344134', 237],
|
|
||||||
\ 'identifierUnderCaretWrite': ['#40332B', 58],
|
|
||||||
\ 'gutter': ['#313335', 236],
|
|
||||||
\ 'selection': ['#214283', 24],
|
|
||||||
\ 'cursorLine': ['#323232', 236],
|
|
||||||
\ 'cursorLineNr': ['#A4A3A3', 248],
|
|
||||||
\ 'errorMsg': ['#CC666E', 174],
|
|
||||||
\ 'error': ['#BC3F3C', 131],
|
|
||||||
\ 'warning': ['#A9B7C6', 145],
|
|
||||||
\ 'muted': ['#606060', 241],
|
|
||||||
\ 'link': ['#287BDE', 32],
|
|
||||||
\ 'stdOutput': ['#BBBBBB', 250],
|
|
||||||
\ 'lineNumber': ['#606366', 241],
|
|
||||||
\ 'matchBraceFg': ['#FFEF28', 220],
|
|
||||||
\ 'matchBraceBg': ['#3B514D', 59],
|
|
||||||
\ 'todo': ['#A8C023', 142],
|
|
||||||
\ 'search': ['#32593D', 23],
|
|
||||||
\ 'incSearch': ['#155221', 22],
|
|
||||||
\ 'foldedFg': ['#8C8C8C', 245],
|
|
||||||
\ 'foldedBg': ['#3A3A3A', 237],
|
|
||||||
\ 'constant': ['#9876AA', 103],
|
|
||||||
\ 'keyword': ['#CC7832', 172],
|
|
||||||
\ 'comment': ['#808080', 244],
|
|
||||||
\ 'docComment': ['#629755', 65],
|
|
||||||
\ 'string': ['#6A8759', 101],
|
|
||||||
\ 'number': ['#6897BB', 103],
|
|
||||||
\ 'delimiter': ['#CC7832', 172],
|
|
||||||
\ 'specialComment': ['#8A653B', 95],
|
|
||||||
\ 'function': ['#FFC66D', 216],
|
|
||||||
\ 'diffAdd': ['#294436', 23],
|
|
||||||
\ 'diffText': ['#385570', 60],
|
|
||||||
\ 'diffDelete': ['#484A4A', 239],
|
|
||||||
\ 'diffChange': ['#303C47', 23],
|
|
||||||
\ 'addStripe': ['#384C38', 66],
|
|
||||||
\ 'stripeWhiteSpace': ['#4C4638', 59],
|
|
||||||
\ 'changeStripe': ['#374752', 60],
|
|
||||||
\ 'deleteStripe': ['#656E76', 242],
|
|
||||||
\ 'typo': ['#659C6B', 72],
|
|
||||||
\ 'metaData': ['#BBB529', 142],
|
|
||||||
\ 'macroName': ['#908B25', 100],
|
|
||||||
\ 'cDataStructure': ['#B5B6E3', 146],
|
|
||||||
\ 'cStructField': ['#9373A5', 103],
|
|
||||||
\ 'debug': ['#666D75', 102],
|
|
||||||
\ 'codeError': ['#532B2E', 52],
|
|
||||||
\ 'codeWarning': ['#52503A', 59],
|
|
||||||
\ 'errorStripe': ['#9E2927', 124],
|
|
||||||
\ 'warnStripe': ['#BE9117', 136],
|
|
||||||
\ 'infoStripe': ['#756D56', 101],
|
|
||||||
\ 'hintStripe': ['#6c7176', 242],
|
|
||||||
\ 'typeDef': ['#B9BCD1', 146],
|
|
||||||
\ 'menu': ['#46484A', 238],
|
|
||||||
\ 'menuFg': ['#BBBBBB', 250],
|
|
||||||
\ 'menuSel': ['#113A5C', 23],
|
|
||||||
\ 'menuSBar': ['#616263', 241],
|
|
||||||
\ 'tag': ['#E8BF6A', 180],
|
|
||||||
\ 'entity': ['#6D9CBE', 109],
|
|
||||||
\ 'htmlAttribute': ['#BABABA', 250],
|
|
||||||
\ 'htmlString': ['#A5C261', 143],
|
|
||||||
\ 'tsObject': ['#507874', 66],
|
|
||||||
\ 'statusLine': ['#3C3F41', 237],
|
|
||||||
\ 'statusLineFg': ['#BBBBBB', 250],
|
|
||||||
\ 'statusLineNC': ['#787878', 243],
|
|
||||||
\ 'tabLineSel': ['#4E5254', 239],
|
|
||||||
\ 'shCommand': ['#C57633', 137],
|
|
||||||
\ 'templateLanguage': ['#232525', 235],
|
|
||||||
\ 'rustMacro': ['#4EADE5', 74],
|
|
||||||
\ 'rustLifetime': ['#20999D', 37],
|
|
||||||
\ 'duplicateFromServer': ['#5E5339', 59],
|
|
||||||
\ 'hintBg': ['#3B3B3B', 237],
|
|
||||||
\ 'hintFg': ['#787878', 243],
|
|
||||||
\ 'wrapGuide': ['#2F2F2F', 236],
|
|
||||||
\ 'UIBorder': ['#616161', 241],
|
|
||||||
\ 'UISelection': ['#0D293E', 17],
|
|
||||||
\ 'ANSIBlack': ['#FFFFFF', 231],
|
|
||||||
\ 'ANSIRed': ['#FF6B68', 210],
|
|
||||||
\ 'ANSIGreen': ['#A8C023', 142],
|
|
||||||
\ 'ANSIYellow': ['#D6BF55', 179],
|
|
||||||
\ 'ANSIBlue': ['#5394EC', 68],
|
|
||||||
\ 'ANSIMagenta': ['#AE8ABE', 139],
|
|
||||||
\ 'ANSICyan': ['#299999', 37],
|
|
||||||
\ 'ANSIGray': ['#999999', 247],
|
|
||||||
\ 'ANSIDarkGray': ['#555555', 240],
|
|
||||||
\ 'ANSIBrightRed': ['#FF8785', 210],
|
|
||||||
\ 'ANSIBrightGreen': ['#A8C023', 142],
|
|
||||||
\ 'ANSIBrightYellow': ['#FFFF00', 226],
|
|
||||||
\ 'ANSIBrightBlue': ['#7EAEF1', 110],
|
|
||||||
\ 'ANSIBrightMagenta': ['#FF99FF', 219],
|
|
||||||
\ 'ANSIBrightCyan': ['#6CDADA', 116],
|
|
||||||
\ 'ANSIWhite': ['#1F1F1F', 234],
|
|
||||||
\ 'UIBlue': ['#3592C4', 67],
|
|
||||||
\ 'UIGreen': ['#499C54', 71],
|
|
||||||
\ 'UIRed': ['#C75450', 131],
|
|
||||||
\ 'UIBrown': ['#93896C', 102],
|
|
||||||
\ 'otherBuiltin': ['#8888C6', 147]
|
|
||||||
\ }
|
|
||||||
|
|
||||||
" expose the palette
|
|
||||||
let darcula#palette=s:p
|
|
||||||
|
|
||||||
" helper function
|
|
||||||
function s:Hi(group, fg, ...)
|
|
||||||
" arguments: group, fg, bg, style
|
|
||||||
if a:0 >= 1
|
|
||||||
let bg=a:1
|
|
||||||
else
|
|
||||||
let bg=s:p.null
|
|
||||||
endif
|
|
||||||
if a:0 >= 2 && strlen(a:2)
|
|
||||||
let style=a:2
|
|
||||||
else
|
|
||||||
let style='NONE'
|
|
||||||
endif
|
|
||||||
let hiList = [
|
|
||||||
\ 'hi', a:group,
|
|
||||||
\ 'ctermfg=' . a:fg[1],
|
|
||||||
\ 'guifg=' . a:fg[0],
|
|
||||||
\ 'ctermbg=' . bg[1],
|
|
||||||
\ 'guibg=' . bg[0],
|
|
||||||
\ 'cterm=' . style,
|
|
||||||
\ 'gui=' . style
|
|
||||||
\ ]
|
|
||||||
execute join(hiList)
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" expose that function
|
|
||||||
function darcula#Hi(group, fg, ...)
|
|
||||||
if a:0 >= 2
|
|
||||||
call s:Hi(a:group, a:fg, a:1, a:2)
|
|
||||||
elseif a:0 == 1
|
|
||||||
call s:Hi(a:group, a:fg, a:1)
|
|
||||||
else
|
|
||||||
call s:Hi(a:group, a:fg)
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call s:Hi('Normal', s:p.fg, s:p.bg)
|
|
||||||
call s:Hi('ColorColumn', s:p.null, s:p.wrapGuide)
|
|
||||||
call s:Hi('Conceal', s:p.muted, s:p.bg)
|
|
||||||
call s:Hi('Cursor', s:p.cursor)
|
|
||||||
hi! link lCursor Cursor
|
|
||||||
hi! link CursorIM Cursor
|
|
||||||
hi! link CursorColumn CursorLine
|
|
||||||
call s:Hi('CursorLine', s:p.null, s:p.cursorLine, 'NONE')
|
|
||||||
call s:Hi('DiffAdd', s:p.null, s:p.diffAdd)
|
|
||||||
call s:Hi('DiffChange', s:p.null, s:p.diffChange)
|
|
||||||
call s:Hi('DiffDelete', s:p.null, s:p.diffDelete)
|
|
||||||
call s:Hi('DiffText', s:p.null, s:p.diffText)
|
|
||||||
hi! link Directory NormalFg
|
|
||||||
hi! link EndOfBuffer NonText
|
|
||||||
call s:Hi('ErrorMsg', s:p.errorMsg)
|
|
||||||
call s:Hi('Error', s:p.error)
|
|
||||||
call s:Hi('VertSplit', s:p.muted)
|
|
||||||
call s:Hi('Folded', s:p.foldedFg, s:p.foldedBg)
|
|
||||||
hi! link FoldColumn Folded
|
|
||||||
call s:Hi('SignColumn', s:p.null, s:p.gutter)
|
|
||||||
call s:Hi('LineNr', s:p.lineNumber, s:p.gutter)
|
|
||||||
hi! link LineNrAbove LineNr
|
|
||||||
hi! link LineNrBelow LineNr
|
|
||||||
call s:Hi('CursorLineNr', s:p.cursorLineNr, s:p.cursorLine)
|
|
||||||
call s:Hi('MatchParen', s:p.matchBraceFg, s:p.matchBraceBg, 'bold')
|
|
||||||
call s:Hi('ModeMsg', s:p.stdOutput)
|
|
||||||
hi! link MoreMsg NormalFg
|
|
||||||
call s:Hi('NonText', s:p.muted)
|
|
||||||
call s:Hi('Pmenu', s:p.menuFg, s:p.menu)
|
|
||||||
call s:Hi('PmenuSel', s:p.menuFg, s:p.menuSel)
|
|
||||||
call s:Hi('PmenuSbar', s:p.menu, s:p.menu)
|
|
||||||
call s:Hi('PmenuThumb', s:p.menuSBar, s:p.menuSBar)
|
|
||||||
hi! link Question NormalFg
|
|
||||||
hi! link QuickFixLine NormalFg
|
|
||||||
call s:Hi('Search', s:p.null, s:p.search)
|
|
||||||
call s:Hi('IncSearch', s:p.null, s:p.incSearch)
|
|
||||||
hi! link SpecialKey NonText
|
|
||||||
call s:Hi('SpellBad', s:p.typo, s:p.null, 'underline')
|
|
||||||
hi! link SpellCap SpellBad
|
|
||||||
hi! link SpellLocal SpellBad
|
|
||||||
hi! link SpellRare SpellBad
|
|
||||||
call s:Hi('StatusLine', s:p.statusLineFg, s:p.statusLine)
|
|
||||||
call s:Hi('StatusLineNC', s:p.statusLineNC, s:p.statusLine)
|
|
||||||
hi! link StatusLineTerm StatusLine
|
|
||||||
hi! link StatusLineTermNC StatusLineNC
|
|
||||||
call s:Hi('TabLine', s:p.statusLineFg, s:p.statusLine)
|
|
||||||
call s:Hi('TabLineFill', s:p.statusLine, s:p.statusLine)
|
|
||||||
call s:Hi('TabLineSel', s:p.fg, s:p.tabLineSel)
|
|
||||||
call s:Hi('Terminal', s:p.stdOutput, s:p.bg)
|
|
||||||
hi! link Title Special
|
|
||||||
call s:Hi('Visual', s:p.null, s:p.selection)
|
|
||||||
hi! link VisualNOS Visual
|
|
||||||
call s:Hi('WarningMsg', s:p.warning)
|
|
||||||
hi! link WildMenu PmenuSel
|
|
||||||
call s:Hi('Comment', s:p.comment)
|
|
||||||
hi! link Identifier NormalFg
|
|
||||||
hi! link Type Keyword
|
|
||||||
call s:Hi('Typedef', s:p.typeDef)
|
|
||||||
call s:Hi('Todo', s:p.todo, s:p.null, 'italic')
|
|
||||||
hi! link Special PreProc
|
|
||||||
call s:Hi('Constant', s:p.constant, s:p.null, 'italic')
|
|
||||||
call s:Hi('String', s:p.string)
|
|
||||||
hi! link Character String
|
|
||||||
call s:Hi('Number', s:p.number)
|
|
||||||
call s:Hi('Delimiter', s:p.delimiter)
|
|
||||||
call s:Hi('SpecialComment', s:p.specialComment, s:p.null, 'italic')
|
|
||||||
hi! link Statement Keyword
|
|
||||||
call s:Hi('Keyword', s:p.keyword)
|
|
||||||
call s:Hi('Underlined', s:p.fg, s:p.null, 'underline')
|
|
||||||
call s:Hi('PreProc', s:p.metaData)
|
|
||||||
hi! link Tag Keyword
|
|
||||||
call s:Hi('Debug', s:p.debug, s:p.null, 'italic')
|
|
||||||
call s:Hi('Function', s:p.function)
|
|
||||||
call s:Hi('OtherBuiltin', s:p.otherBuiltin)
|
|
||||||
|
|
||||||
" fixes
|
|
||||||
hi! link Integer Number
|
|
||||||
hi! link Macro cMacroName
|
|
||||||
hi! link Include PreProc
|
|
||||||
hi! link Operator Keyword
|
|
||||||
hi! link SpecialChar PreProc
|
|
||||||
hi! link GitGutterAdd GitAddStripe
|
|
||||||
hi! link GitGutterChange GitChangeStripe
|
|
||||||
hi! link GitGutterDelete GitDeleteStripe
|
|
||||||
hi! link StorageClass Keyword
|
|
||||||
hi! link Structure Keyword
|
|
||||||
hi! link Conditional Keyword
|
|
||||||
hi! link Repeat Keyword
|
|
||||||
hi! link cDefine PreProc
|
|
||||||
|
|
||||||
" nix
|
|
||||||
hi! link nixBoolean Keyword
|
|
||||||
hi! link nixInterpolationParam InstanceField
|
|
||||||
hi! link nixInterpolationDelimiter InstanceField
|
|
||||||
hi! link nixStringDelimiter String
|
|
||||||
hi! link nixPath Constant
|
|
||||||
hi! link nixSearchPath nixPath
|
|
||||||
hi! link nixURI nixPath
|
|
||||||
hi! link nixPathDelimiter nixPath
|
|
||||||
hi! link nixSearchPathRef nixPath
|
|
||||||
hi! link nixHomePath nixPath
|
|
||||||
hi! link nixAttributeDot Identifier
|
|
||||||
hi! link nixSimpleFunctionArgument Function
|
|
||||||
hi! link nixArgumentDefinition Function
|
|
||||||
hi! link nixNamespacedBuiltin OtherBuiltin
|
|
||||||
hi! link nixSimpleBuiltin OtherBuiltin
|
|
||||||
hi! link nixBuiltin OtherBuiltin
|
|
||||||
hi! link nixStringSpecial Keyword
|
|
||||||
hi! link nixArgumentSeparator Operator
|
|
||||||
|
|
||||||
" helper groups
|
|
||||||
call s:Hi('docComment', s:p.docComment, s:p.null, 'italic')
|
|
||||||
call s:Hi('NormalFg', s:p.fg)
|
|
||||||
call s:Hi('GitAddStripe', s:p.addStripe, s:p.addStripe)
|
|
||||||
call s:Hi('GitChangeStripe', s:p.changeStripe, s:p.changeStripe)
|
|
||||||
call s:Hi('GitDeleteStripe', s:p.deleteStripe, s:p.gutter)
|
|
||||||
call s:Hi('CodeError', s:p.null, s:p.codeError)
|
|
||||||
call s:Hi('CodeWarning', s:p.null, s:p.codeWarning)
|
|
||||||
call s:Hi('CodeInfo', s:p.null, s:p.infoStripe)
|
|
||||||
call s:Hi('CodeHint', s:p.hintFg, s:p.hintBg)
|
|
||||||
call s:Hi('ErrorSign', s:p.errorStripe, s:p.gutter)
|
|
||||||
call s:Hi('WarningSign', s:p.warnStripe, s:p.gutter)
|
|
||||||
call s:Hi('InfoSign', s:p.infoStripe, s:p.gutter)
|
|
||||||
call s:Hi('HintSign', s:p.hintStripe, s:p.gutter)
|
|
||||||
call s:Hi('IdentifierUnderCaret', s:p.null, s:p.identifierUnderCaret)
|
|
||||||
call s:Hi('IdentifierUnderCaretWrite', s:p.null, s:p.identifierUnderCaretWrite)
|
|
||||||
call s:Hi('InstanceField', s:p.constant)
|
|
||||||
call s:Hi('UIDialog', s:p.fg, s:p.statusLine)
|
|
||||||
call s:Hi('UIBorder', s:p.UIBorder, s:p.statusLine)
|
|
||||||
call s:Hi('UISelection', s:p.null, s:p.UISelection)
|
|
||||||
|
|
||||||
" neovim
|
|
||||||
if has('nvim')
|
|
||||||
" the following code snippet fix an issue with CursorLine hi group
|
|
||||||
" see https://github.com/neovim/neovim/issues/9019
|
|
||||||
if has('termguicolors') && &termguicolors
|
|
||||||
hi CursorLine ctermfg=white
|
|
||||||
else
|
|
||||||
hi CursorLine guifg=white
|
|
||||||
endif
|
|
||||||
hi! link NormalFloat Pmenu
|
|
||||||
hi! link NormalNC NormalFg
|
|
||||||
hi! link MsgArea NormalFg
|
|
||||||
hi! link MsgSeparator StatusLine
|
|
||||||
hi! link QuickFixLine NormalFg
|
|
||||||
hi! link Substitute Search
|
|
||||||
" TermCursor
|
|
||||||
" TermCursorNC
|
|
||||||
hi! link Whitespace NonText
|
|
||||||
hi! link healthSuccess IncSearch
|
|
||||||
call s:Hi('NvimInternalError', s:p.error, s:p.error)
|
|
||||||
call s:Hi('RedrawDebugClear', s:p.fg, s:p.duplicateFromServer)
|
|
||||||
call s:Hi('RedrawDebugComposed', s:p.fg, s:p.search)
|
|
||||||
call s:Hi('RedrawDebugRecompose', s:p.fg, s:p.codeError)
|
|
||||||
" Terminal colors
|
|
||||||
let g:terminal_color_0 = s:p.ANSIBlack[0]
|
|
||||||
let g:terminal_color_1 = s:p.ANSIRed[0]
|
|
||||||
let g:terminal_color_2 = s:p.ANSIGreen[0]
|
|
||||||
let g:terminal_color_3 = s:p.ANSIYellow[0]
|
|
||||||
let g:terminal_color_4 = s:p.ANSIBlue[0]
|
|
||||||
let g:terminal_color_5 = s:p.ANSIMagenta[0]
|
|
||||||
let g:terminal_color_6 = s:p.ANSICyan[0]
|
|
||||||
let g:terminal_color_7 = s:p.ANSIGray[0]
|
|
||||||
let g:terminal_color_8 = s:p.ANSIDarkGray[0]
|
|
||||||
let g:terminal_color_9 = s:p.ANSIBrightRed[0]
|
|
||||||
let g:terminal_color_10 = s:p.ANSIBrightGreen[0]
|
|
||||||
let g:terminal_color_11 = s:p.ANSIBrightYellow[0]
|
|
||||||
let g:terminal_color_12 = s:p.ANSIBrightBlue[0]
|
|
||||||
let g:terminal_color_13 = s:p.ANSIBrightMagenta[0]
|
|
||||||
let g:terminal_color_14 = s:p.ANSIBrightCyan[0]
|
|
||||||
let g:terminal_color_15 = s:p.ANSIWhite[0]
|
|
||||||
|
|
||||||
" nvim-treesitter
|
|
||||||
hi! link TSAnnotation PreProc
|
|
||||||
hi! link TSAttribute PreProc
|
|
||||||
hi! link TSBoolean Keyword
|
|
||||||
hi! link TSCharacter Character
|
|
||||||
hi! link TSComment Comment
|
|
||||||
hi! link TSConstructor Function
|
|
||||||
hi! link TSConditional Keyword
|
|
||||||
hi! link TSConstant Constant
|
|
||||||
hi! link TSConstBuiltin Keyword
|
|
||||||
hi! link TSConstMacro cMacroName
|
|
||||||
hi! link TSError codeError
|
|
||||||
hi! link TSException Keyword
|
|
||||||
hi! link TSField InstanceField
|
|
||||||
hi! link TSFloat Number
|
|
||||||
hi! link TSFunction Function
|
|
||||||
hi! link TSFuncBuiltin Normal
|
|
||||||
hi! link TSFuncMacro cMacroName
|
|
||||||
hi! link TSInclude Keyword
|
|
||||||
hi! link TSKeyword Keyword
|
|
||||||
hi! link TSKeywordFunction Keyword
|
|
||||||
hi! link TSLabel Normal
|
|
||||||
hi! link TSMethod Function
|
|
||||||
hi! link TSNamespace cDataStructure
|
|
||||||
hi! link TSNone Normal
|
|
||||||
hi! link TSNumber Number
|
|
||||||
hi! link TSOperator Normal
|
|
||||||
hi! link TSParameter Normal
|
|
||||||
hi! link TSParameterReference Normal
|
|
||||||
hi! link TSProperty TSField
|
|
||||||
hi! link TSPunctDelimiter Normal
|
|
||||||
hi! link TSPunctBracket Normal
|
|
||||||
hi! link TSPunctSpecial Keyword
|
|
||||||
hi! link TSRepeat Keyword
|
|
||||||
hi! link TSString String
|
|
||||||
hi! link TSStringRegex Number
|
|
||||||
hi! link TSStringEscape Keyword
|
|
||||||
hi! link TSTag htmlTag
|
|
||||||
hi! link TSTagDelimiter htmlTag
|
|
||||||
hi! link TSText Normal
|
|
||||||
call s:Hi('TSStrong', s:p.fg, s:p.null, 'bold')
|
|
||||||
call s:Hi('TSEmphasis', s:p.fg, s:p.null, 'italic')
|
|
||||||
call s:Hi('TSUnderline', s:p.fg, s:p.null, 'underline')
|
|
||||||
call s:Hi('TSStrike', s:p.fg, s:p.null, 'strikethrough')
|
|
||||||
call s:Hi('TSTitle', s:p.fg, s:p.null, 'bold,underline')
|
|
||||||
hi! link TSLiteral Normal
|
|
||||||
hi! link TSURI markdownLinkText
|
|
||||||
hi! link TSNote CodeInfo
|
|
||||||
hi! link TSWarning CodeWarning
|
|
||||||
hi! link TSDanger CodeError
|
|
||||||
hi! link TSType Normal
|
|
||||||
hi! link TSTypeBuiltin Keyword
|
|
||||||
hi! link TSVariable Normal
|
|
||||||
hi! link TSVariableBuiltin Keyword
|
|
||||||
|
|
||||||
" LSP
|
|
||||||
hi! link LspDiagnosticsDefaultError CodeError
|
|
||||||
hi! link LspDiagnosticsDefaultWarning CodeWarning
|
|
||||||
hi! link LspDiagnosticsDefaultInformation CodeInfo
|
|
||||||
hi! link LspDiagnosticsDefaultHint CodeHint
|
|
||||||
hi! link LspDiagnosticsSignError ErrorSign
|
|
||||||
hi! link LspDiagnosticsSignWarning WarningSign
|
|
||||||
hi! link LspDiagnosticsSignInformation InfoSign
|
|
||||||
hi! link LspDiagnosticsSignHint HintSign
|
|
||||||
hi! link LspReferenceText IdentifierUnderCaret
|
|
||||||
hi! link LspReferenceRead IdentifierUnderCaret
|
|
||||||
hi! link LspReferenceWrite IdentifierUnderCaretWrite
|
|
||||||
hi! link LspDiagnosticsUnderlineError CodeError
|
|
||||||
hi! link LspDiagnosticsUnderlineWarning CodeWarning
|
|
||||||
hi! link LspDiagnosticsUnderlineInformation CodeInfo
|
|
||||||
hi! link LspDiagnosticsUnderlineHint CodeHint
|
|
||||||
hi! link LspDiagnosticsFloatingError NormalFloat
|
|
||||||
hi! link LspDiagnosticsFloatingWarning NormalFloat
|
|
||||||
hi! link LspDiagnosticsFloatingInformation NormalFloat
|
|
||||||
hi! link LspDiagnosticsFloatingHint NormalFloat
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Vim terminal colors (for :terminal)
|
|
||||||
if !has('nvim')
|
|
||||||
let g:terminal_ansi_colors=[
|
|
||||||
\ s:p.ANSIBlack[0],
|
|
||||||
\ s:p.ANSIRed[0],
|
|
||||||
\ s:p.ANSIGreen[0],
|
|
||||||
\ s:p.ANSIYellow[0],
|
|
||||||
\ s:p.ANSIBlue[0],
|
|
||||||
\ s:p.ANSIMagenta[0],
|
|
||||||
\ s:p.ANSICyan[0],
|
|
||||||
\ s:p.ANSIGray[0],
|
|
||||||
\ s:p.ANSIDarkGray[0],
|
|
||||||
\ s:p.ANSIBrightRed[0],
|
|
||||||
\ s:p.ANSIBrightGreen[0],
|
|
||||||
\ s:p.ANSIBrightYellow[0],
|
|
||||||
\ s:p.ANSIBrightBlue[0],
|
|
||||||
\ s:p.ANSIBrightMagenta[0],
|
|
||||||
\ s:p.ANSIBrightCyan[0],
|
|
||||||
\ s:p.ANSIWhite[0]
|
|
||||||
\ ]
|
|
||||||
endif
|
|
||||||
|
|
||||||
" C/C++
|
|
||||||
call s:Hi('cMacroName', s:p.macroName)
|
|
||||||
hi! link cConstant cMacroName
|
|
||||||
hi! link cPreInclude String
|
|
||||||
hi! link cPreProcRegion NormalFg
|
|
||||||
hi! link cUserLabel NormalFg
|
|
||||||
hi! link cDataStructureKeyword Keyword
|
|
||||||
call s:Hi('cDataStructure', s:p.cDataStructure)
|
|
||||||
hi! link cFunction Function
|
|
||||||
hi! link cppDestructor cFunction
|
|
||||||
hi! link cSemicolon Keyword
|
|
||||||
hi! link cComma Keyword
|
|
||||||
call s:Hi('cppAfterColon', s:p.cStructField)
|
|
||||||
hi! link cppBeforeColon cDataStructure
|
|
||||||
call s:Hi('cStructField', s:p.cStructField)
|
|
||||||
hi! link cppNullptr Keyword
|
|
||||||
hi! link cppTemplate Keyword
|
|
||||||
hi! link cTypedef Keyword
|
|
||||||
hi! link cppTypeName Keyword
|
|
||||||
hi! link cSpecial Keyword
|
|
||||||
hi! link cEnum Keyword
|
|
||||||
call s:Hi('cSomeMacro', s:p.macroName)
|
|
||||||
|
|
||||||
hi! link cJCFunc Function
|
|
||||||
|
|
||||||
" Rust
|
|
||||||
call s:Hi('rustDeriveTrait', s:p.metaData)
|
|
||||||
hi! link rustQuestionMark Keyword
|
|
||||||
hi! link rustComma Keyword
|
|
||||||
hi! link rustSemicolon Keyword
|
|
||||||
hi! link rustOperator NormalFg
|
|
||||||
call s:Hi('rustCommentLineDoc', s:p.docComment, s:p.null, 'italic')
|
|
||||||
call s:Hi('rustMacro', s:p.rustMacro)
|
|
||||||
hi! link rustAssert rustMacro
|
|
||||||
hi! link rustPanic rustMacro
|
|
||||||
hi! link rustEscape Keyword
|
|
||||||
hi! link rustSigil NormalFg
|
|
||||||
hi! link rustSelf Keyword
|
|
||||||
call s:Hi('rustLifetime', s:p.rustLifetime, s:p.null, 'italic')
|
|
||||||
call s:Hi('rustTypeParameter', s:p.rustLifetime)
|
|
||||||
hi! link rustEnumVariant Constant
|
|
||||||
hi! link rustModPath NormalFg
|
|
||||||
hi! link rustModPathSep NormalFg
|
|
||||||
hi! link rustAs Keyword
|
|
||||||
hi! link rustConst Constant
|
|
||||||
hi! link rustVarField InstanceField
|
|
||||||
|
|
||||||
" Vim
|
|
||||||
hi! link vimOption Constant
|
|
||||||
hi! link vimFunction Function
|
|
||||||
hi! link vimContinue NonText
|
|
||||||
hi! link vimParenSep NormalFg
|
|
||||||
hi! link vimBracket PreProc
|
|
||||||
hi! link vimOper NormalFg
|
|
||||||
hi! link vimSep NormalFg
|
|
||||||
hi! link vimCommentString Comment
|
|
||||||
|
|
||||||
" JavaScript
|
|
||||||
hi! link jsNoise Keyword
|
|
||||||
hi! link JsImport Keyword
|
|
||||||
hi! link JsFrom Keyword
|
|
||||||
hi! link JsOperator NormalFg
|
|
||||||
hi! link jsArrowFunction NormalFg
|
|
||||||
hi! link jsFuncArgCommas Delimiter
|
|
||||||
hi! link jsObjectKey InstanceField
|
|
||||||
hi! link jsTernaryIfOperator NormalFg
|
|
||||||
hi! link jsObjectSeparator Keyword
|
|
||||||
hi! link jsSpreadOperator NormalFg
|
|
||||||
hi! link jsModuleComma Keyword
|
|
||||||
hi! link jsClassDefinition NormalFg
|
|
||||||
hi! link jsSuper Keyword
|
|
||||||
hi! link jsThis Keyword
|
|
||||||
hi! link jsObjectProp InstanceField
|
|
||||||
hi! link jsDestructuringNoise Keyword
|
|
||||||
hi! link jsClassProperty Function
|
|
||||||
hi! link jsBooleanTrue Keyword
|
|
||||||
hi! link jsBooleanFalse Keyword
|
|
||||||
hi! link jsObjectShorthandProp NormalFg
|
|
||||||
hi! link jsObjectColon NormalFg
|
|
||||||
hi! link jsExport Keyword
|
|
||||||
hi! link jsModuleAs Keyword
|
|
||||||
|
|
||||||
" TypeScript
|
|
||||||
hi! link typescriptBraces NormalFg
|
|
||||||
hi! link typescriptDocComment docComment
|
|
||||||
hi! link typescriptDocParam docComment
|
|
||||||
hi! link typescriptParens NormalFg
|
|
||||||
hi! link typescriptOpSymbols InstanceField
|
|
||||||
hi! link typescriptRegexpString Number
|
|
||||||
hi! link typescriptSpecial Keyword
|
|
||||||
hi! link typescriptLogicSymbols InstanceField
|
|
||||||
hi! link typescriptExceptions Keyword
|
|
||||||
call s:Hi('typescriptDocTags', s:p.docComment, s:p.null, 'bold,italic,underline')
|
|
||||||
call s:Hi('typescriptGlobalObjects', s:p.tsObject)
|
|
||||||
|
|
||||||
" JSON
|
|
||||||
hi! link jsonBraces NormalFg
|
|
||||||
hi! link jsonKeyword InstanceField
|
|
||||||
hi! link jsonNoise Keyword
|
|
||||||
hi! link jsonKeywordMatch Keyword
|
|
||||||
hi! link jsonBoolean Keyword
|
|
||||||
hi! link jsonNull Keyword
|
|
||||||
hi! link jsonEscape Keyword
|
|
||||||
hi! link jsonStringMatch String
|
|
||||||
|
|
||||||
" XML
|
|
||||||
call s:Hi('xmlTagName', s:p.tag)
|
|
||||||
hi! link xmlEndTag xmlTagName
|
|
||||||
hi! link xmlAttrib NormalFg
|
|
||||||
hi! link xmlProcessingDelim xmlTagName
|
|
||||||
hi! link xmlDocTypeKeyword xmlTagName
|
|
||||||
hi! link xmlComment Comment
|
|
||||||
hi! link xmlCommentStart xmlComment
|
|
||||||
hi! link xmlCommentPart xmlComment
|
|
||||||
call s:Hi('xmlEntity', s:p.entity)
|
|
||||||
hi! link xmlEntityPunct xmlEntity
|
|
||||||
hi! link xmlCdata NormalFg
|
|
||||||
hi! link xmlCdataCdata xmlCdata
|
|
||||||
hi! link xmlCdataStart xmlCdata
|
|
||||||
hi! link xmlCdataEnd xmlCdata
|
|
||||||
hi! link xmlNamespace InstanceField
|
|
||||||
hi! link xmlAttribPunct NormalFg
|
|
||||||
hi! link xmlEqual xmlString
|
|
||||||
|
|
||||||
" GraphQL
|
|
||||||
hi! link graphqlTaggedTemplate NormalFg
|
|
||||||
|
|
||||||
" YAML
|
|
||||||
hi! link yamlDocumentStart NormalFg
|
|
||||||
hi! link yamlDocumentEnd NormalFg
|
|
||||||
hi! link yamlComment docComment
|
|
||||||
hi! link yamlBlockMappingKey Keyword
|
|
||||||
hi! link yamlKeyValueDelimiter NormalFg
|
|
||||||
hi! link yamlInteger NormalFg
|
|
||||||
hi! link yamlFloat NormalFg
|
|
||||||
hi! link yamlBlockCollectionItemStart NormalFg
|
|
||||||
call s:Hi('yamlAnchor', s:p.tag)
|
|
||||||
hi! link yamlAlias yamlAnchor
|
|
||||||
hi! link yamlBool NormalFg
|
|
||||||
hi! link yamlNodeTag NormalFg
|
|
||||||
hi! link yamlNull NormalFg
|
|
||||||
|
|
||||||
" Markdown
|
|
||||||
hi! link markdownH1 Constant
|
|
||||||
hi! link markdownH2 markdownH1
|
|
||||||
hi! link markdownH3 markdownH1
|
|
||||||
hi! link markdownH4 markdownH1
|
|
||||||
hi! link markdownH5 markdownH1
|
|
||||||
hi! link markdownH6 markdownH1
|
|
||||||
hi! link markdownHeadingRule markdownH1
|
|
||||||
hi! link markdownHeadingDelimiter markdownH1
|
|
||||||
call s:Hi('markdownAutomaticLink', s:p.link, s:p.null, 'underline')
|
|
||||||
hi! link markdownBlockquote String
|
|
||||||
hi! link markdownBoldDelimiter Keyword
|
|
||||||
hi! link markdownBold NormalFg
|
|
||||||
hi! link markdownItalicDelimiter Keyword
|
|
||||||
hi! link markdownItalic NormalFg
|
|
||||||
hi! link markdownCode Comment
|
|
||||||
hi! link markdownCodeDelimiter markdownCode
|
|
||||||
hi! link markdownCodeBlock markdownCode
|
|
||||||
call s:Hi('markdownLinkText', s:p.link, s:p.null, 'underline')
|
|
||||||
hi! link markdownLinkTextDelimiter markdownLinkText
|
|
||||||
hi! link markdownUrlDelimiter markdownLinkText
|
|
||||||
call s:Hi('markdownUrl', s:p.function, s:p.null, 'italic')
|
|
||||||
hi! link markdownIdDelimiter Keyword
|
|
||||||
hi! link markdownLinkDelimiter Keyword
|
|
||||||
hi! link markdownIdDeclaration Keyword
|
|
||||||
hi! link markdownLinkDelimiter NormalFg
|
|
||||||
hi! link markdownUrlTitleDelimiter Comment
|
|
||||||
hi! link markdownRule Comment
|
|
||||||
|
|
||||||
" HTML
|
|
||||||
let html_no_rendering=1
|
|
||||||
call s:Hi('htmlTag', s:p.tag)
|
|
||||||
hi! link htmlTagName htmlTag
|
|
||||||
hi! link htmlEndTag htmlTag
|
|
||||||
call s:Hi('htmlArg', s:p.htmlAttribute)
|
|
||||||
call s:Hi('htmlString', s:p.htmlString)
|
|
||||||
hi! link htmlValue htmlString
|
|
||||||
hi! link htmlComment Comment
|
|
||||||
hi! link htmlCommentError Comment
|
|
||||||
hi! link htmlCommentPart Comment
|
|
||||||
call s:Hi('htmlSpecialChar', s:p.entity)
|
|
||||||
hi! link htmlSpecialTagName htmlTag
|
|
||||||
|
|
||||||
" CSS
|
|
||||||
hi! link cssAtKeyword Keyword
|
|
||||||
hi! link cssBraces NormalFg
|
|
||||||
hi! link cssAttributeSelector htmlTag
|
|
||||||
hi! link cssSelectorOp NormalFg
|
|
||||||
hi! link cssClassName htmlTag
|
|
||||||
hi! link cssNoise Keyword
|
|
||||||
hi! link cssAttrComma Keyword
|
|
||||||
hi! link cssFunctionComma Keyword
|
|
||||||
hi! link cssMediaComma Keyword
|
|
||||||
hi! link cssComment Comment
|
|
||||||
hi! link cssClassNameDot NormalFg
|
|
||||||
call s:Hi('cssFunctionName', s:p.tag)
|
|
||||||
call s:Hi('cssColor', s:p.number)
|
|
||||||
call s:Hi('cssIdentifier', s:p.tag)
|
|
||||||
call s:Hi('cssPseudoClassId', s:p.tag)
|
|
||||||
call s:Hi('cssImportant', s:p.keyword, s:p.null, 'bold')
|
|
||||||
call s:Hi('cssProp', s:p.htmlAttribute)
|
|
||||||
call s:Hi('cssAttr', s:p.htmlString)
|
|
||||||
call s:Hi('cssAttrRegion', s:p.htmlString)
|
|
||||||
call s:Hi('cssURL', s:p.link)
|
|
||||||
|
|
||||||
" Shell Script
|
|
||||||
call s:Hi('sheBang', s:p.fg, s:p.null, 'bold')
|
|
||||||
hi! link shRange NormalFg
|
|
||||||
hi! link shFunctionKey Keyword
|
|
||||||
call s:Hi('shStatement', s:p.shCommand)
|
|
||||||
hi! link bashStatement shStatement
|
|
||||||
hi! link shDerefVar NormalFg
|
|
||||||
hi! link shQuote String
|
|
||||||
call s:Hi('shHereDoc', s:p.null, s:p.templateLanguage)
|
|
||||||
call s:Hi('shRedir', s:p.fg, s:p.null, 'bold')
|
|
||||||
hi! link shDerefSimple NormalFg
|
|
||||||
hi! link shCommandSubBQ InstanceField
|
|
||||||
hi! link shOption NormalFg
|
|
||||||
hi! link shCmdSubRegion shStatement
|
|
||||||
hi! link shCommandSub NormalFg
|
|
||||||
hi! link shLoop Keyword
|
|
||||||
hi! link shCommandSub Keyword
|
|
||||||
hi! link shSet shStatement
|
|
||||||
hi! link shFunctionTwo shStatement
|
|
||||||
hi! link shCtrlSeq String
|
|
||||||
hi! link shSpecial String
|
|
||||||
hi! link shCommandSub NormalFg
|
|
||||||
hi! link shDerefSpecial NormalFg
|
|
||||||
hi! link shOperator NormalFg
|
|
||||||
|
|
||||||
" help
|
|
||||||
hi! link helpHyperTextJump Number
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
// vim:ts=4:sw=4:et
|
|
||||||
{
|
|
||||||
"border": "pixel",
|
|
||||||
"current_border_width": 1,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1054,
|
|
||||||
"width": 940,
|
|
||||||
"x": 1921,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Friends - Discord",
|
|
||||||
"percent": 0.6,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^discord$",
|
|
||||||
"title": "^(?!.*Updater)"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
"border": "pixel",
|
|
||||||
"current_border_width": 1,
|
|
||||||
"floating": "auto_off",
|
|
||||||
"geometry": {
|
|
||||||
"height": 1054,
|
|
||||||
"width": 1918,
|
|
||||||
"x": 1921,
|
|
||||||
"y": 1
|
|
||||||
},
|
|
||||||
"marks": [],
|
|
||||||
"name": "Element * | the idiot room",
|
|
||||||
"percent": 0.4,
|
|
||||||
"swallows": [
|
|
||||||
{
|
|
||||||
"class": "^Element$"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"type": "con"
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,12 +1,3 @@
|
||||||
From 9758bc03df33fc0d6e61b2be86e3efe714b90dee Mon Sep 17 00:00:00 2001
|
|
||||||
From: krizej <60076189+krizej@users.noreply.github.com>
|
|
||||||
Date: Fri, 5 Jul 2024 01:17:31 +0200
|
|
||||||
Subject: [PATCH] japierdole
|
|
||||||
|
|
||||||
---
|
|
||||||
src/print_cpu_usage.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/print_cpu_usage.c b/src/print_cpu_usage.c
|
diff --git a/src/print_cpu_usage.c b/src/print_cpu_usage.c
|
||||||
index a7ee2e4..1821a99 100644
|
index a7ee2e4..1821a99 100644
|
||||||
--- a/src/print_cpu_usage.c
|
--- a/src/print_cpu_usage.c
|
||||||
|
@ -29,6 +20,4 @@ index a7ee2e4..1821a99 100644
|
||||||
}
|
}
|
||||||
walk += length;
|
walk += length;
|
||||||
}
|
}
|
||||||
--
|
|
||||||
2.45.1
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Copyright=(c) 2024, krizej
|
||||||
License=MIT
|
License=MIT
|
||||||
Type=sddm-theme
|
Type=sddm-theme
|
||||||
Version=1
|
Version=1
|
||||||
Website=https://github.com/krizej
|
Website=https://git.jacekpoz.pl/krizej/nix/src/branch/master/files/sddm-i3-theme
|
||||||
MainScript=Main.qml
|
MainScript=Main.qml
|
||||||
ConfigFile=theme.conf
|
ConfigFile=theme.conf
|
||||||
Theme-Id=sddm-i3
|
Theme-Id=sddm-i3
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ lib, pkgs, config, ...}: let
|
{ lib, config, ...}: let
|
||||||
inherit (lib) mkIf mkEnableOption mkOption;
|
inherit (lib) mkIf mkEnableOption;
|
||||||
cfg = config.chuj.stuff.flameshot;
|
cfg = config.chuj.stuff.flameshot;
|
||||||
user = config.chuj.system.user;
|
user = config.chuj.system.user;
|
||||||
in {
|
in {
|
||||||
|
@ -11,11 +11,13 @@ in {
|
||||||
services.flameshot = {
|
services.flameshot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
# todo: add some shit (userColors, ui colors, check the other stuff)
|
|
||||||
# https://github.com/flameshot-org/flameshot/blob/master/flameshot.example.ini
|
# https://github.com/flameshot-org/flameshot/blob/master/flameshot.example.ini
|
||||||
General = {
|
General = {
|
||||||
disabledTrayIcon = true;
|
disabledTrayIcon = true;
|
||||||
showStartupLaunchMessage = false;
|
showStartupLaunchMessage = false;
|
||||||
|
showDesktopNotification = false;
|
||||||
|
userColors = "picker, #000000, #ffffff, #800000, #ff0000, #ffff00, #00ff00, #008000, #00ffff, #0000ff, #ff00ff, #800080";
|
||||||
|
drawColor = "#ff0000";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,10 +10,12 @@ in {
|
||||||
environment.systemPackages = [ pkgs.git pkgs.codeberg-cli ];
|
environment.systemPackages = [ pkgs.git pkgs.codeberg-cli ];
|
||||||
home-manager.users.${user}.programs.git = {
|
home-manager.users.${user}.programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# should this be here??????
|
||||||
userName = "krizej";
|
userName = "krizej";
|
||||||
userEmail = "krizej@protonmail.com";
|
userEmail = "krizej@protonmail.com";
|
||||||
extraConfig.init.defaultBranch = "master";
|
extraConfig.init.defaultBranch = "master";
|
||||||
ignores = [
|
ignores = [
|
||||||
|
".direnv/"
|
||||||
".idea/"
|
".idea/"
|
||||||
"build/"
|
"build/"
|
||||||
".venv/"
|
".venv/"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{ lib, pkgs, config, ...}: let
|
{ lib, pkgs, config, ...}: let
|
||||||
inherit (lib) mkIf mkEnableOption mkOption types optionals mergeAttrs mergeAttrsList optionalAttrs;
|
inherit (lib) mkIf mkEnableOption mkOption types optionals optionalAttrs;
|
||||||
cfg = config.chuj.stuff.i3;
|
cfg = config.chuj.stuff.i3;
|
||||||
user = config.chuj.system.user;
|
user = config.chuj.system.user;
|
||||||
in {
|
in {
|
||||||
|
@ -44,7 +44,65 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
HOME = config.home-manager.users.${user}.home.homeDirectory;
|
hmCfg = config.home-manager.users.${user};
|
||||||
|
|
||||||
|
exec = what: "exec --no-startup-id ${what}";
|
||||||
|
|
||||||
|
i3-msg = lib.getExe' hmCfg.xsession.windowManager.i3.package "i3-msg";
|
||||||
|
terminal = if (config.chuj.stuff.alacritty.enable)
|
||||||
|
then (lib.getExe hmCfg.programs.alacritty.package)
|
||||||
|
else (lib.getExe' hmCfg.xsession.windowManager.i3.package "i3-sensible-terminal");
|
||||||
|
firefox = lib.getExe hmCfg.programs.firefox.package;
|
||||||
|
schildichat = lib.getExe pkgs.schildichat-desktop;
|
||||||
|
flameshot = lib.getExe hmCfg.services.flameshot.package;
|
||||||
|
dunst = lib.getExe' hmCfg.services.dunst.package "dunst";
|
||||||
|
dunstify = lib.getExe' hmCfg.services.dunst.package "dunstify";
|
||||||
|
dmenu_run = lib.getExe' pkgs.dmenu "dmenu_run";
|
||||||
|
dmenu = lib.getExe pkgs.dmenu;
|
||||||
|
yad = lib.getExe pkgs.yad;
|
||||||
|
mpc = lib.getExe pkgs.mpc-cli;
|
||||||
|
mpdstatus = lib.getExe config.chuj.stuff.mpd.mpdstatusPackage;
|
||||||
|
pamixer = lib.getExe pkgs.pamixer;
|
||||||
|
xdotool = lib.getExe pkgs.xdotool;
|
||||||
|
xkill = lib.getExe pkgs.xorg.xkill;
|
||||||
|
killall = lib.getExe pkgs.killall;
|
||||||
|
sync = lib.getExe' pkgs.coreutils "sync";
|
||||||
|
tail = lib.getExe' pkgs.coreutils "tail";
|
||||||
|
find = lib.getExe' pkgs.findutils "find";
|
||||||
|
sed = lib.getExe pkgs.gnused;
|
||||||
|
|
||||||
|
i3custom-window-actions = lib.getExe (pkgs.writeShellScriptBin "i3custom-window-actions" ''
|
||||||
|
${yad} --splash --mouse \
|
||||||
|
--title="i3 window actions" \
|
||||||
|
--gtkrc="${../../files/i3gtk.css}" \
|
||||||
|
--text="i3 window actions" \
|
||||||
|
--button float:0 --button kill:1
|
||||||
|
|
||||||
|
case $? in
|
||||||
|
0) ${i3-msg} "floating toggle";;
|
||||||
|
1) ${i3-msg} "kill";;
|
||||||
|
-1) ;;
|
||||||
|
esac
|
||||||
|
'');
|
||||||
|
|
||||||
|
musicsel = lib.getExe (pkgs.writeShellScriptBin "musicsel" ''
|
||||||
|
cd ~/Music
|
||||||
|
path=$(${find} . -maxdepth 1 -type d | ${tail} -n +2 | ${sed} 's|^./||g' | ${dmenu})
|
||||||
|
${dunstify} "playing from \"$path\""
|
||||||
|
${mpc} update
|
||||||
|
${mpc} rescan
|
||||||
|
${mpc} add "$path"
|
||||||
|
${mpc} random on
|
||||||
|
${mpc} repeat on
|
||||||
|
${mpc} play
|
||||||
|
'');
|
||||||
|
|
||||||
|
i3custom-center-mouse-on-focus = lib.getExe (pkgs.writeShellScriptBin "i3custom-center-mouse-on-focus" ''
|
||||||
|
eval $(${xdotool} getwindowfocus getwindowgeometry --shell)
|
||||||
|
MX=$(($X + $WIDTH / 2))
|
||||||
|
MY=$(($Y + $HEIGHT / 2))
|
||||||
|
${xdotool} mousemove $MX $MY
|
||||||
|
'');
|
||||||
in mkIf cfg.enable {
|
in mkIf cfg.enable {
|
||||||
services.xserver.windowManager.i3.enable = true;
|
services.xserver.windowManager.i3.enable = true;
|
||||||
home-manager.users.${user} = {
|
home-manager.users.${user} = {
|
||||||
|
@ -86,6 +144,10 @@ in {
|
||||||
|
|
||||||
defaultWorkspace = "workspace number 1";
|
defaultWorkspace = "workspace number 1";
|
||||||
|
|
||||||
|
# transforms
|
||||||
|
# { "<workspace>" = "<output>"; }
|
||||||
|
# into
|
||||||
|
# [{ workspace = "<workspace>"; output = "<output>"; }]
|
||||||
workspaceOutputAssign = lib.mapAttrsToList
|
workspaceOutputAssign = lib.mapAttrsToList
|
||||||
(workspace: output: { inherit workspace output; })
|
(workspace: output: { inherit workspace output; })
|
||||||
cfg.workspaceOutput;
|
cfg.workspaceOutput;
|
||||||
|
@ -97,38 +159,17 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
startup = []
|
startup = []
|
||||||
++ optionals config.chuj.stuff.dunst.enable [{ command = "dunst &"; notification = false; }]
|
++ optionals config.chuj.stuff.dunst.enable [{ command = "${dunst} &"; notification = false; }]
|
||||||
++ optionals config.chuj.stuff.flameshot.enable [{ command = "flameshot &"; notification = false; }]
|
++ optionals config.chuj.stuff.flameshot.enable [{ command = "${flameshot} &"; notification = false; }]
|
||||||
++ optionals cfg.communicators.autostart [
|
++ optionals cfg.communicators.autostart [{ command = "${schildichat} &"; notification = false; }]
|
||||||
# { command = "i3-msg \"workspace ${cfg.communicators.workspace}; append_layout ${../../files/i3_communicators_layout.json}\""; notification = false; }
|
++ optionals config.chuj.stuff.mpd.enable [{ command = "${mpdstatus} &"; notification = false; }];
|
||||||
# { command = "discord &"; notification = false; }
|
|
||||||
{ command = "schildichat-desktop &"; notification = false; }
|
|
||||||
]
|
|
||||||
++ optionals config.chuj.stuff.mpd.enable [
|
|
||||||
{ command = "${pkgs.writeShellScriptBin "mpdstatus" ''
|
|
||||||
trap "echo SIG" USR1 EXIT
|
|
||||||
|
|
||||||
while true; do
|
modes = {
|
||||||
sleep 1 &
|
|
||||||
wait
|
|
||||||
|
|
||||||
status=$(mpc status | sed -n 2p | cut -d' ' -f1)
|
|
||||||
title=$(basename "$(mpc current -f '%file%')" .mp3)
|
|
||||||
echo "$status $title" > /tmp/i3-mpd-status-stuff
|
|
||||||
echo update!!
|
|
||||||
|
|
||||||
done
|
|
||||||
''}/bin/mpdstatus &"; notification = false; }
|
|
||||||
];
|
|
||||||
|
|
||||||
modes = let
|
|
||||||
cmd_and_center = cmd: "exec --no-startup-id i3-msg '${cmd}' && i3-center-mouse-on-focus";
|
|
||||||
in {
|
|
||||||
resize = {
|
resize = {
|
||||||
"Left" = cmd_and_center "resize shrink width 10 px or 10 ppt";
|
"Left" = "resize shrink width 10 px or 10 ppt; ${exec i3custom-center-mouse-on-focus}";
|
||||||
"Right" = cmd_and_center "resize grow width 10 px or 10 ppt";
|
"Right" = "resize grow width 10 px or 10 ppt; ${exec i3custom-center-mouse-on-focus}";
|
||||||
"Up" = cmd_and_center "resize shrink height 10 px or 10 ppt";
|
"Up" = "resize shrink height 10 px or 10 ppt; ${exec i3custom-center-mouse-on-focus}";
|
||||||
"Down" = cmd_and_center "resize grow height 10 px or 10 ppt";
|
"Down" = "resize grow height 10 px or 10 ppt; ${exec i3custom-center-mouse-on-focus}";
|
||||||
"Escape" = "mode default";
|
"Escape" = "mode default";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -137,102 +178,85 @@ in {
|
||||||
floating.modifier = "Mod4";
|
floating.modifier = "Mod4";
|
||||||
|
|
||||||
keybindings = with config.chuj.stuff.i3.mediaKeys; let
|
keybindings = with config.chuj.stuff.i3.mediaKeys; let
|
||||||
killall = "${pkgs.killall}/bin/killall";
|
|
||||||
mod = modifier;
|
mod = modifier;
|
||||||
execns = "exec --no-startup-id";
|
update_mpdstatus = "${killall} -USR1 mpdstatus && ${sync} ${config.chuj.stuff.mpd.statusFile}";
|
||||||
i3-msg = "";
|
update_i3status = "${killall} -USR1 i3status";
|
||||||
terminal = "";
|
center_mouse = exec i3custom-center-mouse-on-focus;
|
||||||
flameshot = "";
|
in {
|
||||||
firefox = "";
|
|
||||||
dmenu_run = "";
|
|
||||||
xkill = "";
|
|
||||||
pamixer = "";
|
|
||||||
i3custom-window-actions = "";
|
|
||||||
dunstify = "";
|
|
||||||
mpc = "";
|
|
||||||
in let
|
|
||||||
cmd_and_center = cmd: "${execns} i3-msg '${cmd}' && i3custom-center-mouse-on-focus";
|
|
||||||
update_mpdstatus = "${killall} -USR1 mpdstatus && sleep 0.05"; # hack as fack xd
|
|
||||||
update_i3status = "${killall} -USR1 i3status";
|
|
||||||
in mergeAttrs {
|
|
||||||
# Program keybinds
|
# Program keybinds
|
||||||
"${mod}+Return" = ''${execns} ${if config.chuj.stuff.alacritty.enable then "alacritty" else "i3-sensible-terminal"}'';
|
"${mod}+Return" = exec terminal;
|
||||||
"${mod}+Shift+s" = mkIf config.chuj.stuff.flameshot.enable "${execns} flameshot gui";
|
"${mod}+d" = exec dmenu_run;
|
||||||
"${mod}+b" = mkIf config.chuj.stuff.firefox.enable "${execns} firefox";
|
"${mod}+Shift+s" = mkIf config.chuj.stuff.flameshot.enable (exec "${flameshot} gui");
|
||||||
"${mod}+d" = "${execns} dmenu_run";
|
"${mod}+b" = mkIf config.chuj.stuff.firefox.enable (exec firefox);
|
||||||
"--release ${mod}+k" = "${execns} xkill";
|
"--release ${mod}+k" = exec xkill;
|
||||||
|
|
||||||
# Volume control
|
# Volume control
|
||||||
"Ctrl+${audioMute}" = "${execns} pamixer --toggle-mute && ${update_i3status}";
|
"Ctrl+${audioMute}" = exec "${pamixer} --toggle-mute && ${update_i3status}";
|
||||||
"Ctrl+${audioDown}" = "${execns} pamixer --decrease 5 && ${update_i3status}";
|
"Ctrl+${audioDown}" = exec "${pamixer} --decrease 5 && ${update_i3status}";
|
||||||
"Ctrl+${audioUp}" = "${execns} pamixer --increase 5 && ${update_i3status}";
|
"Ctrl+${audioUp}" = exec "${pamixer} --increase 5 && ${update_i3status}";
|
||||||
|
|
||||||
# General i3 keybindings
|
# General i3 keybindings
|
||||||
"${mod}+f" = cmd_and_center "fullscreen toggle";
|
"${mod}+Shift+q" = "kill; ${center_mouse}";
|
||||||
|
"${mod}+f" = "fullscreen toggle; ${center_mouse}";
|
||||||
"${mod}+r" = "mode resize";
|
"${mod}+r" = "mode resize";
|
||||||
"${mod}+Shift+q" = cmd_and_center "kill";
|
|
||||||
"${mod}+Shift+r" = "restart";
|
"${mod}+Shift+r" = "restart";
|
||||||
# Mouse bindings
|
"--border button3" = exec i3custom-window-actions;
|
||||||
"--border button3" = "${execns} i3custom-window-actions";
|
|
||||||
|
|
||||||
"${mod}+Left" = cmd_and_center "focus left";
|
"${mod}+Left" = "focus left; ${center_mouse}";
|
||||||
"${mod}+Right" = cmd_and_center "focus right";
|
"${mod}+Right" = "focus right; ${center_mouse}";
|
||||||
"${mod}+Up" = cmd_and_center "focus up";
|
"${mod}+Up" = "focus up; ${center_mouse}";
|
||||||
"${mod}+Down" = cmd_and_center "focus down";
|
"${mod}+Down" = "focus down; ${center_mouse}";
|
||||||
"${mod}+Shift+Left" = cmd_and_center "move left";
|
"${mod}+Shift+Left" = "move left; ${center_mouse}";
|
||||||
"${mod}+Shift+Right" = cmd_and_center "move right";
|
"${mod}+Shift+Right" = "move right; ${center_mouse}";
|
||||||
"${mod}+Shift+Up" = cmd_and_center "move up";
|
"${mod}+Shift+Up" = "move up; ${center_mouse}";
|
||||||
"${mod}+Shift+Down" = cmd_and_center "move down";
|
"${mod}+Shift+Down" = "move down; ${center_mouse}";
|
||||||
|
|
||||||
"${mod}+q" = cmd_and_center "layout stacking";
|
"${mod}+q" = "layout stacking; ${center_mouse}";
|
||||||
"${mod}+w" = cmd_and_center "layout tabbed";
|
"${mod}+w" = "layout tabbed; ${center_mouse}";
|
||||||
"${mod}+e" = cmd_and_center "layout toggle split";
|
"${mod}+e" = "layout toggle split; ${center_mouse}";
|
||||||
|
|
||||||
"${mod}+Shift+space" = "floating toggle; ${execns} i3custom-center-mouse-on-focus";
|
"${mod}+Shift+space" = "floating toggle; ${center_mouse}";
|
||||||
"${mod}+space" = cmd_and_center "focus mode_toggle";
|
"${mod}+space" = "focus mode_toggle; ${center_mouse}";
|
||||||
|
|
||||||
"${mod}+1" = cmd_and_center "workspace number 1";
|
"${mod}+1" = "workspace number 1; ${center_mouse}";
|
||||||
"${mod}+2" = cmd_and_center "workspace number 2";
|
"${mod}+2" = "workspace number 2; ${center_mouse}";
|
||||||
"${mod}+3" = cmd_and_center "workspace number 3";
|
"${mod}+3" = "workspace number 3; ${center_mouse}";
|
||||||
"${mod}+4" = cmd_and_center "workspace number 4";
|
"${mod}+4" = "workspace number 4; ${center_mouse}";
|
||||||
"${mod}+5" = cmd_and_center "workspace number 5";
|
"${mod}+5" = "workspace number 5; ${center_mouse}";
|
||||||
"${mod}+6" = cmd_and_center "workspace number 6";
|
"${mod}+6" = "workspace number 6; ${center_mouse}";
|
||||||
"${mod}+7" = cmd_and_center "workspace number 7";
|
"${mod}+7" = "workspace number 7; ${center_mouse}";
|
||||||
"${mod}+8" = cmd_and_center "workspace number 8";
|
"${mod}+8" = "workspace number 8; ${center_mouse}";
|
||||||
"${mod}+9" = cmd_and_center "workspace number 9";
|
"${mod}+9" = "workspace number 9; ${center_mouse}";
|
||||||
"${mod}+0" = cmd_and_center "workspace number 10";
|
"${mod}+0" = "workspace number 10; ${center_mouse}";
|
||||||
|
|
||||||
"${mod}+Shift+1" = cmd_and_center "move container to workspace number 1";
|
"${mod}+Shift+1" = "move container to workspace number 1; ${center_mouse}";
|
||||||
"${mod}+Shift+2" = cmd_and_center "move container to workspace number 2";
|
"${mod}+Shift+2" = "move container to workspace number 2; ${center_mouse}";
|
||||||
"${mod}+Shift+3" = cmd_and_center "move container to workspace number 3";
|
"${mod}+Shift+3" = "move container to workspace number 3; ${center_mouse}";
|
||||||
"${mod}+Shift+4" = cmd_and_center "move container to workspace number 4";
|
"${mod}+Shift+4" = "move container to workspace number 4; ${center_mouse}";
|
||||||
"${mod}+Shift+5" = cmd_and_center "move container to workspace number 5";
|
"${mod}+Shift+5" = "move container to workspace number 5; ${center_mouse}";
|
||||||
"${mod}+Shift+6" = cmd_and_center "move container to workspace number 6";
|
"${mod}+Shift+6" = "move container to workspace number 6; ${center_mouse}";
|
||||||
"${mod}+Shift+7" = cmd_and_center "move container to workspace number 7";
|
"${mod}+Shift+7" = "move container to workspace number 7; ${center_mouse}";
|
||||||
"${mod}+Shift+8" = cmd_and_center "move container to workspace number 8";
|
"${mod}+Shift+8" = "move container to workspace number 8; ${center_mouse}";
|
||||||
"${mod}+Shift+9" = cmd_and_center "move container to workspace number 9";
|
"${mod}+Shift+9" = "move container to workspace number 9; ${center_mouse}";
|
||||||
"${mod}+Shift+0" = cmd_and_center "move container to workspace number 10";
|
"${mod}+Shift+0" = "move container to workspace number 10; ${center_mouse}";
|
||||||
} (optionalAttrs config.chuj.stuff.mpd.enable {
|
} // (optionalAttrs config.chuj.stuff.mpd.enable {
|
||||||
# MPD controls
|
# MPD controls
|
||||||
"Ctrl+${musicMenu}" = "${execns} mpdfdial.sh && ${update_mpdstatus} && ${update_i3status}";
|
"Ctrl+${musicMenu}" = exec "${musicsel} && ${update_mpdstatus} && ${update_i3status}";
|
||||||
"Ctrl+${musicPrev}" = "${execns} mpc prev && ${update_mpdstatus} && ${update_i3status}";
|
"Ctrl+${musicPrev}" = exec "${mpc} prev && ${update_mpdstatus} && ${update_i3status}";
|
||||||
"Ctrl+${musicPlay}" = "${execns} mpc toggle && ${update_mpdstatus} && ${update_i3status}";
|
"Ctrl+${musicNext}" = exec "${mpc} next && ${update_mpdstatus} && ${update_i3status}";
|
||||||
"Ctrl+${musicNext}" = "${execns} mpc next && ${update_mpdstatus} && ${update_i3status}";
|
"Ctrl+${musicPlay}" = exec "${mpc} toggle && ${update_mpdstatus} && ${update_i3status}";
|
||||||
"Ctrl+Shift+${musicPrev}" = "${execns} mpc seek -3";
|
"Ctrl+Shift+${musicPlay}" = exec "${mpc} clear && ${update_mpdstatus} && ${update_i3status}";
|
||||||
"Ctrl+Shift+${musicPlay}" = "${execns} mpc clear && ${update_mpdstatus} && ${update_i3status}";
|
"Ctrl+Shift+${musicPrev}" = exec "${mpc} seek -3";
|
||||||
"Ctrl+Shift+${musicNext}" = "${execns} mpc seek +3";
|
"Ctrl+Shift+${musicNext}" = exec "${mpc} seek +3";
|
||||||
"Ctrl+Shift+${audioDown}" = ''${execns} mpc volume -5 && dunstify "mpc $(mpc volume)" -r 420'';
|
"Ctrl+Shift+${audioDown}" = exec ''${mpc} volume -5 && ${dunstify} "mpc $(${mpc} volume)" -r 420'';
|
||||||
"Ctrl+Shift+${audioUp}" = ''${execns} mpc volume +5 && dunstify "mpc $(mpc volume)" -r 420'';
|
"Ctrl+Shift+${audioUp}" = exec ''${mpc} volume +5 && ${dunstify} "mpc $(${mpc} volume)" -r 420'';
|
||||||
});
|
});
|
||||||
|
|
||||||
bars = [
|
bars = [{
|
||||||
{
|
inherit fonts;
|
||||||
inherit fonts;
|
trayOutput = "primary";
|
||||||
trayOutput = "primary";
|
statusCommand = "${lib.getExe hmCfg.programs.i3status.package}";
|
||||||
# todo: getexe
|
}];
|
||||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -249,103 +273,59 @@ in {
|
||||||
output_format = "i3bar";
|
output_format = "i3bar";
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = mergeAttrsList [
|
modules = {
|
||||||
{
|
"cpu_usage" = {
|
||||||
"cpu_usage" = {
|
position = 0;
|
||||||
position = 0;
|
settings = {
|
||||||
settings = {
|
format = "cpu: %usage";
|
||||||
format = "cpu: %usage";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
"memory" = {
|
"memory" = {
|
||||||
position = 1;
|
position = 1;
|
||||||
settings = {
|
settings = {
|
||||||
format = "mem: %used";
|
format = "mem: %used";
|
||||||
threshold_degraded = "1G";
|
threshold_degraded = "1G";
|
||||||
format_degraded = "MEMORY < %available";
|
format_degraded = "MEMORY < %available";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
"volume master" = {
|
"volume master" = {
|
||||||
position = 2;
|
position = 2;
|
||||||
settings = {
|
settings = {
|
||||||
color_degraded = "#333333";
|
color_degraded = "#333333";
|
||||||
format = "vol: %volume";
|
format = "vol: %volume";
|
||||||
format_muted = "vol: ---";
|
format_muted = "vol: ---";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
"tztime local" = {
|
"tztime local" = {
|
||||||
position = 4;
|
position = 4;
|
||||||
settings = {
|
settings = {
|
||||||
format = "%Y-%m-%d %H:%M:%S (%A)";
|
format = "%Y-%m-%d %H:%M:%S (%A)";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
};
|
||||||
(optionalAttrs cfg.battery {
|
} // (optionalAttrs cfg.battery {
|
||||||
"battery 0" = {
|
"battery 0" = {
|
||||||
position = 3;
|
position = 3;
|
||||||
settings = {
|
settings = {
|
||||||
format = "bat%status: %percentage";
|
format = "bat%status: %percentage";
|
||||||
status_chr = "(+)";
|
status_chr = "(+)";
|
||||||
status_bat = "";
|
status_bat = "";
|
||||||
status_unk = "(?)";
|
status_unk = "(?)";
|
||||||
status_full = "(+)";
|
status_full = "(+)";
|
||||||
status_idle = "";
|
status_idle = "";
|
||||||
low_threshold = 30;
|
low_threshold = 30;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
};
|
||||||
(optionalAttrs config.chuj.stuff.mpd.enable {
|
}) // (optionalAttrs config.chuj.stuff.mpd.enable {
|
||||||
"read_file mpd" = {
|
"read_file mpd" = {
|
||||||
position = -1;
|
position = -1;
|
||||||
settings = {
|
settings = {
|
||||||
format = "%content";
|
format = "%content";
|
||||||
format_bad = "mpdstatus file not found, restart i3";
|
format_bad = "mpdstatus file not found";
|
||||||
path = "/tmp/i3-mpd-status-stuff";
|
path = config.chuj.stuff.mpd.statusFile;
|
||||||
color_good = "#ffffff";
|
color_good = "#ffffff";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
})
|
};
|
||||||
];
|
});
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; let
|
|
||||||
xdotool = "";
|
|
||||||
yad = "";
|
|
||||||
i3gtk = "";
|
|
||||||
i3-msg = "";
|
|
||||||
in [
|
|
||||||
(writeShellScriptBin "i3custom-center-mouse-on-focus" ''
|
|
||||||
eval $(xdotool getwindowfocus getwindowgeometry --shell)
|
|
||||||
MX=$(($X + $WIDTH / 2))
|
|
||||||
MY=$(($Y + $HEIGHT / 2))
|
|
||||||
xdotool mousemove $MX $MY
|
|
||||||
'')
|
|
||||||
|
|
||||||
(writeShellScriptBin "i3custom-window-actions" ''
|
|
||||||
${yad}/bin/yad --splash --mouse \
|
|
||||||
--title="i3 window actions" \
|
|
||||||
--gtkrc="${HOME}/.config/i3/i3gtk.css" \
|
|
||||||
--text="i3 window actions" \
|
|
||||||
--button float:0 --button kill:1
|
|
||||||
|
|
||||||
case $? in
|
|
||||||
0) i3-msg "floating toggle";;
|
|
||||||
1) i3-msg "kill";;
|
|
||||||
-1) ;;
|
|
||||||
esac
|
|
||||||
'')
|
|
||||||
|
|
||||||
(writeShellScriptBin "i3custom-floating-toggle" ''
|
|
||||||
i3-msg "mark --add _; [con_mark=f] floating disable, border pixel 1, mark --add --toggle _; [con_mark=_] floating enable, border normal; mark --add --toggle f;"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
|
|
||||||
# todo: remove
|
|
||||||
home.file = {
|
|
||||||
".config/i3/i3gtk.css".source = ../../files/i3gtk.css;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,6 +5,30 @@
|
||||||
in {
|
in {
|
||||||
options.chuj.stuff.mpd = {
|
options.chuj.stuff.mpd = {
|
||||||
enable = mkEnableOption "mpd";
|
enable = mkEnableOption "mpd";
|
||||||
|
statusFile = mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "/tmp/mpdstatus";
|
||||||
|
};
|
||||||
|
mpdstatusPackage = mkOption {
|
||||||
|
type = lib.types.package;
|
||||||
|
default = let
|
||||||
|
sleep = lib.getExe' pkgs.coreutils "sleep";
|
||||||
|
cut = lib.getExe' pkgs.coreutils "cut";
|
||||||
|
basename = lib.getExe' pkgs.coreutils "basename";
|
||||||
|
echo = lib.getExe' pkgs.coreutils "echo";
|
||||||
|
mpc = lib.getExe pkgs.mpc-cli;
|
||||||
|
sed = lib.getExe pkgs.gnused;
|
||||||
|
in (pkgs.writeShellScriptBin "mpdstatus" ''
|
||||||
|
trap "echo SIG" USR1 EXIT
|
||||||
|
while true; do
|
||||||
|
${sleep} 1 &
|
||||||
|
wait
|
||||||
|
status=$(${mpc} status | ${sed} -n 2p | ${cut} -d' ' -f1)
|
||||||
|
title=$(${basename} "$(${mpc} current -f '%file%')" .mp3)
|
||||||
|
${echo} "$status $title" > ${config.chuj.stuff.mpd.statusFile}
|
||||||
|
done
|
||||||
|
'');
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -18,25 +42,9 @@ in {
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
home.packages = let
|
home.packages = [
|
||||||
yad = "${pkgs.yad}/bin/yad";
|
|
||||||
dunstify = "${pkgs.dunst}/bin/dunstify";
|
|
||||||
mpc = "${pkgs.mpc-cli}/bin/mpc";
|
|
||||||
cut = "${pkgs.coreutils}/bin/cut";
|
|
||||||
in [
|
|
||||||
pkgs.mpc-cli
|
pkgs.mpc-cli
|
||||||
# todo: dmenu for this if i3
|
config.chuj.stuff.mpd.mpdstatusPackage
|
||||||
(pkgs.writeShellScriptBin "mpdfdial.sh" ''
|
|
||||||
path=$(${yad} --file --directory | ${cut} -d "/" -f5-)
|
|
||||||
|
|
||||||
${dunstify} "playing from \"$path\""
|
|
||||||
${mpc} update
|
|
||||||
${mpc} rescan
|
|
||||||
${mpc} add "$path"
|
|
||||||
${mpc} random on
|
|
||||||
${mpc} repeat on
|
|
||||||
${mpc} play
|
|
||||||
'')
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,17 +38,16 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = let
|
home.sessionVariables = rec {
|
||||||
XDG_DATA_HOME = hmCfg.xdg.dataHome;
|
XDG_DATA_HOME = hmCfg.xdg.dataHome;
|
||||||
XDG_CONFIG_HOME = hmCfg.xdg.configHome;
|
XDG_CONFIG_HOME = hmCfg.xdg.configHome;
|
||||||
XDG_STATE_HOME = hmCfg.xdg.stateHome;
|
XDG_STATE_HOME = hmCfg.xdg.stateHome;
|
||||||
XDG_CACHE_HOME = hmCfg.xdg.cacheHome;
|
XDG_CACHE_HOME = hmCfg.xdg.cacheHome;
|
||||||
in {
|
|
||||||
ANDROID_USER_HOME = "${XDG_DATA_HOME}/android";
|
ANDROID_USER_HOME = "${XDG_DATA_HOME}/android";
|
||||||
ANDROID_HOME = "${XDG_DATA_HOME}/android/sdk";
|
ANDROID_HOME = "${XDG_DATA_HOME}/android/sdk";
|
||||||
GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle";
|
GRADLE_USER_HOME = "${XDG_DATA_HOME}/gradle";
|
||||||
PYTHONSTARTUP = "${XDG_CONFIG_HOME}/python/pythonrc";
|
PYTHONSTARTUP = "${XDG_CONFIG_HOME}/python/pythonrc";
|
||||||
HISTFILE = "${XDG_CACHE_HOME}/bash/history";
|
HISTFILE = "${XDG_CACHE_HOME}/bash_history";
|
||||||
CARGO_HOME = "${XDG_DATA_HOME}/cargo";
|
CARGO_HOME = "${XDG_DATA_HOME}/cargo";
|
||||||
_JAVA_OPTIONS = "-Djava.utils.prefs.userRoot=${XDG_CONFIG_HOME}/java";
|
_JAVA_OPTIONS = "-Djava.utils.prefs.userRoot=${XDG_CONFIG_HOME}/java";
|
||||||
GNUPGHOME = "${XDG_DATA_HOME}/gnupg";
|
GNUPGHOME = "${XDG_DATA_HOME}/gnupg";
|
||||||
|
@ -66,7 +65,6 @@ in {
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
# todo: XDG_CACHE_HOME Not found
|
|
||||||
"python/pythonrc".text = ''
|
"python/pythonrc".text = ''
|
||||||
import os
|
import os
|
||||||
import atexit
|
import atexit
|
||||||
|
|
|
@ -16,9 +16,8 @@ in {
|
||||||
# autoRepeatInterval = 50;
|
# autoRepeatInterval = 50;
|
||||||
# fixme: ^ this doesn't work
|
# fixme: ^ this doesn't work
|
||||||
|
|
||||||
# todo: getexe (or fix the above
|
|
||||||
displayManager.sessionCommands = ''
|
displayManager.sessionCommands = ''
|
||||||
${pkgs.xorg.xset}/bin/xset r rate 180 50
|
${lib.getExe pkgs.xorg.xset} r rate 180 50
|
||||||
'';
|
'';
|
||||||
enableTearFree = true;
|
enableTearFree = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -111,6 +111,7 @@ stdenv.mkDerivation rec {
|
||||||
passthru.updateScript = ./update.sh;
|
passthru.updateScript = ./update.sh;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
mainProgram = executableName;
|
||||||
description = "Matrix client / Element Desktop fork";
|
description = "Matrix client / Element Desktop fork";
|
||||||
homepage = "https://schildi.chat/";
|
homepage = "https://schildi.chat/";
|
||||||
changelog = "https://github.com/SchildiChat/schildichat-desktop/releases";
|
changelog = "https://github.com/SchildiChat/schildichat-desktop/releases";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
i have a slight idea of what i'm doing
|
i have a slight idea of what i'm doing
|
||||||
|
|
||||||
todo:
|
todo:
|
||||||
- remove hardcoded binary names
|
- clean up modules/system.nix
|
||||||
- investigate firefox config
|
- investigate firefox config
|
||||||
- all the remaining individual todos
|
- all the remaining individual todos
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue