Initial commit

This commit is contained in:
Observer of Time 2019-05-28 18:44:30 +03:00
commit bca81582fd
Signed by: chronobserver
GPG Key ID: 8A2DEA1DBAEBCA9E
43 changed files with 3731 additions and 0 deletions

675
.XCompose Normal file
View File

@ -0,0 +1,675 @@
# UTF-8 (Unicode) compose sequence
# {keys...} : "{glyph}" {entity|unicode number} # {unicode name}
# Dashes & spaces {{{
<Multi_key> <underscore> <asciicircum> : "¯" macr # MACRON
<Multi_key> <asciicircum> <underscore> : "¯" macr # MACRON
<Multi_key> <minus> <minus> <period> : "" ndash # EN DASH
<Multi_key> <minus> <minus> <minus> : "—" mdash # EM DASH
<Multi_key> <minus> <minus> <space> : "­" shy # SOFT HYPHEN
<Multi_key> <space> <space> : " " nbsp # NO-BREAK SPACE
<Multi_key> <minus> <underscore> <minus> : "⍽" U237D # SHOULDERED OPEN BOX
<Multi_key> <asciitilde> <asciitilde> : "〜" U301C # WAVE DASH
<Multi_key> <asciicircum> <asciicircum> : "〰" U3030 # WAVY DASH
<Multi_key> <j> <minus> : "ー" U3007 # KATAKANA-HIRAGANA PROLONGED SOUND MARK
<Multi_key> <j> <asciitilde> : "" UFF5E # FULLWIDTH TILDE
# }}}
# Dots {{{
<Multi_key> <period> <period> : "…" hellip # HORIZONTAL ELLIPSIS
<Multi_key> <period> <bar> : "⋮" vellip # VERTICAL ELLIPSIS
<Multi_key> <period> <bar> : "⋮" vellip # VERTICAL ELLIPSIS
<Multi_key> <slash> <period> : "⋰" utdot # UP RIGHT DIAGONAL ELLIPSIS
<Multi_key> <period> <slash> : "⋰" utdot # UP RIGHT DIAGONAL ELLIPSIS
<Multi_key> <backslash> <period> : "⋱" dtdot # DOWN RIGHT DIAGONAL ELLIPSIS
<Multi_key> <period> <backslash> : "⋱" dtdot # DOWN RIGHT DIAGONAL ELLIPSIS
<Multi_key> <asciicircum> <period> : "·" middot # MIDDLE DOT
<Multi_key> <period> <asciicircum> : "·" middot # MIDDLE DOT
<Multi_key> <minus> <period> : "•" bullet # BULLET
<Multi_key> <period> <minus> : "•" bullet # BULLET
# }}}
# Quotation marks {{{
<Multi_key> <period> <less> : "" lsaquo # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
<Multi_key> <period> <greater> : "" rsaquo # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
<Multi_key> <less> <less> : "«" laquo # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
<Multi_key> <greater> <greater> : "»" raquo # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
<Multi_key> <less> <apostrophe> : "" lsquo # LEFT SINGLE QUOTATION MARK
<Multi_key> <apostrophe> <less> : "" lsquo # LEFT SINGLE QUOTATION MARK
<Multi_key> <greater> <apostrophe> : "" rsquo # RIGHT SINGLE QUOTATION MARK
<Multi_key> <apostrophe> <greater> : "" rsquo # RIGHT SINGLE QUOTATION MARK
<Multi_key> <comma> <apostrophe> : "" sbquo # SINGLE LOW-9 QUOTATION MARK
<Multi_key> <apostrophe> <comma> : "" sbquo # SINGLE LOW-9 QUOTATION MARK
<Multi_key> <less> <quotedbl> : "“" ldquo # LEFT DOUBLE QUOTATION MARK
<Multi_key> <quotedbl> <less> : "“" ldquo # LEFT DOUBLE QUOTATION MARK
<Multi_key> <greater> <quotedbl> : "”" rdquo # RIGHT DOUBLE QUOTATION MARK
<Multi_key> <quotedbl> <greater> : "”" rdquo # RIGHT DOUBLE QUOTATION MARK
<Multi_key> <comma> <quotedbl> : "„" bdquo # DOUBLE LOW-9 QUOTATION MARK
<Multi_key> <quotedbl> <comma> : "„" bdquo # DOUBLE LOW-9 QUOTATION MARK
<Multi_key> <j> <apostrophe> <less> : "「" U300C # LEFT CORNER BRACKET
<Multi_key> <j> <apostrophe> <greater> : "」" U300D # RIGHT CORNER BRACKET
<Multi_key> <j> <quotedbl> <less> : "『" U300E # LEFT WHITE CORNER BRACKET
<Multi_key> <j> <quotedbl> <greater> : "』" U300F # RIGHT WHITE CORNER BRACKET
# }}}
# Currencies {{{
<Multi_key> <C> <equal> : "€" euro # EURO SIGN
<Multi_key> <equal> <C> : "€" euro # EURO SIGN
<Multi_key> <c> <equal> : "€" euro # EURO SIGN
<Multi_key> <equal> <c> : "€" euro # EURO SIGN
<Multi_key> <E> <equal> : "€" euro # EURO SIGN
<Multi_key> <equal> <E> : "€" euro # EURO SIGN
<Multi_key> <e> <equal> : "€" euro # EURO SIGN
<Multi_key> <equal> <e> : "€" euro # EURO SIGN
<Multi_key> <C> <bar> : "¢" cent # CENT SIGN
<Multi_key> <bar> <C> : "¢" cent # CENT SIGN
<Multi_key> <c> <bar> : "¢" cent # CENT SIGN
<Multi_key> <bar> <c> : "¢" cent # CENT SIGN
<Multi_key> <c> <slash> : "¢" cent # CENT SIGN
<Multi_key> <slash> <c> : "¢" cent # CENT SIGN
<Multi_key> <L> <minus> : "£" pound # POUND SIGN
<Multi_key> <minus> <L> : "£" pound # POUND SIGN
<Multi_key> <l> <minus> : "£" pound # POUND SIGN
<Multi_key> <minus> <l> : "£" pound # POUND SIGN
<Multi_key> <Y> <equal> : "¥" yen # YEN SIGN
<Multi_key> <equal> <Y> : "¥" yen # YEN SIGN
<Multi_key> <y> <equal> : "¥" yen # YEN SIGN
<Multi_key> <equal> <y> : "¥" yen # YEN SIGN
<Multi_key> <Y> <minus> : "¥" yen # YEN SIGN
<Multi_key> <minus> <Y> : "¥" yen # YEN SIGN
<Multi_key> <y> <minus> : "¥" yen # YEN SIGN
<Multi_key> <minus> <y> : "¥" yen # YEN SIGN
<Multi_key> <n> <n> : "₪" U20AA # NEW SHEQEL SIGN
<Multi_key> <N> <N> : "₪" U20AA # NEW SHEQEL SIGN
<Multi_key> <o> <x> : "¤" curren # CURRENCY SIGN
<Multi_key> <x> <o> : "¤" curren # CURRENCY SIGN
<Multi_key> <o> <X> : "¤" curren # CURRENCY SIGN
<Multi_key> <X> <o> : "¤" curren # CURRENCY SIGN
<Multi_key> <O> <X> : "¤" curren # CURRENCY SIGN
<Multi_key> <X> <O> : "¤" curren # CURRENCY SIGN
<Multi_key> <O> <x> : "¤" curren # CURRENCY SIGN
<Multi_key> <x> <O> : "¤" curren # CURRENCY SIGN
# }}}
# Math & logic {{{
<Multi_key> <bar> <C> : "" complexes # DOUBLE-STRUCK CAPITAL C
<Multi_key> <bar> <N> : "" naturals # DOUBLE-STRUCK CAPITAL N
<Multi_key> <bar> <P> : "" primes # DOUBLE-STRUCK CAPITAL P
<Multi_key> <bar> <Q> : "" rationals # DOUBLE-STRUCK CAPITAL Q
<Multi_key> <bar> <R> : "" reals # DOUBLE-STRUCK CAPITAL R
<Multi_key> <bar> <Z> : "" integers # DOUBLE-STRUCK CAPITAL Z
<Multi_key> <f> <comma> : "ƒ" fnof # LATIN SMALL LETTER F WITH HOOK
<Multi_key> <comma> <f> : "ƒ" fnof # LATIN SMALL LETTER F WITH HOOK
<Multi_key> <s> <u> <m> : "∑" sum # N-ARY SUMMATION
<Multi_key> <i> <n> <t> : "∫" int # INTEGRAL
<Multi_key> <I> <n> <t> : "∬" Int # DOUBLE INTEGRAL
<Multi_key> <d> <e> <l> : "∇" nabla # NABLA
<Multi_key> <plus> <minus> : "±" plusmn # PLUS-MINUS SIGN
<Multi_key> <minus> <plus> : "∓" mnplus # MINUS-PLUS SIGN
<Multi_key> <x> <x> : "×" times # MULTIPLICATION SIGN
<Multi_key> <colon> <minus> : "÷" div # DIVISION SIGN
<Multi_key> <minus> <colon> : "÷" div # DIVISION SIGN
<Multi_key> <i> <asciicircum> : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I
<Multi_key> <n> <asciicircum> : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N
<Multi_key> <asciicircum> <0> : "⁰" U2070 # SUPERSCRIPT ZERO
<Multi_key> <asciicircum> <1> : "¹" sup1 # SUPERSCRIPT ONE
<Multi_key> <1> <asciicircum> : "¹" sup1 # SUPERSCRIPT ONE
<Multi_key> <asciicircum> <2> : "²" sup2 # SUPERSCRIPT TWO
<Multi_key> <2> <asciicircum> : "²" sup2 # SUPERSCRIPT TWO
<Multi_key> <asciicircum> <3> : "³" sup3 # SUPERSCRIPT THREE
<Multi_key> <3> <asciicircum> : "³" sup3 # SUPERSCRIPT THREE
<Multi_key> <1> <2> : "½" frac12 # VULGAR FRACTION ONE HALF
<Multi_key> <asciicircum> <plus> : "⁺" U207A # SUPERSCRIPT PLUS SIGN
<Multi_key> <asciicircum> <minus> : "⁻" U207B # SUPERSCRIPT MINUS
<Multi_key> <underscore> <0> : "₀" U2080 # SUBSCRIPT ZERO
<Multi_key> <underscore> <1> : "₁" U2081 # SUBSCRIPT ONE
<Multi_key> <comma> <minus> : "¬" not # NOT SIGN
<Multi_key> <minus> <comma> : "¬" not # NOT SIGN
<Multi_key> <v> <slash> : "√" radic # SQUARE ROOT
<Multi_key> <slash> <v> : "√" radic # SQUARE ROOT
<Multi_key> <s> <q> : "√" radic # SQUARE ROOT
<Multi_key> <8> <8> : "∞" infin # INFINITY
<Multi_key> <E> <E> : "∃" exist # THERE EXISTS
<Multi_key> <slash> <E> : "∄" nexist # THERE DOES NOT EXIST
<Multi_key> <E> <slash> : "∄" nexist # THERE DOES NOT EXIST
<Multi_key> <A> <A> : "∀" forall # FOR ALL
<Multi_key> <0> <slash> : "∅" empty # EMPTY SET
<Multi_key> <slash> <0> : "∅" empty # EMPTY SET
<Multi_key> <braceleft> <braceright> : "∅" empty # EMPTY SET
<Multi_key> <braceleft> <U> : "" cup # UNION
<Multi_key> <braceleft> <asciicircum> : "∩" cap # INTERSECTION
<Multi_key> <braceleft> <parenleft> : "⊂" sub # SUBSET OF
<Multi_key> <braceleft> <equal> <parenleft> : "⊆" sube # SUBSET OF OR EQUAL TO
<Multi_key> <braceleft> <parenright> : "⊃" sup # SUPERSET OF
<Multi_key> <braceleft> <equal> <parenright> : "⊇" supe # SUPERSET OF OR EQUAL TO
<Multi_key> <slash> <braceleft> <parenleft> : "⊄" nsub # NOT A SUBSET OF
<Multi_key> <colon> <equal> : "≔" colone # COLON EQUALS
<Multi_key> <equal> <question> : "≟" equest # QUESTIONED EQUAL TO
<Multi_key> <exclam> <equal> : "≠" ne # NOT EQUAL TO
<Multi_key> <slash> <equal> : "≠" ne # NOT EQUAL TO
<Multi_key> <equal> <underscore> : "≡" equiv # IDENTICAL TO
<Multi_key> <asciitilde> <equal> : "≅" cong # APPROXIMATELY EQUAL TO
<Multi_key> <less> <underscore> : "≤" le # LESS-THAN OR EQUAL TO
<Multi_key> <underscore> <less> : "≤" le # LESS-THAN OR EQUAL TO
<Multi_key> <greater> <underscore> : "≥" ge # GREATER-THAN OR EQUAL TO
<Multi_key> <underscore> <greater> : "≥" ge # GREATER-THAN OR EQUAL TO
<Multi_key> <n> <8> : "ℵ" aleph # ALEF SYMBOL
<Multi_key> <asciicircum> <asciicircum> : "∧" and # LOGICAL AND
<Multi_key> <asciicircum> <equal> : "⊼" U22BC # NAND
<Multi_key> <v> <v> : "" or # LOGICAL OR
<Multi_key> <v> <minus> : "⊽" U22BD # NOR
<Multi_key> <v> <underscore> : "⊻" veebar # XOR
<Multi_key> <o> <plus> : "⊕" oplus # CIRCLED PLUS
<Multi_key> <O> <plus> : "⊕" oplus # CIRCLED PLUS
# }}}
# Arrows {{{
<Multi_key> <minus> <greater> : "→" rarr # RIGHTWARDS ARROW
<Multi_key> <minus> <less> : "←" larr # LEFTWARDS ARROW
<Multi_key> <minus> <v> : "↓" darr # DOWNWARDS ARROW
<Multi_key> <minus> <asciicircum> : "↑" uarr # UPWARDS ARROW
<Multi_key> <less> <minus> <greater> : "↔" harr # LEFT RIGHT ARROW
<Multi_key> <v> <asciicircum> : "↕" varr # UP DOWN ARROW
<Multi_key> <asciicircum> <v> : "⇵" duarr # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
<Multi_key> <less> <minus> <bar> : "↵" crarr # DOWNWARDS ARROW WITH CORNER LEFTWARDS
<Multi_key> <equal> <greater> : "⇒" rArr # RIGHTWARDS DOUBLE ARROW
<Multi_key> <equal> <less> : "⇐" lArr # LEFTWARDS DOUBLE ARROW
<Multi_key> <equal> <asciicircum> : "⇑" uArr # UPWARDS DOUBLE ARROW
<Multi_key> <equal> <v> : "⇓" dArr # DOWNWARDS DOUBLE ARROW
<Multi_key> <equal> <asciitilde> : "⇔" hArr # LEFT RIGHT DOUBLE ARROW
<Multi_key> <equal> <bar> : "⇕" vArr # UP DOWN DOUBLE ARROW
# }}}
# Musical notes {{{
<Multi_key> <numbersign> <q> : "♩" U2669 # QUARTER NOTE
<Multi_key> <numbersign> <e> : "♪" sung # EIGHTH NOTE
<Multi_key> <numbersign> <B> <minus> : "♫" U266B # BEAMED EIGHTH NOTES
<Multi_key> <numbersign> <B> <equal> : "♬" U266C # BEAMED SIXTEENTH NOTES
<Multi_key> <numbersign> <b> : "♭" flat # MUSIC FLAT SIGN
<Multi_key> <numbersign> <n> : "♮" natur # MUSIC NATURAL SIGN
<Multi_key> <numbersign> <numbersign> : "♯" sharp # MUSIC SHARP SIGN
<Multi_key> <numbersign> <2> : "𝅗𝅥" U1D15E # MUSICAL SYMBOL HALF NOTE
<Multi_key> <numbersign> <4> : "𝅘𝅥" U1D15F # MUSICAL SYMBOL QUARTER NOTE
<Multi_key> <numbersign> <8> : "𝅘𝅥𝅮" U1D160 # MUSICAL SYMBOL EIGHTH NOTE
<Multi_key> <numbersign> <6> : "𝅘𝅥𝅯" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
<Multi_key> <numbersign> <3> <2> : "𝅘𝅥𝅰" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
<Multi_key> <numbersign> <6> <4> : "𝅘𝅥𝅱" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
<Multi_key> <numbersign> <1> <2> <8> : "𝅘𝅥𝅲" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
<Multi_key> <numbersign> <m> : "𝆹𝅥" U1D1BB # MUSICAL SYMBOL MINIMA
<Multi_key> <numbesign> <M> : "𝆺𝅥" U1D1BC # MUSICAL SYMBOL MINIMA BLACK
<Multi_key> <numbersign> <s> : "𝆹𝅥𝅮" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
<Multi_key> <numbersign> <S> : "𝆺𝅥𝅮" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
<Multi_key> <numbersign> <f> : "𝆹𝅥𝅯" U1D1BF # MUSICAL SYMBOL FUSA WHITE
<Multi_key> <numbersign> <F> : "𝆺𝅥𝅯" U1D1C0 # MUSICAL SYMBOL FUSA BLACK
# }}}
# Intellectual property {{{
<Multi_key> <C> <o> : "©" copy # COPYRIGHT SIGN
<Multi_key> <C> <O> : "©" copy # COPYRIGHT SIGN
<Multi_key> <R> <o> : "®" reg # REGISTERED SIGN
<Multi_key> <R> <O> : "®" reg # REGISTERED SIGN
<Multi_key> <T> <M> : "™" trade # TRADE MARK SIGN
<Multi_key> <t> <m> : "™" trade # TRADE MARK SIGN
<Multi_key> <o> <c> : "🄯" U1F12F # COPYLEFT SIGN
<Multi_key> <O> <C> : "🄯" U1F12F # COPYLEFT SIGN
# }}}
# Card suits {{{
<Multi_key> <less> <3> : "♥" hearts # BLACK HEART SUIT
<Multi_key> <s> <b> <h> : "♥" hearts # BLACK HEART SUIT
<Multi_key> <s> <b> <c> : "♣" clubs # BLACK CLUB SUIT
<Multi_key> <s> <b> <s> : "♠" spades # BLACK SPADE SUIT
<Multi_key> <s> <b> <d> : "♦" diams # BLACK DIAMOND SUIT
<Multi_key> <s> <w> <h> : "♡" U2661 # WHITE HEART SUIT
<Multi_key> <s> <w> <c> : "♧" U2667 # WHITE CLUB SUIT
<Multi_key> <s> <w> <s> : "♤" U2664 # WHITE SPADE SUIT
<Multi_key> <s> <w> <d> : "♢" U2662 # WHITE DIAMOND SUIT
# }}}
# Chess {{{
<Multi_key> <c> <w> <k> : "♔" U2654 # WHITE CHESS KING
<Multi_key> <c> <w> <q> : "♕" U2655 # WHITE CHESS QUEEN
<Multi_key> <c> <w> <r> : "♖" U2656 # WHITE CHESS ROOK
<Multi_key> <c> <w> <b> : "♗" U2657 # WHITE CHESS BISHOP
<Multi_key> <c> <w> <n> : "♘" U2658 # WHITE CHESS KNIGHT
<Multi_key> <c> <w> <p> : "♙" U2659 # WHITE CHESS PAWN
<Multi_key> <c> <b> <k> : "♚" U265A # BLACK CHESS KING
<Multi_key> <c> <b> <q> : "♛" U265B # BLACK CHESS QUEEN
<Multi_key> <c> <b> <r> : "♜" U265C # BLACK CHESS ROOK
<Multi_key> <c> <b> <b> : "♝" U265D # BLACK CHESS BISHOP
<Multi_key> <c> <b> <n> : "♞" U265E # BLACK CHESS KNIGHT
<Multi_key> <c> <b> <p> : "♟" U265F # BLACK CHESS PAWN
# }}}
# Other symbols {{{
<Multi_key> <o> <o> : "°" deg # DEGREE SIGN
<Multi_key> <asterisk> <0> : "°" deg # DEGREE SIGN
<Multi_key> <0> <asterisk> : "°" deg # DEGREE SIGN
<Multi_key> <exclam> <bar> : "¦" brvbar # BROKEN BAR
<Multi_key> <bar> <eclam> : "¦" brvbar # BROKEN BAR
<Multi_key> <bar> <minus> : "†" dagger # DAGGER
<Multi_key> <bar> <equal> : "‡" ddagger # DOUBLE DAGGER
<Multi_key> <bar> <bar> : "‖" Vert # DOUBLE VERTICAL LINE
<Multi_key> <p> <exclam> : "¶" para # PILCROW SIGN
<Multi_key> <P> <exclam> : "¶" para # PILCROW SIGN
<Multi_key> <exclam> <exclam> : "¡" iexcl # INVERTED EXCLAMATION MARK
<Multi_key> <question> <question> : "¿" iquest # INVERTED QUESTION MARK
<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
<Multi_key> <question> <exclam> : "⸘" U2E18 # INVERTED INTERROBANG
<Multi_key> <2> <question> : "⁇" U2047 # DOUBLE QUESTION MARK
<Multi_key> <question> <bar> <exclam> : "⁈" U2048 # QUESTION EXCLAMATION MARK
<Multi_key> <exclam> <bar> <question> : "⁉" U2049 # EXCLAMATION QUESTION MARK
<Multi_key> <2> <exclam> : "‼" U203C # DOUBLE EXCLAMATION MARK
<Multi_key> <colon> <colon> : "∷" Proportion # PROPORTION
<Multi_key> <j> <comma> : "、" U3001 # IDEOGRAPHIC COMMA
<Multi_key> <j> <period> : "。" U3002 # IDEOGRAPHIC FULL STOP
<Multi_key> <j> <colon> : "" UFF1A # FULLWIDTH COLON
<Multi_key> <j> <question> : "" UFF1F # FULLWIDTH QUESTION MARK
<Multi_key> <j> <exclam> : "" UFF01 # FULLWIDTH EXCLAMATION MARK
<Multi_key> <s> <o> : "§" sect # SECTION SIGN
<Multi_key> <o> <s> : "§" sect # SECTION SIGN
<Multi_key> <S> <O> : "§" sect # SECTION SIGN
<Multi_key> <O> <S> : "§" sect # SECTION SIGN
<Multi_key> <s> <exclam> : "§" sect # SECTION SIGN
<Multi_key> <S> <exclam> : "§" sect # SECTION SIGN
<Multi_key> <N> <o> : "№" numero # NUMERO SIGN
<Multi_key> <N> <O> : "№" numero # NUMERO SIGN
<Multi_key> <F> <less> : "☚" U261A # BLACK LEFT POINTING INDEX
<Multi_key> <F> <greater> : "☛" U261B # BLACK RIGHT POINTING INDEX
<Multi_key> <f> <less> : "☜" U261C # WHITE LEFT POINTING INDEX
<Multi_key> <f> <asciicircum> : "☝" U261D # WHITE UP POINTING INDEX
<Multi_key> <f> <greater> : "☞" U261E # WHITE RIGHT POINTING INDEX
<Multi_key> <f> <v> : "☟" U261F # WHITE DOWN POINTING INDEX
<Multi_key> <asterisk> <asterisk> : "★" starf # BLACK STAR
<Multi_key> <asterisk> <0> : "☆" star # WHITE STAR
<Multi_key> <asterisk> <x> : "❄" U2744 # SNOWFLAKE
<Multi_key> <C> <C> <C> <P> : "☭" U262D # HAMMER AND SICKLE
<Multi_key> <h> <s> : "☭" U262D # HAMMER AND SICKLE
<Multi_key> <H> <S> : "☭" U262D # HAMMER AND SICKLE
<Multi_key> <at> <slash> : "✓" check # CHECK MARK
<Multi_key> <at> <at> <slash> : "✔" U2714 # HEAVY CHECK MARK
<Multi_key> <at> <X> : "✗" cross # BALLOT X
<Multi_key> <at> <at> <X> : "✘" U2718 # HEAVY BALLOT X
<Multi_key> <o> <f> : "♀" female # FEMALE SIGN
<Multi_key> <o> <m> : "♂" male # MALE SIGN
<Multi_key> <o> <t> : "⚥" U26A5 # MALE AND FEMALE SIGN
<Multi_key> <exclam> <asciicircum> : "⚠" U26A0 # WARNING SIGN
<Multi_key> <bar> <asciicircum> : "☮" U262E # PEACE SYMBOL
<Multi_key> <y> <y> : "☯" U262F # YIN YANG
# }}}
# Hiragana {{{
<Multi_key> <h> <a> : "あ" U3042 # HIRAGANA LETTER A
<Multi_key> <h> <i> : "い" U3044 # HIRAGANA LETTER I
<Multi_key> <h> <u> : "う" U3046 # HIRAGANA LETTER U
<Multi_key> <h> <e> : "え" U3048 # HIRAGANA LETTER E
<Multi_key> <h> <o> : "お" U304A # HIRAGANA LETTER O
<Multi_key> <h> <k> <a> : "か" U304B # HIRAGANA LETTER KA
<Multi_key> <h> <k> <i> : "き" U304D # HIRAGANA LETTER KI
<Multi_key> <h> <k> <u> : "く" U304F # HIRAGANA LETTER KU
<Multi_key> <h> <k> <e> : "け" U3051 # HIRAGANA LETTER KE
<Multi_key> <h> <k> <o> : "こ" U3053 # HIRAGANA LETTER KO
<Multi_key> <h> <s> <a> : "さ" U3055 # HIRAGANA LETTER SA
<Multi_key> <h> <s> <i> : "し" U3057 # HIRAGANA LETTER SI
<Multi_key> <h> <s> <u> : "す" U3059 # HIRAGANA LETTER SU
<Multi_key> <h> <s> <e> : "せ" U305B # HIRAGANA LETTER SE
<Multi_key> <h> <s> <o> : "そ" U305D # HIRAGANA LETTER SO
<Multi_key> <h> <t> <a> : "た" U305F # HIRAGANA LETTER TA
<Multi_key> <h> <t> <i> : "ち" U3061 # HIRAGANA LETTER TI
<Multi_key> <h> <t> <u> : "つ" U3064 # HIRAGANA LETTER TU
<Multi_key> <h> <t> <e> : "て" U3066 # HIRAGANA LETTER TE
<Multi_key> <h> <t> <o> : "と" U3068 # HIRAGANA LETTER TO
<Multi_key> <h> <n> <a> : "な" U306A # HIRAGANA LETTER NA
<Multi_key> <h> <n> <i> : "に" U306B # HIRAGANA LETTER NI
<Multi_key> <h> <n> <u> : "ぬ" U306C # HIRAGANA LETTER NU
<Multi_key> <h> <n> <e> : "ね" U306D # HIRAGANA LETTER NE
<Multi_key> <h> <n> <o> : "の" U306E # HIRAGANA LETTER NO
<Multi_key> <h> <h> <a> : "は" U306F # HIRAGANA LETTER HA
<Multi_key> <h> <h> <i> : "ひ" U3072 # HIRAGANA LETTER HI
<Multi_key> <h> <h> <u> : "ふ" U3075 # HIRAGANA LETTER HU
<Multi_key> <h> <h> <e> : "へ" U3078 # HIRAGANA LETTER HE
<Multi_key> <h> <h> <o> : "ほ" U307B # HIRAGANA LETTER HO
<Multi_key> <h> <m> <a> : "ま" U307E # HIRAGANA LETTER MA
<Multi_key> <h> <m> <i> : "み" U307F # HIRAGANA LETTER MI
<Multi_key> <h> <m> <u> : "む" U3080 # HIRAGANA LETTER MU
<Multi_key> <h> <m> <e> : "め" U3081 # HIRAGANA LETTER ME
<Multi_key> <h> <m> <o> : "も" U3082 # HIRAGANA LETTER MO
<Multi_key> <h> <y> <a> : "や" U3084 # HIRAGANA LETTER YA
<Multi_key> <h> <y> <u> : "ゆ" U3086 # HIRAGANA LETTER YU
<Multi_key> <h> <y> <o> : "よ" U3088 # HIRAGANA LETTER YO
<Multi_key> <h> <r> <a> : "ら" U3089 # HIRAGANA LETTER RA
<Multi_key> <h> <r> <i> : "り" U308A # HIRAGANA LETTER RI
<Multi_key> <h> <r> <u> : "る" U308B # HIRAGANA LETTER RU
<Multi_key> <h> <r> <e> : "れ" U308C # HIRAGANA LETTER RE
<Multi_key> <h> <r> <o> : "ろ" U308D # HIRAGANA LETTER RO
<Multi_key> <h> <w> <a> : "わ" U308F # HIRAGANA LETTER WA
<Multi_key> <h> <w> <i> : "ゐ" U3090 # HIRAGANA LETTER WI
<Multi_key> <h> <w> <e> : "ゑ" U3091 # HIRAGANA LETTER WE
<Multi_key> <h> <w> <o> : "を" U3092 # HIRAGANA LETTER WO
<Multi_key> <h> <n> : "ん" U3093 # HIRAGANA LETTER N
<Multi_key> <h> <l> <y> <a> : "ゃ" U3083 # HIRAGANA LETTER SMALL YA
<Multi_key> <h> <l> <y> <u> : "ゅ" U3085 # HIRAGANA LETTER SMALL YU
<Multi_key> <h> <l> <y> <o> : "ょ" U3087 # HIRAGANA LETTER SMALL YO
<Multi_key> <h> <l> <t> <u> : "っ" U3063 # HIRAGANA LETTER SMALL TU
<Multi_key> <h> <g> <a> : "が" U304C # HIRAGANA LETTER GA
<Multi_key> <h> <g> <i> : "ぎ" U304E # HIRAGANA LETTER GI
<Multi_key> <h> <g> <u> : "ぐ" U3050 # HIRAGANA LETTER GU
<Multi_key> <h> <g> <e> : "げ" U3052 # HIRAGANA LETTER GE
<Multi_key> <h> <g> <o> : "ご" U3054 # HIRAGANA LETTER GO
<Multi_key> <h> <z> <a> : "ざ" U3056 # HIRAGANA LETTER ZA
<Multi_key> <h> <z> <i> : "じ" U3058 # HIRAGANA LETTER ZI
<Multi_key> <h> <z> <u> : "ず" U305A # HIRAGANA LETTER ZU
<Multi_key> <h> <z> <e> : "ぜ" U305C # HIRAGANA LETTER ZE
<Multi_key> <h> <z> <o> : "ぞ" U305E # HIRAGANA LETTER ZO
<Multi_key> <h> <d> <a> : "だ" U3060 # HIRAGANA LETTER DA
<Multi_key> <h> <d> <i> : "ぢ" U3062 # HIRAGANA LETTER DI
<Multi_key> <h> <d> <u> : "づ" U3065 # HIRAGANA LETTER DU
<Multi_key> <h> <d> <e> : "で" U3067 # HIRAGANA LETTER DE
<Multi_key> <h> <d> <o> : "ど" U3069 # HIRAGANA LETTER DO
<Multi_key> <h> <b> <a> : "ば" U3070 # HIRAGANA LETTER BA
<Multi_key> <h> <b> <i> : "び" U3073 # HIRAGANA LETTER BI
<Multi_key> <h> <b> <u> : "ぶ" U3076 # HIRAGANA LETTER BU
<Multi_key> <h> <b> <e> : "べ" U3079 # HIRAGANA LETTER BE
<Multi_key> <h> <b> <o> : "ぼ" U307C # HIRAGANA LETTER BO
<Multi_key> <h> <p> <a> : "ぱ" U3071 # HIRAGANA LETTER PA
<Multi_key> <h> <p> <i> : "ぴ" U3074 # HIRAGANA LETTER PI
<Multi_key> <h> <p> <u> : "ぷ" U3077 # HIRAGANA LETTER PU
<Multi_key> <h> <p> <e> : "ぺ" U307A # HIRAGANA LETTER PE
<Multi_key> <h> <p> <o> : "ぽ" U307D # HIRAGANA LETTER PO
# }}}
# Katakana {{{
<Multi_key> <k> <a> : "ア" U30A2 # KATAKANA LETTER A
<Multi_key> <k> <i> : "イ" U30A4 # KATAKANA LETTER I
<Multi_key> <k> <u> : "ウ" U30A6 # KATAKANA LETTER U
<Multi_key> <k> <e> : "エ" U30A8 # KATAKANA LETTER E
<Multi_key> <k> <o> : "オ" U30AA # KATAKANA LETTER O
<Multi_key> <k> <k> <a> : "カ" U30AB # KATAKANA LETTER KA
<Multi_key> <k> <k> <i> : "キ" U30AD # KATAKANA LETTER KI
<Multi_key> <k> <k> <u> : "ク" U30AF # KATAKANA LETTER KU
<Multi_key> <k> <k> <e> : "ケ" U30B1 # KATAKANA LETTER KE
<Multi_key> <k> <k> <o> : "コ" U30B3 # KATAKANA LETTER KO
<Multi_key> <k> <s> <a> : "サ" U30B5 # KATAKANA LETTER SA
<Multi_key> <k> <s> <i> : "シ" U30B7 # KATAKANA LETTER SI
<Multi_key> <k> <s> <u> : "ス" U30B9 # KATAKANA LETTER SU
<Multi_key> <k> <s> <e> : "セ" U30BB # KATAKANA LETTER SE
<Multi_key> <k> <s> <o> : "ソ" U30BD # KATAKANA LETTER SO
<Multi_key> <k> <t> <a> : "タ" U30BF # KATAKANA LETTER TA
<Multi_key> <k> <t> <i> : "チ" U30C1 # KATAKANA LETTER TI
<Multi_key> <k> <t> <u> : "ツ" U30C4 # KATAKANA LETTER TU
<Multi_key> <k> <t> <e> : "テ" U30C6 # KATAKANA LETTER TE
<Multi_key> <k> <t> <o> : "ト" U30C8 # KATAKANA LETTER TO
<Multi_key> <k> <n> <a> : "ナ" U30CA # KATAKANA LETTER NA
<Multi_key> <k> <n> <i> : "ニ" U30CB # KATAKANA LETTER NI
<Multi_key> <k> <n> <u> : "ヌ" U30CC # KATAKANA LETTER NU
<Multi_key> <k> <n> <e> : "ネ" U30CD # KATAKANA LETTER NE
<Multi_key> <k> <n> <o> : "" U30CE # KATAKANA LETTER NO
<Multi_key> <k> <h> <a> : "ハ" U30CF # KATAKANA LETTER HA
<Multi_key> <k> <h> <i> : "ヒ" U30D2 # KATAKANA LETTER HI
<Multi_key> <k> <h> <u> : "フ" U30D5 # KATAKANA LETTER HU
<Multi_key> <k> <h> <e> : "ヘ" U30D8 # KATAKANA LETTER HE
<Multi_key> <k> <h> <o> : "ホ" U30DB # KATAKANA LETTER HO
<Multi_key> <k> <m> <a> : "マ" U30DE # KATAKANA LETTER MA
<Multi_key> <k> <m> <i> : "ミ" U30DF # KATAKANA LETTER MI
<Multi_key> <k> <m> <u> : "ム" U30E0 # KATAKANA LETTER MU
<Multi_key> <k> <m> <e> : "メ" U30E1 # KATAKANA LETTER ME
<Multi_key> <k> <m> <o> : "モ" U30E2 # KATAKANA LETTER MO
<Multi_key> <k> <y> <a> : "ヤ" U30E4 # KATAKANA LETTER YA
<Multi_key> <k> <y> <u> : "ユ" U30E6 # KATAKANA LETTER YU
<Multi_key> <k> <y> <o> : "ヨ" U30E8 # KATAKANA LETTER YO
<Multi_key> <k> <r> <a> : "ラ" U30E9 # KATAKANA LETTER RA
<Multi_key> <k> <r> <i> : "リ" U30EA # KATAKANA LETTER RI
<Multi_key> <k> <r> <u> : "ル" U30EB # KATAKANA LETTER RU
<Multi_key> <k> <r> <e> : "レ" U30EC # KATAKANA LETTER RE
<Multi_key> <k> <r> <o> : "ロ" U30ED # KATAKANA LETTER RO
<Multi_key> <k> <w> <a> : "ワ" U30EF # KATAKANA LETTER WA
<Multi_key> <k> <w> <i> : "ヰ" U30F0 # KATAKANA LETTER WI
<Multi_key> <k> <w> <e> : "ヱ" U30F1 # KATAKANA LETTER WE
<Multi_key> <k> <w> <o> : "ヲ" U30F2 # KATAKANA LETTER WO
<Multi_key> <k> <n> : "ン" U30F3 # KATAKANA LETTER N
<Multi_key> <k> <l> <y> <a> : "ッ" U30C3 # KATAKANA LETTER SMALL TU
<Multi_key> <k> <l> <y> <u> : "ュ" U30E5 # KATAKANA LETTER SMALL YU
<Multi_key> <k> <l> <y> <o> : "ョ" U30E7 # KATAKANA LETTER SMALL YO
<Multi_key> <k> <l> <t> <u> : "ョ" U30E7 # KATAKANA LETTER SMALL YO
<Multi_key> <k> <g> <a> : "ガ" U30AC # KATAKANA LETTER GA
<Multi_key> <k> <g> <i> : "ギ" U30AE # KATAKANA LETTER GI
<Multi_key> <k> <g> <u> : "グ" U30B0 # KATAKANA LETTER GU
<Multi_key> <k> <g> <e> : "ゲ" U30B2 # KATAKANA LETTER GE
<Multi_key> <k> <g> <o> : "ゴ" U30B4 # KATAKANA LETTER GO
<Multi_key> <k> <z> <a> : "ザ" U30B6 # KATAKANA LETTER ZA
<Multi_key> <k> <z> <i> : "ジ" U30B8 # KATAKANA LETTER ZI
<Multi_key> <k> <z> <u> : "ズ" U30BA # KATAKANA LETTER ZU
<Multi_key> <k> <z> <e> : "ゼ" U30BC # KATAKANA LETTER ZE
<Multi_key> <k> <z> <o> : "ゾ" U30BE # KATAKANA LETTER ZO
<Multi_key> <k> <d> <a> : "ダ" U30C0 # KATAKANA LETTER DA
<Multi_key> <k> <d> <i> : "ヂ" U30C2 # KATAKANA LETTER DI
<Multi_key> <k> <d> <u> : "ヅ" U30C5 # KATAKANA LETTER DU
<Multi_key> <k> <d> <e> : "デ" U30C7 # KATAKANA LETTER DE
<Multi_key> <k> <d> <o> : "ド" U30C9 # KATAKANA LETTER DO
<Multi_key> <k> <b> <a> : "バ" U30D0 # KATAKANA LETTER BA
<Multi_key> <k> <b> <i> : "ビ" U30D3 # KATAKANA LETTER BI
<Multi_key> <k> <b> <u> : "ブ" U30D6 # KATAKANA LETTER BU
<Multi_key> <k> <b> <e> : "ベ" U30D9 # KATAKANA LETTER BE
<Multi_key> <k> <b> <o> : "ボ" U30DC # KATAKANA LETTER BO
<Multi_key> <k> <p> <a> : "パ" U30D1 # KATAKANA LETTER PA
<Multi_key> <k> <p> <i> : "ピ" U30D4 # KATAKANA LETTER PI
<Multi_key> <k> <p> <u> : "プ" U30D7 # KATAKANA LETTER PU
<Multi_key> <k> <p> <e> : "ペ" U30DA # KATAKANA LETTER PE
<Multi_key> <k> <p> <o> : "ポ" U30DD # KATAKANA LETTER PO
# }}}
# Japanese numerals {{{
<Multi_key> <j> <O> : "" U3007 # IDEOGRAPHIC NUMBER ZERO
<Multi_key> <j> <0> : "零" U96F6 # CJK Ideograph &#x96F6;
<Multi_key> <j> <1> : "一" U4E00 # <CJK Ideograph, First> &#x4E00;
<Multi_key> <j> <2> : "二" U4E8C # CJK Ideograph &#x4E8C;
<Multi_key> <j> <3> : "三" U4E09 # CJK Ideograph &#x4E09;
<Multi_key> <j> <4> : "四" U56DB # CJK Ideograph &#x56DB;
<Multi_key> <j> <5> : "五" U4E94 # CJK Ideograph &#x4E94;
<Multi_key> <j> <6> : "六" U516D # CJK Ideograph &#x516D;
<Multi_key> <j> <7> : "七" U4E03 # CJK Ideograph &#x4E03;
<Multi_key> <j> <8> : "八" U516B # CJK Ideograph &#x516B;
<Multi_key> <j> <9> : "九" U4E5D # CJK Ideograph &#x4E5D;
<Multi_key> <j> <x> <1> : "十" U5341 # CJK Ideograph &#x5341;
<Multi_key> <j> <x> <2> : "百" U767E # CJK Ideograph &#x767E;
<Multi_key> <j> <x> <3> : "千" U5343 # CJK Ideograph &#x5343;
<Multi_key> <j> <x> <4> : "万" U4E07 # CJK Ideograph &#x4E07;
# }}}
# Roman numerals {{{
<Multi_key> <percent> <0> <1> : "" U2160 # ROMAN NUMERAL ONE
<Multi_key> <percent> <0> <2> : "Ⅱ" U2161 # ROMAN NUMERAL TWO
<Multi_key> <percent> <0> <3> : "Ⅲ" U2162 # ROMAN NUMERAL THREE
<Multi_key> <percent> <0> <4> : "Ⅳ" U2163 # ROMAN NUMERAL FOUR
<Multi_key> <percent> <0> <5> : "" U2164 # ROMAN NUMERAL FIVE
<Multi_key> <percent> <0> <6> : "Ⅵ" U2165 # ROMAN NUMERAL SIX
<Multi_key> <percent> <0> <7> : "Ⅶ" U2166 # ROMAN NUMERAL SEVEN
<Multi_key> <percent> <0> <8> : "Ⅷ" U2167 # ROMAN NUMERAL EIGHT
<Multi_key> <percent> <0> <9> : "Ⅸ" U2168 # ROMAN NUMERAL NINE
<Multi_key> <percent> <X> : "" U2169 # ROMAN NUMERAL TEN
<Multi_key> <percent> <L> : "" U216C # ROMAN NUMERAL FIFTY
<Multi_key> <percent> <C> : "" U216D # ROMAN NUMERAL ONE HUNDRED
<Multi_key> <percent> <D> : "" U216E # ROMAN NUMERAL FIVE HUNDRED
<Multi_key> <percent> <M> : "" U216F # ROMAN NUMERAL ONE THOUSAND
# }}}
# Ligatures {{{
<Multi_key> <o> <e> : "œ" oelig # LATIN SMALL LIGATURE OE
<Multi_key> <O> <E> : "Œ" OElig # LATIN CAPITAL LIGATURE OE
<Multi_key> <a> <e> : "æ" aelig # LATIN SMALL LETTER AE
<Multi_key> <A> <E> : "Æ" AElig # LATIN CAPITAL LETTER AE
<Multi_key> <f> <f> : "ff" fflig # LATIN SMALL LIGATURE FF
<Multi_key> <f> <i> : "fi" filig # LATIN SMALL LIGATURE FI
<Multi_key> <f> <l> : "fl" fllig # LATIN SMALL LIGATURE FL
<Multi_key> <F> <i> : "ffi" ffilig # LATIN SMALL LIGATURE FFI
<Multi_key> <F> <l> : "ffl" ffllig # LATIN SMALL LIGATURE FFL
<Multi_key> <I> <J> : "IJ" IJlig # LATIN CAPITAL LIGATURE IJ
# }}}
# Other letters {{{
<Multi_key> <acute> <A> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE
<Multi_key> <A> <acute> : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE
<Multi_key> <asciicircum> <A> : "Â" Acirc # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
<Multi_key> <A> <asciicircum> : "Â" Acirc # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
<Multi_key> <grave> <A> : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE
<Multi_key> <A> <grave> : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE
<Multi_key> <underscore> <A> : "Ā" Amacr # LATIN CAPITAL LETTER A WITH MACRON
<Multi_key> <A> <underscore> : "Ā" Amacr # LATIN CAPITAL LETTER A WITH MACRON
<Multi_key> <quotedbl> <A> : "Ä" Auml # LATIN CAPITAL LETTER A WITH DIAERESIS
<Multi_key> <A> <quotedbl> : "Ä" Auml # LATIN CAPITAL LETTER A WITH DIAERESIS
<Multi_key> <comma> <C> : "Ç" Ccedil # LATIN CAPITAL LETTER C WITH CEDILLA
<Multi_key> <C> <comma> : "Ç" Ccedil # LATIN CAPITAL LETTER C WITH CEDILLA
<Multi_key> <minus> <D> : "Đ" Dstrok # LATIN CAPITAL LETTER D WITH STROKE
<Multi_key> <D> <minus> : "Đ" Dstrok # LATIN CAPITAL LETTER D WITH STROKE
<Multi_key> <acute> <E> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE
<Multi_key> <E> <acute> : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE
<Multi_key> <asciicircum> <E> : "Ê" Ecirc # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
<Multi_key> <E> <asciicircum> : "Ê" Ecirc # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
<Multi_key> <grave> <E> : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE
<Multi_key> <E> <grave> : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE
<Multi_key> <underscore> <E> : "Ē" Emacr # LATIN CAPITAL LETTER E WITH MACRON
<Multi_key> <E> <underscore> : "Ē" Emacr # LATIN CAPITAL LETTER E WITH MACRON
<Multi_key> <quotedbl> <E> : "Ë" Euml # LATIN CAPITAL LETTER E WITH DIAERESIS
<Multi_key> <E> <quotedbl> : "Ë" Euml # LATIN CAPITAL LETTER E WITH DIAERESIS
<Multi_key> <minus> <H> : "Ħ" Hstrok # LATIN CAPITAL LETTER H WITH STROKE
<Multi_key> <H> <minus> : "Ħ" Hstrok # LATIN CAPITAL LETTER H WITH STROKE
<Multi_key> <acute> <I> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE
<Multi_key> <I> <acute> : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE
<Multi_key> <asciicircum> <I> : "Î" Icirc # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
<Multi_key> <I> <asciicircum> : "Î" Icirc # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
<Multi_key> <grave> <I> : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE
<Multi_key> <I> <grave> : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE
<Multi_key> <underscore> <I> : "Ī" Imacr # LATIN CAPITAL LETTER I WITH MACRON
<Multi_key> <I> <underscore> : "Ī" Imacr # LATIN CAPITAL LETTER I WITH MACRON
<Multi_key> <minus> <I> : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE
<Multi_key> <I> <minus> : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE
<Multi_key> <quotedbl> <I> : "Ï" Iuml # LATIN CAPITAL LETTER I WITH DIAERESIS
<Multi_key> <I> <quotedbl> : "Ï" Iuml # LATIN CAPITAL LETTER I WITH DIAERESIS
<Multi_key> <slash> <L> : "Ł" Lstrok # LATIN CAPITAL LETTER L WITH STROKE
<Multi_key> <L> <slash> : "Ł" Lstrok # LATIN CAPITAL LETTER L WITH STROKE
<Multi_key> <asciitilde> <N> : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE
<Multi_key> <N> <asciitilde> : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE
<Multi_key> <acute> <O> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE
<Multi_key> <O> <acute> : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE
<Multi_key> <asciicircum> <O> : "Ô" Ocirc # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
<Multi_key> <O> <asciicircum> : "Ô" Ocirc # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
<Multi_key> <grave> <O> : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE
<Multi_key> <O> <grave> : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE
<Multi_key> <underscore> <O> : "Ō" Omacr # LATIN CAPITAL LETTER O WITH MACRON
<Multi_key> <O> <underscore> : "Ō" Omacr # LATIN CAPITAL LETTER O WITH MACRON
<Multi_key> <slash> <O> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE
<Multi_key> <O> <slash> : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE
<Multi_key> <asciitilde> <O> : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE
<Multi_key> <O> <asciitilde> : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE
<Multi_key> <quotedbl> <O> : "Ö" Ouml # LATIN CAPITAL LETTER O WITH DIAERESIS
<Multi_key> <O> <quotedbl> : "Ö" Ouml # LATIN CAPITAL LETTER O WITH DIAERESIS
<Multi_key> <acute> <U> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE
<Multi_key> <U> <acute> : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE
<Multi_key> <asciicircum> <U> : "Û" Ucirc # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
<Multi_key> <U> <asciicircum> : "Û" Ucirc # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
<Multi_key> <grave> <U> : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE
<Multi_key> <U> <grave> : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE
<Multi_key> <underscore> <U> : "Ū" Umacr # LATIN CAPITAL LETTER U WITH MACRON
<Multi_key> <U> <underscore> : "Ū" Umacr # LATIN CAPITAL LETTER U WITH MACRON
<Multi_key> <quotedbl> <U> : "Ü" Uuml # LATIN CAPITAL LETTER U WITH DIAERESIS
<Multi_key> <U> <quotedbl> : "Ü" Uuml # LATIN CAPITAL LETTER U WITH DIAERESIS
<Multi_key> <acute> <Y> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE
<Multi_key> <Y> <acute> : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE
<Multi_key> <asciicircum> <Y> : "Ŷ" Ycirc # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
<Multi_key> <Y> <asciicircum> : "Ŷ" Ycirc # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
<Multi_key> <Y> <grave> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
<Multi_key> <grave> <Y> : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE
<Multi_key> <quotedbl> <Y> : "Ÿ" Yuml # LATIN CAPITAL LETTER Y WITH DIAERESIS
<Multi_key> <Y> <quotedbl> : "Ÿ" Yuml # LATIN CAPITAL LETTER Y WITH DIAERESIS
<Multi_key> <acute> <a> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE
<Multi_key> <a> <acute> : "á" aacute # LATIN SMALL LETTER A WITH ACUTE
<Multi_key> <asciicircum> <a> : "â" acirc # LATIN SMALL LETTER A WITH CIRCUMFLEX
<Multi_key> <a> <asciicircum> : "â" acirc # LATIN SMALL LETTER A WITH CIRCUMFLEX
<Multi_key> <grave> <a> : "à" agrave # LATIN SMALL LETTER A WITH GRAVE
<Multi_key> <a> <grave> : "à" agrave # LATIN SMALL LETTER A WITH GRAVE
<Multi_key> <underscore> <a> : "ā" amacr # LATIN SMALL LETTER A WITH MACRON
<Multi_key> <a> <underscore> : "ā" amacr # LATIN SMALL LETTER A WITH MACRON
<Multi_key> <asciitilde> <a> : "ã" atilde # LATIN SMALL LETTER A WITH TILDE
<Multi_key> <a> <asciitilde> : "ã" atilde # LATIN SMALL LETTER A WITH TILDE
<Multi_key> <quotedbl> <a> : "ä" auml # LATIN SMALL LETTER A WITH DIAERESIS
<Multi_key> <a> <quotedbl> : "ä" auml # LATIN SMALL LETTER A WITH DIAERESIS
<Multi_key> <comma> <c> : "ç" ccedil # LATIN SMALL LETTER C WITH CEDILLA
<Multi_key> <c> <comma> : "ç" ccedil # LATIN SMALL LETTER C WITH CEDILLA
<Multi_key> <minus> <d> : "đ" dstrok # LATIN SMALL LETTER D WITH STROKE
<Multi_key> <d> <minus> : "đ" dstrok # LATIN SMALL LETTER D WITH STROKE
<Multi_key> <acute> <e> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE
<Multi_key> <e> <acute> : "é" eacute # LATIN SMALL LETTER E WITH ACUTE
<Multi_key> <asciicircum> <e> : "ê" ecirc # LATIN SMALL LETTER E WITH CIRCUMFLEX
<Multi_key> <e> <asciicircum> : "ê" ecirc # LATIN SMALL LETTER E WITH CIRCUMFLEX
<Multi_key> <grave> <e> : "è" egrave # LATIN SMALL LETTER E WITH GRAVE
<Multi_key> <e> <grave> : "è" egrave # LATIN SMALL LETTER E WITH GRAVE
<Multi_key> <underscore> <e> : "ē" emacr # LATIN SMALL LETTER E WITH MACRON
<Multi_key> <e> <underscore> : "ē" emacr # LATIN SMALL LETTER E WITH MACRON
<Multi_key> <quotedbl> <e> : "ë" euml # LATIN SMALL LETTER E WITH DIAERESIS
<Multi_key> <e> <quotedbl> : "ë" euml # LATIN SMALL LETTER E WITH DIAERESIS
<Multi_key> <minus> <h> : "ħ" hstrok # LATIN SMALL LETTER H WITH STROKE
<Multi_key> <h> <minus> : "ħ" hstrok # LATIN SMALL LETTER H WITH STROKE
<Multi_key> <acute> <i> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE
<Multi_key> <i> <acute> : "í" iacute # LATIN SMALL LETTER I WITH ACUTE
<Multi_key> <asciicircum> <i> : "î" icirc # LATIN SMALL LETTER I WITH CIRCUMFLEX
<Multi_key> <i> <asciicircum> : "î" icirc # LATIN SMALL LETTER I WITH CIRCUMFLEX
<Multi_key> <grave> <i> : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE
<Multi_key> <i> <grave> : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE
<Multi_key> <underscore> <i> : "ī" imacr # LATIN SMALL LETTER I WITH MACRON
<Multi_key> <i> <underscore> : "ī" imacr # LATIN SMALL LETTER I WITH MACRON
<Multi_key> <i> <period> : "ı" inodot # LATIN SMALL LETTER DOTLESS I
<Multi_key> <period> <i> : "ı" inodot # LATIN SMALL LETTER DOTLESS I
<Multi_key> <quotedbl> <i> : "ï" iuml # LATIN SMALL LETTER I WITH DIAERESIS
<Multi_key> <i> <quotedbl> : "ï" iuml # LATIN SMALL LETTER I WITH DIAERESIS
<Multi_key> <slash> <l> : "ł" lstrok # LATIN SMALL LETTER L WITH STROKE
<Multi_key> <l> <slash> : "ł" lstrok # LATIN SMALL LETTER L WITH STROKE
<Multi_key> <asciitilde> <n> : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE
<Multi_key> <n> <asciitilde> : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE
<Multi_key> <acute> <o> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE
<Multi_key> <o> <acute> : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE
<Multi_key> <asciicircum> <o> : "ô" ocirc # LATIN SMALL LETTER O WITH CIRCUMFLEX
<Multi_key> <o> <asciicircum> : "ô" ocirc # LATIN SMALL LETTER O WITH CIRCUMFLEX
<Multi_key> <grave> <o> : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE
<Multi_key> <o> <grave> : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE
<Multi_key> <underscore> <o> : "ō" omacr # LATIN SMALL LETTER O WITH MACRON
<Multi_key> <o> <underscore> : "ō" omacr # LATIN SMALL LETTER O WITH MACRON
<Multi_key> <slash> <o> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE
<Multi_key> <o> <slash> : "ø" oslash # LATIN SMALL LETTER O WITH STROKE
<Multi_key> <asciitilde> <o> : "õ" otilde # LATIN SMALL LETTER O WITH TILDE
<Multi_key> <o> <asciitilde> : "õ" otilde # LATIN SMALL LETTER O WITH TILDE
<Multi_key> <quotedbl> <o> : "ö" ouml # LATIN SMALL LETTER O WITH DIAERESIS
<Multi_key> <o> <quotedbl> : "ö" ouml # LATIN SMALL LETTER O WITH DIAERESIS
<Multi_key> <acute> <u> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE
<Multi_key> <u> <acute> : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE
<Multi_key> <asciicircum> <u> : "û" ucirc # LATIN SMALL LETTER U WITH CIRCUMFLEX
<Multi_key> <u> <asciicircum> : "û" ucirc # LATIN SMALL LETTER U WITH CIRCUMFLEX
<Multi_key> <grave> <u> : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE
<Multi_key> <u> <grave> : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE
<Multi_key> <underscore> <u> : "ū" umacr # LATIN SMALL LETTER U WITH MACRON
<Multi_key> <u> <underscore> : "ū" umacr # LATIN SMALL LETTER U WITH MACRON
<Multi_key> <quotedbl> <u> : "ü" uuml # LATIN SMALL LETTER U WITH DIAERESIS
<Multi_key> <u> <quotedbl> : "ü" uuml # LATIN SMALL LETTER U WITH DIAERESIS
<Multi_key> <acute> <y> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE
<Multi_key> <y> <acute> : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE
<Multi_key> <asciicircum> <y> : "ŷ" ycirc # LATIN SMALL LETTER Y WITH CIRCUMFLEX
<Multi_key> <y> <asciicircum> : "ŷ" ycirc # LATIN SMALL LETTER Y WITH CIRCUMFLEX
<Multi_key> <grave> <y> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
<Multi_key> <y> <grave> : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE
<Multi_key> <quotedbl> <y> : "ÿ" yuml # LATIN SMALL LETTER Y WITH DIAERESIS
<Multi_key> <y> <quotedbl> : "ÿ" yuml # LATIN SMALL LETTER Y WITH DIAERESIS
<Multi_key> <N> <G> : "Ŋ" ENG # LATIN CAPITAL LETTER ENG
<Multi_key> <n> <g> : "ŋ" eng # LATIN SMALL LETTER ENG
<Multi_key> <D> <H> : "Ð" ETH # LATIN CAPITAL LETTER ETH
<Multi_key> <d> <h> : "ð" eth # LATIN SMALL LETTER ETH
<Multi_key> <T> <H> : "Þ" THORN # LATIN CAPITAL LETTER THORN
<Multi_key> <t> <h> : "þ" thorn # LATIN SMALL LETTER THORN
<Multi_key> <S> <S> : "ẞ" U1E9E # LATIN CAPITAL LETTER SHARP S
<Multi_key> <s> <s> : "ß" szlig # LATIN SMALL LETTER SHARP S
<Multi_key> <f> <s> : "ſ" U017F # LATIN SMALL LETTER LONG S
<Multi_key> <e> <e> : "ə" U0259 # LATIN SMALL LETTER SCHWA
<Multi_key> <s> <h> : "ʃ" U0283 # LATIN SMALL LETTER ESH
<Multi_key> <z> <h> : "ʒ" U0292 # LATIN SMALL LETTER EZH
# }}}
# vim:fdl=0:fdm=marker:ic:scs:

