commit bca81582fdac1e054f3b411ad48c072818a7137f Author: ObserverOfTime Date: Tue May 28 18:44:30 2019 +0300 Initial commit diff --git a/.XCompose b/.XCompose new file mode 100644 index 0000000..6b3d700 --- /dev/null +++ b/.XCompose @@ -0,0 +1,675 @@ +# UTF-8 (Unicode) compose sequence +# {keys...} : "{glyph}" {entity|unicode number} # {unicode name} + +# Dashes & spaces {{{ + : "¯" macr # MACRON + : "¯" macr # MACRON + : "–" ndash # EN DASH + : "—" mdash # EM DASH + : "­" shy # SOFT HYPHEN + : " " nbsp # NO-BREAK SPACE + : "⍽" U237D # SHOULDERED OPEN BOX + : "〜" U301C # WAVE DASH + : "〰" U3030 # WAVY DASH + : "ー" U3007 # KATAKANA-HIRAGANA PROLONGED SOUND MARK + : "~" UFF5E # FULLWIDTH TILDE +# }}} + +# Dots {{{ + : "…" hellip # HORIZONTAL ELLIPSIS + : "⋮" vellip # VERTICAL ELLIPSIS + : "⋮" vellip # VERTICAL ELLIPSIS + : "⋰" utdot # UP RIGHT DIAGONAL ELLIPSIS + : "⋰" utdot # UP RIGHT DIAGONAL ELLIPSIS + : "⋱" dtdot # DOWN RIGHT DIAGONAL ELLIPSIS + : "⋱" dtdot # DOWN RIGHT DIAGONAL ELLIPSIS + : "·" middot # MIDDLE DOT + : "·" middot # MIDDLE DOT + : "•" bullet # BULLET + : "•" bullet # BULLET +# }}} + +# Quotation marks {{{ + : "‹" lsaquo # SINGLE LEFT-POINTING ANGLE QUOTATION MARK + : "›" rsaquo # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + : "«" laquo # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + : "»" raquo # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + : "‘" lsquo # LEFT SINGLE QUOTATION MARK + : "‘" lsquo # LEFT SINGLE QUOTATION MARK + : "’" rsquo # RIGHT SINGLE QUOTATION MARK + : "’" rsquo # RIGHT SINGLE QUOTATION MARK + : "‚" sbquo # SINGLE LOW-9 QUOTATION MARK + : "‚" sbquo # SINGLE LOW-9 QUOTATION MARK + : "“" ldquo # LEFT DOUBLE QUOTATION MARK + : "“" ldquo # LEFT DOUBLE QUOTATION MARK + : "”" rdquo # RIGHT DOUBLE QUOTATION MARK + : "”" rdquo # RIGHT DOUBLE QUOTATION MARK + : "„" bdquo # DOUBLE LOW-9 QUOTATION MARK + : "„" bdquo # DOUBLE LOW-9 QUOTATION MARK + : "「" U300C # LEFT CORNER BRACKET + : "」" U300D # RIGHT CORNER BRACKET + : "『" U300E # LEFT WHITE CORNER BRACKET + : "』" U300F # RIGHT WHITE CORNER BRACKET +# }}} + +# Currencies {{{ + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "€" euro # EURO SIGN + : "¢" cent # CENT SIGN + : "¢" cent # CENT SIGN + : "¢" cent # CENT SIGN + : "¢" cent # CENT SIGN + : "¢" cent # CENT SIGN + : "¢" cent # CENT SIGN + : "£" pound # POUND SIGN + : "£" pound # POUND SIGN + : "£" pound # POUND SIGN + : "£" pound # POUND SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "¥" yen # YEN SIGN + : "₪" U20AA # NEW SHEQEL SIGN + : "₪" U20AA # NEW SHEQEL SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN + : "¤" curren # CURRENCY SIGN +# }}} + +# Math & logic {{{ + : "ℂ" complexes # DOUBLE-STRUCK CAPITAL C + : "ℕ" naturals # DOUBLE-STRUCK CAPITAL N +

