refactor *

This commit is contained in:
krizej 2024-10-16 16:08:40 +02:00
parent 0d4b6f0107
commit e97bfa4226
12 changed files with 223 additions and 957 deletions

View file

@ -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

View file

@ -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"
}

View file

@ -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

View file

@ -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

View file

@ -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";
}; };
}; };
}; };

View file

@ -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/"

View file

@ -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 = "";
terminal = "";
flameshot = "";
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"; update_i3status = "${killall} -USR1 i3status";
in mergeAttrs { center_mouse = exec i3custom-center-mouse-on-focus;
in {
# 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";
# todo: getexe statusCommand = "${lib.getExe hmCfg.programs.i3status.package}";
statusCommand = "${pkgs.i3status}/bin/i3status"; }];
}
];
}; };
}; };
@ -249,15 +273,13 @@ 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 = {
@ -266,7 +288,6 @@ in {
format_degraded = "MEMORY < %available"; format_degraded = "MEMORY < %available";
}; };
}; };
"volume master" = { "volume master" = {
position = 2; position = 2;
settings = { settings = {
@ -275,15 +296,13 @@ in {
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 = {
@ -296,56 +315,17 @@ in {
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;
}; };
}; };
}; };

View file

@ -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
'')
]; ];
}; };
}; };

View file

@ -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

View file

@ -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;
}; };

View file

@ -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";

View file

@ -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