73
.aria2/aria2.conf Normal file
View File

@ -0,0 +1,73 @@
# Advanced Options {{{
# Restart download from scratch if the
# corresponding control file doesnt exist
allow-overwrite=true
# Always resume download.
always-resume=true
# Disable IPv6.
disable-ipv6=true
# Set the command to be executed after
# download completed but before seeding.
on-bt-download-complete=/home/johan/.aria2/notif.sh
# Set interval in seconds to output
# download progress summary.
summary-interval=0
# }}}
# Basic Options {{{
# Continue downloading a partially downloaded file.
continue=true
# }}}
# BitTorrent Specific Options {{{
# A torrent file is not written to
# the disk, but is just kept in memory.
follow-torrent=mem
# }}}
# FTP/SFTP Specific Options {{{
# Use the passive mode in FTP.
ftp-pasv=true
# Reuse connection in FTP.
ftp-reuse-connection=true
# }}}
# HTTP Specific Options {{{
# Send Accept: deflate, gzip request header.
http-accept-gzip=true
# Send HTTP authorization header only
# when it is requested by the server.
http-auth-challenge=true
# Set user agent for HTTP(S) downloads.
user-agent=curl/7.64.1
# }}}
# Metalink Specific Options {{{
# The location of the preferred server.
metalink-location=gr,jp,us,fr
# Specify preferred protocol.
metalink-preferred-protocol=https
# }}}
# vml:fdm=marker:fdl=0:

5
.aria2/notif.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
notify-send -u normal -t 2000 -i \
emblem-downloads 'Torrent' "Downloaded: $3"

81
.bash_aliases Normal file
View File

@ -0,0 +1,81 @@
# Aliases {{{
# Go to parent directory
alias ..='cd ..'
# Copy from file to clipboard
alias fcopy='xclip -sel c -i'
# ffprobe without banner
alias ffprobe='ffprobe -hide_banner'
# ffmpeg without banner
alias ffmpeg='ffmpeg -hide_banner'
# Paste to file from clipboard
alias fpaste='xclip -sel -c -o > '
# fzf with preview
alias fzfp='fzf --preview "rougify --theme base16.monokai.dark {}"'
# git diff for regular files
alias gdiff='git diff --no-index'
# maximum 7z compression
alias ultra7z='7z a -t7z -m0=lzma2:d=1024m -mx=9 -md=32m -ms=on -mfb=64 -aoa'
# vimcat with gruvbox colorscheme
alias vcat='vimcat -c "colors gruvbox"'
# Use neovim instead of vim
alias vim='nvim'
# neovim terminal shell
alias vish='nvim +term'
# youtube-dl download as flac
alias ytdl-flac='youtube-dl -x --audio-format flac --audio-quality 9'
# youtube-dl download as mp3
alias ytdl-mp3='youtube-dl -x --audio-format mp3 --audio-quality 320K'
# maximum zip compression
alias zip-max='7z a -tzip -mm=Deflate -mx=9 -mfb=128 -mpass=10 -aoa'
# }}}
# Enable color support of commands {{{
if test -x /usr/bin/dircolors; then
if test -r ~/.dir_colors; then eval "$(dircolors -b "$_")"
else eval "$(dircolors -b)"; fi
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# }}}
# ls aliases {{{
# -A: do not list implied . and ..
# -B: do not list implied entries ending with ~
# -F: append indicator (one of */=>@|) to entries
# -h: with -l and -s, print sizes like 1K 234M 2G etc.
# -H: follow symbolic links listed on the command line
# -l: use a long listing format
# -N: print entry names without quoting
# -1: list one file per line
alias ll='ls -lhAFH'
alias l1='ls -ANFH1'
alias l='ls -lhNFHB'
# }}}
# Switch between git & hub commands {{{
git() {
case "$1" in
alias|fork|pr) command git "$@" ;;
*) command hub "$@" ;;
esac
}
# }}}
# Add an alert function for long running commands {{{
alert() { # Use like so: sleep 10; alert
# shellcheck disable=SC2181
notify-send --urgency=low -i "$([ $? -eq 0 ] && printf terminal || printf error)" \
"$(history | tail -1 | sed -e 's/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//')"
}
# }}}
# Functions kept separately
test -f ~/.bash_funcs && . "$_"
# Secret ssh aliases
test -f ~/.ssh/aliases && . "$_"
# vim:set fdm=marker fdl=1:

152
.bash_funcs Normal file
View File

@ -0,0 +1,152 @@
__usage() {
if (($1 < $2)); then
printf 'Usage: %s %s\n' "${FUNCNAME[1]}" "$3"
return 0
fi
return 1
}
__isnumber() {
[[ $1 == ?([+-])+([0-9])?([.,]+([0-9])) ]]
}
count() { # Counts the number of characters in a string
__usage $# 1 '<string>' && return 1
printf '%d\n' "${#1}"
}
trim() { # Trim leading and trailing whitespace
__usage $# 1 '<string>' && return 1
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s\n' "$_"
}
dtl() { # Deletes the top lines of a file
__usage $# 2 '<file> <number>' && return 1
(($2 == 0)) && return
declare -a file
mapfile -O "$2" -tn 0 file < "$1"
printf '%s\n' "${file[@]}" > "$1"
}
dbl() { # Deletes the bottom lines of a file
__usage $# 2 '<file> <number>' && return 1
(($2 == 0)) && return
declare -a file
mapfile -tn 0 file < "$1"
printf '%s\n' "${file[@]:0:$((${#file[@]}-$2))}" > "$1"
}
rot13() { # Encodes/Decodes string in rot13
__usage $# 1 '<string>' && return 1
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "$1"
}
pictshare() { # Uploads image to pictshare
__usage $# 1 '<file>' && return 1
curl -SsX POST -F "postimage=@$1" \
https://pictshare.net/backend.php | \
awk 'BEGIN { FS="\"" } { gsub(/\\/,""); print $16 }'
}
transh() { # Uploads file to transfer.sh
__usage $# 1 '<file> [max days] [name]' && return 1
declare file
if [ -n "${3// }" ]; then file="${3// /_}"
else : "${1%/}"; : "${_##*/}"; file="${_// /%20}"; fi
curl -Ss --upload-file "$1" -H "Max-Days: ${2:1}" \
"https://transfer.sh/$file" && printf '\n'
}
svgmin() { # Minifies and formats svg for css
__usage $# 2 '< -i FILE | -s STRING >' && return 1
declare plugins randstr
plugins="$(svgo --show-plugins | awk '
BEGIN { printf "{" }
/cleanup|remove/ { printf c $2; c="," }
END { printf "}" }')"
randstr=$(tr -cd '[:alnum:]' </dev/urandom | fold -w8 | head -1)
svgo --enable="$plugins" "$@" --datauri=encoded -o "/tmp/$randstr.svg.b64"
printf "'data:image/svg+xml;UTF8,%s'\\n" "$(<"/tmp/$randstr.svg.b64")"
rm "/tmp/$randstr.svg.b64"
}
tempconv() { # Converts Fahrenheit to Celsius and vice versa
__usage $# 2 '<c | f> <degree>' && return 1
if ! __isnumber "$2"; then
printf 'The second argument must be a number.\n' >&2
return 1
fi
case "$1" in
[Ff]) printf '%d \u02DAC\n' "$((($2 - 32) * 5 / 9))"; return ;;
[Cc]) printf '%d \u02DAF\n' "$(($2 * 9 / 5 + 32))"; return ;;
*) __usage 0 1 '<c | f> <degree>' && return 1
esac
}
rgb2hex() { # Converts rgb colour to hex
__usage $# 3 '<red> <green> <blue>' && return 1
printf '#%02x%02x%02x\n' "$1" "$2" "$3"
}
hex2rgb() { # Converts hex colour to rgb
__usage $# 1 '<hex>' && return 1
declare r g b
((r="16#${1:0:2}",g="16#${1:2:2}",b="16#${1:4:2}"))
printf '%s\n' "$r $g $b"
}
shuffle() { # Shuffles letters in string
__usage $# 1 '<string>' && return 1
perl -MList::Util=shuffle -F'' \
-lane 'print shuffle @F' <<< "$1"
}
cht() { # Searches cht.sh cheatsheet
__usage $# 2 '<language> <query>' && return 1
: "${*:2}"; curl -sS4 "cht.sh/$1/${_// /+})?Q"
}
weather() { # Show weather info from wttr.in
__usage $# 1 '<place>' && return 1
curl -sS4 "wttr.in/~${1}+${2:-Greece}" | head -n -1
}
sri() { # Prints the SRI hash of a resource
__usage $# 1 '<URL> [algorithm]' && return 1
declare sha
sha="$(curl -Ss "$1" | shasum -b \
-a "${2:-384}" - | xxd -r -p | base64)"
printf 'sha%d-%s\n' "${2:-384}" "$sha"
}
myip() { # What's my ip
dig +short myip.opendns.com @resolver1.opendns.com
}
urlencode() { # Encodes string for url
__usage $# 1 '<string>' && return 1
declare LANG=C len="${#1}" char i
for ((i = 0; i < len; ++i)); do
char="${1:i:1}"
case $char in
[a-zA-Z0-9.~_-]) printf '%s' "$char" ;;
*) printf '%%%02X' "'$char" ;;
esac
done
}
urldecode() { # Decodes urlencoded string
__usage $# 1 '<string>' && return 1
printf '%b\n' "${*//%/\\x}"
}
utf8decode() { # Decodes =?UTF-8?B?...?= string
__usage $# 1 '<string>' && return 1
[[ $1 =~ ^=\?[Uu][Tt][Ff]-8\?[Bb]\?([^?]+)\?=$ ]]
printf '%s\n' "$(base64 -d <<< "${BASH_REMATCH[1]}")"
}
# vim:set ft=sh fdm=syntax fdl=0:

62
.bash_profile Normal file
View File

@ -0,0 +1,62 @@
# shellcheck disable=SC2155
# Print date on login
printf '\e[1m\e[91m%s \e[90m- \e[36m%s\e[m\n\n' \
"$(date +%A,\ %B\ %e,\ %Y)" "$(date +%Z\ %:::z)"
# Ctrl + Space to expand command
bind '\C-Space':magic-space
# Case insensitive completion
bind 'set completion-ignore-case on'
# Include hidden files in glob
shopt -s dotglob
# Save multi-line commands as one command
shopt -s cmdhist
# Set the github & gitlab tokens {{{
test -f ~/.local/tokens/github && export GITHUB_TOKEN="$(<"$_")"
test -f ~/.local/tokens/gitlab && export GITLAB_TOKEN="$(<"$_")"
# }}}
# Set the default command used by fzf
export FZF_DEFAULT_COMMAND='rg --files --hidden --follow --no-ignore'
# Set the default pager to vimpager
export PAGER=vimpager
# Set the default editor to neovim
export EDITOR=nvim
# Set the default browser to firefox
export BROWSER=firefox
# Set the android sdk directory
export ANDROID_HOME=~/.android/sdk/
# Set the path used by go
export GOPATH="$HOME/.local/go"
# Set the paths used by rubygems {{{
export GEM_HOME="$HOME/.local/ruby"
export GEM_SPEC_CACHE="$GEM_HOME/specs"
export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/2.6.0"
# }}}
# Set the search path for commands
export PATH="$HOME/.local/bin:$PATH:$GOPATH/bin:$GEM_HOME/bin:$HOME/.yarn/bin"
# Use a 256color terminal if one exists {{{
for t in {konsole,xterm,gnome}-256color; do
[ -f /usr/share/terminfo/${t:0:1}/$t ] && export TERM=$t && break
[ $t == gnome-256color ] && export TERM=xterm
done
# }}}
# Source bashrc
test -f ~/.bashrc && source ~/.bashrc
# vim:set fdm=marker fdl=1:

65
.bashrc Normal file
View File

@ -0,0 +1,65 @@
# If not running interactively, don't do anything
[[ $- =~ i ]] || return
# Make less more friendly for non-text input files
[ -x /usr/bin/lesspipe.sh ] && eval "$(SHELL=/bin/sh lesspipe.sh)"
# Define where cd looks for targets
[ -d ~/Documents/Code/GitHub ] && CDPATH='.:~/Documents/Code/GitHub'
__exit_code() {
declare -i ECODE=$?
if [[ $ECODE -ne 0 ]]; then
printf '[\033[m\033[38;5;196m%s\033[0m]──' $ECODE
fi
}
__parse_git() {
declare BRANCH
BRANCH="$(git symbolic-ref HEAD 2>/dev/null)"
if [ -n "$BRANCH" ]; then
if git status 2>/dev/null | grep -q 'nothing to commit'; then
printf ' (%s)' "${BRANCH#refs/heads/}"
else
printf ' {%s}' "${BRANCH#refs/heads/}"
fi
fi
}
# Set the primary prompt string # shellcheck disable=SC1117
PS1="┌──[\[\e[m\]\[\033[38;5;12m\]\t\[\e[m\]\[\e[m\]]──\$(__exit_code)[\[\e[m\]\[\033[38;5;166m\]\u\[\e[m\]\[\e[m\]:\[\e[m\]\[\033[38;5;168m\]\w\[\e[m\]\[\e[m\]\[\033[38;5;150m\]\$(__parse_git)\[\e[m\]]\n└─➤ $ \[\e[m\]"
# Don't record some commands
HISTIGNORE='&:[ ]*:exit:ls:cd:history:clear'
# Remove old duplicate commands
HISTCONTROL='erasedups'
# Get the history file away from $HOME
HISTFILE="$HOME/.cache/.bash_history"
# Print time of command in history
HISTTIMEFORMAT='{%Y-%m-%d %T} '
# Automatically trim long paths in the prompt
PROMPT_DIRTRIM=3
# Don't complete files with the following extensions
FIGNORE='~:.o:.swp:.pyc'
# Alias definitions
test -f ~/.bash_aliases && . "$_"
# Travis completion
test -f ~/.travis/travis.sh && . "$_"
# FZF completion
test -f /usr/share/fzf/completion.bash && . "$_"
# Uni configuration
test -f ~/.unirc.sh && . "$_"
: # ensure 0 exit code
# vim:set wrap lbr bri briopt=shift\:4:

77
.clang-format Normal file
View File

@ -0,0 +1,77 @@
---
AccessModifierOffset: 0
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignEscapedNewlines: "DontAlign"
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortFunctionsOnASingleLine: true
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterReturnType: "None"
AlwaysBreakBeforeMultilineStrings: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: "None"
BreakBeforeBraces: "Attach"
BreakBeforeTernaryOperators: false
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: "https?://"
DerivePointerAlignment: false
IncludeBlocks: "Regroup"
IncludeCategories:
- Regex: "^<.*"
Priority: 1
- Regex: "^\".*"
Priority: 2
IndentCaseLabels: true
IndentPPDirectives: "AfterHash"
IndentWidth: 4
IndentWrappedFunctionNames: true
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2
PointerAlignment: "Right"
ReflowComments: true
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: "Never"
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 4
UseTab: "Never"
---
Language: "Cpp"
AlwaysBreakTemplateDeclarations: "No"
BreakConstructorInitializers: "AfterColon"
BreakInheritanceList: "AfterColon"
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
FixNamespaceComments: true
IncludeCategories:
- Regex: "^<.*[.]h"
Priority: 1
- Regex: "^<.*"
Priority: 2
- Regex: "^\".*[.]h"
Priority: 3
- Regex: "^\".*"
Priority: 4
NamespaceIndentation: "All"
SpaceAfterTemplateKeyword: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: false
SpaceBeforeInheritanceColon: true
SpaceBeforeRangeBasedForLoopColon: true
SpacesInAngles: false
Standard: "Cpp11"
# vim:ft=yaml:

191
.clang-tidy Normal file
View File