: "ℙ" primes # DOUBLE-STRUCK CAPITAL P + : "ℚ" rationals # DOUBLE-STRUCK CAPITAL Q + : "ℝ" reals # DOUBLE-STRUCK CAPITAL R + : "ℤ" integers # DOUBLE-STRUCK CAPITAL Z + : "ƒ" fnof # LATIN SMALL LETTER F WITH HOOK + : "ƒ" fnof # LATIN SMALL LETTER F WITH HOOK + : "∑" sum # N-ARY SUMMATION + : "∫" int # INTEGRAL + : "∬" Int # DOUBLE INTEGRAL + : "∇" nabla # NABLA + : "±" plusmn # PLUS-MINUS SIGN + : "∓" mnplus # MINUS-PLUS SIGN + : "×" times # MULTIPLICATION SIGN + : "÷" div # DIVISION SIGN + : "÷" div # DIVISION SIGN + : "ⁱ" U2071 # SUPERSCRIPT LATIN SMALL LETTER I + : "ⁿ" U207F # SUPERSCRIPT LATIN SMALL LETTER N + <0> : "⁰" U2070 # SUPERSCRIPT ZERO + <1> : "¹" sup1 # SUPERSCRIPT ONE + <1> : "¹" sup1 # SUPERSCRIPT ONE + <2> : "²" sup2 # SUPERSCRIPT TWO + <2> : "²" sup2 # SUPERSCRIPT TWO + <3> : "³" sup3 # SUPERSCRIPT THREE + <3> : "³" sup3 # SUPERSCRIPT THREE + <1> <2> : "½" frac12 # VULGAR FRACTION ONE HALF + : "⁺" U207A # SUPERSCRIPT PLUS SIGN + : "⁻" U207B # SUPERSCRIPT MINUS + <0> : "₀" U2080 # SUBSCRIPT ZERO + <1> : "₁" U2081 # SUBSCRIPT ONE + : "¬" not # NOT SIGN + : "¬" not # NOT SIGN + : "√" radic # SQUARE ROOT + : "√" radic # SQUARE ROOT + : "√" radic # SQUARE ROOT + <8> <8> : "∞" infin # INFINITY + : "∃" exist # THERE EXISTS + : "∄" nexist # THERE DOES NOT EXIST + : "∄" nexist # THERE DOES NOT EXIST + : "∀" forall # FOR ALL + <0> : "∅" empty # EMPTY SET + <0> : "∅" empty # EMPTY SET + : "∅" empty # EMPTY SET + : "∪" cup # UNION + : "∩" cap # INTERSECTION + : "⊂" sub # SUBSET OF + : "⊆" sube # SUBSET OF OR EQUAL TO + : "⊃" sup # SUPERSET OF + : "⊇" supe # SUPERSET OF OR EQUAL TO + : "⊄" nsub # NOT A SUBSET OF + : "≔" colone # COLON EQUALS + : "≟" equest # QUESTIONED EQUAL TO + : "≠" ne # NOT EQUAL TO + : "≠" ne # NOT EQUAL TO + : "≡" equiv # IDENTICAL TO + : "≅" cong # APPROXIMATELY EQUAL TO + : "≤" le # LESS-THAN OR EQUAL TO + : "≤" le # LESS-THAN OR EQUAL TO + : "≥" ge # GREATER-THAN OR EQUAL TO + : "≥" ge # GREATER-THAN OR EQUAL TO + <8> : "ℵ" aleph # ALEF SYMBOL + : "∧" and # LOGICAL AND + : "⊼" U22BC # NAND + : "∨" or # LOGICAL OR + : "⊽" U22BD # NOR + : "⊻" veebar # XOR + : "⊕" oplus # CIRCLED PLUS + : "⊕" oplus # CIRCLED PLUS +# }}} + +# Arrows {{{ + : "→" rarr # RIGHTWARDS ARROW + : "←" larr # LEFTWARDS ARROW + : "↓" darr # DOWNWARDS ARROW + : "↑" uarr # UPWARDS ARROW + : "↔" harr # LEFT RIGHT ARROW + : "↕" varr # UP DOWN ARROW + : "⇵" duarr # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW + : "↵" crarr # DOWNWARDS ARROW WITH CORNER LEFTWARDS + : "⇒" rArr # RIGHTWARDS DOUBLE ARROW + : "⇐" lArr # LEFTWARDS DOUBLE ARROW + : "⇑" uArr # UPWARDS DOUBLE ARROW + : "⇓" dArr # DOWNWARDS DOUBLE ARROW + : "⇔" hArr # LEFT RIGHT DOUBLE ARROW + : "⇕" vArr # UP DOWN DOUBLE ARROW +# }}} + +# Musical notes {{{ + : "♩" U2669 # QUARTER NOTE + : "♪" sung # EIGHTH NOTE + : "♫" U266B # BEAMED EIGHTH NOTES + : "♬" U266C # BEAMED SIXTEENTH NOTES + : "♭" flat # MUSIC FLAT SIGN + : "♮" natur # MUSIC NATURAL SIGN + : "♯" sharp # MUSIC SHARP SIGN + <2> : "𝅗𝅥" U1D15E # MUSICAL SYMBOL HALF NOTE + <4> : "𝅘𝅥" U1D15F # MUSICAL SYMBOL QUARTER NOTE + <8> : "𝅘𝅥𝅮" U1D160 # MUSICAL SYMBOL EIGHTH NOTE + <6> : "𝅘𝅥𝅯" U1D161 # MUSICAL SYMBOL SIXTEENTH NOTE + <3> <2> : "𝅘𝅥𝅰" U1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE + <6> <4> : "𝅘𝅥𝅱" U1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE + <1> <2> <8> : "𝅘𝅥𝅲" U1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + : "𝆹𝅥" U1D1BB # MUSICAL SYMBOL MINIMA + : "𝆺𝅥" U1D1BC # MUSICAL SYMBOL MINIMA BLACK + : "𝆹𝅥𝅮" U1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE + : "𝆺𝅥𝅮" U1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK + : "𝆹𝅥𝅯" U1D1BF # MUSICAL SYMBOL FUSA WHITE + : "𝆺𝅥𝅯" U1D1C0 # MUSICAL SYMBOL FUSA BLACK +# }}} + +# Intellectual property {{{ + : "©" copy # COPYRIGHT SIGN + : "©" copy # COPYRIGHT SIGN + : "®" reg # REGISTERED SIGN + : "®" reg # REGISTERED SIGN + : "™" trade # TRADE MARK SIGN + : "™" trade # TRADE MARK SIGN + : "🄯" U1F12F # COPYLEFT SIGN + : "🄯" U1F12F # COPYLEFT SIGN +# }}} + +# Card suits {{{ + <3> : "♥" hearts # BLACK HEART SUIT + : "♥" hearts # BLACK HEART SUIT + : "♣" clubs # BLACK CLUB SUIT + : "♠" spades # BLACK SPADE SUIT + : "♦" diams # BLACK DIAMOND SUIT + : "♡" U2661 # WHITE HEART SUIT + : "♧" U2667 # WHITE CLUB SUIT + : "♤" U2664 # WHITE SPADE SUIT + : "♢" U2662 # WHITE DIAMOND SUIT +# }}} + +# Chess {{{ + : "♔" U2654 # WHITE CHESS KING + : "♕" U2655 # WHITE CHESS QUEEN + : "♖" U2656 # WHITE CHESS ROOK + : "♗" U2657 # WHITE CHESS BISHOP + : "♘" U2658 # WHITE CHESS KNIGHT +

: "♙" U2659 # WHITE CHESS PAWN + : "♚" U265A # BLACK CHESS KING + : "♛" U265B # BLACK CHESS QUEEN + : "♜" U265C # BLACK CHESS ROOK + : "♝" U265D # BLACK CHESS BISHOP + : "♞" U265E # BLACK CHESS KNIGHT +

: "♟" U265F # BLACK CHESS PAWN +# }}} + +# Other symbols {{{ + : "°" deg # DEGREE SIGN + <0> : "°" deg # DEGREE SIGN + <0> : "°" deg # DEGREE SIGN + : "¦" brvbar # BROKEN BAR + : "¦" brvbar # BROKEN BAR + : "†" dagger # DAGGER + : "‡" ddagger # DOUBLE DAGGER + : "‖" Vert # DOUBLE VERTICAL LINE +

: "¶" para # PILCROW SIGN +

