diff --git a/.gitmodules b/.gitmodules index 7b5e805..c98605b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "plugins/find-the-command"] path = plugins/find-the-command url = https://github.com/pkasemir/find-the-command +[submodule "config-sync/.config/ibus/rime/rime-japanese"] + path = config-sync/.config/ibus/rime/rime-japanese + url = https://github.com/gkovacs/rime-japanese diff --git a/config-sync/.config/ibus/rime/default.custom.yaml b/config-sync/.config/ibus/rime/default.custom.yaml index d23edd4..727bd48 100644 --- a/config-sync/.config/ibus/rime/default.custom.yaml +++ b/config-sync/.config/ibus/rime/default.custom.yaml @@ -1,4 +1,5 @@ patch: schema_list: - schema: luna_pinyin_simp + - schema: japanese menu/page_size: 7 \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/japanese.dict.yaml b/config-sync/.config/ibus/rime/japanese.dict.yaml new file mode 120000 index 0000000..0a6cca9 --- /dev/null +++ b/config-sync/.config/ibus/rime/japanese.dict.yaml @@ -0,0 +1 @@ +rime-japanese/japanese.dict.yaml \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/japanese.jmdict.dict.yaml b/config-sync/.config/ibus/rime/japanese.jmdict.dict.yaml new file mode 120000 index 0000000..b26e712 --- /dev/null +++ b/config-sync/.config/ibus/rime/japanese.jmdict.dict.yaml @@ -0,0 +1 @@ +rime-japanese/japanese.jmdict.dict.yaml \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/japanese.kana.dict.yaml b/config-sync/.config/ibus/rime/japanese.kana.dict.yaml new file mode 120000 index 0000000..3c97efb --- /dev/null +++ b/config-sync/.config/ibus/rime/japanese.kana.dict.yaml @@ -0,0 +1 @@ +rime-japanese/japanese.kana.dict.yaml \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/japanese.mozc.dict.yaml b/config-sync/.config/ibus/rime/japanese.mozc.dict.yaml new file mode 120000 index 0000000..9871c75 --- /dev/null +++ b/config-sync/.config/ibus/rime/japanese.mozc.dict.yaml @@ -0,0 +1 @@ +rime-japanese/japanese.mozc.dict.yaml \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/japanese.schema.yaml b/config-sync/.config/ibus/rime/japanese.schema.yaml new file mode 120000 index 0000000..64881ae --- /dev/null +++ b/config-sync/.config/ibus/rime/japanese.schema.yaml @@ -0,0 +1 @@ +rime-japanese/japanese.schema.yaml \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/latex.dict.yaml b/config-sync/.config/ibus/rime/latex.dict.yaml new file mode 100644 index 0000000..bceebc9 --- /dev/null +++ b/config-sync/.config/ibus/rime/latex.dict.yaml @@ -0,0 +1,2624 @@ +# Rime dictionary +# encoding: utf-8 + +--- +name: latex +version: "0.2" +sort: original +columns: + - text + - code +... + +! \clam +$ \dollar +% \percent +& \ampersand +& \and +( \lparen +) \rparen ++ \plus +, \comma +. \period +/ \slash +: \colon +; \semicolon +< \less += \equal +> \greater +? \question +@ \atsign +[ \lbrack +\ \backslash +] \rbrack +{ \lbrace +| \vert +} \rbrace +£ \sterling +¥ \yuan +§ \section +¬ \neg +± \pm +¶ \paragraph +· \cdotp +× \times +ð \eth +÷ \div +Ƶ \Zbar +̀ \grave +́ \acute +̂ \hat +̃ \tilde +̄ \bar +̅ \overbar +̆ \breve +̇ \dot +̈ \ddot +̉ \ovhook +̊ \ocirc +̌ \check +̐ \candra +̒ \oturnedcomma +̕ \ocommatopright +̚ \droang +̰ \wideutilde +̲ \underbar +̸ \notaccent +͍ \underleftrightarrow +Α \Alpha +Β \Beta +Γ \Gamma +Δ \Delta +Ε \Epsilon +Ζ \Zeta +Η \Eta +Θ \Theta +Ι \Iota +Κ \Kappa +Λ \Lambda +Μ \Mu +Ν \Nu +Ξ \Xi +Ο \Omicron +Π \Pi +Ρ \Rho +Σ \Sigma +Τ \Tau +Υ \Upsilon +Φ \Phi +Χ \Chi +Ψ \Psi +Ω \Omega +α \alpha +β \beta +γ \gamma +δ \delta +ε \varepsilon +ζ \zeta +η \eta +θ \theta +ι \iota +κ \kappa +λ \lambda +μ \mu +ν \nu +ξ \xi +ο \omicron +π \pi +ρ \rho +ς \varsigma +σ \sigma +τ \tau +υ \upsilon +φ \varphi +χ \chi +ψ \psi +ω \omega +ϑ \vartheta +ϕ \phi +ϖ \varpi +Ϝ \upDigamma +ϝ \updigamma +ϰ \varkappa +ϱ \varrho +ϴ \varTheta +ϵ \epsilon +϶ \upbackepsilon +‐ \hyphen +― \horizbar +‖ \Vert +‗ \twolowline +† \dagger +‡ \ddagger +• \smblkcircle +‥ \enleadertwodots +… \unicodeellipsis +′ \prime +″ \dprime +‴ \trprime +‵ \backprime +‶ \backdprime +‷ \backtrprime +‸ \caretinsert +‼ \Exclam +⁀ \tieconcat +⁃ \hyphenbullet +⁄ \fracslash +⁇ \Question +⁐ \closure +⁗ \qprime +€ \euro +⃐ \leftharpoonaccent +⃐ \overleftharpoon +⃑ \rightharpoonaccent +⃑ \overrightharpoon +⃒ \vertoverlay +⃖ \overleftarrow +⃗ \overrightarrow +⃗ \vec +⃛ \dddot +⃜ \ddddot +⃝ \enclosecircle +⃞ \enclosesquare +⃟ \enclosediamond +⃡ \overleftrightarrow +⃤ \enclosetriangle +⃧ \annuity +⃨ \threeunderdot +⃩ \widebridgeabove +⃬ \underrightharpoondown +⃭ \underleftharpoondown +⃮ \underleftarrow +⃯ \underrightarrow +⃰ \asteraccent +ℂ \BbbC +ℇ \Eulerconst +ℊ \mscrg +ℋ \mscrH +ℌ \mfrakH +ℍ \BbbH +ℎ \Planckconst +ℏ \hslash +ℐ \mscrI +ℑ \Im +ℒ \mscrL +ℓ \ell +ℕ \BbbN +℘ \wp +ℙ \BbbP +ℚ \BbbQ +ℛ \mscrR +ℜ \Re +ℝ \BbbR +ℤ \BbbZ +℧ \mho +ℨ \mfrakZ +℩ \turnediota +Å \Angstrom +ℬ \mscrB +ℭ \mfrakC +ℯ \mscre +ℰ \mscrE +ℱ \mscrF +Ⅎ \Finv +ℳ \mscrM +ℴ \mscro +ℵ \aleph +ℶ \beth +ℷ \gimel +ℸ \daleth +ℼ \Bbbpi +ℽ \Bbbgamma +ℾ \BbbGamma +ℿ \BbbPi +⅀ \Bbbsum +⅁ \Game +⅂ \sansLturned +⅃ \sansLmirrored +⅄ \Yup +ⅅ \mitBbbD +ⅆ \mitBbbd +ⅇ \mitBbbe +ⅈ \mitBbbi +ⅉ \mitBbbj +⅊ \PropertyLine +⅋ \upand +← \<- +← \leftarrow +↑ \uparrow +→ \-> +→ \to +→ \rightarrow +↓ \downarrow +↔ \leftrightarrow +↕ \updownarrow +↖ \nwarrow +↗ \nearrow +↘ \searrow +↙ \swarrow +↚ \nleftarrow +↛ \nrightarrow +↜ \leftwavearrow +↝ \rightwavearrow +↞ \twoheadleftarrow +↟ \twoheaduparrow +↠ \twoheadrightarrow +↡ \twoheaddownarrow +↢ \leftarrowtail +↣ \rightarrowtail +↤ \mapsfrom +↥ \mapsup +↦ \mapsto +↧ \mapsdown +↨ \updownarrowbar +↩ \hookleftarrow +↪ \hookrightarrow +↫ \looparrowleft +↬ \looparrowright +↭ \leftrightsquigarrow +↮ \nleftrightarrow +↯ \downzigzagarrow +↰ \Lsh +↱ \Rsh +↲ \Ldsh +↳ \Rdsh +↴ \linefeed +↵ \carriagereturn +↶ \curvearrowleft +↷ \curvearrowright +↸ \barovernorthwestarrow +↹ \barleftarrowrightarrowbar +↺ \acwopencirclearrow +↻ \cwopencirclearrow +↼ \leftharpoonup +↽ \leftharpoondown +↾ \upharpoonright +↿ \upharpoonleft +⇀ \rightharpoonup +⇁ \rightharpoondown +⇂ \downharpoonright +⇃ \downharpoonleft +⇄ \rightleftarrows +⇅ \updownarrows +⇆ \leftrightarrows +⇇ \leftleftarrows +⇈ \upuparrows +⇉ \rightrightarrows +⇊ \downdownarrows +⇋ \leftrightharpoons +⇌ \rightleftharpoons +⇍ \nLeftarrow +⇎ \nLeftrightarrow +⇏ \nRightarrow +⇐ \Leftarrow +⇑ \Uparrow +⇒ \To +⇒ \Rightarrow +⇓ \Downarrow +⇔ \Leftrightarrow +⇕ \Updownarrow +⇖ \Nwarrow +⇗ \Nearrow +⇘ \Searrow +⇙ \Swarrow +⇚ \Lleftarrow +⇛ \TO +⇛ \Rrightarrow +⇜ \leftsquigarrow +⇝ \rightsquigarrow +⇞ \nHuparrow +⇟ \nHdownarrow +⇠ \leftdasharrow +⇡ \updasharrow +⇢ \rightdasharrow +⇣ \downdasharrow +⇤ \barleftarrow +⇥ \rightarrowbar +⇦ \leftwhitearrow +⇧ \upwhitearrow +⇨ \rightwhitearrow +⇩ \downwhitearrow +⇪ \whitearrowupfrombar +⇴ \circleonrightarrow +⇵ \downuparrows +⇶ \rightthreearrows +⇷ \nvleftarrow +⇸ \nvrightarrow +⇹ \nvleftrightarrow +⇺ \nVleftarrow +⇻ \nVrightarrow +⇼ \nVleftrightarrow +⇽ \leftarrowtriangle +⇾ \rightarrowtriangle +⇿ \leftrightarrowtriangle +∀ \forall +∁ \complement +∂ \partial +∃ \exists +∄ \nexists +∅ \varnothing +∆ \increment +∇ \nabla +∈ \in +∉ \notin +∊ \smallin +∋ \ni +∌ \nni +∍ \smallni +∎ \QED +∏ \prod +∐ \coprod +∑ \sum +− \minus +∓ \mp +∔ \dotplus +∕ \divslash +∖ \smallsetminus +∗ \ast +∘ \vysmwhtcircle +∙ \vysmblkcircle +√ \sqrt +√ \surd +∛ \cuberoot +∜ \fourthroot +∝ \propto +∞ \infty +∟ \rightangle +∠ \angle +∡ \measuredangle +∢ \sphericalangle +∣ \mid +∤ \nmid +∥ \parallel +∦ \nparallel +∧ \wedge +∨ \vee +∩ \cap +∪ \cup +∫ \int +∬ \iint +∭ \iiint +∮ \oint +∯ \oiint +∰ \oiiint +∱ \intclockwise +∲ \varointclockwise +∳ \ointctrclockwise +∴ \therefore +∵ \because +∶ \ratio +∷ \Colon +∸ \dotminus +∹ \dashcolon +∺ \dotsminusdots +∻ \kernelcontraction +∼ \sim +∽ \backsim +∾ \invlazys +∿ \sinewave +≀ \wr +≁ \nsim +≂ \eqsim +≃ \simeq +≄ \nsime +≃ \sime +≄ \nsimeq +≅ \cong +≆ \simneqq +≇ \ncong +≈ \approx +≉ \napprox +≊ \approxeq +≋ \approxident +≌ \backcong +≍ \asymp +≎ \Bumpeq +≏ \bumpeq +≐ \doteq +≑ \Doteq +≒ \fallingdotseq +≓ \risingdotseq +≔ \coloneq +≕ \eqcolon +≖ \eqcirc +≗ \circeq +≘ \arceq +≙ \wedgeq +≚ \veeeq +≛ \stareq +≜ \triangleq +≝ \eqdef +≞ \measeq +≟ \questeq +≠ \ne +≡ \equiv +≢ \nequiv +≣ \Equiv +≤ \leq +≥ \geq +≦ \leqq +≧ \geqq +≨ \lneqq +≩ \gneqq +≪ \ll +≫ \gg +≬ \between +≭ \nasymp +≮ \nless +≯ \ngtr +≰ \nleq +≱ \ngeq +≲ \lesssim +≳ \gtrsim +≴ \nlesssim +≵ \ngtrsim +≶ \lessgtr +≷ \gtrless +≸ \nlessgtr +≹ \ngtrless +≺ \prec +≻ \succ +≼ \preccurlyeq +≽ \succcurlyeq +≾ \precsim +≿ \succsim +⊀ \nprec +⊁ \nsucc +⊂ \subset +⊃ \supset +⊄ \nsubset +⊅ \nsupset +⊆ \subseteq +⊇ \supseteq +⊈ \nsubseteq +⊉ \nsupseteq +⊊ \subsetneq +⊋ \supsetneq +⊌ \cupleftarrow +⊍ \cupdot +⊎ \uplus +⊏ \sqsubset +⊐ \sqsupset +⊑ \sqsubseteq +⊒ \sqsupseteq +⊓ \sqcap +⊔ \sqcup +⊕ \oplus +⊖ \ominus +⊗ \otimes +⊘ \oslash +⊙ \odot +⊚ \circledcirc +⊛ \circledast +⊜ \circledequal +⊝ \circleddash +⊞ \boxplus +⊟ \boxminus +⊠ \boxtimes +⊡ \boxdot +⊢ \vdash +⊣ \dashv +⊤ \top +⊥ \bot +⊦ \assert +⊧ \models +⊨ \vDash +⊩ \Vdash +⊪ \Vvdash +⊫ \VDash +⊬ \nvdash +⊭ \nvDash +⊮ \nVdash +⊯ \nVDash +⊰ \prurel +⊱ \scurel +⊲ \vartriangleleft +⊳ \vartriangleright +⊴ \trianglelefteq +⊵ \trianglerighteq +⊶ \origof +⊷ \imageof +⊸ \multimap +⊹ \hermitmatrix +⊺ \intercal +⊻ \veebar +⊼ \barwedge +⊽ \barvee +⊾ \measuredrightangle +⊿ \varlrtriangle +⋀ \bigwedge +⋁ \bigvee +⋂ \bigcap +⋃ \bigcup +⋄ \smwhtdiamond +⋅ \cdot +⋆ \star +⋇ \divideontimes +⋈ \bowtie +⋉ \ltimes +⋊ \rtimes +⋋ \leftthreetimes +⋌ \rightthreetimes +⋍ \backsimeq +⋎ \curlyvee +⋏ \curlywedge +⋐ \Subset +⋑ \Supset +⋒ \Cap +⋓ \Cup +⋔ \pitchfork +⋕ \equalparallel +⋖ \lessdot +⋗ \gtrdot +⋘ \lll +⋙ \ggg +⋚ \lesseqgtr +⋛ \gtreqless +⋜ \eqless +⋝ \eqgtr +⋞ \curlyeqprec +⋟ \curlyeqsucc +⋠ \npreccurlyeq +⋡ \nsucccurlyeq +⋢ \nsqsubseteq +⋣ \nsqsupseteq +⋤ \sqsubsetneq +⋥ \sqsupsetneq +⋦ \lnsim +⋧ \gnsim +⋨ \precnsim +⋩ \succnsim +⋪ \nvartriangleleft +⋫ \nvartriangleright +⋬ \ntrianglelefteq +⋭ \ntrianglerighteq +… \ldots +⋮ \vdots +⋯ \unicodecdots +⋯ \cdots +⋰ \adots +⋱ \ddots +⋲ \disin +⋳ \varisins +⋴ \isins +⋵ \isindot +⋶ \varisinobar +⋷ \isinobar +⋸ \isinvb +⋹ \isinE +⋺ \nisd +⋻ \varnis +⋼ \nis +⋽ \varniobar +⋾ \niobar +⋿ \bagmember +⌀ \diameter +⌂ \house +⌅ \varbarwedge +⌆ \vardoublebarwedge +⌈ \lceil +⌉ \rceil +⌊ \lfloor +⌋ \rfloor +⌐ \invnot +⌑ \sqlozenge +⌒ \profline +⌓ \profsurf +⌗ \viewdata +⌙ \turnednot +⌜ \ulcorner +⌝ \urcorner +⌞ \llcorner +⌟ \lrcorner +⌠ \inttop +⌡ \intbottom +⌢ \frown +⌣ \smile +⌬ \varhexagonlrbonds +⌲ \conictaper +⌶ \topbot +⌽ \obar +⌿ \APLnotslash +⍀ \APLnotbackslash +⍓ \APLboxupcaret +⍰ \APLboxquestion +⍼ \rangledownzigzagarrow +⎔ \hexagon +⎛ \lparenuend +⎜ \lparenextender +⎝ \lparenlend +⎞ \rparenuend +⎟ \rparenextender +⎠ \rparenlend +⎡ \lbrackuend +⎢ \lbrackextender +⎣ \lbracklend +⎤ \rbrackuend +⎥ \rbrackextender +⎦ \rbracklend +⎧ \lbraceuend +⎨ \lbracemid +⎩ \lbracelend +⎪ \vbraceextender +⎫ \rbraceuend +⎬ \rbracemid +⎭ \rbracelend +⎮ \intextender +⎯ \harrowextender +⎰ \lmoustache +⎱ \rmoustache +⎲ \sumtop +⎳ \sumbottom +⎴ \overbracket +⎵ \underbracket +⎶ \bbrktbrk +⎷ \sqrtbottom +⎸ \lvboxline +⎹ \rvboxline +⏎ \varcarriagereturn +⏜ \overparen +⏝ \underparen +⏞ \overbrace +⏟ \underbrace +⏠ \obrbrak +⏡ \ubrbrak +⏢ \trapezium +⏣ \benzenr +⏤ \strns +⏥ \fltns +⏦ \accurrent +⏧ \elinters +␢ \blanksymbol +␣ \visiblespace +┆ \bdtriplevdash +▀ \blockuphalf +▄ \blocklowhalf +█ \blockfull +▌ \blocklefthalf +▐ \blockrighthalf +░ \blockqtrshaded +▒ \blockhalfshaded +▓ \blockthreeqtrshaded +■ \mdlgblksquare +□ \mdlgwhtsquare +▢ \squoval +▣ \blackinwhitesquare +▤ \squarehfill +▥ \squarevfill +▦ \squarehvfill +▧ \squarenwsefill +▨ \squareneswfill +▩ \squarecrossfill +▪ \smblksquare +▫ \smwhtsquare +▬ \hrectangleblack +▭ \hrectangle +▮ \vrectangleblack +▯ \vrectangle +▰ \parallelogramblack +▱ \parallelogram +▲ \bigblacktriangleup +△ \bigtriangleup +▴ \blacktriangle +▵ \vartriangle +▶ \blacktriangleright +▷ \triangleright +▸ \smallblacktriangleright +▹ \smalltriangleright +► \blackpointerright +▻ \whitepointerright +▼ \bigblacktriangledown +▽ \bigtriangledown +▾ \blacktriangledown +▿ \triangledown +◀ \blacktriangleleft +◁ \triangleleft +◂ \smallblacktriangleleft +◃ \smalltriangleleft +◄ \blackpointerleft +◅ \whitepointerleft +◆ \mdlgblkdiamond +◇ \mdlgwhtdiamond +◈ \blackinwhitediamond +◉ \fisheye +◊ \mdlgwhtlozenge +○ \mdlgwhtcircle +◌ \dottedcircle +◍ \circlevertfill +◎ \bullseye +● \mdlgblkcircle +◐ \circlelefthalfblack +◑ \circlerighthalfblack +◒ \circlebottomhalfblack +◓ \circletophalfblack +◔ \circleurquadblack +◕ \blackcircleulquadwhite +◖ \blacklefthalfcircle +◗ \blackrighthalfcircle +◘ \inversebullet +◙ \inversewhitecircle +◚ \invwhiteupperhalfcircle +◛ \invwhitelowerhalfcircle +◜ \ularc +◝ \urarc +◞ \lrarc +◟ \llarc +◠ \topsemicircle +◡ \botsemicircle +◢ \lrblacktriangle +◣ \llblacktriangle +◤ \ulblacktriangle +◥ \urblacktriangle +◦ \smwhtcircle +◧ \squareleftblack +◨ \squarerightblack +◩ \squareulblack +◪ \squarelrblack +◫ \boxbar +◬ \trianglecdot +◭ \triangleleftblack +◮ \trianglerightblack +◯ \lgwhtcircle +◰ \squareulquad +◱ \squarellquad +◲ \squarelrquad +◳ \squareurquad +◴ \circleulquad +◵ \circlellquad +◶ \circlelrquad +◷ \circleurquad +◸ \ultriangle +◹ \urtriangle +◺ \lltriangle +◻ \mdwhtsquare +◼ \mdblksquare +◽ \mdsmwhtsquare +◾ \mdsmblksquare +◿ \lrtriangle +★ \bigstar +☆ \bigwhitestar +☉ \astrosun +☡ \danger +☻ \blacksmiley +☼ \sun +☽ \rightmoon +☾ \leftmoon +♀ \female +♂ \male +♠ \spadesuit +♡ \heartsuit +♢ \diamondsuit +♣ \clubsuit +♤ \varspadesuit +♥ \varheartsuit +♦ \vardiamondsuit +♧ \varclubsuit +♩ \quarternote +♪ \eighthnote +♫ \twonotes +♭ \flat +♮ \natural +♯ \sharp +♾ \acidfree +⚀ \dicei +⚁ \diceii +⚂ \diceiii +⚃ \diceiv +⚄ \dicev +⚅ \dicevi +⚆ \circledrightdot +⚇ \circledtwodots +⚈ \blackcircledrightdot +⚉ \blackcircledtwodots +⚥ \Hermaphrodite +⚪ \mdwhtcircle +⚫ \mdblkcircle +⚬ \mdsmwhtcircle +⚲ \neuter +✓ \checkmark +✠ \maltese +✪ \circledstar +✶ \varstar +✽ \dingasterisk +❲ \lbrbrak +❳ \rbrbrak +➛ \draftingarrow +⟀ \threedangle +⟁ \whiteinwhitetriangle +⟂ \perp +⟃ \subsetcirc +⟄ \supsetcirc +⟅ \lbag +⟆ \rbag +⟇ \veedot +⟈ \bsolhsub +⟉ \suphsol +⟌ \longdivision +⟐ \diamondcdot +⟑ \wedgedot +⟒ \upin +⟓ \pullback +⟔ \pushout +⟕ \leftouterjoin +⟖ \rightouterjoin +⟗ \fullouterjoin +⟘ \bigbot +⟙ \bigtop +⟚ \DashVDash +⟛ \dashVdash +⟜ \multimapinv +⟝ \vlongdash +⟞ \longdashv +⟟ \cirbot +⟠ \lozengeminus +⟡ \concavediamond +⟢ \concavediamondtickleft +⟣ \concavediamondtickright +⟤ \whitesquaretickleft +⟥ \whitesquaretickright +⟦ \lBrack +⟧ \rBrack +⟨ \langle +⟩ \rangle +⟪ \lAngle +⟫ \rAngle +⟬ \Lbrbrak +⟭ \Rbrbrak +⟮ \lgroup +⟯ \rgroup +⟰ \UUparrow +⟱ \DDownarrow +⟲ \acwgapcirclearrow +⟳ \cwgapcirclearrow +⟴ \rightarrowonoplus +⟵ \longleftarrow +⟶ \longrightarrow +⟷ \longleftrightarrow +⟸ \Longleftarrow +⟹ \Longrightarrow +⟺ \Longleftrightarrow +⟻ \longmapsfrom +⟼ \longmapsto +⟽ \Longmapsfrom +⟾ \Longmapsto +⟿ \longrightsquigarrow +⤀ \nvtwoheadrightarrow +⤁ \nVtwoheadrightarrow +⤂ \nvLeftarrow +⤃ \nvRightarrow +⤄ \nvLeftrightarrow +⤅ \twoheadmapsto +⤆ \Mapsfrom +⤇ \Mapsto +⤈ \downarrowbarred +⤉ \uparrowbarred +⤊ \Uuparrow +⤋ \Ddownarrow +⤌ \leftbkarrow +⤍ \rightbkarrow +⤎ \leftdbkarrow +⤏ \dbkarrow +⤐ \drbkarrow +⤑ \rightdotarrow +⤒ \baruparrow +⤓ \downarrowbar +⤔ \nvrightarrowtail +⤕ \nVrightarrowtail +⤖ \twoheadrightarrowtail +⤗ \nvtwoheadrightarrowtail +⤘ \nVtwoheadrightarrowtail +⤙ \lefttail +⤚ \righttail +⤛ \leftdbltail +⤜ \rightdbltail +⤝ \diamondleftarrow +⤞ \rightarrowdiamond +⤟ \diamondleftarrowbar +⤠ \barrightarrowdiamond +⤡ \nwsearrow +⤢ \neswarrow +⤣ \hknwarrow +⤤ \hknearrow +⤥ \hksearrow +⤦ \hkswarrow +⤧ \tona +⤨ \toea +⤩ \tosa +⤪ \towa +⤫ \rdiagovfdiag +⤬ \fdiagovrdiag +⤭ \seovnearrow +⤮ \neovsearrow +⤯ \fdiagovnearrow +⤰ \rdiagovsearrow +⤱ \neovnwarrow +⤲ \nwovnearrow +⤳ \rightcurvedarrow +⤴ \uprightcurvearrow +⤵ \downrightcurvedarrow +⤶ \leftdowncurvedarrow +⤷ \rightdowncurvedarrow +⤸ \cwrightarcarrow +⤹ \acwleftarcarrow +⤺ \acwoverarcarrow +⤻ \acwunderarcarrow +⤼ \curvearrowrightminus +⤽ \curvearrowleftplus +⤾ \cwundercurvearrow +⤿ \ccwundercurvearrow +⥀ \acwcirclearrow +⥁ \cwcirclearrow +⥂ \rightarrowshortleftarrow +⥃ \leftarrowshortrightarrow +⥄ \shortrightarrowleftarrow +⥅ \rightarrowplus +⥆ \leftarrowplus +⥇ \rightarrowx +⥈ \leftrightarrowcircle +⥉ \twoheaduparrowcircle +⥊ \leftrightharpoonupdown +⥋ \leftrightharpoondownup +⥌ \updownharpoonrightleft +⥍ \updownharpoonleftright +⥎ \leftrightharpoonupup +⥏ \updownharpoonrightright +⥐ \leftrightharpoondowndown +⥑ \updownharpoonleftleft +⥒ \barleftharpoonup +⥓ \rightharpoonupbar +⥔ \barupharpoonright +⥕ \downharpoonrightbar +⥖ \barleftharpoondown +⥗ \rightharpoondownbar +⥘ \barupharpoonleft +⥙ \downharpoonleftbar +⥚ \leftharpoonupbar +⥛ \barrightharpoonup +⥜ \upharpoonrightbar +⥝ \bardownharpoonright +⥞ \leftharpoondownbar +⥟ \barrightharpoondown +⥠ \upharpoonleftbar +⥡ \bardownharpoonleft +⥢ \leftharpoonsupdown +⥣ \upharpoonsleftright +⥤ \rightharpoonsupdown +⥥ \downharpoonsleftright +⥦ \leftrightharpoonsup +⥧ \leftrightharpoonsdown +⥨ \rightleftharpoonsup +⥩ \rightleftharpoonsdown +⥪ \leftharpoonupdash +⥫ \dashleftharpoondown +⥬ \rightharpoonupdash +⥭ \dashrightharpoondown +⥮ \updownharpoonsleftright +⥯ \downupharpoonsleftright +⥰ \rightimply +⥱ \equalrightarrow +⥲ \similarrightarrow +⥳ \leftarrowsimilar +⥴ \rightarrowsimilar +⥵ \rightarrowapprox +⥶ \ltlarr +⥷ \leftarrowless +⥸ \gtrarr +⥹ \subrarr +⥺ \leftarrowsubset +⥻ \suplarr +⥼ \leftfishtail +⥽ \rightfishtail +⥾ \upfishtail +⥿ \downfishtail +⦀ \Vvert +⦁ \mdsmblkcircle +⦂ \typecolon +⦃ \lBrace +⦄ \rBrace +⦅ \lParen +⦆ \rParen +⦇ \llparenthesis +⦈ \rrparenthesis +⦉ \llangle +⦊ \rrangle +⦋ \lbrackubar +⦌ \rbrackubar +⦍ \lbrackultick +⦎ \rbracklrtick +⦏ \lbracklltick +⦐ \rbrackurtick +⦑ \langledot +⦒ \rangledot +⦓ \lparenless +⦔ \rparengtr +⦕ \Lparengtr +⦖ \Rparenless +⦗ \lblkbrbrak +⦘ \rblkbrbrak +⦙ \fourvdots +⦚ \vzigzag +⦛ \measuredangleleft +⦜ \rightanglesqr +⦝ \rightanglemdot +⦞ \angles +⦟ \angdnr +⦠ \gtlpar +⦡ \sphericalangleup +⦢ \turnangle +⦣ \revangle +⦤ \angleubar +⦥ \revangleubar +⦦ \wideangledown +⦧ \wideangleup +⦨ \measanglerutone +⦩ \measanglelutonw +⦪ \measanglerdtose +⦫ \measangleldtosw +⦬ \measangleurtone +⦭ \measangleultonw +⦮ \measangledrtose +⦯ \measangledltosw +⦰ \revemptyset +⦱ \emptysetobar +⦲ \emptysetocirc +⦳ \emptysetoarr +⦴ \emptysetoarrl +⦵ \circlehbar +⦶ \circledvert +⦷ \circledparallel +⦸ \obslash +⦹ \operp +⦺ \obot +⦻ \olcross +⦼ \odotslashdot +⦽ \uparrowoncircle +⦾ \circledwhitebullet +⦿ \circledbullet +⧀ \olessthan +⧁ \ogreaterthan +⧂ \cirscir +⧃ \cirE +⧄ \boxdiag +⧅ \boxbslash +⧆ \boxast +⧇ \boxcircle +⧈ \boxbox +⧉ \boxonbox +⧊ \triangleodot +⧋ \triangleubar +⧌ \triangles +⧍ \triangleserifs +⧎ \rtriltri +⧏ \ltrivb +⧐ \vbrtri +⧑ \lfbowtie +⧒ \rfbowtie +⧓ \fbowtie +⧔ \lftimes +⧕ \rftimes +⧖ \hourglass +⧗ \blackhourglass +⧘ \lvzigzag +⧙ \rvzigzag +⧚ \Lvzigzag +⧛ \Rvzigzag +⧜ \iinfin +⧝ \tieinfty +⧞ \nvinfty +⧟ \dualmap +⧠ \laplac +⧡ \lrtriangleeq +⧢ \shuffle +⧣ \eparsl +⧤ \smeparsl +⧥ \eqvparsl +⧦ \gleichstark +⧧ \thermod +⧨ \downtriangleleftblack +⧩ \downtrianglerightblack +⧪ \blackdiamonddownarrow +⧫ \mdlgblklozenge +⧬ \circledownarrow +⧭ \blackcircledownarrow +⧮ \errbarsquare +⧯ \errbarblacksquare +⧰ \errbardiamond +⧱ \errbarblackdiamond +⧲ \errbarcircle +⧳ \errbarblackcircle +⧴ \ruledelayed +⧵ \setminus +⧶ \dsol +⧷ \rsolbar +⧸ \xsol +⧹ \xbsol +⧺ \doubleplus +⧻ \tripleplus +⧼ \lcurvyangle +⧽ \rcurvyangle +⧾ \tplus +⧿ \tminus +⨀ \bigodot +⨁ \bigoplus +⨂ \bigotimes +⨃ \bigcupdot +⨄ \biguplus +⨅ \bigsqcap +⨆ \bigsqcup +⨇ \conjquant +⨈ \disjquant +⨉ \bigtimes +⨊ \modtwosum +⨋ \sumint +⨌ \iiiint +⨍ \intbar +⨎ \intBar +⨏ \fint +⨐ \cirfnint +⨑ \awint +⨒ \rppolint +⨓ \scpolint +⨔ \npolint +⨕ \pointint +⨖ \sqint +⨗ \intlarhk +⨘ \intx +⨙ \intcap +⨚ \intcup +⨛ \upint +⨜ \lowint +⨝ \Join +⨞ \bigtriangleleft +⨟ \zcmp +⨠ \zpipe +⨡ \zproject +⨢ \ringplus +⨣ \plushat +⨤ \simplus +⨥ \plusdot +⨦ \plussim +⨧ \plussubtwo +⨨ \plustrif +⨩ \commaminus +⨪ \minusdot +⨫ \minusfdots +⨬ \minusrdots +⨭ \opluslhrim +⨮ \oplusrhrim +⨯ \vectimes +⨰ \dottimes +⨱ \timesbar +⨲ \btimes +⨳ \smashtimes +⨴ \otimeslhrim +⨵ \otimesrhrim +⨶ \otimeshat +⨷ \Otimes +⨸ \odiv +⨹ \triangleplus +⨺ \triangleminus +⨻ \triangletimes +⨼ \intprod +⨽ \intprodr +⨾ \fcmp +⨿ \amalg +⩀ \capdot +⩁ \uminus +⩂ \barcup +⩃ \barcap +⩄ \capwedge +⩅ \cupvee +⩆ \cupovercap +⩇ \capovercup +⩈ \cupbarcap +⩉ \capbarcup +⩊ \twocups +⩋ \twocaps +⩌ \closedvarcup +⩍ \closedvarcap +⩎ \Sqcap +⩏ \Sqcup +⩐ \closedvarcupsmashprod +⩑ \wedgeodot +⩒ \veeodot +⩓ \Wedge +⩔ \Vee +⩕ \wedgeonwedge +⩖ \veeonvee +⩗ \bigslopedvee +⩘ \bigslopedwedge +⩙ \veeonwedge +⩚ \wedgemidvert +⩛ \veemidvert +⩜ \midbarwedge +⩝ \midbarvee +⩞ \doublebarwedge +⩟ \wedgebar +⩠ \wedgedoublebar +⩡ \varveebar +⩢ \doublebarvee +⩣ \veedoublebar +⩤ \dsub +⩥ \rsub +⩦ \eqdot +⩧ \dotequiv +⩨ \equivVert +⩩ \equivVvert +⩪ \dotsim +⩫ \simrdots +⩬ \simminussim +⩭ \congdot +⩮ \asteq +⩯ \hatapprox +⩰ \approxeqq +⩱ \eqqplus +⩲ \pluseqq +⩳ \eqqsim +⩴ \Coloneq +⩵ \eqeq +⩶ \eqeqeq +⩷ \ddotseq +⩸ \equivDD +⩹ \ltcir +⩺ \gtcir +⩻ \ltquest +⩼ \gtquest +⩽ \leqslant +⩾ \geqslant +⩿ \lesdot +⪀ \gesdot +⪁ \lesdoto +⪂ \gesdoto +⪃ \lesdotor +⪄ \gesdotol +⪅ \lessapprox +⪆ \gtrapprox +⪇ \lneq +⪈ \gneq +⪉ \lnapprox +⪊ \gnapprox +⪋ \lesseqqgtr +⪌ \gtreqqless +⪍ \lsime +⪎ \gsime +⪏ \lsimg +⪐ \gsiml +⪑ \lgE +⪒ \glE +⪓ \lesges +⪔ \gesles +⪕ \eqslantless +⪖ \eqslantgtr +⪗ \elsdot +⪘ \egsdot +⪙ \eqqless +⪚ \eqqgtr +⪛ \eqqslantless +⪜ \eqqslantgtr +⪝ \simless +⪞ \simgtr +⪟ \simlE +⪠ \simgE +⪡ \Lt +⪢ \Gt +⪣ \partialmeetcontraction +⪤ \glj +⪥ \gla +⪦ \ltcc +⪧ \gtcc +⪨ \lescc +⪩ \gescc +⪪ \smt +⪫ \lat +⪬ \smte +⪭ \late +⪮ \bumpeqq +⪯ \preceq +⪰ \succeq +⪱ \precneq +⪲ \succneq +⪳ \preceqq +⪴ \succeqq +⪵ \precneqq +⪶ \succneqq +⪷ \precapprox +⪸ \succapprox +⪹ \precnapprox +⪺ \succnapprox +⪻ \Prec +⪼ \Succ +⪽ \subsetdot +⪾ \supsetdot +⪿ \subsetplus +⫀ \supsetplus +⫁ \submult +⫂ \supmult +⫃ \subedot +⫄ \supedot +⫅ \subseteqq +⫆ \supseteqq +⫇ \subsim +⫈ \supsim +⫉ \subsetapprox +⫊ \supsetapprox +⫋ \subsetneqq +⫌ \supsetneqq +⫍ \lsqhook +⫎ \rsqhook +⫏ \csub +⫐ \csup +⫑ \csube +⫒ \csupe +⫓ \subsup +⫔ \supsub +⫕ \subsub +⫖ \supsup +⫗ \suphsub +⫘ \supdsub +⫙ \forkv +⫚ \topfork +⫛ \mlcp +⫝̸ \forks +⫝ \forksnot +⫞ \shortlefttack +⫟ \shortdowntack +⫠ \shortuptack +⫡ \perps +⫢ \vDdash +⫣ \dashV +⫤ \Dashv +⫥ \DashV +⫦ \varVdash +⫧ \Barv +⫨ \vBar +⫩ \vBarv +⫪ \barV +⫫ \Vbar +⫬ \Not +⫭ \bNot +⫮ \revnmid +⫯ \cirmid +⫰ \midcir +⫱ \topcir +⫲ \nhpar +⫳ \parsim +⫴ \interleave +⫵ \nhVvert +⫶ \threedotcolon +⫷ \lllnest +⫸ \gggnest +⫹ \leqqslant +⫺ \geqqslant +⫻ \trslash +⫼ \biginterleave +⫽ \sslash +⫾ \talloblong +⫿ \bigtalloblong +⬒ \squaretopblack +⬓ \squarebotblack +⬔ \squareurblack +⬕ \squarellblack +⬖ \diamondleftblack +⬗ \diamondrightblack +⬘ \diamondtopblack +⬙ \diamondbotblack +⬚ \dottedsquare +⬛ \lgblksquare +⬜ \lgwhtsquare +⬝ \vysmblksquare +⬞ \vysmwhtsquare +⬟ \pentagonblack +⬠ \pentagon +⬡ \varhexagon +⬢ \varhexagonblack +⬣ \hexagonblack +⬤ \lgblkcircle +⬥ \mdblkdiamond +⬦ \mdwhtdiamond +⬧ \mdblklozenge +⬨ \mdwhtlozenge +⬩ \smblkdiamond +⬪ \smblklozenge +⬫ \smwhtlozenge +⬬ \blkhorzoval +⬭ \whthorzoval +⬮ \blkvertoval +⬯ \whtvertoval +⬰ \circleonleftarrow +⬱ \leftthreearrows +⬲ \leftarrowonoplus +⬳ \longleftsquigarrow +⬴ \nvtwoheadleftarrow +⬵ \nVtwoheadleftarrow +⬶ \twoheadmapsfrom +⬷ \twoheadleftdbkarrow +⬸ \leftdotarrow +⬹ \nvleftarrowtail +⬺ \nVleftarrowtail +⬻ \twoheadleftarrowtail +⬼ \nvtwoheadleftarrowtail +⬽ \nVtwoheadleftarrowtail +⬾ \leftarrowx +⬿ \leftcurvedarrow +⭀ \equalleftarrow +⭁ \bsimilarleftarrow +⭂ \leftarrowbackapprox +⭃ \rightarrowgtr +⭄ \rightarrowsupset +⭅ \LLeftarrow +⭆ \RRightarrow +⭇ \bsimilarrightarrow +⭈ \rightarrowbackapprox +⭉ \similarleftarrow +⭊ \leftarrowapprox +⭋ \leftarrowbsimilar +⭌ \rightarrowbsimilar +⭐ \medwhitestar +⭑ \medblackstar +⭒ \smwhitestar +⭓ \rightpentagonblack +⭔ \rightpentagon +〒 \postalmark +〰 \hzigzag +𝐀 \mbfA +𝐁 \mbfB +𝐂 \mbfC +𝐃 \mbfD +𝐄 \mbfE +𝐅 \mbfF +𝐆 \mbfG +𝐇 \mbfH +𝐈 \mbfI +𝐉 \mbfJ +𝐊 \mbfK +𝐋 \mbfL +𝐌 \mbfM +𝐍 \mbfN +𝐎 \mbfO +𝐏 \mbfP +𝐐 \mbfQ +𝐑 \mbfR +𝐒 \mbfS +𝐓 \mbfT +𝐔 \mbfU +𝐕 \mbfV +𝐖 \mbfW +𝐗 \mbfX +𝐘 \mbfY +𝐙 \mbfZ +𝐚 \mbfa +𝐛 \mbfb +𝐜 \mbfc +𝐝 \mbfd +𝐞 \mbfe +𝐟 \mbff +𝐠 \mbfg +𝐡 \mbfh +𝐢 \mbfi +𝐣 \mbfj +𝐤 \mbfk +𝐥 \mbfl +𝐦 \mbfm +𝐧 \mbfn +𝐨 \mbfo +𝐩 \mbfp +𝐪 \mbfq +𝐫 \mbfr +𝐬 \mbfs +𝐭 \mbft +𝐮 \mbfu +𝐯 \mbfv +𝐰 \mbfw +𝐱 \mbfx +𝐲 \mbfy +𝐳 \mbfz +𝐴 \mitA +𝐵 \mitB +𝐶 \mitC +𝐷 \mitD +𝐸 \mitE +𝐹 \mitF +𝐺 \mitG +𝐻 \mitH +𝐼 \mitI +𝐽 \mitJ +𝐾 \mitK +𝐿 \mitL +𝑀 \mitM +𝑁 \mitN +𝑂 \mitO +𝑃 \mitP +𝑄 \mitQ +𝑅 \mitR +𝑆 \mitS +𝑇 \mitT +𝑈 \mitU +𝑉 \mitV +𝑊 \mitW +𝑋 \mitX +𝑌 \mitY +𝑍 \mitZ +𝑎 \mita +𝑏 \mitb +𝑐 \mitc +𝑑 \mitd +𝑒 \mite +𝑓 \mitf +𝑔 \mitg +𝑖 \miti +𝑗 \mitj +𝑘 \mitk +𝑙 \mitl +𝑚 \mitm +𝑛 \mitn +𝑜 \mito +𝑝 \mitp +𝑞 \mitq +𝑟 \mitr +𝑠 \mits +𝑡 \mitt +𝑢 \mitu +𝑣 \mitv +𝑤 \mitw +𝑥 \mitx +𝑦 \mity +𝑧 \mitz +𝑨 \mbfitA +𝑩 \mbfitB +𝑪 \mbfitC +𝑫 \mbfitD +𝑬 \mbfitE +𝑭 \mbfitF +𝑮 \mbfitG +𝑯 \mbfitH +𝑰 \mbfitI +𝑱 \mbfitJ +𝑲 \mbfitK +𝑳 \mbfitL +𝑴 \mbfitM +𝑵 \mbfitN +𝑶 \mbfitO +𝑷 \mbfitP +𝑸 \mbfitQ +𝑹 \mbfitR +𝑺 \mbfitS +𝑻 \mbfitT +𝑼 \mbfitU +𝑽 \mbfitV +𝑾 \mbfitW +𝑿 \mbfitX +𝒀 \mbfitY +𝒁 \mbfitZ +𝒂 \mbfita +𝒃 \mbfitb +𝒄 \mbfitc +𝒅 \mbfitd +𝒆 \mbfite +𝒇 \mbfitf +𝒈 \mbfitg +𝒉 \mbfith +𝒊 \mbfiti +𝒋 \mbfitj +𝒌 \mbfitk +𝒍 \mbfitl +𝒎 \mbfitm +𝒏 \mbfitn +𝒐 \mbfito +𝒑 \mbfitp +𝒒 \mbfitq +𝒓 \mbfitr +𝒔 \mbfits +𝒕 \mbfitt +𝒖 \mbfitu +𝒗 \mbfitv +𝒘 \mbfitw +𝒙 \mbfitx +𝒚 \mbfity +𝒛 \mbfitz +𝒜 \mscrA +𝒞 \mscrC +𝒟 \mscrD +𝒢 \mscrG +𝒥 \mscrJ +𝒦 \mscrK +𝒩 \mscrN +𝒪 \mscrO +𝒫 \mscrP +𝒬 \mscrQ +𝒮 \mscrS +𝒯 \mscrT +𝒰 \mscrU +𝒱 \mscrV +𝒲 \mscrW +𝒳 \mscrX +𝒴 \mscrY +𝒵 \mscrZ +𝒶 \mscra +𝒷 \mscrb +𝒸 \mscrc +𝒹 \mscrd +𝒻 \mscrf +𝒽 \mscrh +𝒾 \mscri +𝒿 \mscrj +𝓀 \mscrk +𝓁 \mscrl +𝓂 \mscrm +𝓃 \mscrn +𝓅 \mscrp +𝓆 \mscrq +𝓇 \mscrr +𝓈 \mscrs +𝓉 \mscrt +𝓊 \mscru +𝓋 \mscrv +𝓌 \mscrw +𝓍 \mscrx +𝓎 \mscry +𝓏 \mscrz +𝓐 \mbfscrA +𝓑 \mbfscrB +𝓒 \mbfscrC +𝓓 \mbfscrD +𝓔 \mbfscrE +𝓕 \mbfscrF +𝓖 \mbfscrG +𝓗 \mbfscrH +𝓘 \mbfscrI +𝓙 \mbfscrJ +𝓚 \mbfscrK +𝓛 \mbfscrL +𝓜 \mbfscrM +𝓝 \mbfscrN +𝓞 \mbfscrO +𝓟 \mbfscrP +𝓠 \mbfscrQ +𝓡 \mbfscrR +𝓢 \mbfscrS +𝓣 \mbfscrT +𝓤 \mbfscrU +𝓥 \mbfscrV +𝓦 \mbfscrW +𝓧 \mbfscrX +𝓨 \mbfscrY +𝓩 \mbfscrZ +𝓪 \mbfscra +𝓫 \mbfscrb +𝓬 \mbfscrc +𝓭 \mbfscrd +𝓮 \mbfscre +𝓯 \mbfscrf +𝓰 \mbfscrg +𝓱 \mbfscrh +𝓲 \mbfscri +𝓳 \mbfscrj +𝓴 \mbfscrk +𝓵 \mbfscrl +𝓶 \mbfscrm +𝓷 \mbfscrn +𝓸 \mbfscro +𝓹 \mbfscrp +𝓺 \mbfscrq +𝓻 \mbfscrr +𝓼 \mbfscrs +𝓽 \mbfscrt +𝓾 \mbfscru +𝓿 \mbfscrv +𝔀 \mbfscrw +𝔁 \mbfscrx +𝔂 \mbfscry +𝔃 \mbfscrz +𝔄 \mfrakA +𝔅 \mfrakB +𝔇 \mfrakD +𝔈 \mfrakE +𝔉 \mfrakF +𝔊 \mfrakG +𝔍 \mfrakJ +𝔎 \mfrakK +𝔏 \mfrakL +𝔐 \mfrakM +𝔑 \mfrakN +𝔒 \mfrakO +𝔓 \mfrakP +𝔔 \mfrakQ +𝔖 \mfrakS +𝔗 \mfrakT +𝔘 \mfrakU +𝔙 \mfrakV +𝔚 \mfrakW +𝔛 \mfrakX +𝔜 \mfrakY +𝔞 \mfraka +𝔟 \mfrakb +𝔠 \mfrakc +𝔡 \mfrakd +𝔢 \mfrake +𝔣 \mfrakf +𝔤 \mfrakg +𝔥 \mfrakh +𝔦 \mfraki +𝔧 \mfrakj +𝔨 \mfrakk +𝔩 \mfrakl +𝔪 \mfrakm +𝔫 \mfrakn +𝔬 \mfrako +𝔭 \mfrakp +𝔮 \mfrakq +𝔯 \mfrakr +𝔰 \mfraks +𝔱 \mfrakt +𝔲 \mfraku +𝔳 \mfrakv +𝔴 \mfrakw +𝔵 \mfrakx +𝔶 \mfraky +𝔷 \mfrakz +𝔸 \BbbA +𝔹 \BbbB +𝔻 \BbbD +𝔼 \BbbE +𝔽 \BbbF +𝔾 \BbbG +𝕀 \BbbI +𝕁 \BbbJ +𝕂 \BbbK +𝕃 \BbbL +𝕄 \BbbM +𝕆 \BbbO +𝕊 \BbbS +𝕋 \BbbT +𝕌 \BbbU +𝕍 \BbbV +𝕎 \BbbW +𝕏 \BbbX +𝕐 \BbbY +𝕒 \Bbba +𝕓 \Bbbb +𝕔 \Bbbc +𝕕 \Bbbd +𝕖 \Bbbe +𝕗 \Bbbf +𝕘 \Bbbg +𝕙 \Bbbh +𝕚 \Bbbi +𝕛 \Bbbj +𝕜 \Bbbk +𝕝 \Bbbl +𝕞 \Bbbm +𝕟 \Bbbn +𝕠 \Bbbo +𝕡 \Bbbp +𝕢 \Bbbq +𝕣 \Bbbr +𝕤 \Bbbs +𝕥 \Bbbt +𝕦 \Bbbu +𝕧 \Bbbv +𝕨 \Bbbw +𝕩 \Bbbx +𝕪 \Bbby +𝕫 \Bbbz +𝕬 \mbffrakA +𝕭 \mbffrakB +𝕮 \mbffrakC +𝕯 \mbffrakD +𝕰 \mbffrakE +𝕱 \mbffrakF +𝕲 \mbffrakG +𝕳 \mbffrakH +𝕴 \mbffrakI +𝕵 \mbffrakJ +𝕶 \mbffrakK +𝕷 \mbffrakL +𝕸 \mbffrakM +𝕹 \mbffrakN +𝕺 \mbffrakO +𝕻 \mbffrakP +𝕼 \mbffrakQ +𝕽 \mbffrakR +𝕾 \mbffrakS +𝕿 \mbffrakT +𝖀 \mbffrakU +𝖁 \mbffrakV +𝖂 \mbffrakW +𝖃 \mbffrakX +𝖄 \mbffrakY +𝖅 \mbffrakZ +𝖆 \mbffraka +𝖇 \mbffrakb +𝖈 \mbffrakc +𝖉 \mbffrakd +𝖊 \mbffrake +𝖋 \mbffrakf +𝖌 \mbffrakg +𝖍 \mbffrakh +𝖎 \mbffraki +𝖏 \mbffrakj +𝖐 \mbffrakk +𝖑 \mbffrakl +𝖒 \mbffrakm +𝖓 \mbffrakn +𝖔 \mbffrako +𝖕 \mbffrakp +𝖖 \mbffrakq +𝖗 \mbffrakr +𝖘 \mbffraks +𝖙 \mbffrakt +𝖚 \mbffraku +𝖛 \mbffrakv +𝖜 \mbffrakw +𝖝 \mbffrakx +𝖞 \mbffraky +𝖟 \mbffrakz +𝖠 \msansA +𝖡 \msansB +𝖢 \msansC +𝖣 \msansD +𝖤 \msansE +𝖥 \msansF +𝖦 \msansG +𝖧 \msansH +𝖨 \msansI +𝖩 \msansJ +𝖪 \msansK +𝖫 \msansL +𝖬 \msansM +𝖭 \msansN +𝖮 \msansO +𝖯 \msansP +𝖰 \msansQ +𝖱 \msansR +𝖲 \msansS +𝖳 \msansT +𝖴 \msansU +𝖵 \msansV +𝖶 \msansW +𝖷 \msansX +𝖸 \msansY +𝖹 \msansZ +𝖺 \msansa +𝖻 \msansb +𝖼 \msansc +𝖽 \msansd +𝖾 \msanse +𝖿 \msansf +𝗀 \msansg +𝗁 \msansh +𝗂 \msansi +𝗃 \msansj +𝗄 \msansk +𝗅 \msansl +𝗆 \msansm +𝗇 \msansn +𝗈 \msanso +𝗉 \msansp +𝗊 \msansq +𝗋 \msansr +𝗌 \msanss +𝗍 \msanst +𝗎 \msansu +𝗏 \msansv +𝗐 \msansw +𝗑 \msansx +𝗒 \msansy +𝗓 \msansz +𝗔 \mbfsansA +𝗕 \mbfsansB +𝗖 \mbfsansC +𝗗 \mbfsansD +𝗘 \mbfsansE +𝗙 \mbfsansF +𝗚 \mbfsansG +𝗛 \mbfsansH +𝗜 \mbfsansI +𝗝 \mbfsansJ +𝗞 \mbfsansK +𝗟 \mbfsansL +𝗠 \mbfsansM +𝗡 \mbfsansN +𝗢 \mbfsansO +𝗣 \mbfsansP +𝗤 \mbfsansQ +𝗥 \mbfsansR +𝗦 \mbfsansS +𝗧 \mbfsansT +𝗨 \mbfsansU +𝗩 \mbfsansV +𝗪 \mbfsansW +𝗫 \mbfsansX +𝗬 \mbfsansY +𝗭 \mbfsansZ +𝗮 \mbfsansa +𝗯 \mbfsansb +𝗰 \mbfsansc +𝗱 \mbfsansd +𝗲 \mbfsanse +𝗳 \mbfsansf +𝗴 \mbfsansg +𝗵 \mbfsansh +𝗶 \mbfsansi +𝗷 \mbfsansj +𝗸 \mbfsansk +𝗹 \mbfsansl +𝗺 \mbfsansm +𝗻 \mbfsansn +𝗼 \mbfsanso +𝗽 \mbfsansp +𝗾 \mbfsansq +𝗿 \mbfsansr +𝘀 \mbfsanss +𝘁 \mbfsanst +𝘂 \mbfsansu +𝘃 \mbfsansv +𝘄 \mbfsansw +𝘅 \mbfsansx +𝘆 \mbfsansy +𝘇 \mbfsansz +𝘈 \mitsansA +𝘉 \mitsansB +𝘊 \mitsansC +𝘋 \mitsansD +𝘌 \mitsansE +𝘍 \mitsansF +𝘎 \mitsansG +𝘏 \mitsansH +𝘐 \mitsansI +𝘑 \mitsansJ +𝘒 \mitsansK +𝘓 \mitsansL +𝘔 \mitsansM +𝘕 \mitsansN +𝘖 \mitsansO +𝘗 \mitsansP +𝘘 \mitsansQ +𝘙 \mitsansR +𝘚 \mitsansS +𝘛 \mitsansT +𝘜 \mitsansU +𝘝 \mitsansV +𝘞 \mitsansW +𝘟 \mitsansX +𝘠 \mitsansY +𝘡 \mitsansZ +𝘢 \mitsansa +𝘣 \mitsansb +𝘤 \mitsansc +𝘥 \mitsansd +𝘦 \mitsanse +𝘧 \mitsansf +𝘨 \mitsansg +𝘩 \mitsansh +𝘪 \mitsansi +𝘫 \mitsansj +𝘬 \mitsansk +𝘭 \mitsansl +𝘮 \mitsansm +𝘯 \mitsansn +𝘰 \mitsanso +𝘱 \mitsansp +𝘲 \mitsansq +𝘳 \mitsansr +𝘴 \mitsanss +𝘵 \mitsanst +𝘶 \mitsansu +𝘷 \mitsansv +𝘸 \mitsansw +𝘹 \mitsansx +𝘺 \mitsansy +𝘻 \mitsansz +𝘼 \mbfitsansA +𝘽 \mbfitsansB +𝘾 \mbfitsansC +𝘿 \mbfitsansD +𝙀 \mbfitsansE +𝙁 \mbfitsansF +𝙂 \mbfitsansG +𝙃 \mbfitsansH +𝙄 \mbfitsansI +𝙅 \mbfitsansJ +𝙆 \mbfitsansK +𝙇 \mbfitsansL +𝙈 \mbfitsansM +𝙉 \mbfitsansN +𝙊 \mbfitsansO +𝙋 \mbfitsansP +𝙌 \mbfitsansQ +𝙍 \mbfitsansR +𝙎 \mbfitsansS +𝙏 \mbfitsansT +𝙐 \mbfitsansU +𝙑 \mbfitsansV +𝙒 \mbfitsansW +𝙓 \mbfitsansX +𝙔 \mbfitsansY +𝙕 \mbfitsansZ +𝙖 \mbfitsansa +𝙗 \mbfitsansb +𝙘 \mbfitsansc +𝙙 \mbfitsansd +𝙚 \mbfitsanse +𝙛 \mbfitsansf +𝙜 \mbfitsansg +𝙝 \mbfitsansh +𝙞 \mbfitsansi +𝙟 \mbfitsansj +𝙠 \mbfitsansk +𝙡 \mbfitsansl +𝙢 \mbfitsansm +𝙣 \mbfitsansn +𝙤 \mbfitsanso +𝙥 \mbfitsansp +𝙦 \mbfitsansq +𝙧 \mbfitsansr +𝙨 \mbfitsanss +𝙩 \mbfitsanst +𝙪 \mbfitsansu +𝙫 \mbfitsansv +𝙬 \mbfitsansw +𝙭 \mbfitsansx +𝙮 \mbfitsansy +𝙯 \mbfitsansz +𝙰 \mttA +𝙱 \mttB +𝙲 \mttC +𝙳 \mttD +𝙴 \mttE +𝙵 \mttF +𝙶 \mttG +𝙷 \mttH +𝙸 \mttI +𝙹 \mttJ +𝙺 \mttK +𝙻 \mttL +𝙼 \mttM +𝙽 \mttN +𝙾 \mttO +𝙿 \mttP +𝚀 \mttQ +𝚁 \mttR +𝚂 \mttS +𝚃 \mttT +𝚄 \mttU +𝚅 \mttV +𝚆 \mttW +𝚇 \mttX +𝚈 \mttY +𝚉 \mttZ +𝚊 \mtta +𝚋 \mttb +𝚌 \mttc +𝚍 \mttd +𝚎 \mtte +𝚏 \mttf +𝚐 \mttg +𝚑 \mtth +𝚒 \mtti +𝚓 \mttj +𝚔 \mttk +𝚕 \mttl +𝚖 \mttm +𝚗 \mttn +𝚘 \mtto +𝚙 \mttp +𝚚 \mttq +𝚛 \mttr +𝚜 \mtts +𝚝 \mttt +𝚞 \mttu +𝚟 \mttv +𝚠 \mttw +𝚡 \mttx +𝚢 \mtty +𝚣 \mttz +𝚤 \imath +𝚥 \jmath +𝚨 \mbfAlpha +𝚩 \mbfBeta +𝚪 \mbfGamma +𝚫 \mbfDelta +𝚬 \mbfEpsilon +𝚭 \mbfZeta +𝚮 \mbfEta +𝚯 \mbfTheta +𝚰 \mbfIota +𝚱 \mbfKappa +𝚲 \mbfLambda +𝚳 \mbfMu +𝚴 \mbfNu +𝚵 \mbfXi +𝚶 \mbfOmicron +𝚷 \mbfPi +𝚸 \mbfRho +𝚹 \mbfvarTheta +𝚺 \mbfSigma +𝚻 \mbfTau +𝚼 \mbfUpsilon +𝚽 \mbfPhi +𝚾 \mbfChi +𝚿 \mbfPsi +𝛀 \mbfOmega +𝛁 \mbfnabla +𝛂 \mbfalpha +𝛃 \mbfbeta +𝛄 \mbfgamma +𝛅 \mbfdelta +𝛆 \mbfvarepsilon +𝛇 \mbfzeta +𝛈 \mbfeta +𝛉 \mbftheta +𝛊 \mbfiota +𝛋 \mbfkappa +𝛌 \mbflambda +𝛍 \mbfmu +𝛎 \mbfnu +𝛏 \mbfxi +𝛐 \mbfomicron +𝛑 \mbfpi +𝛒 \mbfrho +𝛓 \mbfvarsigma +𝛔 \mbfsigma +𝛕 \mbftau +𝛖 \mbfupsilon +𝛗 \mbfvarphi +𝛘 \mbfchi +𝛙 \mbfpsi +𝛚 \mbfomega +𝛛 \mbfpartial +𝛜 \mbfepsilon +𝛝 \mbfvartheta +𝛞 \mbfvarkappa +𝛟 \mbfphi +𝛠 \mbfvarrho +𝛡 \mbfvarpi +𝛢 \mitAlpha +𝛣 \mitBeta +𝛤 \mitGamma +𝛥 \mitDelta +𝛦 \mitEpsilon +𝛧 \mitZeta +𝛨 \mitEta +𝛩 \mitTheta +𝛪 \mitIota +𝛫 \mitKappa +𝛬 \mitLambda +𝛭 \mitMu +𝛮 \mitNu +𝛯 \mitXi +𝛰 \mitOmicron +𝛱 \mitPi +𝛲 \mitRho +𝛳 \mitvarTheta +𝛴 \mitSigma +𝛵 \mitTau +𝛶 \mitUpsilon +𝛷 \mitPhi +𝛸 \mitChi +𝛹 \mitPsi +𝛺 \mitOmega +𝛻 \mitnabla +𝛼 \mitalpha +𝛽 \mitbeta +𝛾 \mitgamma +𝛿 \mitdelta +𝜀 \mitvarepsilon +𝜁 \mitzeta +𝜂 \miteta +𝜃 \mittheta +𝜄 \mitiota +𝜅 \mitkappa +𝜆 \mitlambda +𝜇 \mitmu +𝜈 \mitnu +𝜉 \mitxi +𝜊 \mitomicron +𝜋 \mitpi +𝜌 \mitrho +𝜍 \mitvarsigma +𝜎 \mitsigma +𝜏 \mittau +𝜐 \mitupsilon +𝜑 \mitvarphi +𝜒 \mitchi +𝜓 \mitpsi +𝜔 \mitomega +𝜕 \mitpartial +𝜖 \mitepsilon +𝜗 \mitvartheta +𝜘 \mitvarkappa +𝜙 \mitphi +𝜚 \mitvarrho +𝜛 \mitvarpi +𝜜 \mbfitAlpha +𝜝 \mbfitBeta +𝜞 \mbfitGamma +𝜟 \mbfitDelta +𝜠 \mbfitEpsilon +𝜡 \mbfitZeta +𝜢 \mbfitEta +𝜣 \mbfitTheta +𝜤 \mbfitIota +𝜥 \mbfitKappa +𝜦 \mbfitLambda +𝜧 \mbfitMu +𝜨 \mbfitNu +𝜩 \mbfitXi +𝜪 \mbfitOmicron +𝜫 \mbfitPi +𝜬 \mbfitRho +𝜭 \mbfitvarTheta +𝜮 \mbfitSigma +𝜯 \mbfitTau +𝜰 \mbfitUpsilon +𝜱 \mbfitPhi +𝜲 \mbfitChi +𝜳 \mbfitPsi +𝜴 \mbfitOmega +𝜵 \mbfitnabla +𝜶 \mbfitalpha +𝜷 \mbfitbeta +𝜸 \mbfitgamma +𝜹 \mbfitdelta +𝜺 \mbfitvarepsilon +𝜻 \mbfitzeta +𝜼 \mbfiteta +𝜽 \mbfittheta +𝜾 \mbfitiota +𝜿 \mbfitkappa +𝝀 \mbfitlambda +𝝁 \mbfitmu +𝝂 \mbfitnu +𝝃 \mbfitxi +𝝄 \mbfitomicron +𝝅 \mbfitpi +𝝆 \mbfitrho +𝝇 \mbfitvarsigma +𝝈 \mbfitsigma +𝝉 \mbfittau +𝝊 \mbfitupsilon +𝝋 \mbfitvarphi +𝝌 \mbfitchi +𝝍 \mbfitpsi +𝝎 \mbfitomega +𝝏 \mbfitpartial +𝝐 \mbfitepsilon +𝝑 \mbfitvartheta +𝝒 \mbfitvarkappa +𝝓 \mbfitphi +𝝔 \mbfitvarrho +𝝕 \mbfitvarpi +𝝖 \mbfsansAlpha +𝝗 \mbfsansBeta +𝝘 \mbfsansGamma +𝝙 \mbfsansDelta +𝝚 \mbfsansEpsilon +𝝛 \mbfsansZeta +𝝜 \mbfsansEta +𝝝 \mbfsansTheta +𝝞 \mbfsansIota +𝝟 \mbfsansKappa +𝝠 \mbfsansLambda +𝝡 \mbfsansMu +𝝢 \mbfsansNu +𝝣 \mbfsansXi +𝝤 \mbfsansOmicron +𝝥 \mbfsansPi +𝝦 \mbfsansRho +𝝧 \mbfsansvarTheta +𝝨 \mbfsansSigma +𝝩 \mbfsansTau +𝝪 \mbfsansUpsilon +𝝫 \mbfsansPhi +𝝬 \mbfsansChi +𝝭 \mbfsansPsi +𝝮 \mbfsansOmega +𝝯 \mbfsansnabla +𝝰 \mbfsansalpha +𝝱 \mbfsansbeta +𝝲 \mbfsansgamma +𝝳 \mbfsansdelta +𝝴 \mbfsansvarepsilon +𝝵 \mbfsanszeta +𝝶 \mbfsanseta +𝝷 \mbfsanstheta +𝝸 \mbfsansiota +𝝹 \mbfsanskappa +𝝺 \mbfsanslambda +𝝻 \mbfsansmu +𝝼 \mbfsansnu +𝝽 \mbfsansxi +𝝾 \mbfsansomicron +𝝿 \mbfsanspi +𝞀 \mbfsansrho +𝞁 \mbfsansvarsigma +𝞂 \mbfsanssigma +𝞃 \mbfsanstau +𝞄 \mbfsansupsilon +𝞅 \mbfsansvarphi +𝞆 \mbfsanschi +𝞇 \mbfsanspsi +𝞈 \mbfsansomega +𝞉 \mbfsanspartial +𝞊 \mbfsansepsilon +𝞋 \mbfsansvartheta +𝞌 \mbfsansvarkappa +𝞍 \mbfsansphi +𝞎 \mbfsansvarrho +𝞏 \mbfsansvarpi +𝞐 \mbfitsansAlpha +𝞑 \mbfitsansBeta +𝞒 \mbfitsansGamma +𝞓 \mbfitsansDelta +𝞔 \mbfitsansEpsilon +𝞕 \mbfitsansZeta +𝞖 \mbfitsansEta +𝞗 \mbfitsansTheta +𝞘 \mbfitsansIota +𝞙 \mbfitsansKappa +𝞚 \mbfitsansLambda +𝞛 \mbfitsansMu +𝞜 \mbfitsansNu +𝞝 \mbfitsansXi +𝞞 \mbfitsansOmicron +𝞟 \mbfitsansPi +𝞠 \mbfitsansRho +𝞡 \mbfitsansvarTheta +𝞢 \mbfitsansSigma +𝞣 \mbfitsansTau +𝞤 \mbfitsansUpsilon +𝞥 \mbfitsansPhi +𝞦 \mbfitsansChi +𝞧 \mbfitsansPsi +𝞨 \mbfitsansOmega +𝞩 \mbfitsansnabla +𝞪 \mbfitsansalpha +𝞫 \mbfitsansbeta +𝞬 \mbfitsansgamma +𝞭 \mbfitsansdelta +𝞮 \mbfitsansvarepsilon +𝞯 \mbfitsanszeta +𝞰 \mbfitsanseta +𝞱 \mbfitsanstheta +𝞲 \mbfitsansiota +𝞳 \mbfitsanskappa +𝞴 \mbfitsanslambda +𝞵 \mbfitsansmu +𝞶 \mbfitsansnu +𝞷 \mbfitsansxi +𝞸 \mbfitsansomicron +𝞹 \mbfitsanspi +𝞺 \mbfitsansrho +𝞻 \mbfitsansvarsigma +𝞼 \mbfitsanssigma +𝞽 \mbfitsanstau +𝞾 \mbfitsansupsilon +𝞿 \mbfitsansvarphi +𝟀 \mbfitsanschi +𝟁 \mbfitsanspsi +𝟂 \mbfitsansomega +𝟃 \mbfitsanspartial +𝟄 \mbfitsansepsilon +𝟅 \mbfitsansvartheta +𝟆 \mbfitsansvarkappa +𝟇 \mbfitsansphi +𝟈 \mbfitsansvarrho +𝟉 \mbfitsansvarpi +𝟊 \mbfDigamma +𝟋 \mbfdigamma +𝟎 \mbfzero +𝟏 \mbfone +𝟐 \mbftwo +𝟑 \mbfthree +𝟒 \mbffour +𝟓 \mbffive +𝟔 \mbfsix +𝟕 \mbfseven +𝟖 \mbfeight +𝟗 \mbfnine +𝟘 \Bbbzero +𝟙 \Bbbone +𝟚 \Bbbtwo +𝟛 \Bbbthree +𝟜 \Bbbfour +𝟝 \Bbbfive +𝟞 \Bbbsix +𝟟 \Bbbseven +𝟠 \Bbbeight +𝟡 \Bbbnine +𝟢 \msanszero +𝟣 \msansone +𝟤 \msanstwo +𝟥 \msansthree +𝟦 \msansfour +𝟧 \msansfive +𝟨 \msanssix +𝟩 \msansseven +𝟪 \msanseight +𝟫 \msansnine +𝟬 \mbfsanszero +𝟭 \mbfsansone +𝟮 \mbfsanstwo +𝟯 \mbfsansthree +𝟰 \mbfsansfour +𝟱 \mbfsansfive +𝟲 \mbfsanssix +𝟳 \mbfsansseven +𝟴 \mbfsanseight +𝟵 \mbfsansnine +𝟶 \mttzero +𝟷 \mttone +𝟸 \mtttwo +𝟹 \mttthree +𝟺 \mttfour +𝟻 \mttfive +𝟼 \mttsix +𝟽 \mttseven +𝟾 \mtteight +𝟿 \mttnine +𞻰 \arabicmaj +𞻱 \arabichad +° \degree + +# Superscripts/Subscripts +⁰ \^0 +¹ \^1 +² \^2 +³ \^3 +⁴ \^4 +⁵ \^5 +⁶ \^6 +⁷ \^7 +⁸ \^8 +⁹ \^9 +⁺ \^+ +⁻ \^- +⁼ \^= +⁽ \^( +⁾ \^) +₀ \_0 +₁ \_1 +₂ \_2 +₃ \_3 +₄ \_4 +₅ \_5 +₆ \_6 +₇ \_7 +₈ \_8 +₉ \_9 +₊ \_+ +₋ \_- +₌ \_= +₍ \_( +₎ \_) +ᵃ \^a +ᵇ \^b +ᶜ \^c +ᵈ \^d +ᵉ \^e +ᶠ \^f +ᵍ \^g +ʰ \^h +ⁱ \^i +ʲ \^j +ᵏ \^k +ˡ \^l +ᵐ \^m +ⁿ \^n +ᵒ \^o +ᵖ \^p +# Warning: Unicode does not support \^q +ʳ \^r +ˢ \^s +ᵗ \^t +ᵘ \^u +ᵛ \^v +ʷ \^w +ˣ \^x +ʸ \^y +ᶻ \^z +# Some uppercase superscripts +ᴬ \^A +ᴮ \^B +ᴰ \^D +ᴱ \^E +ᴳ \^G +ᴴ \^H +ᴵ \^I +ᴶ \^J +ᴷ \^K +ᴸ \^L +ᴹ \^M +ᴺ \^N +ᴼ \^O +ᴾ \^P +ᴿ \^R +ᵀ \^T +ᵁ \^U +ⱽ \^V +ᵂ \^W +# Some lowercase subscripts +ₐ \_a +ₑ \_e +ₕ \_h +ᵢ \_i +ⱼ \_j +ₖ \_k +ₗ \_l +ₘ \_m +ₙ \_n +ₒ \_o +ₚ \_p +ᵣ \_r +ₛ \_s +ₜ \_t +ᵤ \_u +ᵥ \_v +ₓ \_x +# A few Greek lowercase superscripts +ᵅ \^alpha +ᵝ \^beta +ᵞ \^gamma +ᵟ \^delta +ᵋ \^epsilon +ᶿ \^theta +ᶥ \^iota +ᶲ \^phi +ᵠ \^varphi +ᵡ \^chi +# A few Greek lowercase subscripts +ᵦ \_beta +ᵧ \_gamma +ᵨ \_rho +ᵩ \_varphi +ᵪ \_chi + +# Abbreviations +⟹ \implies +⟸ \impliedby +⟺ \iff +• \bullet +∘ \circ +□ \square +■ \blacksquare +¬ \lnot +∧ \land +∨ \lor + +# Small caps: \textsc +ᴀ \tsca +ʙ \tscb +ᴄ \tscc +ᴅ \tscd +ᴇ \tsce +ꜰ \tscf +ɢ \tscg +ʜ \tsch +ɪ \tsci +ᴊ \tscj +ᴋ \tsck +ʟ \tscl +ᴍ \tscm +ɴ \tscn +ᴏ \tsco +ᴘ \tscp +# Warning: the script \textsc{q} is not supported in many fonts +ꞯ \tscq +ʀ \tscr +ꜱ \tscs +ᴛ \tsct +ᴜ \tscu +ᴠ \tscv +ᴡ \tscw +# Warning: Unicode does not support \textsc{x} +ʏ \tscy +ᴢ \tscz + +# Brackets +⟦ \[[ +⟧ \]] +⸨ \(( +⸩ \)) + +# Misc +§ \S diff --git a/config-sync/.config/ibus/rime/latex.patch.yaml b/config-sync/.config/ibus/rime/latex.patch.yaml new file mode 100644 index 0000000..6eddb3d --- /dev/null +++ b/config-sync/.config/ibus/rime/latex.patch.yaml @@ -0,0 +1,15 @@ +patch: + # engine/translators/+: + # - punct_translator + # - r10n_translator + # - reverse_lookup_translator +# meaning of the regex: ^ start of line, \\ the starting \, .+ any char 1 or more time, $ end + recognizer/patterns/reverse_lookup: '^\\.+$' + schema/dependencies/+: + - latex + abc_segmentor/extra_tags: + - reverse_lookup + reverse_lookup: + dictionary: latex + enable_completion: false + tips: latex \ No newline at end of file diff --git a/config-sync/.config/ibus/rime/latex.schema.yaml b/config-sync/.config/ibus/rime/latex.schema.yaml new file mode 100644 index 0000000..fb16dca --- /dev/null +++ b/config-sync/.config/ibus/rime/latex.schema.yaml @@ -0,0 +1,36 @@ +# Rime schema +# encoding: utf-8 + +schema: + schema_id: latex + name: Latex Math Symbols + version: "1.1" + author: + - slbtty + - mark + description: | + Latex Math Symbols Input Method. + You have to type '\' first to get symbols. + This schema is intended to be used as an addon for other input methods. + +engine: + processors: + - speller # to enable alphabet & initials below. + - selector + - navigator + - express_editor + segmentors: + - abc_segmentor + - fallback_segmentor + translators: + - table_translator + +speller: + alphabet: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\^_-><+-=()[]' + initials: '\_^' + auto_select: true + +translator: + dictionary: latex + enable_sentence: false + enable_user_dict: false diff --git a/config-sync/.config/ibus/rime/luna_pinyin_simp.custom.yaml b/config-sync/.config/ibus/rime/luna_pinyin_simp.custom.yaml index 0a308c8..c9f720b 100644 --- a/config-sync/.config/ibus/rime/luna_pinyin_simp.custom.yaml +++ b/config-sync/.config/ibus/rime/luna_pinyin_simp.custom.yaml @@ -2,6 +2,8 @@ __patch: # Rx: emoji:customize:schema=luna_pinyin { - patch/+: __include: emoji_suggestion:/patch + - patch/+: + __include: latex.patch:/patch # } # https://wiki.archlinuxcn.org/wiki/Fcitx5#RIME/%E4%B8%AD%E5%B7%9E%E9%9F%BB @@ -10,4 +12,4 @@ __patch: patch: "translator/dictionary": extended #词典名字可自定义,与下方文件名保持一致即可 'engine/translators/+': - - lua_translator@date_translator \ No newline at end of file + - lua_translator@date_translator diff --git a/config-sync/.config/ibus/rime/rime-japanese b/config-sync/.config/ibus/rime/rime-japanese new file mode 160000 index 0000000..189f5e5 --- /dev/null +++ b/config-sync/.config/ibus/rime/rime-japanese @@ -0,0 +1 @@ +Subproject commit 189f5e57198ff392518a901ab748beb0b44254f2 diff --git a/config-sync/ssh-config b/config-sync/ssh-config index 039127e..871cc4a 100644 --- a/config-sync/ssh-config +++ b/config-sync/ssh-config @@ -48,3 +48,9 @@ Host caspase Host kevin HostName caspase3kjq.terra-incognita.dev User me@hydev.org + +Host ut-343 + HostName dbsrv1.teach.cs.toronto.edu + +Host ut-cs + HostName teach.cs.toronto.edu \ No newline at end of file diff --git a/scripts/bin/compress-zst-gpg b/scripts/bin/compress-zst-gpg new file mode 100755 index 0000000..10bdf51 --- /dev/null +++ b/scripts/bin/compress-zst-gpg @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +level="${level:-19}" + +cmd=$(which tar) +if command -v "gtar" &> /dev/null; then + cmd=$(which gtar) +fi +echo "Using $cmd" + +# Read first parameter +arg1="$1" +name="$1".tar.zst.gpg +shift +echo "Output to $name" + +# Read second parameter +if [[ -z "$*" ]]; then + files="$arg1" +else + files="$*" +fi + +echo "Compressing $files" + +cores=$(python3 -c "import os; print(os.cpu_count())") +echo "Starting ZSTD compression with $cores cores and level $level" +"$cmd" -I "zstd -T$cores -$level" --checkpoint=.1024 --totals --totals=SIGUSR1 -cf - "$files" | gpg --symmetric --cipher-algo aes256 -o "$name" \ No newline at end of file diff --git a/scripts/bin/smartt b/scripts/bin/smartt new file mode 100755 index 0000000..cec1bbe --- /dev/null +++ b/scripts/bin/smartt @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +####################################### +# Variables # +####################################### + +SSD_DEVICE="/dev/sda" + +ON_TIME_TAG="Power_On_Hours" +WEAR_COUNT_TAG="Wear_Leveling_Count" +LBAS_WRITTEN_TAG="Total_LBAs_Written" +LBA_SIZE=512 # Value in bytes + +BYTES_PER_MB=1048576 +BYTES_PER_GB=1073741824 +BYTES_PER_TB=1099511627776 + +####################################### +# Get total data written... # +####################################### + +# Get SMART attributes +SMART_INFO=$(sudo /usr/sbin/smartctl -A "$SSD_DEVICE") + +# Extract required attributes +ON_TIME=$(echo "$SMART_INFO" | grep "$ON_TIME_TAG" | awk '{print $10}') +WEAR_COUNT=$(echo "$SMART_INFO" | grep "$WEAR_COUNT_TAG" | awk '{print $4}' | sed 's/^0*//') +LBAS_WRITTEN=$(echo "$SMART_INFO" | grep "$LBAS_WRITTEN_TAG" | awk '{print $10}') + +# Convert LBAs -> bytes +BYTES_WRITTEN=$(echo "$LBAS_WRITTEN * $LBA_SIZE" | bc) +MB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_MB" | bc) +GB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_GB" | bc) +TB_WRITTEN=$(echo "scale=3; $BYTES_WRITTEN / $BYTES_PER_TB" | bc) + +# Output results... +echo "------------------------------" +echo " SSD Status: $SSD_DEVICE" +echo "------------------------------" +echo " On time: $(echo $ON_TIME | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta') hr" +echo "------------------------------" +echo " Data written:" +echo " MB: $(echo $MB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" +echo " GB: $(echo $GB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" +echo " TB: $(echo $TB_WRITTEN | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" +echo "------------------------------" +echo " Mean write rate:" +echo " MB/hr: $(echo "scale=3; $MB_WRITTEN / $ON_TIME" | bc | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta')" +echo "------------------------------" +echo " Drive health: ${WEAR_COUNT} %" +echo "------------------------------" \ No newline at end of file diff --git a/scripts/helpers/video.py b/scripts/bin/video.py similarity index 77% rename from scripts/helpers/video.py rename to scripts/bin/video.py index e1b6744..fb7069f 100755 --- a/scripts/helpers/video.py +++ b/scripts/bin/video.py @@ -4,7 +4,8 @@ from __future__ import annotations import os import platform import re -from subprocess import Popen +import shutil +from subprocess import Popen, check_call import sys import shlex from datetime import datetime @@ -107,23 +108,29 @@ def rename(): os.rename(file, date) +def convert_gnome(): + rec_dir = Path.home() / "Videos/Screencasts" + fs = [rec_dir / str(f) for f in os.listdir(rec_dir) if str(f).startswith("Screencast") and str(f).endswith(".webm")] + for inf in fs: + sp = inf.stem.split(" ") + ouf = rec_dir / f"Rec {sp[2]} {sp[3][:sp[3].rindex('-')]}.mp4" + if ouf.is_file(): + print(f"Already converted: {inf}") + continue + print(f"Converting '{inf}' to '{ouf}'") + check_call(['ffmpeg', '-i', inf, + '-c:v', 'libx264', + '-vf', 'crop=trunc(iw/2)*2:trunc(ih/2)*2, fps=30', + '-y', + ouf]) + + if input("Remove files? [y/N]") == "y": + [os.remove(f) for f in fs] + + if __name__ == '__main__': - if not hasattr(sys, 'ps1'): - args = sys.argv[1:] - if len(args) < 1: - print('Usage: compress [rename/python code]') - - # Command to rename all screen recordings - if args[0] == 'rename': - rename() - exit() - - # processor = args[0].lower().strip() - # i = args[1] - # crf = args[2] if len(args) > 2 else '24' - # cmd = 'cmd' in processor - # if cmd: - # processor = processor.replace('cmd', '') - - # additional_args = ' '.join(args[3:] if len(args) > 3 else []) - print(eval(' '.join(args[0:]))) + args = sys.argv[1:] + if args: + v = eval(args[0]) + if v: + print(v) diff --git a/scripts/includes/conda.sh b/scripts/includes/conda.sh new file mode 100644 index 0000000..8d20212 --- /dev/null +++ b/scripts/includes/conda.sh @@ -0,0 +1,32 @@ +# Mamba (conda replacement) +alias mamba="micromamba" +alias mamba-install="curl micro.mamba.pm/install.sh | zsh" +export MAMBA_ROOT_PREFIX="$HOME/.conda" + +# Mamba initialize function +mamba-init() +{ + export MAMBA_EXE="$(which micromamba)"; + __mamba_setup="$("$MAMBA_EXE" shell hook --shell zsh --prefix "$HOME/micromamba" 2> /dev/null)" + if [ $? -eq 0 ]; then + eval "$__mamba_setup" + else + if [ -f "$MAMBA_ROOT_PREFIX/etc/profile.d/micromamba.sh" ]; then + . "$MAMBA_ROOT_PREFIX/etc/profile.d/micromamba.sh" + else + export PATH="$MAMBA_ROOT_PREFIX/bin:$PATH" + fi + fi + unset __mamba_setup +} + +# Auto init mamba +if command -v 'micromamba' &> /dev/null; then + mamba-init +fi + +# Pyenv +if command -v 'pyenv' &> /dev/null; then + eval "$(pyenv init -)" + PATH=$(pyenv root)/shims:$PATH +fi \ No newline at end of file diff --git a/scripts/includes/docker.sh b/scripts/includes/docker.sh new file mode 100644 index 0000000..abe0e66 --- /dev/null +++ b/scripts/includes/docker.sh @@ -0,0 +1,24 @@ + +if command -v 'docker-compose' &> /dev/null; then + alias dc='docker-compose' +else + alias dc='docker compose' +fi +alias docker-ip="docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}'" +alias dockers="docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'" + +# Docker linux containers +alpine-create() +{ + docker rmi azalea/alpine + docker run -it --name alpine-init --hostname alpine alpine \ + /bin/sh -c 'apk add zsh bash git curl wget tar zstd python3 && bash <(curl -sL hydev.org/zsh)' + docker commit alpine-init azalea/alpine + docker rm alpine-init +} +alias alpine="docker start -ai alpine" +alias alpine-init="docker run -it --name alpine --hostname alpine azalea/alpine zsh" + +alias psqlt+="docker run --rm -dit --name psql-test --hostname psql -e POSTGRES_HOST_AUTH_METHOD=trust postgres && echo 'Created'" +alias psqlt-="docker stop psql-test && echo 'Deleted'" +alias psqlt='psql -h $(docker-ip psql-test) -p 5432 -U postgres' \ No newline at end of file diff --git a/scripts/includes/git.sh b/scripts/includes/git.sh deleted file mode 100644 index f756c6f..0000000 --- a/scripts/includes/git.sh +++ /dev/null @@ -1,16 +0,0 @@ -# Git commit wrapper -commit() { - msg="$@" - git commit -m "$msg" -} - -commitall() { - git add . - commit "$@" -} -alias commita="commitall" - -compush() { - commitall "$@" - git push -} diff --git a/scripts/includes/later/git.zsh b/scripts/includes/later/git.zsh new file mode 100644 index 0000000..9ff86a2 --- /dev/null +++ b/scripts/includes/later/git.zsh @@ -0,0 +1,63 @@ +# Git commit wrapper +commit() { + msg="$@" + git commit -m "$msg" +} + +commitall() { + git add . + commit "$@" +} +alias commita="commitall" + +compush() { + commitall "$@" + git push +} + +# Git identity +git-ida() { + # Zsh only + TMP_ARR=("${(@f)$(git-id-list get "$1")}") + git-id "${TMP_ARR[1]}" "${TMP_ARR[2]}" +} +git-id() { + export GIT_USER="$1" + export GIT_EMAIL="$2" + git-id-prompt +} +git-id-prompt() { + if [[ -z "$GIT_USER" ]] && [[ -z "$GIT_EMAIL" ]]; then + prompt-reset + else + prompt-set 30 "&cGit ID: $GIT_USER | $GIT_EMAIL " + prompt-update + fi +} +git-id-prompt +[[ -z $GIT_BIN ]] && GIT_BIN=$(which git) +git() { + if [[ -z "$GIT_USER" ]]; then + $GIT_BIN "$@" + else + $GIT_BIN -c "user.name=$GIT_USER" -c "user.email=$GIT_EMAIL" -c "commit.gpgsign=false" "$@" + fi +} + +# Git environment +git-env() { + git_commands=( add bisect branch checkout clone commit diff fetch grep init log merge pull push rebase reset restore show status tag ) + for i in "${git_commands[@]}" + do + alias "$i"="git $i" + done + alias 'grm'='git rm' + alias 'gmv'='git mv' +} +git-unenv() { + git_commands=( add bisect branch checkout clone commit diff fetch grep init log merge pull push rebase reset restore show status tag grm gmv ) + for i in "${git_commands[@]}" + do + unalias "$i" + done +} diff --git a/scripts/includes/mac.sh b/scripts/includes/mac.sh index 953cf1e..4f128e4 100644 --- a/scripts/includes/mac.sh +++ b/scripts/includes/mac.sh @@ -22,6 +22,14 @@ if [[ $OSTYPE == 'darwin'* ]]; then export JAVA_HOME=${JDK11} export PATH="${JDK11}/bin:$PATH" + # Mac hostname + mac-hostname() { + name="$@" + sudo scutil --set HostName "$name" + sudo scutil --set LocalHostName "$name" + sudo scutil --set ComputerName "$name" + } + # Anaconda export CONDA_PATH="/usr/local/anaconda3" export PATH="$CONDA_PATH/bin:$PATH" diff --git a/scripts/includes/media.sh b/scripts/includes/media.sh new file mode 100644 index 0000000..a357ce9 --- /dev/null +++ b/scripts/includes/media.sh @@ -0,0 +1,21 @@ +# Cut videos - cut [start time (default 00:00:00)] +cutv() { + if [ "$#" -lt 2 ]; then + echo "Usage: cut [start time (00:00:00)]" + return 2 + fi + + local start="${3:-00:00:00}" + echo "$1" + echo "$2" + echo "$start" + ffmpeg -i "$1" -codec copy -ss "$start" -t "$2" Cut\ "$1" +} +alias vcomp="$BASEDIR/scripts/bin/video.py" +alias vcompy="ipython -i $BASEDIR/scripts/bin/video.py" + +flac2mp3() { + for file in *.flac; do + ffmpeg -i "$file" -ab 320k -map_metadata 0 -id3v2_version 3 "${file%.flac}.mp3" + done +} \ No newline at end of file diff --git a/scripts/includes/prompt.sh b/scripts/includes/prompt.sh index 9256adf..b991478 100755 --- a/scripts/includes/prompt.sh +++ b/scripts/includes/prompt.sh @@ -21,17 +21,19 @@ pcolor() { # Build a zsh prompt prompt-reset() { + host="$(sed "s/HyDEV-//g" <<< "$HOST")" + # New line first prompt-set 0 "&n" # Time stamp prompt-set 10 "&5%D{%a %m-%d %H:%M}&r " - [[ "$HOST" != "HyDEV" ]] && prompt-set 10 "&gf(#55CDFC)%D{%a} &gf(#F7A8B8)%D{%m-}&f%D{%d} &gf(#F7A8B8)%D{%H:}&gf(#55CDFC)%D{%M}&r " + [[ "$host" != "HyDEV" ]] && prompt-set 10 "&gf(#55CDFC)%D{%a} &gf(#F7A8B8)%D{%m-}&f%D{%d} &gf(#F7A8B8)%D{%H:}&gf(#55CDFC)%D{%M}&r " # Hostname - prompt-set 20 "&1%m&r " - [[ "$HOST" == "HyDEV" ]] && prompt-set 20 "&gf(#55CDFC)H&gf(#F7A8B8)y&fD&gf(#F7A8B8)E&gf(#55CDFC)V&r " + prompt-set 20 "&1$host&r " + [[ "$host" == "HyDEV" ]] && prompt-set 20 "&gf(#55CDFC)H&gf(#F7A8B8)y&fD&gf(#F7A8B8)E&gf(#55CDFC)V&r " # Username, or show a cat if I'm hykilpikonna prompt-set 30 "&e%n&r " - [[ "$USER" == "hykilpikonna" ]] && prompt-set 30 "🐱 " + [[ "$USER" == "hykilpikonna" || "$USER" == "azalea" ]] && prompt-set 30 "🐱 " # Directory prompt-set 40 "&r%~ " # New line after the prompt header diff --git a/scripts/zshrc.sh b/scripts/zshrc.sh index 7a8f69a..3694e73 100755 --- a/scripts/zshrc.sh +++ b/scripts/zshrc.sh @@ -72,19 +72,12 @@ alias dusa='du -hc --max-depth=1 | sortsize' alias ts='tailscale' alias ts-install='curl -fsSL https://tailscale.com/install.sh | sh' -if command -v 'docker-compose' &> /dev/null; then - alias dc='docker-compose' -else - alias dc='docker compose' -fi - alias vsucode='sudo code --user-data-dir /root/.config/vscode --no-sandbox' alias visucode='EDITOR="code --wait" sudoedit' alias gpu-temp='while sleep 1; do clear; gpustat; done' alias cpu-temp='s-tui' -alias mine='sudo lolminer --algo ETHASH --pool stratum+ssl://daggerhashimoto.auto.nicehash.com:443 --user=3AcCeSHHwWJRf945iKCbxZ8cjUvy7Tmg3g.Daisy-lol' -alias mine-zel='sudo lolminer --algo ZEL --pers BgoldPoW --pool stratum+tcp://zelhash.auto.nicehash.com:9200 --user=3AcCeSHHwWJRf945iKCbxZ8cjUvy7Tmg3g.Daisy-lol' alias mount-external='sudo mount -t cifs //192.168.2.1/external /smb/external -o rw,user=azalea,uid=1000,gid=1000,pass=' +alias compress-json="find -name '*.json' -print0 | parallel --jobs 80% -0 zstd -z -19 -v -f --rm {}" alias ds-clean="find . -name '.DS_Store' -delete -print" alias dotclean="find . -name '._*' -delete -print" @@ -100,15 +93,32 @@ alias old-update-ssh-keys="curl -L https://github.com/Hykilpikonna.keys > ~/.ssh alias tar-kill-progress="watch -n 60 killall tar -SIGUSR1" +alias valgrin="valgrind \ + --leak-check=full \ + --show-leak-kinds=all \ + --leak-resolution=med \ + --track-origins=yes \ + --vgdb=no" + +upload-daisy() { + file="$@" + curl -u azalea -F "path=@$file" "https://daisy-ddns.hydev.org/upload\?path\=/" +} + # Automatic sudo alias sctl="sudo systemctl" alias jctl="sudo journalctl" alias ufw="sudo ufw" +alias nginx="sudo nginx" # Gradle with auto environment detection -GRADLE="$(which gradle)" +[[ -z $GRADLE ]] && GRADLE="$(which gradle)" gradle() { - [[ -f "./gradlew" ]] && ./gradlew "$@" || $GRADLE "$@" + if [[ -f "./gradlew" ]]; then + ./gradlew "$@" + else + $GRADLE "$@" + fi } # Unix permissions reset (Dangerous! This will make executable files no longer executable) @@ -117,45 +127,12 @@ reset-permissions-dangerous() { sudo find . -type f -exec chmod 644 {} \; } -# Mamba (conda replacement) -alias mamba="micromamba" -alias mamba-install="curl micro.mamba.pm/install.sh | zsh" -export MAMBA_ROOT_PREFIX="$HOME/.conda" - -# Mamba initialize function -mamba-init() -{ - export MAMBA_EXE="$(which micromamba)"; - __mamba_setup="$("$MAMBA_EXE" shell hook --shell zsh --prefix "$HOME/micromamba" 2> /dev/null)" - if [ $? -eq 0 ]; then - eval "$__mamba_setup" - else - if [ -f "$MAMBA_ROOT_PREFIX/etc/profile.d/micromamba.sh" ]; then - . "$MAMBA_ROOT_PREFIX/etc/profile.d/micromamba.sh" - else - export PATH="$MAMBA_ROOT_PREFIX/bin:$PATH" - fi - fi - unset __mamba_setup -} - -# Auto init mamba -if command -v 'micromamba' &> /dev/null; then - mamba-init -fi - -# Pyenv -if command -v 'pyenv' &> /dev/null; then - eval "$(pyenv init -)" - PATH=$(pyenv root)/shims:$PATH -fi - export PATH="$SCR/bin:$PATH" export PATH="$HOME/.local/bin:$PATH" # Lisp wrapper lisp() { - ros run --load $1 --quit + ros run --load "$1" --quit } test-nf() { @@ -164,13 +141,13 @@ test-nf() { # Remote adb adblan() { - adb connect $1:16523 + adb connect "$1:16523" } alias adblan-start="adb tcpip 16523" # Add line if it doesn't exist in a file addline() { - grep -qxF "$2" "$1" || echo "$2" >> $1 + grep -qxF "$2" "$1" || echo "$2" >> "$1" } # Silent pushd and popd @@ -183,33 +160,33 @@ spopd () { # Minecraft coloring color() { - tmp="$@" - tmp="$tmp&r" - tmp=$(echo "${tmp//&0/\033[0;30m}") - tmp=$(echo "${tmp//&1/\033[0;34m}") - tmp=$(echo "${tmp//&2/\033[0;32m}") - tmp=$(echo "${tmp//&3/\033[0;36m}") - tmp=$(echo "${tmp//&4/\033[0;31m}") - tmp=$(echo "${tmp//&5/\033[0;35m}") - tmp=$(echo "${tmp//&6/\033[0;33m}") - tmp=$(echo "${tmp//&7/\033[0;37m}") - tmp=$(echo "${tmp//&8/\033[1;30m}") - tmp=$(echo "${tmp//&9/\033[1;34m}") - tmp=$(echo "${tmp//&a/\033[1;32m}") - tmp=$(echo "${tmp//&b/\033[1;36m}") - tmp=$(echo "${tmp//&c/\033[1;31m}") - tmp=$(echo "${tmp//&d/\033[1;35m}") - tmp=$(echo "${tmp//&e/\033[1;33m}") - tmp=$(echo "${tmp//&f/\033[1;37m}") - tmp=$(echo "${tmp//&r/\033[0m}") + tmp="$*&r" + tmp="${tmp//&0/\033[0;30m}" + tmp="${tmp//&1/\033[0;34m}" + tmp="${tmp//&2/\033[0;32m}" + tmp="${tmp//&3/\033[0;36m}" + tmp="${tmp//&4/\033[0;31m}" + tmp="${tmp//&5/\033[0;35m}" + tmp="${tmp//&6/\033[0;33m}" + tmp="${tmp//&7/\033[0;37m}" + tmp="${tmp//&8/\033[1;30m}" + tmp="${tmp//&9/\033[1;34m}" + tmp="${tmp//&a/\033[1;32m}" + tmp="${tmp//&b/\033[1;36m}" + tmp="${tmp//&c/\033[1;31m}" + tmp="${tmp//&d/\033[1;35m}" + tmp="${tmp//&e/\033[1;33m}" + tmp="${tmp//&f/\033[1;37m}" + tmp="${tmp//&r/\033[0m}" newline=$'\n' - tmp=$(echo "${tmp//&n/$newline}") - echo $tmp + tmp="${tmp//&n/$newline}" + echo "$tmp" } alias colors="color '&000&111&222&333&444&555&666&777&888&999&aaa&bbb&ccc&ddd&eee&fff'" # Includes -for f in $SCR/includes/*; do source $f; done +for f in "$SCR/includes/"*.*sh; do source "$f"; done +for f in "$SCR/includes/later/"*.*sh; do source "$f"; done # Set proxy setproxy() { @@ -225,55 +202,8 @@ setproxy() { prompt-update } -# Git identity -git-ida() { - # Zsh only - TMP_ARR=("${(@f)$(git-id-list get "$1")}") - git-id "${TMP_ARR[1]}" "${TMP_ARR[2]}" -} -git-id() { - export GIT_USER="$1" - export GIT_EMAIL="$2" - git-id-prompt -} -git-id-prompt() { - if [[ -z "$GIT_USER" ]] && [[ -z "$GIT_EMAIL" ]]; then - prompt-reset - else - prompt-set 30 "&cGit ID: $GIT_USER | $GIT_EMAIL " - prompt-update - fi -} -git-id-prompt -GIT_BIN=$(which git) -git() { - if [[ -z "$GIT_USER" ]]; then - $GIT_BIN "$@" - else - $GIT_BIN -c "user.name=$GIT_USER" -c "user.email=$GIT_EMAIL" -c "commit.gpgsign=false" "$@" - fi -} - -# Git environment -git-env() { - git_commands=( add bisect branch checkout clone commit diff fetch grep init log merge pull push rebase reset restore show status tag ) - for i in "${git_commands[@]}" - do - alias "$i"="git $i" - done - alias 'grm'='git rm' - alias 'gmv'='git mv' -} -git-unenv() { - git_commands=( add bisect branch checkout clone commit diff fetch grep init log merge pull push rebase reset restore show status tag grm gmv ) - for i in "${git_commands[@]}" - do - unalias "$i" - done -} - # SSH Patch -SSH_BIN=$(which ssh) +[[ -z $SSH_BIN ]] && SSH_BIN=$(which ssh) ssh() { if [[ "$TERM" == 'xterm-kitty' ]]; then env TERM=xterm-256color "$SSH_BIN" "$@" @@ -282,35 +212,5 @@ ssh() { fi } -# Mac hostname -mac-hostname() { - name="$@" - sudo scutil --set HostName "$name" - sudo scutil --set LocalHostName "$name" - sudo scutil --set ComputerName "$name" -} - -# Cut videos - cut [start time (default 00:00:00)] -cut() { - if [ "$#" -lt 2 ]; then - echo "Usage: cut [start time (00:00:00)]" - return 2 - fi - - local start="${3:-00:00:00}" - echo "$1" - echo "$2" - echo "$start" - ffmpeg -i "$1" -codec copy -ss "$start" -t "$2" Cut\ "$1" -} -alias vcomp="$BASEDIR/scripts/helpers/video.py" -alias vcompy="ipython -i $BASEDIR/scripts/helpers/video.py" - -flac2mp3() { - for file in *.flac; do - ffmpeg -i "$file" -ab 320k -map_metadata 0 -id3v2_version 3 "${file%.flac}.mp3" - done -} - # include if it exists -[ -f "$HOME/extra.rc.sh" ] && . "$HOME/extra.rc.sh" +[ -f "$HOME/extra.rc.sh" ] && source "$HOME/extra.rc.sh"