@ -0,0 +1,191 @@
---
# See https://clang.llvm.org/extra/clang-tidy/checks/list.html
# All enabled checks are explicitly defined
Checks: >
bugprone-argument-comment,
bugprone-assert-side-effect,
bugprone-bool-pointer-implicit-conversion,
bugprone-branch-clone,
bugprone-copy-constructor-init,
bugprone-dangling-handle,
bugprone-exception-escape,
bugprone-fold-init-type,
bugprone-forward-declaration-namespace,
bugprone-forwarding-reference-overload,
bugprone-inaccurate-erase,
bugprone-incorrect-roundings,
bugprone-integer-division,
bugprone-lambda-function-name,
bugprone-macro-parentheses,
bugprone-macro-repeated-side-effects,
bugprone-misplaced-operator-in-strlen-in-alloc,
bugprone-misplaced-widening-cast,
bugprone-move-forwarding-reference,
bugprone-multiple-statement-macro,
bugprone-parent-virtual-call,
bugprone-sizeof-container,
bugprone-sizeof-expression,
bugprone-string-constructor,
bugprone-string-integer-assignment,
bugprone-string-literal-with-embedded-nul,
bugprone-suspicious-enum-usage,
bugprone-suspicious-memset-usage,
bugprone-suspicious-missing-comma,
bugprone-suspicious-semicolon,
bugprone-swapped-arguments,
bugprone-terminating-continue,
bugprone-throw-keyword-missing,
bugprone-too-small-loop-variable,
bugprone-undefined-memory-manipulation,
bugprone-undelegated-constructor,
bugprone-unhandled-self-assignment,
bugprone-unused-raii,
bugprone-unused-return-value,
bugprone-use-after-move,
cert-dcl58-cpp,
cert-env33-c,
cert-err34-c,
cert-err52-cpp,
cert-err58-cpp,
cert-err60-cpp,
cert-flp30-c,
cert-msc51-cpp,
cppcoreguidelines-avoid-goto,
cppcoreguidelines-interfaces-global-init,
cppcoreguidelines-narrowing-conversions,
cppcoreguidelines-pro-type-const-cast,
cppcoreguidelines-pro-type-member-init,
cppcoreguidelines-pro-type-static-cast-downcast,
cppcoreguidelines-slicing,
cppcoreguidelines-special-member-functions,
fuchsia-multiple-inheritance,
fuchsia-trailing-return,
fuchsia-virtual-inheritance,
google-explicit-constructor,
google-global-names-in-headers,
google-readability-casting,
google-runtime-references,
hicpp-exception-baseclass,
hicpp-multiway-paths-covered,
llvm-include-order,
llvm-namespace-comment,
misc-definitions-in-headers,
misc-misplaced-const,
misc-new-delete-overloads,
misc-non-copyable-objects,
misc-non-private-member-variables-in-classes,
misc-redundant-expression,
misc-static-assert,
misc-throw-by-value-catch-by-reference,
misc-unconventional-assign-operator,
misc-uniqueptr-reset-release,
misc-unused-alias-decls,
misc-unused-parameters,
misc-unused-using-decls,
modernize-avoid-c-arrays,
modernize-deprecated-headers,
modernize-deprecated-ios-base-aliases,
modernize-loop-convert,
modernize-make-shared,
modernize-pass-by-value,
modernize-raw-string-literal,
modernize-redundant-void-arg,
modernize-replace-auto-ptr,
modernize-return-braced-init-list,
modernize-shrink-to-fit,
modernize-use-auto,
modernize-use-bool-literals,
modernize-use-default-member-init,
modernize-use-emplace,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-override,
modernize-use-uncaught-exceptions,
performance-faster-string-find,
performance-for-range-copy,
performance-implicit-conversion-in-loop,
performance-inefficient-algorithm,
performance-inefficient-string-concatenation,
performance-inefficient-vector-operation,
performance-move-const-arg,
performance-move-constructor-init,
performance-type-promotion-in-math-fn,
performance-unnecessary-copy-initialization,
performance-unnecessary-value-param,
readability-const-return-type,
readability-container-size-empty,
readability-delete-null-pointer,
readability-deleted-default,
readability-implicit-bool-conversion,
readability-inconsistent-declaration-parameter-name,
readability-magic-numbers,
readability-misleading-indentation,
readability-misplaced-array-index,
readability-named-parameter,
readability-non-const-parameter,
readability-redundant-control-flow,
readability-redundant-declaration,
readability-redundant-function-ptr-dereference,
readability-redundant-member-init,
readability-redundant-preprocessor,
readability-redundant-smartptr-get,
readability-redundant-string-cstr,
readability-redundant-string-init,
readability-simplify-boolean-expr,
readability-simplify-subscript-expr,
readability-static-accessed-through-instance,
readability-static-definition-in-anonymous-namespace,
readability-string-compare,
readability-uniqueptr-delete-release
WarningsAsErrors: >
bugprone-assert-side-effect,
bugprone-exception-escape,
bugprone-misplaced-operator-in-strlen-in-alloc,
bugprone-misplaced-widening-cast,
bugprone-multiple-statement-macro,
bugprone-string-constructor,
bugprone-string-literal-with-embedded-nul,
bugprone-suspicious-memset-usage,
cppcoreguidelines-interfaces-global-init,
hicpp-exception-baseclass,
misc-non-copyable-objects,
performance-implicit-conversion-in-loop,
readability-misplaced-array-index,
readability-redundant-declaration,
readability-redundant-function-ptr-dereference
HeaderFilterRegex: .*
FormatStyle: file
CheckOptions:
- key: bugprone-argument-comment.StrictMode
value: true
- key: bugprone-misplaced-widening-cast.CheckImplicitCasts
value: true
- key: bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression
value: true
- key: bugprone-suspicious-string-compare.WarnOnLogicalNotComparison
value: true
- key: cppcoreguidelines-pro-type-member-init.IgnoreArrays
value: true
- key: cppcoreguidelines-pro-type-member-init.UseAssignment
value: true
- key: cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor
value: true
- key: misc-throw-by-value-catch-by-reference.WarnOnLargeObject
value: true
- key: modernize-use-default-member-init.UseAssignment
value: true
- key: performance-inefficient-string-concatenation.StrictMode
value: true
- key: readability-inconsistent-declaration-parameter-name.Strict
value: true
- key: readability-magic-numbers.IgnoredIntegerValues
value: "1;2;4;8;10"
- key: readability-magic-numbers.IgnoredFloatingPointValues
value: "1.0"
- key: readability-simplify-boolean-expr.ChainedConditionalReturn
value: true
- key: readability-simplify-boolean-expr.ChainedConditionalAssignment
value: true
# vim:ft=yaml:

View File

@ -0,0 +1,55 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<alias>
<family>monospace</family>
<prefer>
<family>Hack</family>
<family>Fira Code</family>
<family>Code New Roman</family>
<family>Fantasque Sans Mono</family>
<family>DejaVu Sans Mono</family>
</prefer>
</alias>
<alias>
<family>sans</family>
<prefer>
<family>Noto Sans</family>
<family>DejaVu Sans</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>DejaVu Serif</family>
<family>Noto Serif CJK JP</family>
</prefer>
</alias>
<dir>~/.local/share/fonts</dir>
</fontconfig>

29
.config/htop/htoprc Normal file
View File

@ -0,0 +1,29 @@
# Beware! This file is rewritten by htop when settings are changed in the interface.
# The parser is also very primitive, and not human-friendly.
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=48
sort_direction=1
hide_threads=0
hide_kernel_threads=1
hide_userland_threads=0
shadow_other_users=0
show_thread_names=0
show_program_path=1
highlight_base_name=1
highlight_megabytes=0
highlight_threads=1
tree_view=1
header_margin=1
detailed_cpu_time=0
cpu_count_from_zero=0
update_process_names=0
account_guest_in_cpu_meter=0
color_scheme=5
delay=15
left_meters=AllCPUs Memory Swap
left_meter_modes=2 2 2
right_meters=CPU LoadAverage Tasks Uptime Clock
right_meter_modes=2 2 2 2 2
# vim:ft=cfg:

28
.config/konsolerc Normal file
View File

@ -0,0 +1,28 @@
[Desktop Entry]
DefaultProfile=Default.profile
[DownloadDialog Settings]
Height 768=510
Width 1366=700
[Favorite Profiles]
Favorites=Default.profile,NvimTerm.profile
[FileDialogSize]
Height 768=619
Width 1366=1004
[MainWindow]
Height 1080=619
Height 720=370
Height 768=619
State=AAAA/wAAAAD9AAAAAAAAA+wAAAJNAAAABAAAAAQAAAAIAAAACPwAAAAA
ToolBarsMovable=Disabled
Width 1024=648
Width 1280=640
Width 1366=1004
Width 1920=1004
Window-Maximized 768x1024=true
[TabBar]
TabBarVisibility=ShowTabBarWhenNeeded

4
.config/mpv/input.conf Normal file
View File

@ -0,0 +1,4 @@
k add sub-scale -0.1
K add sub-scale +0.1
WHEEL_UP add volume 5
WHEEL_DOWN add volume -5

93
.config/mpv/mpv.conf Normal file
View File

@ -0,0 +1,93 @@
# Audio {{{
# Specify the audio output drivers to be used.
ao=alsa
# }}}
# Miscellaneous {{{
# How the player synchronizes audio and video.
video-sync=display-resample
# }}}
# Network {{{
# User agent for HTTP streaming.
user-agent="Mozilla/5.0 (X11; Linux x86_64) mpv/0.29.1"
# }}}
# OSD {{{
# Set the duration of the OSD messages in ms.
osd-duration=750
# Specify font to use for OSD.
osd-font="Fantasque Sans Mono"
# }}}
# Program Behavior {{{
# Makes mpv wait idly instead of quitting
# when there is no file to play.
idle=yes
# Always save the current playback position on quit.
save-position-on-quit=yes
# Video format/quality that is directly passed to youtube-dl.
ytdl-format=bestvideo+bestaudio
# }}}
# Screenshot {{{
# Store screenshots in this directory.
screenshot-directory=~/Pictures/
# Set the image file type used for saving screenshots.
screenshot-format=png
# Set the PNG compression level.
screenshot-png-compression=8
# Specify the filename template used to save screenshots.
screenshot-template=shot_%F_%p
# }}}
# Video {{{
# Specify the hardware video decoding API
# that should be used if possible.
hwdec=vaapi
# Specify the video output backend to be used.
vo=vaapi
# }}}
# Window {{{
# Do not terminate when playing or seeking
# beyond the end of the file.
keep-open=yes
# In multi-monitor configurations, this option
# tells mpv which screen to display the video on.
screen=1
# }}}
# Subtitles {{{
# Specify the position of subtitles on the screen.
sub-pos=95
# }}}
# vim:ft=cfg:fdm=marker:fdl=0:

36
.config/pip/pip.conf Normal file
View File

@ -0,0 +1,36 @@
[global]
# Don't periodically check PyPI to determine whether
# a new version of pip is available for download.
disable-pip-version-check = true
[download]
# Include pre-release and development versions.
pre = true
# Do not use binary packages.
no-binary = :all:
# Specify type of progress to be displayed.
progress-bar = pretty
[freeze]
# Exclude editable package from output.
exclude-editable = true
# If in a virtualenv that has global access,
# do not output globally-installed packages.
local = true
[install]
# Compile Python source files to bytecode.
compile = true
# Include pre-release and development versions.
pre = true
# Specify type of progress to be displayed.
progress-bar = pretty
[wheel]
# Include pre-release and development versions.
pre = true
# Specify type of progress to be displayed.
progress-bar = pretty
# vim:cfg=dosini:

View File

@ -0,0 +1,3 @@
glances[cpuinfo,ip,web,wifi]; python_version > '2.7'
ptpython
pynvim

14
.config/plasma-localerc Normal file
View File

@ -0,0 +1,14 @@
[Formats]
LANG=en_GB.UTF-8
LC_COLLATE=C
LC_MEASUREMENT=C
LC_MONETARY=el_GR.UTF-8
LC_NUMERIC=C
LC_TIME=C
useDetailed=true
[Translations]
LANGUAGE=en_GB
# vim:ft=cfg:

11
.config/pycodestyle Normal file
View File

@ -0,0 +1,11 @@
[pycodestyle]
# W391: blank line at end of file
# W504: line break after binary operator
# E701: multiple statements on one line (colon)
# E704: multiple statements on one line (def)
# E731: do not assign a lambda expression, use a def
ignore = W391,W504,E701,E704,E731
max_line_length = 80
# vim:ft=cfg:

View File

@ -0,0 +1,106 @@
# Default encoding to use for websites.
c.content.default_encoding = 'utf-8'
# Value to send in the Accept-Language header.
c.content.headers.accept_language = 'en_GB,en'
# User agent to send.
c.content.headers.user_agent = ' '.join([
'Mozilla/5.0',
'(X11; Linux x86_64)',
'QtWebEngine/5.12.3',
'qutebrowser/1.6.2'
])
# Allow JavaScript to read from or write to the clipboard.
c.content.javascript.can_access_clipboard = True
# Allow pdf.js to view PDF files in the browser.
c.content.pdfjs = True
# Validate SSL handshakes.
c.content.ssl_strict = True
# Enable WebGL.
c.content.webgl = False
# Editor (and arguments) to use
# for the open-editor command.
c.editor.command = [
'konsole', '-e',
'nvim', '{file}',
'-c', 'normal {line}G{column0}l'
]
# Default monospace fonts.
c.fonts.monospace = ','.join([
'Hack',
'Fira Code',
'Code New Roman',
'Fantasque Sans Mono',
'DejaVu Sans Mono'
])
# Which Chromium process model to use.
c.qt.process_model = 'process-per-site'
# Languages to use for spell checking.
c.spellcheck.languages = [
'en-GB',
'en-US',
'el-GR'
]
# List of widgets displayed in the statusbar.
c.statusbar.widgets = [
'keypress',
'url',
'history',
'tabs',
'progress'
]
# Page(s) to open at the start.
c.url.start_pages = [ # {{{1
"""https://search.disroot.org/?preferences=
eJx1lMFu2zAMhp9mvhgZtvWwkw_DimEFBrRY0l0FWmJ
szrJoiHIS7-lHJXHsdt3Fhkjx50eKUkQZfRLDwQQ8mg
R19Q28YOGYTERhf8BYiaVNO9bv07HwEJoRGqwwbJ63h
WcLPi8KRwK1R2cGPzYUpCqo131miHyaql0csYAxseV-
8JiwKgT2KAjRttWHIrXYY8ViIRYYXgo9Dhgyi4IaT6G
70daRj4IxU8u7T18fwp4CJTRiI3uvlu-73dNWQ49Rzb
reRbCdBjz__KHWnrU2tf6ifuOpQ9Ny6nDKUlv0e6N6H
HtIxOFiy6w5t4WEDcfJCHq0SX1nxC_Wooi5f3yYUy5N
waCloFT7iFgK79MRIpaOosZnJUNZ5sCQjBG2BL7s0RG
okQIYcyCHnCnGIIMHaTUitzebGubGY6nmqYRhEGP25M
-e-9Epl2kwYITcEGvtJh1Wcg01CgiS1rtaqCPkzxUrT
AD_ydePQtaY809dEwSHp7UW2EZ4XHY0iF2iHuWF9uzt
SY8ut6cECw77rK3Dh8Hm43PU1GkFP2sv1azJ-EA5y83
58bSqQRDdgDoKS2r-rWhvob8RdBNFHUFy66g9RGaT5z
P7PWkr41Rmv5C8kNdpogOWL601pXrUIU3X_kzQZrmVf
tQrQGBXXIm7iRNLyx2EpaIryRJ66fWNvZ96vQMKlyIE
8TrU7q3y52Fqz829Yi2tmN0X8Xn1CumW83qEM-KrbXO
04J8A_RpGjiRi9bqvj8NCiKWkONo0xnzWy6hcHhbLDs
v8makXlUX6493d59O_iGeW21s039-ix9Syq54et7vi-
g7omFVXueL8gm0kTfooem4oJz9sHMTuL4eaCf8=
""".replace('\n', '').replace(' ', '')
] # }}}
# Search engines which can be used via the address bar.
c.url.searchengines = {
'DEFAULT': c.url.start_pages[0] + '&q={}',
'g': 'https://google.com/?q={}',
'q': 'https://qwant.com/?q={}'
}
# Keybindings {{{0
config.bind('<Ctrl-Shift-I>', 'inspector')
config.bind(';m', 'spawn mpv {url}')
config.bind(';M', 'hint links spawn mpv {hint-url}')
# }}}
# Load autoconfig.yml
config.load_autoconfig()
# vim:fdm=marker:fdl=0:fdt=getline(v\:foldstart):

View File

@ -0,0 +1,29 @@
{
"dependencies": {
"@types/node": "^12.0.0",
"american-british-english-translator": "^0.1.2",
"coffeescript": "^2.4.1",
"cssmin": "^0.4.3",
"eslint": "^5.16.0",
"grunt-cli": "^1.3.2",
"gulp-cli": "^2.2.0",
"htmlhint": "^0.11.0",
"livescript": "^1.6.0",
"neovim": "^4.5.0",
"node-sass": "^4.12.0",
"package-json-to-readme": "^2.1.1",
"package-size": "^2.3.0",
"pug-cli": "^1.0.0-alpha6",
"pug-lint": "^2.5.0",
"stylelint": "^10.0.1",
"stylelint-scss": "^3.6.1",
"svgo": "^1.2.2",
"tern": "^0.23.0",
"ts-node": "^8.1.0",
"typescript": "^3.4.5",
"webtorrent-cli": "BlackLight/webtorrent-cli"
},
"resolutions": {
"flatten": "npm:array-flatten"
}
}

40
.config/yay/config.json Normal file
View File

@ -0,0 +1,40 @@
{
"aururl": "https://aur.archlinux.org",
"buildDir": "$HOME/.cache/yay",
"editor": "nvim",
"editorflags": "",
"makepkgbin": "makepkg",
"makepkgconf": "/etc/makepkg.conf",
"pacmanbin": "pacman",
"pacmanconf": "/etc/pacman.conf",
"tarbin": "bsdtar",
"redownload": "no",
"rebuild": "no",
"answerclean": "",
"answerdiff": "",
"answeredit": "",
"answerupgrade": "",
"gitbin": "git",
"gpgbin": "gpg2",
"gpgflags": "",
"mflags": "",
"sortby": "votes",
"gitflags": "",
"removemake": "yes",
"requestsplitn": 150,
"sortmode": 1,
"completionrefreshtime": 7,
"sudoloop": false,
"timeupdate": false,
"devel": true,
"cleanAfter": false,
"gitclone": true,
"provides": true,
"pgpfetch": true,
"upgrademenu": true,
"cleanmenu": false,
"diffmenu": false,
"editmenu": false,
"combinedupgrade": false,
"useask": true
}

23
.config/youtube-dl/config Normal file
View File

@ -0,0 +1,23 @@
# Force resume of partially downloaded files.
--continue
# Embed thumbnail in the audio as cover art.
--embed-thumbnail
# Use the specified external downloader.
--external-downloader aria2c
# Give these arguments to the external downloader.
--external-downloader-args "--file-allocation=none"
# Do not use .part files - write directly into output file.
--no-part
# Output filename template.
--output "%(title)s.%(ext)s"
# Specify a custom user agent.
--user-agent "Mozilla/5.0 (X11; Linux x86_64) youtube-dl/2019.05.20"
# vim:ft=conf:

189
.dir_colors Normal file
View File