: "¶" para # PILCROW SIGN + : "¡" iexcl # INVERTED EXCLAMATION MARK + : "¿" iquest # INVERTED QUESTION MARK + : "‽" U203D # INTERROBANG + : "⸘" U2E18 # INVERTED INTERROBANG + <2> : "⁇" U2047 # DOUBLE QUESTION MARK + : "⁈" U2048 # QUESTION EXCLAMATION MARK + : "⁉" U2049 # EXCLAMATION QUESTION MARK + <2> : "‼" U203C # DOUBLE EXCLAMATION MARK + : "∷" Proportion # PROPORTION + : "、" U3001 # IDEOGRAPHIC COMMA + : "。" U3002 # IDEOGRAPHIC FULL STOP + : ":" UFF1A # FULLWIDTH COLON + : "?" UFF1F # FULLWIDTH QUESTION MARK + : "!" UFF01 # FULLWIDTH EXCLAMATION MARK + : "§" sect # SECTION SIGN + : "§" sect # SECTION SIGN + : "§" sect # SECTION SIGN + : "§" sect # SECTION SIGN + : "§" sect # SECTION SIGN + : "§" sect # SECTION SIGN + : "№" numero # NUMERO SIGN + : "№" numero # NUMERO SIGN + : "☚" U261A # BLACK LEFT POINTING INDEX + : "☛" U261B # BLACK RIGHT POINTING INDEX + : "☜" U261C # WHITE LEFT POINTING INDEX + : "☝" U261D # WHITE UP POINTING INDEX + : "☞" U261E # WHITE RIGHT POINTING INDEX + : "☟" U261F # WHITE DOWN POINTING INDEX + : "★" starf # BLACK STAR + <0> : "☆" star # WHITE STAR + : "❄" U2744 # SNOWFLAKE +

: "☭" U262D # HAMMER AND SICKLE + : "☭" U262D # HAMMER AND SICKLE + : "☭" U262D # HAMMER AND SICKLE + : "✓" check # CHECK MARK + : "✔" U2714 # HEAVY CHECK MARK + : "✗" cross # BALLOT X + : "✘" U2718 # HEAVY BALLOT X + : "♀" female # FEMALE SIGN + : "♂" male # MALE SIGN + : "⚥" U26A5 # MALE AND FEMALE SIGN + : "⚠" U26A0 # WARNING SIGN + : "☮" U262E # PEACE SYMBOL + : "☯" U262F # YIN YANG +# }}} + +# Hiragana {{{ + : "あ" U3042 # HIRAGANA LETTER A + : "い" U3044 # HIRAGANA LETTER I + : "う" U3046 # HIRAGANA LETTER U + : "え" U3048 # HIRAGANA LETTER E + : "お" U304A # HIRAGANA LETTER O + : "か" U304B # HIRAGANA LETTER KA + : "き" U304D # HIRAGANA LETTER KI + : "く" U304F # HIRAGANA LETTER KU + : "け" U3051 # HIRAGANA LETTER KE + : "こ" U3053 # HIRAGANA LETTER KO + : "さ" U3055 # HIRAGANA LETTER SA + : "し" U3057 # HIRAGANA LETTER SI + : "す" U3059 # HIRAGANA LETTER SU + : "せ" U305B # HIRAGANA LETTER SE + : "そ" U305D # HIRAGANA LETTER SO + : "た" U305F # HIRAGANA LETTER TA + : "ち" U3061 # HIRAGANA LETTER TI + : "つ" U3064 # HIRAGANA LETTER TU + : "て" U3066 # HIRAGANA LETTER TE + : "と" U3068 # HIRAGANA LETTER TO + : "な" U306A # HIRAGANA LETTER NA + : "に" U306B # HIRAGANA LETTER NI + : "ぬ" U306C # HIRAGANA LETTER NU + : "ね" U306D # HIRAGANA LETTER NE + : "の" U306E # HIRAGANA LETTER NO + : "は" U306F # HIRAGANA LETTER HA + : "ひ" U3072 # HIRAGANA LETTER HI + : "ふ" U3075 # HIRAGANA LETTER HU + : "へ" U3078 # HIRAGANA LETTER HE + : "ほ" U307B # HIRAGANA LETTER HO + : "ま" U307E # HIRAGANA LETTER MA + : "み" U307F # HIRAGANA LETTER MI + : "む" U3080 # HIRAGANA LETTER MU + : "め" U3081 # HIRAGANA LETTER ME + : "も" U3082 # HIRAGANA LETTER MO + : "や" U3084 # HIRAGANA LETTER YA + : "ゆ" U3086 # HIRAGANA LETTER YU + : "よ" U3088 # HIRAGANA LETTER YO + : "ら" U3089 # HIRAGANA LETTER RA + : "り" U308A # HIRAGANA LETTER RI + : "る" U308B # HIRAGANA LETTER RU + : "れ" U308C # HIRAGANA LETTER RE + : "ろ" U308D # HIRAGANA LETTER RO + : "わ" U308F # HIRAGANA LETTER WA + : "ゐ" U3090 # HIRAGANA LETTER WI + : "ゑ" U3091 # HIRAGANA LETTER WE + : "を" U3092 # HIRAGANA LETTER WO + : "ん" U3093 # HIRAGANA LETTER N + : "ゃ" U3083 # HIRAGANA LETTER SMALL YA + : "ゅ" U3085 # HIRAGANA LETTER SMALL YU + : "ょ" U3087 # HIRAGANA LETTER SMALL YO + : "っ" U3063 # HIRAGANA LETTER SMALL TU + : "が" U304C # HIRAGANA LETTER GA + : "ぎ" U304E # HIRAGANA LETTER GI + : "ぐ" U3050 # HIRAGANA LETTER GU + : "げ" U3052 # HIRAGANA LETTER GE + : "ご" U3054 # HIRAGANA LETTER GO + : "ざ" U3056 # HIRAGANA LETTER ZA + : "じ" U3058 # HIRAGANA LETTER ZI + : "ず" U305A # HIRAGANA LETTER ZU + : "ぜ" U305C # HIRAGANA LETTER ZE + : "ぞ" U305E # HIRAGANA LETTER ZO + : "だ" U3060 # HIRAGANA LETTER DA + : "ぢ" U3062 # HIRAGANA LETTER DI + : "づ" U3065 # HIRAGANA LETTER DU + : "で" U3067 # HIRAGANA LETTER DE + : "ど" U3069 # HIRAGANA LETTER DO + : "ば" U3070 # HIRAGANA LETTER BA + : "び" U3073 # HIRAGANA LETTER BI + : "ぶ" U3076 # HIRAGANA LETTER BU + : "べ" U3079 # HIRAGANA LETTER BE + : "ぼ" U307C # HIRAGANA LETTER BO +