@ -0,0 +1,189 @@
# List of TERM entries for each termtype that is colorizable
TERM gnome-256color
TERM konsole-256color
TERM putty-256color
TERM rxvt-256color
TERM rxvt-unicode256
TERM screen-256color
TERM xterm-256color
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
#
# Text color (8 colors mode) codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
#
# Background color (8 colors mode) codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#
# Text color (256 colors mode) codes:
# 38;5;$n, where $n is a number between 0 and 255. (0 has no color)
# You can use the following command to find one you like:
# for ((n=0;++n<256;)) { printf "\033[38;5;${n}m$n\033[000m "; }
#
# Background color(256 colors mode) codes:
# 38;5;$n, where $n is a number between 0 and 255. (0 has no color)
# You can use the following command to find one you like:
# for ((n=0;++n<256;)) { printf "\033[48;5;${n}m$n\033[000m "; }
# File types {{{
BLK 48;5;232;38;5;11 # block device driver
CAPABILITY 48;5;196;38;5;226 # file with capability
CHR 48;5;232;38;5;3 # character device driver
DIR 38;5;27 # directory
DOOR 38;5;5 # door
EXEC 38;5;34 # file with execute permission (+x)
FIFO 40;38;5;11 # pipe
FILE 00 # normal file, use no color at all
LINK 38;5;51 # symbolic link
MISSING 48;5;232;38;5;15 # file pointed to by an orphan link
MULTIHARDLINK 44;38;5;15 # regular file with more than one link
NORMAL 00 # global default, no color code at all
ORPHAN 48;5;232;38;5;9 # symlink to nonexistent file, or non-stat'able file
OTHER_WRITABLE 48;5;10;38;5;21 # dir that is other-writable (o+w) and not sticky
RESET 0 # reset to "normal" color
SETGID 48;5;11;38;5;16 # file that is setgid (g+s)
SETUID 48;5;196;38;5;15 # file that is setuid (u+s)
SOCK 38;5;13 # socket
STICKY 48;5;21;38;5;15 # dir with the sticky bit set (+t) and not other-writable
STICKY_OTHER_WRITABLE 48;5;10;38;5;16 # dir that is sticky and other-writable (+t,o+w)
# }}}
# File extensions {{{
# windows files (green) {{{
.bat 38;5;36
.BAT 38;5;36
.btm 38;5;36
.BTM 38;5;36
.cmd 38;5;36
.CMD 38;5;36
.com 38;5;36
.COM 38;5;36
.exe 38;5;36
.EXE 38;5;36
.lnk 38;5;36
.LNK 38;5;36
# }}}
# archives or compressed (gray) {{{
.7z 38;5;247
.ace 38;5;247
.apk 38;5;247
.arj 38;5;247
.bz 38;5;247
.bz2 38;5;247
.cpio 38;5;247
.deb 38;5;247
.dz 38;5;247
.gz 38;5;247
.jar 38;5;247
.lz 38;5;247
.lzh 38;5;247
.lzma 38;5;247
.rar 38;5;247
.rpm 38;5;247
.rz 38;5;247
.tar 38;5;247
.taz 38;5;247
.tbz 38;5;247
.tbz2 38;5;247
.tgz 38;5;247
.tlz 38;5;247
.txz 38;5;247
.tz 38;5;247
.xz 38;5;247
.z 38;5;247
.Z 38;5;247
.zip 38;5;247
.zoo 38;5;247
# }}}
# image formats (magenta) {{{
.apng 38;5;13
.bmp 38;5;13
.bpg 38;5;13
.flif 38;5;13
.gif 38;5;13
.heic 38;5;13
.heif 38;5;13
.ico 38;5;13
.icon 38;5;13
.j2k 38;5;13
.jp2 38;5;13
.jpeg 38;5;13
.jpf 38;5;13
.jpg 38;5;13
.jpm 38;5;13
.jpx 38;5;13
.mng 38;5;13
.pbm 38;5;13
.pcx 38;5;13
.pgm 38;5;13
.png 38;5;13
.ppm 38;5;13
.svg 38;5;13
.svgz 38;5;13
.tga 38;5;13
.tif 38;5;13
.tiff 38;5;13
.webp 38;5;13
.xbm 38;5;13
.xpm 38;5;13
# }}}
# video formats (orange) {{{
.anx 38;5;202
.asf 38;5;202
.avi 38;5;202
.axv 38;5;202
.cgm 38;5;202
.dl 38;5;202
.emf 38;5;202
.flc 38;5;202
.fli 38;5;202
.flv 38;5;202
.gl 38;5;202
.m2v 38;5;202
.m4v 38;5;202
.mkv 38;5;202
.mov 38;5;202
.mp4 38;5;202
.mp4v 38;5;202
.mpeg 38;5;202
.mpg 38;5;202
.nuv 38;5;202
.ogm 38;5;202
.ogv 38;5;202
.ogx 38;5;202
.pak 38;5;202
.qt 38;5;202
.rm 38;5;202
.rmvb 38;5;202
.vob 38;5;202
.wmv 38;5;202
.xcf 38;5;202
.xwd 38;5;202
.yuv 38;5;202
# }}}
# audio formats (cyan) {{{
.aac 38;5;45
.au 38;5;45
.axa 38;5;45
.flac 38;5;45
.mid 38;5;45
.midi 38;5;45
.mka 38;5;45
.mp3 38;5;45
.mpc 38;5;45
.oga 38;5;45
.ogg 38;5;45
.ra 38;5;45
.spx 38;5;45
.wav 38;5;45
.xspf 38;5;45
# }}}
# }}}
# vim:fdm=marker:fdl=1:

117
.eslintrc.json Normal file
View File

@ -0,0 +1,117 @@
{
"env": {
"browser": true,
"node": true,
"es6": true
},
"parserOptions": {
"ecmaFeatures": {"jsx": true},
"ecmaVersion": 9,
"sourceType": "script"
},
"rules": {
"accessor-pairs": ["warn", {"setWithoutGet": true}],
"array-bracket-spacing": ["warn", "never"],
"arrow-spacing": ["warn", {"after": true, "before": true}],
"block-scoped-var": "warn",
"brace-style": ["warn", "1tbs", {"allowSingleLine": true}],
"comma-dangle": ["warn", "never"],
"comma-spacing": ["warn", {"after": true}],
"comma-style": ["warn", "last"],
"complexity": ["warn", 20],
"consistent-this": ["warn", "self"],
"constructor-super": "warn",
"dot-location": ["warn", "property"],
"dot-notation": "warn",
"eol-last": "warn",
"indent": ["warn", 2, {"SwitchCase": 1}],
"key-spacing": ["warn", {"afterColon": true}],
"linebreak-style": ["warn", "unix"],
"max-nested-callbacks": ["warn", 10],
"new-cap": "warn",
"new-parens": "warn",
"no-catch-shadow": "warn",
"no-cond-assign": ["warn", "except-parens"],
"no-const-assign": "error",
"no-delete-var": "warn",
"no-div-regex": "warn",
"no-dupe-args": "warn",
"no-dupe-keys": "warn",
"no-duplicate-case": "error",
"no-empty-character-class": "warn",
"no-eq-null": "warn",
"no-ex-assign": "warn",
"no-extra-boolean-cast": "warn",
"no-extra-parens": ["warn", "functions"],
"no-extra-semi": "warn",
"no-fallthrough": "error",
"no-floating-decimal": "warn",
"no-func-assign": "warn",
"no-implicit-coercion": ["warn", {"boolean": true, "number": true}],
"no-inner-declarations": ["warn", "functions"],
"no-invalid-regexp": "error",
"no-irregular-whitespace": "warn",
"no-labels": "error",
"no-lone-blocks": "warn",
"no-lonely-if": "warn",
"no-loop-func": "warn",
"no-mixed-spaces-and-tabs": "warn",
"no-multi-spaces": "warn",
"no-multi-str": "warn",
"no-multiple-empty-lines": ["warn", {"max": 2, "maxBOF": 0, "maxEOF": 1}],
"no-negated-in-lhs": "warn",
"no-nested-ternary": "warn",
"no-new": "warn",
"no-new-func": "warn",
"no-new-object": "warn",
"no-new-require": "warn",
"no-new-wrappers": "warn",
"no-obj-calls": "warn",
"no-octal": "warn",
"no-octal-escape": "warn",
"no-path-concat": "warn",
"no-redeclare": ["warn", {"builtinGlobals": true}],
"no-regex-spaces": "warn",
"no-return-assign": ["warn", "except-parens"],
"no-script-url": "warn",
"no-self-compare": "warn",
"no-sequences": "warn",
"no-shadow": ["warn", {"builtinGlobals": true, "hoist": "functions", "allow": ["self"]}],
"no-shadow-restricted-names": "warn",
"no-spaced-func": "warn",
"no-throw-literal": "error",
"no-trailing-spaces": "warn",
"no-undef": "warn",
"no-undefined": "warn",
"no-unexpected-multiline": "warn",
"no-unneeded-ternary": "warn",
"no-unreachable": "warn",
"no-unused-expressions": "warn",
"no-use-before-define": "warn",
"no-var": "warn",
"no-void": "warn",
"no-warning-comments": ["warn", {"location": "anywhere", "terms": ["TODO", " FIXME", " BUG"]}],
"object-curly-spacing": ["warn", "never", {}],
"object-shorthand": ["warn", "always"],
"one-var": ["warn", {"const": "never", "let": "consecutive", "var": "consecutive", "separateRequires": true}],
"operator-assignment": ["warn", "always"],
"operator-linebreak": ["warn", "after"],
"prefer-const": "warn",
"quote-props": ["warn", "consistent"],
"quotes": ["warn", "single", "avoid-escape"],
"semi": ["warn", "always", {"omitLastInOneLineBlock": true}],
"space-in-parens": ["warn", "never", {}],
"spaced-comment": ["warn", "always", {}],
"valid-typeof": "error",
"wrap-iife": ["warn", "inside", {"functionPrototypeMethods": true}],
"wrap-regex": "warn",
"yoda": ["warn", "never", {"exceptRange": true}]
},
"overrides": [
{
"files": "**/*.babel.js",
"parserOptions": {"sourceType": "module"}
}
]
}

36
.gitattributes vendored Normal file
View File

@ -0,0 +1,36 @@
* text=auto linguist-detectable=true
.gitconfig linguist-language=gitconfig
*.json linguist-language=JSON
*.conf linguist-language=INI
config linguist-language=INI
htoprc linguist-language=INI
konsole/* linguist-language=INI
konsolerc linguist-language=INI
plasma-localerc linguist-language=INI
pycodestyle linguist-language=INI
config.py linguist-language=Python
Gemfile linguist-language=Ruby
*.sh linguist-language=Shell
.bash* linguist-language=Shell
vifmrc linguist-language=viml
fonts.conf linguist-language=XML
.clang-* linguist-language=YAML
# skews the stats due to its size
.XCompose linguist-language=XCompose linguist-detectable=false
# these aren't part of the dotfiles
.gitattributes linguist-detectable=false
.gitignore linguist-detectable=false
LICENSE linguist-detectable=false
README.md linguist-detectable=false

141
.gitconfig Normal file
View File

@ -0,0 +1,141 @@
[user]
email = chronobserver@disroot.org
name = ObserverOfTime
signingkey = 8A2DEA1DBAEBCA9E
[core]
editor = ${EDITOR:-nvim}
pager = ${PAGER:-vimpager}
whitespace = tabwidth=4,cr-at-eol
[credential]
helper = store
[github]
user = ObserverOfTime
[web]
browser = ${BROWSER:-firefox}
[gpg]
program = gpg2
[commit]
gpgSign = false
status = true
[status]
submoduleSummary = 1
[color "diff"]
meta = yellow
[diff]
algorithm = patience
wsErrorHighlight = all
mnemonicPrefix = true
[diff "hex"]
textconv = hexdump -v -C
[diff "pdf"]
textconv = pdfinfo
[difftool]
prompt = false
[difftool "imgdiff"]
cmd = compare "$REMOTE" "$LOCAL" png:- | \
montage -geometry 400x -font \
Liberation-Sans -label "l/%f" "$LOCAL" \
-label "diff" - -label "r/%f" "$REMOTE" x:
[merge]
tool = fugitive
[mergetool "fugitive"]
cmd = nvim -f -c \"Gvdiff\" \"$MERGED\"
keepBackup = false
[pretty]
log = format:%h %s%d [%cn] (%ad)
log-color = format:%C(cyan)%h \
%Creset%s%C(white)%d %C(yellow)[%an] %Cred(%ad)
[grep]
lineNumber = true
patternType = perl
fallbackToNoIndex = true
[alias]
last = log -1 HEAD
hist = log --date=short --graph --pretty=log
ls = log --date=short --graph --pretty=log-color --decorate
ll = log --date=short --graph --pretty=log-color --decorate --numstat
amend = commit --amend -uno -a
repush = !git commit --amend -a --no-edit && git push --force
fork-sync = "!( \
git fetch --verbose upstream && git checkout --progress master && \
git reset --hard upstream/master && git push --verbose --force )"
force-pull = "!git fetch -a && git reset --hard ${2:-origin}/${1:-master}"
create-lab = "!( \
if [ -z \"$GITLAB_TOKEN\" ]; then \
if [ -f \"$HOME/.local/tokens/gitlab\" ]; then \
GITHUB_TOKEN=\"$(< \"$HOME/.local/tokens/gitlab\" )\"; \
else \
printf \"%s%s%s\\n\" \"export GITLAB_TOKEN\" \
\"or save it in \\$HOME/.local/tokens/gitlab\" \
\"to use this command\" >2; \
fi; \
fi; \
curl -H \"Content-Type: application/json\" \
-H \"Private-Token: $GITLAB_TOKEN\" \
-sSX POST https://gitlab.com/api/v4/projects \
-d \"{\\\"name\\\": \\\"${1:?}\\\"}\"; \
printf '\n' )"
rename = "!( \
if [ -z \"$GITHUB_TOKEN\" ]; then \
if [ -f \"$HOME/.local/tokens/github\" ]; then \
GITHUB_TOKEN=\"$(< \"$HOME/.local/tokens/github\" )\"; \
else \
printf \"%s%s%s\\n\" \"export GITHUB_TOKEN\" \
\"or save it in \\$HOME/.local/tokens/github\" \
\"to use this command\" >2; \
fi; \
fi; \
user=\"$(git config --get user.name)\"; \
root=\"$(basename \"$(git rev-parse --show-toplevel)\")\"; \
curl -H \"Content-Type: application/json\" \
-H \"Authorization: Token $GITHUB_TOKEN\" \
-sSX PATCH \"https://api.github.com/repos/$user/${2:-$root}\" \
-d \"{\\\"name\\\": \\\"${1:?}\\\"}\"; \
git remote set-url \"${3:-origin}\" \"https://github.com/$user/$1\" )"
open-page = "!xdg-open \"$(basename \"$(git root)\")\""
conflicts = diff --name-only --diff-filter=U
wdiff = diff --word-diff
cdiff = diff --word-diff-regex=. --color-words
lab = !git clone git@gitlab.com:"$1" "${@:2}" "#"
aur = !git clone aur@aur.archlinux.org:"$1" "${@:2}" "#"
tmp = !git clone "${@:2}" -- "$1" "/tmp/${1##*/}" "#"
[url "git@github.com:"]
insteadOf = https://github.com/
insteadOf = http://github.com/
insteadOf = @gh:
[url "git@gitlab.com:"]
insteadOf = https://gitlab.com/
insteadOf = http://gitlab.com/
insteadOf = @gl:
[url "ssh://aur@aur.archlinux.org/"]
insteadOf = https://aur.achlinux.org/
insteadOf = http://aur.archlinux.org/
insteadOf = @aur:
[url "https://bitbucket.org/"]
insteadOf = http://bitbucket.org/
insteadOf = @bb:
# vim:set noet sw=4 ts=4:

56
.gitignore vendored Normal file
View File

@ -0,0 +1,56 @@
# XDG user dirs
Desktop/
Documents/
Downloads/
Music/
Pictures/
Public/
Templates/
Videos/
# Security
.gnupg/*
!.gnupg/*.conf
.ssh/
# Common caches
.adobe/
.atom/
.*cache/
.gem/
.macromedia/
.node-gyp/
.npm/
.cargo/
.thumbnails/
.wget-hsts
.v8flags*
# Misc commonly generated files
.bash_history
.zsh_history
.bazaar/
.dbus/
.dropbox/
.ICEauthority
.lesshst
.python_history
.sqlite_history
.psql_history
.subversion/
.wine/
.Xauthority
.xsession-errors
# Misc junk files
*~
*.bak
*.bkp
*.log
*.swp
*.tmp
# Automatically appended
node_modules/
.yarn/
.yarnrc

34
.gnupg/gpg.conf Normal file
View File

@ -0,0 +1,34 @@
# The message digest algorithm used when signing a key
cert-digest-algo SHA256
# The default key to sign with
default-key C3FC4EB6371B04CC6DDB9EA88A2DEA1DBAEBCA9E
# Use the default key as default recipient
default-recipient-self
# Never allow the following cipher algorithms
disable-cipher-algo 3DES
disable-cipher-algo BLOWFISH
# Allow invalid timestamps
ignore-time-conflict
# The server that gpg will communicate with
keyserver hkp://keys.gnupg.net
# Suppress the initial copyright message
no-greeting
# The list of personal cipher preferences
personal-cipher-preferences AES256 AES AES192 CAST5
# The list of personal digest preferences
personal-digest-preferences SHA256 SHA512 SHA384 SHA224
# The command line that should be run to view a photo ID
photo-viewer "eog %i"
# Use the following options when verifying signatures
verify-options show-photos

25
.htmlhintrc.json Normal file
View File

@ -0,0 +1,25 @@
{
"alt-require": true,
"attr-lowercase": ["viewBox"],
"attr-no-duplication": true,
"attr-unsafe-chars": true,
"attr-value-double-quotes": true,
"attr-value-not-empty": false,
"doctype-first": true,
"doctype-html5": true,
"head-script-disabled": false,
"href-abs-or-rel": false,
"id-class-ad-disabled": true,
"id-class-value": false,
"id-unique": true,
"inline-script-disabled": true,
"inline-style-disabled": false,
"space-tab-mixed-disabled": "space2",
"spec-char-escape": true,
"src-not-empty": true,
"style-disabled": true,
"tag-pair": true,
"tag-self-close": false,
"tagname-lowercase": true,
"title-require": true
}

219
.local/arch/init.sh Executable file
View File

@ -0,0 +1,219 @@
#!/bin/bash -e
# Enable multilib & add oracle repo {{{
sudo cp /etc/pacman.conf{,.bak}
sudo sed -i /etc/pacman.conf \
-e 's/^#\(Color\)/\1\nILoveCandy/' \
-e '/\[multilib\]/,/Include/s/^#//' \
-e '$ a [oracle]\nSigLevel = OptionalTrustAll' \
-e '$ a Server = http://linux.shikadi.net/arch/$repo/$arch'
# }}}
# Update system and install basic packages {{{
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Syyu
sudo pacman -S base-devel git aria2 reflector go --noconfirm
git clone https://aur.archlinux.org/yay.git /tmp/yay
(cd /tmp/yay && makepkg -sic --noconfirm)
# }}}
# Rank pacman mirrors {{{
sudo cp /etc/pacman.d/mirrorlist{,.bak}
REF_OPTS=('--country GR' '--country DE' '--country FR'
'--protocol https' '--protocol ftp' '--age 12'
'--sort rate' '--save /etc/pacman.d/mirrorlist')
# shellcheck disable=SC2068
sudo reflector ${REF_OPTS[@]}
sudo mkdir -p /etc/pacman.d/hooks
sudo tee /etc/pacman.d/hooks/mirrorupgrade.hook >/dev/null <<EOF
[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist
[Action]
Description = Updating pacman-mirrorlist with reflector
When = PostTransaction
Depends = reflector
Exec = /bin/bash -c $(printf '"reflector %s; %s"' \
"$(eval 'echo ${REF_OPTS[*]}')" \
'rm -f /etc/pacman.d/mirrorlist.pacnew')
EOF
unset REF_OPTS
# }}}
# Use aria2 for makepkg & set packager {{{
NAME="$(awk -F'[:,]' -vu="$USER" '$1 == u {print $5}' /etc/passwd)"
PACKAGER="${NAME:-ObserverOfTime} <chronobserver@disroot.org>"
ARIA='::/usr/bin/aria2c --no-conf --conf-path=/etc/aria2.conf %u -o %o'
WGET="$(wget -V | awk 'NR == 1 {print $2"/"$3}')"
sudo tee /etc/aria2.conf >/dev/null <<EOF
user-agent=${WGET:-Wget}
summary-interval=0
file-allocation=none
split=4
EOF
sudo cp /etc/makepkg.conf{,.bak}
sudo sed -i /etc/makepkg.conf \
-e "s#'ftp::.*'#'ftp$ARIA'#" \
-e "s#'http::.*'#'http$ARIA'#" \
-e "s#'https::.*'#'https$ARIA'#" \
-e "s/^#PACKAGER.*/PACKAGER='$PACKAGER'"
unset NAME PACKAGER ARIA WGET
# }}}
# Install packages via yay {{{
# shellcheck disable=SC2046,SC2086
_yay() { yay -S --$1 --needed ${*:2} $(<~/.local/arch/packages.$1.txt); }
_yay repo --noconfirm && _yay aur
unset -f _yay
# }}}
# Install local packages {{{
pip3 install --user -r ~/.config/pip/requirements.txt
pip2 install --user -r ~/.config/pip/requirements.txt
yarn global add # ~/.config/yarn/global/package.json
(cd "$GEM_HOME" && bundle install)
# }}}
# Download binaries from github {{{
ghdl() { wget https://git.io/"$1" -qO ~/.local/bin/"$2"; chmod +x "$_"; }
ghdl vhMor aria2magnet
ghdl fjlNS lnk-parse
unset -f ghdl
# }}}
# Install bash completions {{{
DIRECTORY=/etc/bash_completion.d
raw() { printf 'https://raw.githubusercontent.com/%s' "$1/$2/master/$3"; }
sudo wget -P "$DIRECTORY" \
"$(raw mbrubeck android-completion android)" \
"$(raw clerk67 ffmpeg-completion ffmpeg)" \
"$(raw eriwn gradle-completion-bash gradle-completion.bash)" \
"$(raw omakoto go-completion.bash go-completion.bash)"
sudo wget -P "$DIRECTORY" -i - <<< "$(\
for name in 7z chmod chown jq openssl usermod; do \
printf '%s\n' "$(raw scop bash-completion "completions/$name")"; \
done)"
grunt --completion=bash | sudo tee \
"$DIRECTORY/grunt-completion.bash" >/dev/null
gulp --completion=bash | sudo tee \
"$DIRECTORY/gulp-completion.bash" >/dev/null
pip completion -b | awk '1;/^complete/{print $0"2"}' | \
sudo tee "$DIRECTORY/pip-completion.bash" >/dev/null
unset -f DIRECTORY raw
# }}}
# Install from github reporisotories {{{
clone() { hub clone --depth=1 "$@" "/tmp/${1##*/}"; }
clone eli-schwartz/dotfiles.sh
(cd /tmp/dotfiles.sh && sudo make)
clone rkitover/vimpager
(cd /tmp/vimpager && sudo make PREFIX=/usr/local docs install)
clone ObserverOfTime/sddm-patema
sudo -E /tmp/sddm-patema/install.sh
# clone ObserverOfTime/PKGBUILDS
# TODO: wait for Jguer/yay#694
# }}}
# Configure grub {{{
THEME=/boot/grub/themes/Lain
PARTITION="$(df / | awk 'FNR==2 {print $1}')"
clone ObserverOfTime/grub2-theme-lain
sudo cp -r /tmp/grub2-theme-lain/Lain "$THEME"
sudo cp /etc/default/grub{,.bak}
sudo tee /etc/default/grub >/dev/null <<EOF
GRUB_DEFAULT=0
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="Arch"
GRUB_CMDLINE_LINUX_DEFAULT="profile ipv6.disable=1 resume=${PARTITION:?}"
GRUB_CMDLINE_LINUX=""
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=1600x1200x24
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_SUBMENU=true
GRUB_THEME=$THEME/theme.txt
GRUB_FONT=$THEME/fonts/DejaVuSansMono14.pf2
# vim:set ft=dosini et sw=4 ts=4:
EOF
sudo cp /boot/grub/grub.cfg{,.bak}
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo sed -i /boot/grub/grub.cfg \
-re "s/(menuentry '.* )Linux -( Fallback')/\1\2/" \
-re "s/(menuentry 'Windows)[^']*'/\1 8.1'/"
unset -f URL THEME PARTITION clone
# }}}
# Setup neovim {{{
nvim --headless +q >/dev/null
nvim --headless +PlugInstall +qa >/dev/null
sudo update-alternatives --set editor /usr/bin/nvim
sudo tee --append /etc/sudoers <<< \
'Defaults env_keep += "EDITOR"' >/dev/null
# }}}
# Setup mozilla profiles {{{
mkdir -p ~/.thunderbird ~/.mozilla/firefox
rclone sync -vv mega:/Thunderbird \
~/.thunderbird/o8q08m34.default
cat > ~/.thunderbird/profiles.ini <<'EOF'
[Profile0]
Name=default
IsRelative=1
Path=o8q08m34.default
EOF
rclone sync -vv mega:/Firefox \
~/.mozilla/firefox/6fgcqba8.dev-edition-default
cat > ~/.mozilla/firefox/profiles.ini <<'EOF'
[Profile0]
Name=dev-edition-default
IsRelative=1
Path=6fgcqba8.dev-edition-default
EOF
sudo tee /etc/pacman.d/hooks/firefox.hook >/dev/null <<EOF
[Trigger]
Operation = Upgrade
Type = File
Target = usr/bin/firefox-developer-edition
[Action]
Description = Disabling Firefox downgrade protection
When = PostTransaction
Exec = /bin/sed -e 's/"\$@"/-allow-downgrade &/' \
-i /usr/bin/firefox-developer-edition
EOF
# }}}
# Create symlinks {{{
WIN_USER=/media/windows/Users/Johnnie
winsl() { ln -s "$WIN_USER/Desktop/$1" "$HOME/${3:-$1}/$2"; }
ln -s ~/.config/yarn/global/node_modules ~/node_modules
ln -s "$WIN_USER" ~/Windows
winsl Pictures WindowsPics
winsl Music WindowsMusic
winsl Videos WindowsVids
winsl Documents WindowsDocs
winsl 'Nerd Stuff/Code' WindowsCode Documents
unset -f WIN_USER winsl
# }}}
# Set tty font {{{
sudo tee /etc/vconsole.conf >/dev/null <<'EOF'
KEYMAP=us
FONT=ter-v18n
FONT_MAP=8859-2
EOF
sudo sed -i /etc/mkinitcpio.conf \
-re 's/(^HOOKS="[^"]*)"/\1 consolefont"/'
sudo mkinitcpio -p linux
# }}}
# vim:fdm=marker:fdl=0:

View File

@ -0,0 +1,44 @@
apache-netbeans
atom-editor-bin
bear
betterdiscordctl-git
cfr
clion
clion-jre
clion-lldb
corebird
cruiser
deluge-python3-git
discord
discord-canary
discord-ptb
drawio-desktop-bin
exe-thumbnailer
google-java-format
gotop-bin
intellij-idea-ultimate-edition
iridium-deb
kde-servicemenus-rootactions
kde-thumbnailer-apk
kde-thumbnailer-epub
mkv-extractor-qt
pandoc-bin
phpstorm
pycharm-professional
rar
shellcheck-static
snapd
sublime-text-dev
syncplay-git
thunderbird-52-bin
tor-browser
ttf-ms-fonts
typora
vale-bin
waifu2x-converter-cpp
waifu2x-converter-qt-git
webp-pixbuf-loader
webtorrent-desktop-bin
winetricks-git
yarn-completion-git
yay

View File

@ -0,0 +1,125 @@
adobe-source-code-pro-fonts
aegisub
alsa-plugins
alsa-utils
ant
aria2
asar
autopep8
base-devel
cabextract
checkbashisms
clang
cmake
ctags
desmume
docx2txt
dolphin
dolphin-plugins
dos2unix
dotnet-sdk
efibootmgr
eog
eog-plugins
fd
ffmpeg
ffmpegthumbs
filezilla
firefox-developer-edition
flatpak
fontforge
fzf
gdb
gimp
git
git-lfs
gnome-maps
go
goldendict
gradle
handbrake
htop
httpie
hub
iftop
imagemagick
inkscape
jdk-openjdk
jdk8-openjdk
jq
kcolorchooser
kde-servicemenu-rootactions
kdegraphics-thumbnailers
kdenlive
kio-extras
kio-gdrive
kipi-plugins
kleopatra
krita
lib32-mesa
lib32-vulkan-intel
libreoffice-fresh
lldb
llvm
maven
mcomix
mesa
mkvtoolnix-cli
mkvtoolnix-gui
mpv
neofetch
neovim
network-manager-applet
networkmanager-openvpn
networkmanager-pptp
ntfs-3g
odt2txt
okteta
okular
optipng
oracle-instantclient-sqlplus
otf-fantasque-sans-mono
otf-fira-code
p7zip
pacman-contrib
ppsspp
pygmentize
python-jedi
python-pip
python-sphinx
python-virtualenv
python2-pip
qutebrowser
r
rclone
ripgrep
rstcheck
ruby
ruby-bundler
rubygems
screenfetch
scribus
sddm-kcm
shfmt
smplayer
steam
tor
ttf-hack
ttf-inconsolata
unzip
valgrind
vifm
vim
vint
virtualbox
vulkan-intel
wget
whois
wine
words
xf86-video-intel
yarn
youtube-dl
zathura
zathura-pdf-mupdf
zip

11
.local/ruby/Gemfile Normal file
View File

@ -0,0 +1,11 @@
source 'https://rubygems.org'
gem 'jekyll'
gem 'neovim'
gem 'rake'
gem 'rdoc'
gem 'ronn'
gem 'rouge'
gem 'sqlint'
gem 'travis'

View File

@ -0,0 +1,35 @@
[Appearance]
AntiAliasFonts=true
BoldIntense=false
ColorScheme=GreenOnBlack
Font=Hack,12,-1,0,50,0,0,0,0,0,Regular
LineSpacing=1
UseFontLineChararacters=true
[Cursor Options]
CursorShape=2
[Encoding Options]
DefaultEncoding=UTF-8
[General]
Command=/bin/bash --login
Directory=~
Environment=TERM=konsole-256color,COLORTERM=truecolor
Name=Default
Parent=FALLBACK/
ShowTerminalSizeHint=true
TerminalCenter=true
TerminalColumns=100
TerminalMargin=2
TerminalRows=35
[Scrolling]
HistoryMode=1
ScrollBarPosition=2
[Terminal Features]
BlinkingCursorEnabled=true
# vim:ft=cfg:

View File

@ -0,0 +1,69 @@
# Based on lifepillar/vim-gruvbox8
[Background]
Color=40,40,40
[BackgroundIntense]
Color=40,40,40
[Color0]
Color=40,40,40
[Color0Intense]
Color=146,131,116
[Color1]
Color=204,36,29
[Color1Intense]
Color=251,73,52
[Color2]
Color=152,151,26
[Color2Intense]
Color=184,187,38
[Color3]
Color=215,153,33
[Color3Intense]
Color=250,189,47
[Color4]
Color=69,133,136
[Color4Intense]
Color=131,165,152
[Color5]
Color=177,98,134
[Color5Intense]
Color=211,134,155
[Color6]
Color=104,157,106
[Color6Intense]
Color=142,192,124
[Color7]
Color=235,219,178
[Color7Intense]
Color=213,196,161
[Foreground]
Color=235,219,178
[ForegroundIntense]
Color=213,196,161
[General]
Description=Gruvbox8
Opacity=1.0
Wallpaper=
# vim:ft=cfg:

View File

@ -0,0 +1,33 @@
[Appearance]
AntiAliasFonts=true
BoldIntense=false
ColorScheme=Gruvbox8
Font=Hack,12,-1,0,50,0,0,0,0,0,Regular
LineSpacing=1
UseFontLineChararacters=true
[Cursor Options]
CursorShape=2
[Encoding Options]
DefaultEncoding=UTF-8
[General]
Command=/bin/nvim +term
Directory=~
Environment=TERM=konsole-256color,COLORTERM=truecolor
Name=NvimTerm
Parent=FALLBACK/
TerminalCenter=true
TerminalColumns=100
TerminalMargin=2
TerminalRows=35
[Scrolling]
ScrollBarPosition=2
[Terminal Features]
BlinkingCursorEnabled=true
# vim:ft=cfg:

56
.newsboat/config Normal file
View File

@ -0,0 +1,56 @@
# All feeds will be automatically reloaded at start up
# and then continuously after a certain time has passed.
auto-reload "yes"
# Set the browser command to use when opening an article in the browser.
browser "firefox -- %u"
# This format specifies the date/time format in the article list.
datetime-format "%Y-%m-%d"
# User errors will be logged to this file.
error-log "~/.newsboat/error.log"
# Specifies which feed property shall be used for sorting.
feed-sort-order "title"
# Format string that is used for formatting notifications.
notify-format "%d new articles"
# The configured program will be executed if new articles arrived.
notify-program "~/.newsboat/notif.sh"
# The default path where articles shall be saved to.
save-path "~/Documents/RSS"
# This value will be used as HTTP User-Agent header.
user-agent "Mozilla/5.0 (X11; Linux x86_64) newsboat/2.15.0"
# Keybindings {{{
bind-key j next
bind-key k prev
bind-key J next-feed
bind-key K prev-feed
bind-key j down article
bind-key k up article
bind-key J next article
bind-key K prev article
# }}}
# Colors based on gruvbox {{{
color background color187 color235
color listnormal color187 color235
color listfocus color187 color237 bold
color listnormal_unread color107 color235
color listfocus_unread color107 color237 bold
color info color109 color233
color article color187 color235
highlight article "^[A-Z][a-z]+:" color214 color235 bold
highlight article "^\\[[0-9]+\\]:" color203 color235 bold
highlight article "(https?|ftp)://[^ ]+" color175 color235
highlight article " \\(link\\)$" color235 color235
# }}}
# vim:ft=conf:fdm=marker:fdl=1:

5
.newsboat/notif.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/sh
notify-send -u normal -t 2000 \
-i feed-subscribe 'RSS' "$@"

30
.pug-lintrc.json Normal file
View File

@ -0,0 +1,30 @@
{
"disallowAttributeInterpolation": true,
"disallowClassAttributeWithStaticValue": true,
"disallowClassLiteralsBeforeIdLiterals": true,
"disallowDuplicateAttributes": true,
"disallowIdAttributeWithStaticValue": true,
"disallowLegacyMixinCall": true,
"disallowSpacesInsideAttributeBrackets": true,
"disallowSpecificTags": ["b", "u"],
"disallowTrailingSpaces": true,
"maximumLineLength": 80,
"requireClassLiteralsBeforeAttributes": true,
"requireIdLiteralsBeforeAttributes": true,
"requireLineFeedAtFileEnd": true,
"requireLowerCaseAttributes": true,
"requireLowerCaseTags": true,
"requireSpaceAfterCodeOperator": true,
"requireSpecificAttributes": [
{"object": ["src", "type"]},
{"img": ["src", "alt"]},
{"a": ["href"]}
],
"requireStrictEqualityOperators": true,
"validateAttributeQuoteMarks": "\"",
"validateExtensions": true,
"validateIndentation": 2,
"validateLineBreaks": "LF",
"validateSelfClosingTags": true,
"validateTemplateString": true
}

117
.stylelintrc.json Normal file
View File

@ -0,0 +1,117 @@
{
"defaultSeverity": "warning",
"plugins": ["stylelint-scss"],
"rules": {
"at-rule-name-case": "lower",
"at-rule-name-space-after": "never",
"at-rule-semicolon-newline-after": "always",
"at-rule-semicolon-space-before": "never",
"block-closing-brace-empty-line-before": "never",
"block-closing-brace-newline-after": "always-single-line",
"block-closing-brace-newline-before": "always-multi-line",
"block-closing-brace-space-before": "always-single-line",
"block-opening-brace-newline-after": "always-multi-line",
"block-opening-brace-space-after": "always-single-line",
"block-opening-brace-space-before": "always-single-line",
"color-hex-case": "upper",
"color-no-invalid-hex": [true, {"severity": "error"}],
"comment-no-empty": true,
"comment-whitespace-inside": "always",
"declaration-bang-space-after": "never",
"declaration-bang-space-before": "always",
"declaration-block-no-duplicate-properties": [true, {"severity": "error"}],
"declaration-block-no-redundant-longhand-properties": true,
"declaration-block-semicolon-newline-after": "always-multi-line",
"declaration-block-semicolon-newline-before": "never-multi-line",
"declaration-block-semicolon-space-after": "always-single-line",
"declaration-block-semicolon-space-before": "never",
"declaration-colon-space-after": "always",
"declaration-colon-space-before": "never",
"declaration-empty-line-before": "never",
"font-family-name-quotes": "always-unless-keyword",
"font-family-no-duplicate-names": [true, {"severity": "error"}],
"font-family-no-missing-generic-family-keyword": true,
"font-weight-notation": "named-where-possible",
"function-calc-no-unspaced-operator": [true, {"severity": "error"}],
"function-comma-newline-before": "never-multi-line",
"function-comma-space-after": "always-single-line",
"function-comma-space-before": "never",
"function-max-empty-lines": 0,
"function-name-case": "lower",
"function-parentheses-space-inside": "never",
"function-url-no-scheme-relative": true,
"function-whitespace-after": "always",
"indentation": [2, {"indentInsideParens": "once-at-root-twice-in-block"}],
"keyframe-declaration-no-important": true,
"length-zero-no-unit": true,
"max-empty-lines": [2, {"ignore": ["comments"]}],
"max-nesting-depth": 5,
"media-feature-colon-space-after": "always",
"media-feature-colon-space-before": "never",
"media-feature-name-case": "lower",
"media-feature-name-no-unknown": [true, {"severity": "error"}],
"media-feature-parentheses-space-inside": "never",
"media-feature-range-operator-space-after": ["always", {"severity": "error"}],
"media-feature-range-operator-space-before": ["always", {"severity": "error"}],
"media-query-list-comma-newline-before": "never-multi-line",
"media-query-list-comma-space-after": "never",
"no-duplicate-at-import-rules": [true, {"severity": "error"}],
"no-duplicate-selectors": [true, {"severity": "error"}],
"no-eol-whitespace": [true, {"severity": "error"}],
"no-extra-semicolons": true,
"no-missing-end-of-source-newline": true,
"no-unknown-animations": [true, {"severity": "error"}],
"number-leading-zero": "always",
"number-no-trailing-zeros": true,
"property-case": "lower",
"property-no-unknown": [true, {"checkPrefixed": true}],
"scss/at-else-closing-brace-newline-after": "always-last-in-chain",
"scss/at-else-closing-brace-space-after": "always-intermediate",
"scss/at-else-empty-line-before": "never",
"scss/at-else-if-parentheses-space-before": "never",
"scss/at-extend-no-missing-placeholder": [true, {"severity": "error"}],
"scss/at-function-named-arguments": "never",
"scss/at-function-parentheses-space-before": "never",
"scss/at-if-closing-brace-space-after": "always-intermediate",
"scss/at-mixin-argumentless-call-parentheses": "always",
"scss/at-mixin-parentheses-space-before": "never",
"scss/at-rule-no-unknown": [true, {"severity": "error"}],
"scss/declaration-nested-properties": "never",
"scss/declaration-nested-properties-no-divided-groups": true,
"scss/dollar-variable-colon-space-after": "always-single-line",
"scss/dollar-variable-colon-space-before": "never",
"scss/dollar-variable-no-missing-interpolation": [true, {"severity": "error"}],
"scss/operator-no-newline-before": true,
"scss/operator-no-unspaced": [true, {"severity": "error"}],
"scss/selector-no-redundant-nesting-selector": true,
"selector-attribute-brackets-space-inside": "never",
"selector-attribute-operator-space-after": "never",
"selector-attribute-operator-space-before": "never",
"selector-attribute-quotes": "always",
"selector-combinator-space-after": "always",
"selector-combinator-space-before": "always",
"selector-descendant-combinator-no-non-space": true,
"selector-list-comma-newline-before": "never-multi-line",
"selector-list-comma-space-after": "always-single-line",
"selector-list-comma-space-before": "never",
"selector-pseudo-class-case": "lower",
"selector-pseudo-class-no-unknown": [true, {"severity": "error"}],
"selector-pseudo-class-parentheses-space-inside": "never",
"selector-pseudo-element-case": "lower",
"selector-pseudo-element-colon-notation": ["double", {"severity": "error"}],
"selector-pseudo-element-no-unknown": [true, {"severity": "error"}],
"selector-type-case": ["lower", {"ignoreTypes": ["foreignObject"]}],
"selector-type-no-unknown": [true, {"severity": "error", "ignoreTypes": ["foreignObject"]}],
"shorthand-property-no-redundant-values": true,
"string-no-newline": true,
"string-quotes": ["single", {"avoidEscape": true}],
"unit-case": "lower",
"unit-no-unknown": [true, {"severity": "error"}],
"value-keyword-case": "lower",
"value-list-comma-newline-after": "always-multi-line",
"value-list-comma-newline-before": "never-multi-line",
"value-list-comma-space-after": "always",
"value-list-comma-space-before": "never",
"value-list-max-empty-lines": 0
}
}

391
.vifm/vifmrc Normal file
View File

@ -0,0 +1,391 @@
" Settings {{{
" This is the actual command used to start vi
set vicmd=nvim
" This makes vifm perform file operations on its own
" instead of relying on standard utilities like cp
set syscalls
" Use vim help format
set vimhelp
" Show list of matches on tab completion in command-line mode
set wildmenu
" Display completions in a form of popup with descriptions of the matches
set wildstyle=popup
" Controls how size of directories is displayed in file views
set dirsize=nitems
" Sets characters used to fill borders
set fillchars=vborder:┊
" Use ripgrep instead of grep
set grepprg=rg\ --color=never\ -n\ %i\ %a\ %s
" Use fd instead of find
set findprg=fd\ --color=never\ %a\ %s
" What should be saved automatically between vifm runs
set vifminfo=chistory,shistory,bookmarks,bmarks
" Maximum number of stored items in all histories
set history=100
" Path to trash directory
set trashdir=~/.Trash
" Ignore case in search patterns unless
" it contains at least one uppercase letter
set ignorecase smartcase
" Automatically resolve symbolic links on l or Enter
set followlinks
" Highlight search results automatically
set hlsearch
" Use increment searching (search while typing)
set incsearch
" Format for displaying time in file list
set timefmt=%F\ %T
" Set custom status line look
set statusline=' %t%= %A %10u:%-7g %15E %20d '
" Selected color scheme
colorscheme ph
" Single pane when started via vim plugin
if $MYVIMRC != '' | only | endif
" }}}
" Commands {{{
" The following macros can be used in a command
" %a is replaced with the user arguments
" %c the current file under the cursor
" %C the current file under the cursor in the other directory
" %f the current selected file, or files
" %F the current selected file, or files in the other directory
" %b same as %f %F
" %d the current directory name
" %D the other window directory name
" %m run the command in a menu window
command! df df -h %m 2>/dev/null
command! diff nvim -d %f %F
command! make !!make %a
command! run !!./%f
" }}}
" File types {{{
" The file type is for the default programs to be used with a file extension
" The other programs for the file type can be accessed with the :file command
" The command macros %c, %C, %f, %F, %b, %d, %D may be used in the commands
" Documents {{{
filextype *.pdf,*.epub
\ {Zathura} zathura %f %i &,
\ {Okular} okular %f &,
\ {MComix} mcomix %f &,
\ {QComicBook} qcomicbook %f &
filextype *.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx
\ {Libre Office} libreoffice %f &
fileviewer *.pdf pdftotext -nopgbrk %c -
fileviewer *.epub epub2txt %c
fileviewer *.docx docx2txt %f -
fileviewer *.odt odt2txt %f
" }}}
" Audio {{{
filetype *.aac,
\*.au,
\*.axa,
\*.flac,
\*.mid,
\*.midi,
\*.mka,
\*.mp3,
\*.mpc,
\*.oga,
\*.ogg,
\*.ra,
\*.spx,
\*.wav,
\*.xspf
\ {MPV} mpv %f &
filextype *.aac,
\*.au,
\*.axa,
\*.flac,
\*.mid,
\*.midi,
\*.mka,
\*.mp3,
\*.mpc,
\*.oga,
\*.ogg,
\*.ra,
\*.spx,
\*.wav,
\*.xspf
\ {SMPlayer} smplayer %f &
fileviewer *.aac,
\*.au,
\*.axa,
\*.flac,
\*.mid,
\*.midi,
\*.mka,
\*.mp3,
\*.mpc,
\*.oga,
\*.ogg,
\*.ra,
\*.spx,
\*.wav,
\*.xspf
\ ffprobe -pretty %c 2>&1
" }}}
" Videos {{{
filextype *.anx,
\*.asf,
\*.avi,
\*.axv,
\*.cgm,
\*.dl,
\*.emf,
\*.flc,
\*.fli,
\*.flv,
\*.gl,
\*.m2v,
\*.m4v,
\*.mkv,
\*.mov,
\*.mp4,
\*.mp4v,
\*.mpeg,
\*.mpg,
\*.nuv,
\*.ogm,
\*.ogv,
\*.ogx,
\*.pak,
\*.qt,
\*.rm,
\*.rmvb,
\*.vob,
\*.wmv,
\*.xcf,
\*.xwd,
\*.yuv
\ {MPV} mpv %f &,
\ {SMPlayer} smplayer %f &
fileviewer *.anx,
\*.asf,
\*.avi,
\*.axv,
\*.cgm,
\*.dl,
\*.emf,
\*.flc,
\*.fli,
\*.flv,
\*.gl,
\*.m2v,
\*.m4v,
\*.mkv,
\*.mov,
\*.mp4,
\*.mp4v,
\*.mpeg,
\*.mpg,
\*.nuv,
\*.ogm,
\*.ogv,
\*.ogx,
\*.pak,
\*.qt,
\*.rm,
\*.rmvb,
\*.vob,
\*.wmv,
\*.xcf,
\*.xwd,
\*.yuv
\ ffprobe -pretty %c 2>&1
" }}}
" Images {{{
filextype *.apng,
\*.bmp,
\*.gif,
\*.ico,
\*.icon,
\*.j2k,
\*.jp2,
\*.jpeg,
\*.jpf,
\*.jpg,
\*.jpm,
\*.jpx,
\*.mng,
\*.pbm,
\*.pcx,
\*.pgm,
\*.png,
\*.ppm,
\*.svg,
\*.svgz,
\*.tga,
\*.tif,
\*.tiff,
\*.webp,
\*.xbm,
\*.xpm
\ {Eye of Gnome} eog %f &,
\ {Gwenview} gwenview %f &
" }}}
" Archives {{{
filextype *.7z,
\*.apk,
\*.cb7,
\*.cbr,
\*.cbz,
\*.deb,
\*.ear,
\*.jar,
\*.oxt
\*.rar,
\*.rpm,
\*.tar.br
\*.tar.bz2,
\*.tar.gz,
\*.tar.xz,
\*.tbz2,
\*.tgz,
\*.txz,
\*.war,
\*.zip
\ {Ark} ark %f &,
\ {7zFM} 7zFM %f &,
\ {File Roller} file-roller %f &
filextype *.7z,
\*.cb7,
\*.cbr,
\*.cbz,
\*.rar,
\*.zip
\ {MComix} mcomix %f &,
\ {Zathura} zathura %f &,
\ {QComicBook} qcomicbook %f &
" filetype *.deb {Install} sudo dpkg -i %f
" filetype *.rpm {Install} sudo dnf install %f
filetype *.pkg.tar,*.pkg.tar.* {Install} yay -U %f
fileviewer *.7z 7z l %c
fileviewer *.asar asar l %c
fileviewer *.rar unrar v %c
fileviewer *.tar tar tf %c
fileviewer *.tar.bz2,*.tbz2 tar tjf %c
fileviewer *.tar.gz,*.tgz tar tzf %c
fileviewer *.tar.xz,*.txz tar tJf %c
fileviewer *.zip,*.jar,*.war,*.ear,*.apk,*.oxt zip -sf %c
" }}}
" Web {{{
filextype *.html,*.htm
\ {Qutebrowser} qutebrowser %f %i &,
\ {Firefox} firefox %f &,
\ {Iridium} iridium %f &
" }}}
" Hashes {{{
filetype *.md5 {Check MD5 hash} md5sum -c %f %S
filetype *.sha1 {Check SHA1 hash} sha1sum -c %f %S
filetype *.sha256 {Check SHA256 hash} sha256sum -c %f %S
filetype *.sha512 {Check SHA512 hash} sha512sum -c %f %S
" }}}
" Torrents {{{
filetype *.torrent {Aria2} aria2c %f &
filextype *.torrent {Deluge} deluge %f &
fileviewer *.torrent dump_torrent -v %c
" }}}
" GPG files {{{
filetype *.asc,*.sig {Check signature} gpg2 --verify %c
fileviewer *.gpg gpg2 --decrypt %f
" }}}
" Binaries & objects {{{
filextype *.out,*.exe,*.bin okteta %f &
fileviewer *.out,*.exe,*.bin xxd -u %c
fileviewer *.o nm %c
" }}}
" IDE projects {{{
filextype *.pro
\ {Qt Creator} qtcreator %f &,
\ {CLion} clion %d &
filextype .idea/
\ {CLion} clion %d &,
\ {IntelliJ} intellij-idea-ultimate-edition %d &,
\ {PhpStorm} phpstorm %d &,
\ {PyCharm} pycharm %d &,
" }}}
" Directories {{{
filextype */
\ {Dolphin} dolphin %f &,
\ {Gwenview} gwenview %f &,
\ {SMPlayer} smplayer ^f &,
\ {MPV} mpv %f &
" }}}
" Other {{{
filetype * {Default} xdg-open
" }}}
" }}}
" Marks {{{
mark g ~/Documents/Code/GitHub/
mark h ~/
mark t /tmp/
mark u ~/Windows/
mark w /media/windows/
" }}}
" Mappings {{{
" Start shell in current directory
nnoremap S :shell<CR>
" Start terminal in current directory
nnoremap T :!konsole --workdir "%d" &<CR>
" Display sorting dialog
nnoremap s :sort<CR>
" Toggle wrap setting
nnoremap W :set wrap!<CR>
" Toggle visibility of preview window
nnoremap w :view<CR>
vnoremap w :view<CR>gv
" Yank current directory path into the clipboard
nnoremap yd :!xclip %i <<< "%d"<CR>
" Yank current file path into the clipboard
nnoremap yf :!xclip %i <<< "%c:p"<CR>
" Quit vifm
nnoremap Q :quit<CR>
" }}}
" vim:fdm=marker:fdl=1:

19
LICENSE Normal file
View File

@ -0,0 +1,19 @@
MIT No Attribution
Copyright (c) 2018 ObserverOfTime
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without restriction,
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

127
README.md Normal file
View File

@ -0,0 +1,127 @@
# My dotfiles
[![LICENSE](https://img.shields.io/badge/license-MIT--0-blue.svg)](LICENSE "MIT No Attribution")
Managed via [dotfiles.sh](https://github.com/eli-schwartz/dotfiles.sh)
## [Arch](https://www.archlinux.org/)
* [.local/arch/init.sh](.local/arch/init.sh): initial setup script
* [.local/arch/packages.repo.txt](.local/arch/packages.repo.txt): repo package list
* [.local/arch/packages.aur.txt](.local/arch/packages.aur.txt): AUR package list
## [Aria2](https://aria2.github.io/)
* [.aria2/aria2.conf](.aria2/aria2.conf): configuration file
* [.aria2/notif.sh](.aria2/notif.sh): `on-bt-download-complete` hook
## [Bash](https://www.gnu.org/software/bash/)
* [.bash\_aliases](.bash_aliases): contains various aliases
* [.bash\_funcs](.bash_funcs): contains various functions
* [.bash\_profile](.bash_profile): login shell configuration file
* [.bashrc](.bashrc): interactive shell configuration file
## [Clang](https://clang.llvm.org/)
* [.clang-format](.clang-format): configuration file for `clang-format`
* [.clang-tidy](.clang-tidy): configuration file for `clang-tidy`
## [Coreutils](https://www.gnu.org/software/coreutils/)
* [.dir\_colors](.dir_colors): configuration file for `dircolors`
## [ESLint](https://eslint.org/)
* [.eslintrc.json](.eslintrc.json): configuration file
## [Fontconfig](https://www.freedesktop.org/wiki/Software/fontconfig/)
* [.config/fontconfig/fonts.conf](.config/fontconfig/fonts.conf): configuration file
## [Htop](https://hisham.hm/htop/)
* [.config/htop/htoprc](.config/htop/htoprc): configuration file
## [HTMLHint](https://github.com/htmlhint/HTMLHint)
* [.htmlhintrc.json](.htmlhintrc.json): configuration file
## [Git](https://git-scm.com/)
* [.gitconfig](.gitconfig): configuration file
## [GnuPG](https://gnupg.org/)
* [.gnupg/gpg.conf](.gnupg/gpg.conf): configuration file
## [KDE Plasma](https://kde.org/plasma-desktop)
* [.config/plasma-localerc](.config/plasma-localerc): locale settings
## [Konsole](https://konsole.kde.org/)
* [.config/konsolerc](.config/konsolerc): configuration file
* [.local/share/konsole/Default.profile](.local/share/konsole/Default.profile): default profile
* [.local/share/konsole/NvimTerm.profile](.local/share/konsole/NvimTerm.profile): `nvim +term` profile
* [.local/share/konsole/Gruvbox8.colorscheme](.local/share/konsole/Gruvbox8.colorscheme): `Gruvbox8` colorscheme
## [Mpv](https://mpv.io/)
* [.config/mpv/input.conf](.config/mpv/input.conf): keybindings
* [.config/mpv/mpv.conf](.config/mpv/mpv.conf): configuration file
## [Neovim](https://neovim.io/)
> [In another repo](https://github.com/ObserverOfTime/dotnvim)
## [Newsboat](https://newsboat.org/)
* [.newsboat/config](.newsboat/config): configuration file
* [.newsboat/notif.sh](.newsboat/notif.sh): notification wrapper
## [Pip](https://pypi.org/project/pip/)
* [.config/pip/pip.conf](.config/pip/pip.conf): configuration file
* [.config/pip/requirements.txt](.config/pip/requirements.txt): package list
## [Pycodestyle](http://pycodestyle.pycqa.org/en/latest/)
* [.config/pycodestyle](.config/pycodestyle): configuration file
## [Qutebrowser](https://www.qutebrowser.org/)
* [.config/qutebrowser/config.py](.config/qutebrowser/config.py): configuration file
## [Pug-lint](https://github.com/pugjs/pug-lint)
* [.pug-lintrc.json](.pug-lintrc.json): configuration file
## [Ruby](https://www.ruby-lang.org/en/)
* [.local/ruby/Gemfile](.local/ruby/Gemfile): package list
## [Stylelint](https://stylelint.io/)
* [.stylelintrc.json](.stylelintrc.json): configuration file
## [Vifm](https://vifm.info/)
* [.vifm/vifmrc](.vifm/vifmrc): configuration file
## [X.Org](https://www.x.org/wiki/)
* [.XCompose](.XCompose): X client character mappings
## [Yarn](https://yarnpkg.com/lang/en/)
* [.config/yarn/global/package.json](.config/yarn/global/package.json): package list
## [Yay](https://github.com/Jguer/yay)
* [.config/yay/config.json](.config/yay/config.json): configuration file
## [Youtube-dl](https://ytdl-org.github.io/youtube-dl/)
* [.config/youtube-dl/config](.config/youtube-dl/config): configuration file