: "ぱ" U3071 # HIRAGANA LETTER PA +

: "ぴ" U3074 # HIRAGANA LETTER PI +

: "ぷ" U3077 # HIRAGANA LETTER PU +

: "ぺ" U307A # HIRAGANA LETTER PE +

: "ぽ" U307D # HIRAGANA LETTER PO +# }}} + +# Katakana {{{ + : "ア" U30A2 # KATAKANA LETTER A + : "イ" U30A4 # KATAKANA LETTER I + : "ウ" U30A6 # KATAKANA LETTER U + : "エ" U30A8 # KATAKANA LETTER E + : "オ" U30AA # KATAKANA LETTER O + : "カ" U30AB # KATAKANA LETTER KA + : "キ" U30AD # KATAKANA LETTER KI + : "ク" U30AF # KATAKANA LETTER KU + : "ケ" U30B1 # KATAKANA LETTER KE + : "コ" U30B3 # KATAKANA LETTER KO + : "サ" U30B5 # KATAKANA LETTER SA + : "シ" U30B7 # KATAKANA LETTER SI + : "ス" U30B9 # KATAKANA LETTER SU + : "セ" U30BB # KATAKANA LETTER SE + : "ソ" U30BD # KATAKANA LETTER SO + : "タ" U30BF # KATAKANA LETTER TA + : "チ" U30C1 # KATAKANA LETTER TI + : "ツ" U30C4 # KATAKANA LETTER TU + : "テ" U30C6 # KATAKANA LETTER TE + : "ト" U30C8 # KATAKANA LETTER TO + : "ナ" U30CA # KATAKANA LETTER NA + : "ニ" U30CB # KATAKANA LETTER NI + : "ヌ" U30CC # KATAKANA LETTER NU + : "ネ" U30CD # KATAKANA LETTER NE + : "ノ" U30CE # KATAKANA LETTER NO + : "ハ" U30CF # KATAKANA LETTER HA + : "ヒ" U30D2 # KATAKANA LETTER HI + : "フ" U30D5 # KATAKANA LETTER HU + : "ヘ" U30D8 # KATAKANA LETTER HE + : "ホ" U30DB # KATAKANA LETTER HO + : "マ" U30DE # KATAKANA LETTER MA + : "ミ" U30DF # KATAKANA LETTER MI + : "ム" U30E0 # KATAKANA LETTER MU + : "メ" U30E1 # KATAKANA LETTER ME + : "モ" U30E2 # KATAKANA LETTER MO + : "ヤ" U30E4 # KATAKANA LETTER YA + : "ユ" U30E6 # KATAKANA LETTER YU + : "ヨ" U30E8 # KATAKANA LETTER YO + : "ラ" U30E9 # KATAKANA LETTER RA + : "リ" U30EA # KATAKANA LETTER RI + : "ル" U30EB # KATAKANA LETTER RU + : "レ" U30EC # KATAKANA LETTER RE + : "ロ" U30ED # KATAKANA LETTER RO + : "ワ" U30EF # KATAKANA LETTER WA + : "ヰ" U30F0 # KATAKANA LETTER WI + : "ヱ" U30F1 # KATAKANA LETTER WE + : "ヲ" U30F2 # KATAKANA LETTER WO + : "ン" U30F3 # KATAKANA LETTER N + : "ッ" U30C3 # KATAKANA LETTER SMALL TU + : "ュ" U30E5 # KATAKANA LETTER SMALL YU + : "ョ" U30E7 # KATAKANA LETTER SMALL YO + : "ョ" U30E7 # KATAKANA LETTER SMALL YO + : "ガ" U30AC # KATAKANA LETTER GA + : "ギ" U30AE # KATAKANA LETTER GI + : "グ" U30B0 # KATAKANA LETTER GU + : "ゲ" U30B2 # KATAKANA LETTER GE + : "ゴ" U30B4 # KATAKANA LETTER GO + : "ザ" U30B6 # KATAKANA LETTER ZA + : "ジ" U30B8 # KATAKANA LETTER ZI + : "ズ" U30BA # KATAKANA LETTER ZU + : "ゼ" U30BC # KATAKANA LETTER ZE + : "ゾ" U30BE # KATAKANA LETTER ZO + : "ダ" U30C0 # KATAKANA LETTER DA + : "ヂ" U30C2 # KATAKANA LETTER DI + : "ヅ" U30C5 # KATAKANA LETTER DU + : "デ" U30C7 # KATAKANA LETTER DE + : "ド" U30C9 # KATAKANA LETTER DO + : "バ" U30D0 # KATAKANA LETTER BA + : "ビ" U30D3 # KATAKANA LETTER BI + : "ブ" U30D6 # KATAKANA LETTER BU + : "ベ" U30D9 # KATAKANA LETTER BE + : "ボ" U30DC # KATAKANA LETTER BO +

: "パ" U30D1 # KATAKANA LETTER PA +

: "ピ" U30D4 # KATAKANA LETTER PI +

: "プ" U30D7 # KATAKANA LETTER PU +

: "ペ" U30DA # KATAKANA LETTER PE +

: "ポ" U30DD # KATAKANA LETTER PO +# }}} + +# Japanese numerals {{{ + : "〇" U3007 # IDEOGRAPHIC NUMBER ZERO + <0> : "零" U96F6 # CJK Ideograph 零 + <1> : "一" U4E00 # 一 + <2> : "二" U4E8C # CJK Ideograph 二 + <3> : "三" U4E09 # CJK Ideograph 三 + <4> : "四" U56DB # CJK Ideograph 四 + <5> : "五" U4E94 # CJK Ideograph 五 + <6> : "六" U516D # CJK Ideograph 六 + <7> : "七" U4E03 # CJK Ideograph 七 + <8> : "八" U516B # CJK Ideograph 八 + <9> : "九" U4E5D # CJK Ideograph 九 + <1> : "十" U5341 # CJK Ideograph 十 + <2> : "百" U767E # CJK Ideograph 百 + <3> : "千" U5343 # CJK Ideograph 千 + <4> : "万" U4E07 # CJK Ideograph 万 +# }}} + +# Roman numerals {{{ + <0> <1> : "Ⅰ" U2160 # ROMAN NUMERAL ONE + <0> <2> : "Ⅱ" U2161 # ROMAN NUMERAL TWO + <0> <3> : "Ⅲ" U2162 # ROMAN NUMERAL THREE + <0> <4> : "Ⅳ" U2163 # ROMAN NUMERAL FOUR + <0> <5> : "Ⅴ" U2164 # ROMAN NUMERAL FIVE + <0> <6> : "Ⅵ" U2165 # ROMAN NUMERAL SIX + <0> <7> : "Ⅶ" U2166 # ROMAN NUMERAL SEVEN + <0> <8> : "Ⅷ" U2167 # ROMAN NUMERAL EIGHT + <0> <9> : "Ⅸ" U2168 # ROMAN NUMERAL NINE + : "Ⅹ" U2169 # ROMAN NUMERAL TEN + : "Ⅼ" U216C # ROMAN NUMERAL FIFTY + : "Ⅽ" U216D # ROMAN NUMERAL ONE HUNDRED + : "Ⅾ" U216E # ROMAN NUMERAL FIVE HUNDRED + : "Ⅿ" U216F # ROMAN NUMERAL ONE THOUSAND +# }}} + +# Ligatures {{{ + : "œ" oelig # LATIN SMALL LIGATURE OE + : "Œ" OElig # LATIN CAPITAL LIGATURE OE + : "æ" aelig # LATIN SMALL LETTER AE + : "Æ" AElig # LATIN CAPITAL LETTER AE + : "ff" fflig # LATIN SMALL LIGATURE FF + : "fi" filig # LATIN SMALL LIGATURE FI + : "fl" fllig # LATIN SMALL LIGATURE FL + : "ffi" ffilig # LATIN SMALL LIGATURE FFI + : "ffl" ffllig # LATIN SMALL LIGATURE FFL + : "IJ" IJlig # LATIN CAPITAL LIGATURE IJ +# }}} + +# Other letters {{{ + : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE + : "Á" Aacute # LATIN CAPITAL LETTER A WITH ACUTE + : "Â" Acirc # LATIN CAPITAL LETTER A WITH CIRCUMFLEX + : "Â" Acirc # LATIN CAPITAL LETTER A WITH CIRCUMFLEX + : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE + : "À" Agrave # LATIN CAPITAL LETTER A WITH GRAVE + : "Ā" Amacr # LATIN CAPITAL LETTER A WITH MACRON + : "Ā" Amacr # LATIN CAPITAL LETTER A WITH MACRON + : "Ä" Auml # LATIN CAPITAL LETTER A WITH DIAERESIS + : "Ä" Auml # LATIN CAPITAL LETTER A WITH DIAERESIS + : "Ç" Ccedil # LATIN CAPITAL LETTER C WITH CEDILLA + : "Ç" Ccedil # LATIN CAPITAL LETTER C WITH CEDILLA + : "Đ" Dstrok # LATIN CAPITAL LETTER D WITH STROKE + : "Đ" Dstrok # LATIN CAPITAL LETTER D WITH STROKE + : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE + : "É" Eacute # LATIN CAPITAL LETTER E WITH ACUTE + : "Ê" Ecirc # LATIN CAPITAL LETTER E WITH CIRCUMFLEX + : "Ê" Ecirc # LATIN CAPITAL LETTER E WITH CIRCUMFLEX + : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE + : "È" Egrave # LATIN CAPITAL LETTER E WITH GRAVE + : "Ē" Emacr # LATIN CAPITAL LETTER E WITH MACRON + : "Ē" Emacr # LATIN CAPITAL LETTER E WITH MACRON + : "Ë" Euml # LATIN CAPITAL LETTER E WITH DIAERESIS + : "Ë" Euml # LATIN CAPITAL LETTER E WITH DIAERESIS + : "Ħ" Hstrok # LATIN CAPITAL LETTER H WITH STROKE + : "Ħ" Hstrok # LATIN CAPITAL LETTER H WITH STROKE + : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE + : "Í" Iacute # LATIN CAPITAL LETTER I WITH ACUTE + : "Î" Icirc # LATIN CAPITAL LETTER I WITH CIRCUMFLEX + : "Î" Icirc # LATIN CAPITAL LETTER I WITH CIRCUMFLEX + : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE + : "Ì" Igrave # LATIN CAPITAL LETTER I WITH GRAVE + : "Ī" Imacr # LATIN CAPITAL LETTER I WITH MACRON + : "Ī" Imacr # LATIN CAPITAL LETTER I WITH MACRON + : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE + : "Ɨ" U0197 # LATIN CAPITAL LETTER I WITH STROKE + : "Ï" Iuml # LATIN CAPITAL LETTER I WITH DIAERESIS + : "Ï" Iuml # LATIN CAPITAL LETTER I WITH DIAERESIS + : "Ł" Lstrok # LATIN CAPITAL LETTER L WITH STROKE + : "Ł" Lstrok # LATIN CAPITAL LETTER L WITH STROKE + : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE + : "Ñ" Ntilde # LATIN CAPITAL LETTER N WITH TILDE + : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE + : "Ó" Oacute # LATIN CAPITAL LETTER O WITH ACUTE + : "Ô" Ocirc # LATIN CAPITAL LETTER O WITH CIRCUMFLEX + : "Ô" Ocirc # LATIN CAPITAL LETTER O WITH CIRCUMFLEX + : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE + : "Ò" Ograve # LATIN CAPITAL LETTER O WITH GRAVE + : "Ō" Omacr # LATIN CAPITAL LETTER O WITH MACRON + : "Ō" Omacr # LATIN CAPITAL LETTER O WITH MACRON + : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE + : "Ø" Oslash # LATIN CAPITAL LETTER O WITH STROKE + : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE + : "Õ" Otilde # LATIN CAPITAL LETTER O WITH TILDE + : "Ö" Ouml # LATIN CAPITAL LETTER O WITH DIAERESIS + : "Ö" Ouml # LATIN CAPITAL LETTER O WITH DIAERESIS + : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE + : "Ú" Uacute # LATIN CAPITAL LETTER U WITH ACUTE + : "Û" Ucirc # LATIN CAPITAL LETTER U WITH CIRCUMFLEX + : "Û" Ucirc # LATIN CAPITAL LETTER U WITH CIRCUMFLEX + : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE + : "Ù" Ugrave # LATIN CAPITAL LETTER U WITH GRAVE + : "Ū" Umacr # LATIN CAPITAL LETTER U WITH MACRON + : "Ū" Umacr # LATIN CAPITAL LETTER U WITH MACRON + : "Ü" Uuml # LATIN CAPITAL LETTER U WITH DIAERESIS + : "Ü" Uuml # LATIN CAPITAL LETTER U WITH DIAERESIS + : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE + : "Ý" Yacute # LATIN CAPITAL LETTER Y WITH ACUTE + : "Ŷ" Ycirc # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + : "Ŷ" Ycirc # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE + : "Ỳ" U1EF2 # LATIN CAPITAL LETTER Y WITH GRAVE + : "Ÿ" Yuml # LATIN CAPITAL LETTER Y WITH DIAERESIS + : "Ÿ" Yuml # LATIN CAPITAL LETTER Y WITH DIAERESIS + : "á" aacute # LATIN SMALL LETTER A WITH ACUTE + : "á" aacute # LATIN SMALL LETTER A WITH ACUTE + : "â" acirc # LATIN SMALL LETTER A WITH CIRCUMFLEX + : "â" acirc # LATIN SMALL LETTER A WITH CIRCUMFLEX + : "à" agrave # LATIN SMALL LETTER A WITH GRAVE + : "à" agrave # LATIN SMALL LETTER A WITH GRAVE + : "ā" amacr # LATIN SMALL LETTER A WITH MACRON + : "ā" amacr # LATIN SMALL LETTER A WITH MACRON + : "ã" atilde # LATIN SMALL LETTER A WITH TILDE + : "ã" atilde # LATIN SMALL LETTER A WITH TILDE + : "ä" auml # LATIN SMALL LETTER A WITH DIAERESIS + : "ä" auml # LATIN SMALL LETTER A WITH DIAERESIS + : "ç" ccedil # LATIN SMALL LETTER C WITH CEDILLA + : "ç" ccedil # LATIN SMALL LETTER C WITH CEDILLA + : "đ" dstrok # LATIN SMALL LETTER D WITH STROKE + : "đ" dstrok # LATIN SMALL LETTER D WITH STROKE + : "é" eacute # LATIN SMALL LETTER E WITH ACUTE + : "é" eacute # LATIN SMALL LETTER E WITH ACUTE + : "ê" ecirc # LATIN SMALL LETTER E WITH CIRCUMFLEX + : "ê" ecirc # LATIN SMALL LETTER E WITH CIRCUMFLEX + : "è" egrave # LATIN SMALL LETTER E WITH GRAVE + : "è" egrave # LATIN SMALL LETTER E WITH GRAVE + : "ē" emacr # LATIN SMALL LETTER E WITH MACRON + : "ē" emacr # LATIN SMALL LETTER E WITH MACRON + : "ë" euml # LATIN SMALL LETTER E WITH DIAERESIS + : "ë" euml # LATIN SMALL LETTER E WITH DIAERESIS + : "ħ" hstrok # LATIN SMALL LETTER H WITH STROKE + : "ħ" hstrok # LATIN SMALL LETTER H WITH STROKE + : "í" iacute # LATIN SMALL LETTER I WITH ACUTE + : "í" iacute # LATIN SMALL LETTER I WITH ACUTE + : "î" icirc # LATIN SMALL LETTER I WITH CIRCUMFLEX + : "î" icirc # LATIN SMALL LETTER I WITH CIRCUMFLEX + : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE + : "ì" igrave # LATIN SMALL LETTER I WITH GRAVE + : "ī" imacr # LATIN SMALL LETTER I WITH MACRON + : "ī" imacr # LATIN SMALL LETTER I WITH MACRON + : "ı" inodot # LATIN SMALL LETTER DOTLESS I + : "ı" inodot # LATIN SMALL LETTER DOTLESS I + : "ï" iuml # LATIN SMALL LETTER I WITH DIAERESIS + : "ï" iuml # LATIN SMALL LETTER I WITH DIAERESIS + : "ł" lstrok # LATIN SMALL LETTER L WITH STROKE + : "ł" lstrok # LATIN SMALL LETTER L WITH STROKE + : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE + : "ñ" ntilde # LATIN SMALL LETTER N WITH TILDE + : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE + : "ó" oacute # LATIN SMALL LETTER O WITH ACUTE + : "ô" ocirc # LATIN SMALL LETTER O WITH CIRCUMFLEX + : "ô" ocirc # LATIN SMALL LETTER O WITH CIRCUMFLEX + : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE + : "ò" ograve # LATIN SMALL LETTER O WITH GRAVE + : "ō" omacr # LATIN SMALL LETTER O WITH MACRON + : "ō" omacr # LATIN SMALL LETTER O WITH MACRON + : "ø" oslash # LATIN SMALL LETTER O WITH STROKE + : "ø" oslash # LATIN SMALL LETTER O WITH STROKE + : "õ" otilde # LATIN SMALL LETTER O WITH TILDE + : "õ" otilde # LATIN SMALL LETTER O WITH TILDE + : "ö" ouml # LATIN SMALL LETTER O WITH DIAERESIS + : "ö" ouml # LATIN SMALL LETTER O WITH DIAERESIS + : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE + : "ú" uacute # LATIN SMALL LETTER U WITH ACUTE + : "û" ucirc # LATIN SMALL LETTER U WITH CIRCUMFLEX + : "û" ucirc # LATIN SMALL LETTER U WITH CIRCUMFLEX + : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE + : "ù" ugrave # LATIN SMALL LETTER U WITH GRAVE + : "ū" umacr # LATIN SMALL LETTER U WITH MACRON + : "ū" umacr # LATIN SMALL LETTER U WITH MACRON + : "ü" uuml # LATIN SMALL LETTER U WITH DIAERESIS + : "ü" uuml # LATIN SMALL LETTER U WITH DIAERESIS + : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE + : "ý" yacute # LATIN SMALL LETTER Y WITH ACUTE + : "ŷ" ycirc # LATIN SMALL LETTER Y WITH CIRCUMFLEX + : "ŷ" ycirc # LATIN SMALL LETTER Y WITH CIRCUMFLEX + : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE + : "ỳ" U1EF3 # LATIN SMALL LETTER Y WITH GRAVE + : "ÿ" yuml # LATIN SMALL LETTER Y WITH DIAERESIS + : "ÿ" yuml # LATIN SMALL LETTER Y WITH DIAERESIS + : "Ŋ" ENG # LATIN CAPITAL LETTER ENG + : "ŋ" eng # LATIN SMALL LETTER ENG + : "Ð" ETH # LATIN CAPITAL LETTER ETH + : "ð" eth # LATIN SMALL LETTER ETH + : "Þ" THORN # LATIN CAPITAL LETTER THORN + : "þ" thorn # LATIN SMALL LETTER THORN + : "ẞ" U1E9E # LATIN CAPITAL LETTER SHARP S + : "ß" szlig # LATIN SMALL LETTER SHARP S + : "ſ" U017F # LATIN SMALL LETTER LONG S + : "ə" U0259 # LATIN SMALL LETTER SCHWA + : "ʃ" U0283 # LATIN SMALL LETTER ESH + : "ʒ" U0292 # LATIN SMALL LETTER EZH +# }}} + +# vim:fdl=0:fdm=marker:ic:scs: + diff --git a/.aria2/aria2.conf b/.aria2/aria2.conf new file mode 100644 index 0000000..5a3cb96 --- /dev/null +++ b/.aria2/aria2.conf @@ -0,0 +1,73 @@ +# Advanced Options {{{ + +# Restart download from scratch if the +# corresponding control file doesn’t 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: + diff --git a/.aria2/notif.sh b/.aria2/notif.sh new file mode 100755 index 0000000..b6a9f63 --- /dev/null +++ b/.aria2/notif.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +notify-send -u normal -t 2000 -i \ + emblem-downloads 'Torrent' "Downloaded: $3" + diff --git a/.bash_aliases b/.bash_aliases new file mode 100644 index 0000000..b17d17c --- /dev/null +++ b/.bash_aliases @@ -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: + diff --git a/.bash_funcs b/.bash_funcs new file mode 100644 index 0000000..572fb9f --- /dev/null +++ b/.bash_funcs @@ -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 '' && return 1 + printf '%d\n' "${#1}" +} + +trim() { # Trim leading and trailing whitespace + __usage $# 1 '' && return 1 + : "${1#"${1%%[![:space:]]*}"}" + : "${_%"${_##*[![:space:]]}"}" + printf '%s\n' "$_" +} + +dtl() { # Deletes the top lines of a file + __usage $# 2 ' ' && 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 ' ' && 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 '' && return 1 + tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "$1" +} + +pictshare() { # Uploads image to pictshare + __usage $# 1 '' && 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 ' [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:]' ' && 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 ' ' && return 1 + esac +} + +rgb2hex() { # Converts rgb colour to hex + __usage $# 3 ' ' && return 1 + printf '#%02x%02x%02x\n' "$1" "$2" "$3" +} + +hex2rgb() { # Converts hex colour to rgb + __usage $# 1 '' && 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 '' && return 1 + perl -MList::Util=shuffle -F'' \ + -lane 'print shuffle @F' <<< "$1" +} + +cht() { # Searches cht.sh cheatsheet + __usage $# 2 ' ' && return 1 + : "${*:2}"; curl -sS4 "cht.sh/$1/${_// /+})?Q" +} + +weather() { # Show weather info from wttr.in + __usage $# 1 '' && return 1 + curl -sS4 "wttr.in/~${1}+${2:-Greece}" | head -n -1 +} + +sri() { # Prints the SRI hash of a resource + __usage $# 1 ' [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 '' && 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 '' && return 1 + printf '%b\n' "${*//%/\\x}" +} + +utf8decode() { # Decodes =?UTF-8?B?...?= string + __usage $# 1 '' && return 1 + [[ $1 =~ ^=\?[Uu][Tt][Ff]-8\?[Bb]\?([^?]+)\?=$ ]] + printf '%s\n' "$(base64 -d <<< "${BASH_REMATCH[1]}")" +} + +# vim:set ft=sh fdm=syntax fdl=0: + diff --git a/.bash_profile b/.bash_profile new file mode 100644 index 0000000..9261c2d --- /dev/null +++ b/.bash_profile @@ -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: + diff --git a/.bashrc b/.bashrc new file mode 100644 index 0000000..586bb04 --- /dev/null +++ b/.bashrc @@ -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: + diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..06f0aed --- /dev/null +++ b/.clang-format @@ -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: + diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000..643bfb4 --- /dev/null +++ b/.clang-tidy @@ -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: + diff --git a/.config/fontconfig/fonts.conf b/.config/fontconfig/fonts.conf new file mode 100644 index 0000000..6379c6b --- /dev/null +++ b/.config/fontconfig/fonts.conf @@ -0,0 +1,55 @@ + + + + + + true + + + true + + + true + + + hintslight + + + lcddefault + + + rgb + + + + + monospace + + Hack + Fira Code + Code New Roman + Fantasque Sans Mono + DejaVu Sans Mono + + + + + sans + + Noto Sans + DejaVu Sans + Noto Sans CJK JP + + + + + serif + + Noto Serif + DejaVu Serif + Noto Serif CJK JP + + + +

~/.local/share/fonts + diff --git a/.config/htop/htoprc b/.config/htop/htoprc new file mode 100644 index 0000000..ee3939b --- /dev/null +++ b/.config/htop/htoprc @@ -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: + diff --git a/.config/konsolerc b/.config/konsolerc new file mode 100644 index 0000000..b0cbc54 --- /dev/null +++ b/.config/konsolerc @@ -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 diff --git a/.config/mpv/input.conf b/.config/mpv/input.conf new file mode 100644 index 0000000..5b91a5b --- /dev/null +++ b/.config/mpv/input.conf @@ -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 diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf new file mode 100644 index 0000000..c2f11da --- /dev/null +++ b/.config/mpv/mpv.conf @@ -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: + diff --git a/.config/pip/pip.conf b/.config/pip/pip.conf new file mode 100644 index 0000000..14ff423 --- /dev/null +++ b/.config/pip/pip.conf @@ -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: + diff --git a/.config/pip/requirements.txt b/.config/pip/requirements.txt new file mode 100644 index 0000000..0ccdbb4 --- /dev/null +++ b/.config/pip/requirements.txt @@ -0,0 +1,3 @@ +glances[cpuinfo,ip,web,wifi]; python_version > '2.7' +ptpython +pynvim diff --git a/.config/plasma-localerc b/.config/plasma-localerc new file mode 100644 index 0000000..ed5a3d7 --- /dev/null +++ b/.config/plasma-localerc @@ -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: + diff --git a/.config/pycodestyle b/.config/pycodestyle new file mode 100644 index 0000000..16dc877 --- /dev/null +++ b/.config/pycodestyle @@ -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: + diff --git a/.config/qutebrowser/config.py b/.config/qutebrowser/config.py new file mode 100644 index 0000000..6c77182 --- /dev/null +++ b/.config/qutebrowser/config.py @@ -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('', '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): + diff --git a/.config/yarn/global/package.json b/.config/yarn/global/package.json new file mode 100644 index 0000000..57da4ed --- /dev/null +++ b/.config/yarn/global/package.json @@ -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" + } +} diff --git a/.config/yay/config.json b/.config/yay/config.json new file mode 100644 index 0000000..cc6bc07 --- /dev/null +++ b/.config/yay/config.json @@ -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 +} diff --git a/.config/youtube-dl/config b/.config/youtube-dl/config new file mode 100644 index 0000000..3fba9c3 --- /dev/null +++ b/.config/youtube-dl/config @@ -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: + diff --git a/.dir_colors b/.dir_colors new file mode 100644 index 0000000..1c9f5fd --- /dev/null +++ b/.dir_colors @@ -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: + diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..2f609a3 --- /dev/null +++ b/.eslintrc.json @@ -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"} + } + ] +} + diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..caa3247 --- /dev/null +++ b/.gitattributes @@ -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 + diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..6f7b16d --- /dev/null +++ b/.gitconfig @@ -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: + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd590aa --- /dev/null +++ b/.gitignore @@ -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 diff --git a/.gnupg/gpg.conf b/.gnupg/gpg.conf new file mode 100644 index 0000000..e753988 --- /dev/null +++ b/.gnupg/gpg.conf @@ -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 + diff --git a/.htmlhintrc.json b/.htmlhintrc.json new file mode 100644 index 0000000..f88176a --- /dev/null +++ b/.htmlhintrc.json @@ -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 +} diff --git a/.local/arch/init.sh b/.local/arch/init.sh new file mode 100755 index 0000000..fd947c9 --- /dev/null +++ b/.local/arch/init.sh @@ -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 </dev/null </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 </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 </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: + diff --git a/.local/arch/packages.aur.txt b/.local/arch/packages.aur.txt new file mode 100644 index 0000000..273bf41 --- /dev/null +++ b/.local/arch/packages.aur.txt @@ -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 diff --git a/.local/arch/packages.repo.txt b/.local/arch/packages.repo.txt new file mode 100644 index 0000000..9f3b176 --- /dev/null +++ b/.local/arch/packages.repo.txt @@ -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 diff --git a/.local/ruby/Gemfile b/.local/ruby/Gemfile new file mode 100644 index 0000000..45ee88a --- /dev/null +++ b/.local/ruby/Gemfile @@ -0,0 +1,11 @@ +source 'https://rubygems.org' + +gem 'jekyll' +gem 'neovim' +gem 'rake' +gem 'rdoc' +gem 'ronn' +gem 'rouge' +gem 'sqlint' +gem 'travis' + diff --git a/.local/share/konsole/Default.profile b/.local/share/konsole/Default.profile new file mode 100644 index 0000000..e987a4a --- /dev/null +++ b/.local/share/konsole/Default.profile @@ -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: + diff --git a/.local/share/konsole/Gruvbox8.colorscheme b/.local/share/konsole/Gruvbox8.colorscheme new file mode 100644 index 0000000..aa9fb83 --- /dev/null +++ b/.local/share/konsole/Gruvbox8.colorscheme @@ -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: + diff --git a/.local/share/konsole/NvimTerm.profile b/.local/share/konsole/NvimTerm.profile new file mode 100644 index 0000000..6bec289 --- /dev/null +++ b/.local/share/konsole/NvimTerm.profile @@ -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: + diff --git a/.newsboat/config b/.newsboat/config new file mode 100644 index 0000000..361f001 --- /dev/null +++ b/.newsboat/config @@ -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: + diff --git a/.newsboat/notif.sh b/.newsboat/notif.sh new file mode 100755 index 0000000..9152c4b --- /dev/null +++ b/.newsboat/notif.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +notify-send -u normal -t 2000 \ + -i feed-subscribe 'RSS' "$@" + diff --git a/.pug-lintrc.json b/.pug-lintrc.json new file mode 100644 index 0000000..853422d --- /dev/null +++ b/.pug-lintrc.json @@ -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 +} diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..d9273b7 --- /dev/null +++ b/.stylelintrc.json @@ -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 + } +} diff --git a/.vifm/vifmrc b/.vifm/vifmrc new file mode 100644 index 0000000..dd1efaf --- /dev/null +++ b/.vifm/vifmrc @@ -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 + +" Start terminal in current directory +nnoremap T :!konsole --workdir "%d" & + +" Display sorting dialog +nnoremap s :sort + +" Toggle wrap setting +nnoremap W :set wrap! + +" Toggle visibility of preview window +nnoremap w :view +vnoremap w :viewgv + +" Yank current directory path into the clipboard +nnoremap yd :!xclip %i <<< "%d" + +" Yank current file path into the clipboard +nnoremap yf :!xclip %i <<< "%c:p" + +" Quit vifm +nnoremap Q :quit +" }}} + +" vim:fdm=marker:fdl=1: + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8e38d8b --- /dev/null +++ b/LICENSE @@ -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. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..03667c9 --- /dev/null +++ b/README.md @@ -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 +