From 753e707b384b582a4b270fc12ebef29df5dbc551 Mon Sep 17 00:00:00 2001 From: chewingbever Date: Sat, 22 Aug 2020 14:23:14 +0200 Subject: [PATCH] Switched to Fira Code font --- .gitignore | 2 + boxdrawtest.txt | 213 ++++++++++++++++ config.def.h | 6 +- config.def.h.orig | 472 ++++++++++++++++++++++++++++++++++++ config.h | 5 +- config.mk | 2 +- patches/st-alpha-0.8.2.diff | 163 +++++++++++++ st | Bin 96944 -> 102592 bytes st.h | 1 + st.h.orig | 125 ++++++++++ st.o | Bin 73160 -> 0 bytes x.c | 40 ++- x.c.orig | 56 +++-- x.o | Bin 71472 -> 0 bytes 14 files changed, 1045 insertions(+), 40 deletions(-) create mode 100644 .gitignore create mode 100644 boxdrawtest.txt create mode 100644 config.def.h.orig create mode 100644 patches/st-alpha-0.8.2.diff create mode 100644 st.h.orig delete mode 100644 st.o delete mode 100644 x.o diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..25fa52f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vim/ +*.o diff --git a/boxdrawtest.txt b/boxdrawtest.txt new file mode 100644 index 0000000..03802e4 --- /dev/null +++ b/boxdrawtest.txt @@ -0,0 +1,213 @@ +UTF-8 encoded sample plain-text file +‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +Markus Kuhn [ˈmaʳkʊs kuːn] — 2002-07-25 + + +The ASCII compatible UTF-8 encoding used in this plain-text file +is defined in Unicode, ISO 10646-1, and RFC 2279. + + +Using Unicode/UTF-8, you can write in emails and source code things such as + +Mathematics and sciences: + + ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ + ⎪⎢⎜│a²+b³ ⎟⎥⎪ + ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ + ⎪⎢⎜⎷ c₈ ⎟⎥⎪ + ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ + ⎪⎢⎜ ∞ ⎟⎥⎪ + ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ + ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ + 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ + +Linguistics and dictionaries: + + ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn + Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] + +APL: + + ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ + +Nicer typography in plain text files: + + ╔══════════════════════════════════════════╗ + ║ ║ + ║ • ‘single’ and “double” quotes ║ + ║ ║ + ║ • Curly apostrophes: “We’ve been here” ║ + ║ ║ + ║ • Latin-1 apostrophe and accents: '´` ║ + ║ ║ + ║ • ‚deutsche‘ „Anführungszeichen“ ║ + ║ ║ + ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ + ║ ║ + ║ • ASCII safety test: 1lI|, 0OD, 8B ║ + ║ ╭─────────╮ ║ + ║ • the euro symbol: │ 14.95 € │ ║ + ║ ╰─────────╯ ║ + ╚══════════════════════════════════════════╝ + +Combining characters: + + STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ + +Greek (in Polytonic): + + The Greek anthem: + + Σὲ γνωρίζω ἀπὸ τὴν κόψη + τοῦ σπαθιοῦ τὴν τρομερή, + σὲ γνωρίζω ἀπὸ τὴν ὄψη + ποὺ μὲ βία μετράει τὴ γῆ. + + ᾿Απ᾿ τὰ κόκκαλα βγαλμένη + τῶν ῾Ελλήνων τὰ ἱερά + καὶ σὰν πρῶτα ἀνδρειωμένη + χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! + + From a speech of Demosthenes in the 4th century BC: + + Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, + ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς + λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ + τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ + εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ + πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν + οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, + οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν + ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον + τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι + γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν + προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους + σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ + τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ + τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς + τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. + + Δημοσθένους, Γ´ ᾿Ολυνθιακὸς + +Georgian: + + From a Unicode conference invitation: + + გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო + კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, + ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს + ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, + ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება + ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, + ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. + +Russian: + + From a Unicode conference invitation: + + Зарегистрируйтесь сейчас на Десятую Международную Конференцию по + Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. + Конференция соберет широкий круг экспертов по вопросам глобального + Интернета и Unicode, локализации и интернационализации, воплощению и + применению Unicode в различных операционных системах и программных + приложениях, шрифтах, верстке и многоязычных компьютерных системах. + +Thai (UCS Level 2): + + Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese + classic 'San Gua'): + + [----------------------------|------------------------] + ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ + สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา + ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา + โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ + เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ + ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ + พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ + ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ + + (The above is a two-column text. If combining characters are handled + correctly, the lines of the second column should be aligned with the + | character above.) + +Ethiopian: + + Proverbs in the Amharic language: + + ሰማይ አይታረስ ንጉሥ አይከሰስ። + ብላ ካለኝ እንደአባቴ በቆመጠኝ። + ጌጥ ያለቤቱ ቁምጥና ነው። + ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። + የአፍ ወለምታ በቅቤ አይታሽም። + አይጥ በበላ ዳዋ ተመታ። + ሲተረጉሙ ይደረግሙ። + ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። + ድር ቢያብር አንበሳ ያስር። + ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። + እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። + የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። + ሥራ ከመፍታት ልጄን ላፋታት። + ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። + የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። + ተንጋሎ ቢተፉ ተመልሶ ባፉ። + ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። + እግርህን በፍራሽህ ልክ ዘርጋ። + +Runes: + + ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ + + (Old English, which transcribed into Latin reads 'He cwaeth that he + bude thaem lande northweardum with tha Westsae.' and means 'He said + that he lived in the northern land near the Western Sea.') + +Braille: + + ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ + + ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ + ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ + ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ + ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ + ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ + ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ + + ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + + ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ + ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ + ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ + ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ + ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ + ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ + ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ + ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ + ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ + + (The first couple of paragraphs of "A Christmas Carol" by Dickens) + +Compact font selection example text: + + ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 + abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ + –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд + ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi?⑀₂ἠḂӥẄɐː⍎אԱა + +Greetings in various languages: + + Hello world, Καλημέρα κόσμε, コンニチハ + +Box drawing alignment tests: █ + ▉ + ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ + ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ + ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ + ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ + ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ + ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ + ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ + ▝▀▘▙▄▟ + + diff --git a/config.def.h b/config.def.h index 6f05dce..b4fff92 100644 --- a/config.def.h +++ b/config.def.h @@ -93,6 +93,9 @@ char *termname = "st-256color"; */ unsigned int tabspaces = 8; +/* bg opacity */ +float alpha = 0.8; + /* Terminal colors (16 first used in escape sequence) */ static const char *colorname[] = { /* 8 normal colors */ @@ -120,6 +123,7 @@ static const char *colorname[] = { /* more colors can be added after 255 to use with DefaultXX */ "#cccccc", "#555555", + "black", }; @@ -128,7 +132,7 @@ static const char *colorname[] = { * foreground, background, cursor, reverse cursor */ unsigned int defaultfg = 7; -unsigned int defaultbg = 0; +unsigned int defaultbg = 258; static unsigned int defaultcs = 256; static unsigned int defaultrcs = 257; diff --git a/config.def.h.orig b/config.def.h.orig new file mode 100644 index 0000000..6f05dce --- /dev/null +++ b/config.def.h.orig @@ -0,0 +1,472 @@ +/* See LICENSE file for copyright and license details. */ + +/* + * appearance + * + * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html + */ +static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true"; +static int borderpx = 2; + +/* + * What program is execed by st depends of these precedence rules: + * 1: program passed with -e + * 2: scroll and/or utmp + * 3: SHELL environment variable + * 4: value of shell in /etc/passwd + * 5: value of shell in config.h + */ +static char *shell = "/bin/sh"; +char *utmp = NULL; +/* scroll program: to enable use a string like "scroll" */ +char *scroll = NULL; +char *stty_args = "stty raw pass8 nl -echo -iexten -cstopb 38400"; + +/* identification sequence returned in DA and DECID */ +char *vtiden = "\033[?6c"; + +/* Kerning / character bounding-box multipliers */ +static float cwscale = 1.0; +static float chscale = 1.0; + +/* + * word delimiter string + * + * More advanced example: L" `'\"()[]{}" + */ +wchar_t *worddelimiters = L" "; + +/* selection timeouts (in milliseconds) */ +static unsigned int doubleclicktimeout = 300; +static unsigned int tripleclicktimeout = 600; + +/* alt screens */ +int allowaltscreen = 1; + +/* allow certain non-interactive (insecure) window operations such as: + setting the clipboard text */ +int allowwindowops = 0; + +/* + * draw latency range in ms - from new content/keypress/etc until drawing. + * within this range, st draws when content stops arriving (idle). mostly it's + * near minlatency, but it waits longer for slow updates to avoid partial draw. + * low minlatency will tear/flicker more, as it can "detect" idle too early. + */ +static double minlatency = 8; +static double maxlatency = 33; + +/* + * blinking timeout (set to 0 to disable blinking) for the terminal blinking + * attribute. + */ +static unsigned int blinktimeout = 800; + +/* + * thickness of underline and bar cursors + */ +static unsigned int cursorthickness = 2; + +/* + * bell volume. It must be a value between -100 and 100. Use 0 for disabling + * it + */ +static int bellvolume = 0; + +/* default TERM value */ +char *termname = "st-256color"; + +/* + * spaces per tab + * + * When you are changing this value, don't forget to adapt the »it« value in + * the st.info and appropriately install the st.info in the environment where + * you use this st version. + * + * it#$tabspaces, + * + * Secondly make sure your kernel is not expanding tabs. When running `stty + * -a` »tab0« should appear. You can tell the terminal to not expand tabs by + * running following command: + * + * stty tabs + */ +unsigned int tabspaces = 8; + +/* Terminal colors (16 first used in escape sequence) */ +static const char *colorname[] = { + /* 8 normal colors */ + "black", + "red3", + "green3", + "yellow3", + "blue2", + "magenta3", + "cyan3", + "gray90", + + /* 8 bright colors */ + "gray50", + "red", + "green", + "yellow", + "#5c5cff", + "magenta", + "cyan", + "white", + + [255] = 0, + + /* more colors can be added after 255 to use with DefaultXX */ + "#cccccc", + "#555555", +}; + + +/* + * Default colors (colorname index) + * foreground, background, cursor, reverse cursor + */ +unsigned int defaultfg = 7; +unsigned int defaultbg = 0; +static unsigned int defaultcs = 256; +static unsigned int defaultrcs = 257; + +/* + * Default shape of cursor + * 2: Block ("█") + * 4: Underline ("_") + * 6: Bar ("|") + * 7: Snowman ("☃") + */ +static unsigned int cursorshape = 2; + +/* + * Default columns and rows numbers + */ + +static unsigned int cols = 80; +static unsigned int rows = 24; + +/* + * Default colour and shape of the mouse cursor + */ +static unsigned int mouseshape = XC_xterm; +static unsigned int mousefg = 7; +static unsigned int mousebg = 0; + +/* + * Color used to display font attributes when fontconfig selected a font which + * doesn't match the ones requested. + */ +static unsigned int defaultattr = 11; + +/* + * Force mouse select/shortcuts while mask is active (when MODE_MOUSE is set). + * Note that if you want to use ShiftMask with selmasks, set this to an other + * modifier, set to 0 to not use it. + */ +static uint forcemousemod = ShiftMask; + +/* + * Internal mouse shortcuts. + * Beware that overloading Button1 will disable the selection. + */ +static MouseShortcut mshortcuts[] = { + /* mask button function argument release */ + { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, + { ShiftMask, Button4, ttysend, {.s = "\033[5;2~"} }, + { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, + { ShiftMask, Button5, ttysend, {.s = "\033[6;2~"} }, + { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, +}; + +/* Internal keyboard shortcuts. */ +#define MODKEY Mod1Mask +#define TERMMOD (ControlMask|ShiftMask) + +static Shortcut shortcuts[] = { + /* mask keysym function argument */ + { XK_ANY_MOD, XK_Break, sendbreak, {.i = 0} }, + { ControlMask, XK_Print, toggleprinter, {.i = 0} }, + { ShiftMask, XK_Print, printscreen, {.i = 0} }, + { XK_ANY_MOD, XK_Print, printsel, {.i = 0} }, + { TERMMOD, XK_Prior, zoom, {.f = +1} }, + { TERMMOD, XK_Next, zoom, {.f = -1} }, + { TERMMOD, XK_Home, zoomreset, {.f = 0} }, + { TERMMOD, XK_C, clipcopy, {.i = 0} }, + { TERMMOD, XK_V, clippaste, {.i = 0} }, + { TERMMOD, XK_Y, selpaste, {.i = 0} }, + { ShiftMask, XK_Insert, selpaste, {.i = 0} }, + { TERMMOD, XK_Num_Lock, numlock, {.i = 0} }, +}; + +/* + * Special keys (change & recompile st.info accordingly) + * + * Mask value: + * * Use XK_ANY_MOD to match the key no matter modifiers state + * * Use XK_NO_MOD to match the key alone (no modifiers) + * appkey value: + * * 0: no value + * * > 0: keypad application mode enabled + * * = 2: term.numlock = 1 + * * < 0: keypad application mode disabled + * appcursor value: + * * 0: no value + * * > 0: cursor application mode enabled + * * < 0: cursor application mode disabled + * + * Be careful with the order of the definitions because st searches in + * this table sequentially, so any XK_ANY_MOD must be in the last + * position for a key. + */ + +/* + * If you want keys other than the X11 function keys (0xFD00 - 0xFFFF) + * to be mapped below, add them to this array. + */ +static KeySym mappedkeys[] = { -1 }; + +/* + * State bits to ignore when matching key or button events. By default, + * numlock (Mod2Mask) and keyboard layout (XK_SWITCH_MOD) are ignored. + */ +static uint ignoremod = Mod2Mask|XK_SWITCH_MOD; + +/* + * This is the huge key array which defines all compatibility to the Linux + * world. Please decide about changes wisely. + */ +static Key key[] = { + /* keysym mask string appkey appcursor */ + { XK_KP_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_KP_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_KP_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_KP_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_KP_Up, XK_ANY_MOD, "\033Ox", +1, 0}, + { XK_KP_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_KP_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_KP_Down, XK_ANY_MOD, "\033Or", +1, 0}, + { XK_KP_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_KP_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_KP_Left, XK_ANY_MOD, "\033Ot", +1, 0}, + { XK_KP_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_KP_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_KP_Right, XK_ANY_MOD, "\033Ov", +1, 0}, + { XK_KP_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_KP_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_KP_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_KP_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_KP_Begin, XK_ANY_MOD, "\033[E", 0, 0}, + { XK_KP_End, ControlMask, "\033[J", -1, 0}, + { XK_KP_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_KP_End, ShiftMask, "\033[K", -1, 0}, + { XK_KP_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_KP_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_KP_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_KP_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_KP_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_KP_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[L", -1, 0}, + { XK_KP_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_KP_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_KP_Delete, ControlMask, "\033[M", -1, 0}, + { XK_KP_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_KP_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_KP_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_KP_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_KP_Multiply, XK_ANY_MOD, "\033Oj", +2, 0}, + { XK_KP_Add, XK_ANY_MOD, "\033Ok", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\033OM", +2, 0}, + { XK_KP_Enter, XK_ANY_MOD, "\r", -1, 0}, + { XK_KP_Subtract, XK_ANY_MOD, "\033Om", +2, 0}, + { XK_KP_Decimal, XK_ANY_MOD, "\033On", +2, 0}, + { XK_KP_Divide, XK_ANY_MOD, "\033Oo", +2, 0}, + { XK_KP_0, XK_ANY_MOD, "\033Op", +2, 0}, + { XK_KP_1, XK_ANY_MOD, "\033Oq", +2, 0}, + { XK_KP_2, XK_ANY_MOD, "\033Or", +2, 0}, + { XK_KP_3, XK_ANY_MOD, "\033Os", +2, 0}, + { XK_KP_4, XK_ANY_MOD, "\033Ot", +2, 0}, + { XK_KP_5, XK_ANY_MOD, "\033Ou", +2, 0}, + { XK_KP_6, XK_ANY_MOD, "\033Ov", +2, 0}, + { XK_KP_7, XK_ANY_MOD, "\033Ow", +2, 0}, + { XK_KP_8, XK_ANY_MOD, "\033Ox", +2, 0}, + { XK_KP_9, XK_ANY_MOD, "\033Oy", +2, 0}, + { XK_Up, ShiftMask, "\033[1;2A", 0, 0}, + { XK_Up, Mod1Mask, "\033[1;3A", 0, 0}, + { XK_Up, ShiftMask|Mod1Mask,"\033[1;4A", 0, 0}, + { XK_Up, ControlMask, "\033[1;5A", 0, 0}, + { XK_Up, ShiftMask|ControlMask,"\033[1;6A", 0, 0}, + { XK_Up, ControlMask|Mod1Mask,"\033[1;7A", 0, 0}, + { XK_Up,ShiftMask|ControlMask|Mod1Mask,"\033[1;8A", 0, 0}, + { XK_Up, XK_ANY_MOD, "\033[A", 0, -1}, + { XK_Up, XK_ANY_MOD, "\033OA", 0, +1}, + { XK_Down, ShiftMask, "\033[1;2B", 0, 0}, + { XK_Down, Mod1Mask, "\033[1;3B", 0, 0}, + { XK_Down, ShiftMask|Mod1Mask,"\033[1;4B", 0, 0}, + { XK_Down, ControlMask, "\033[1;5B", 0, 0}, + { XK_Down, ShiftMask|ControlMask,"\033[1;6B", 0, 0}, + { XK_Down, ControlMask|Mod1Mask,"\033[1;7B", 0, 0}, + { XK_Down,ShiftMask|ControlMask|Mod1Mask,"\033[1;8B",0, 0}, + { XK_Down, XK_ANY_MOD, "\033[B", 0, -1}, + { XK_Down, XK_ANY_MOD, "\033OB", 0, +1}, + { XK_Left, ShiftMask, "\033[1;2D", 0, 0}, + { XK_Left, Mod1Mask, "\033[1;3D", 0, 0}, + { XK_Left, ShiftMask|Mod1Mask,"\033[1;4D", 0, 0}, + { XK_Left, ControlMask, "\033[1;5D", 0, 0}, + { XK_Left, ShiftMask|ControlMask,"\033[1;6D", 0, 0}, + { XK_Left, ControlMask|Mod1Mask,"\033[1;7D", 0, 0}, + { XK_Left,ShiftMask|ControlMask|Mod1Mask,"\033[1;8D",0, 0}, + { XK_Left, XK_ANY_MOD, "\033[D", 0, -1}, + { XK_Left, XK_ANY_MOD, "\033OD", 0, +1}, + { XK_Right, ShiftMask, "\033[1;2C", 0, 0}, + { XK_Right, Mod1Mask, "\033[1;3C", 0, 0}, + { XK_Right, ShiftMask|Mod1Mask,"\033[1;4C", 0, 0}, + { XK_Right, ControlMask, "\033[1;5C", 0, 0}, + { XK_Right, ShiftMask|ControlMask,"\033[1;6C", 0, 0}, + { XK_Right, ControlMask|Mod1Mask,"\033[1;7C", 0, 0}, + { XK_Right,ShiftMask|ControlMask|Mod1Mask,"\033[1;8C",0, 0}, + { XK_Right, XK_ANY_MOD, "\033[C", 0, -1}, + { XK_Right, XK_ANY_MOD, "\033OC", 0, +1}, + { XK_ISO_Left_Tab, ShiftMask, "\033[Z", 0, 0}, + { XK_Return, Mod1Mask, "\033\r", 0, 0}, + { XK_Return, XK_ANY_MOD, "\r", 0, 0}, + { XK_Insert, ShiftMask, "\033[4l", -1, 0}, + { XK_Insert, ShiftMask, "\033[2;2~", +1, 0}, + { XK_Insert, ControlMask, "\033[L", -1, 0}, + { XK_Insert, ControlMask, "\033[2;5~", +1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[4h", -1, 0}, + { XK_Insert, XK_ANY_MOD, "\033[2~", +1, 0}, + { XK_Delete, ControlMask, "\033[M", -1, 0}, + { XK_Delete, ControlMask, "\033[3;5~", +1, 0}, + { XK_Delete, ShiftMask, "\033[2K", -1, 0}, + { XK_Delete, ShiftMask, "\033[3;2~", +1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[P", -1, 0}, + { XK_Delete, XK_ANY_MOD, "\033[3~", +1, 0}, + { XK_BackSpace, XK_NO_MOD, "\177", 0, 0}, + { XK_BackSpace, Mod1Mask, "\033\177", 0, 0}, + { XK_Home, ShiftMask, "\033[2J", 0, -1}, + { XK_Home, ShiftMask, "\033[1;2H", 0, +1}, + { XK_Home, XK_ANY_MOD, "\033[H", 0, -1}, + { XK_Home, XK_ANY_MOD, "\033[1~", 0, +1}, + { XK_End, ControlMask, "\033[J", -1, 0}, + { XK_End, ControlMask, "\033[1;5F", +1, 0}, + { XK_End, ShiftMask, "\033[K", -1, 0}, + { XK_End, ShiftMask, "\033[1;2F", +1, 0}, + { XK_End, XK_ANY_MOD, "\033[4~", 0, 0}, + { XK_Prior, ControlMask, "\033[5;5~", 0, 0}, + { XK_Prior, ShiftMask, "\033[5;2~", 0, 0}, + { XK_Prior, XK_ANY_MOD, "\033[5~", 0, 0}, + { XK_Next, ControlMask, "\033[6;5~", 0, 0}, + { XK_Next, ShiftMask, "\033[6;2~", 0, 0}, + { XK_Next, XK_ANY_MOD, "\033[6~", 0, 0}, + { XK_F1, XK_NO_MOD, "\033OP" , 0, 0}, + { XK_F1, /* F13 */ ShiftMask, "\033[1;2P", 0, 0}, + { XK_F1, /* F25 */ ControlMask, "\033[1;5P", 0, 0}, + { XK_F1, /* F37 */ Mod4Mask, "\033[1;6P", 0, 0}, + { XK_F1, /* F49 */ Mod1Mask, "\033[1;3P", 0, 0}, + { XK_F1, /* F61 */ Mod3Mask, "\033[1;4P", 0, 0}, + { XK_F2, XK_NO_MOD, "\033OQ" , 0, 0}, + { XK_F2, /* F14 */ ShiftMask, "\033[1;2Q", 0, 0}, + { XK_F2, /* F26 */ ControlMask, "\033[1;5Q", 0, 0}, + { XK_F2, /* F38 */ Mod4Mask, "\033[1;6Q", 0, 0}, + { XK_F2, /* F50 */ Mod1Mask, "\033[1;3Q", 0, 0}, + { XK_F2, /* F62 */ Mod3Mask, "\033[1;4Q", 0, 0}, + { XK_F3, XK_NO_MOD, "\033OR" , 0, 0}, + { XK_F3, /* F15 */ ShiftMask, "\033[1;2R", 0, 0}, + { XK_F3, /* F27 */ ControlMask, "\033[1;5R", 0, 0}, + { XK_F3, /* F39 */ Mod4Mask, "\033[1;6R", 0, 0}, + { XK_F3, /* F51 */ Mod1Mask, "\033[1;3R", 0, 0}, + { XK_F3, /* F63 */ Mod3Mask, "\033[1;4R", 0, 0}, + { XK_F4, XK_NO_MOD, "\033OS" , 0, 0}, + { XK_F4, /* F16 */ ShiftMask, "\033[1;2S", 0, 0}, + { XK_F4, /* F28 */ ControlMask, "\033[1;5S", 0, 0}, + { XK_F4, /* F40 */ Mod4Mask, "\033[1;6S", 0, 0}, + { XK_F4, /* F52 */ Mod1Mask, "\033[1;3S", 0, 0}, + { XK_F5, XK_NO_MOD, "\033[15~", 0, 0}, + { XK_F5, /* F17 */ ShiftMask, "\033[15;2~", 0, 0}, + { XK_F5, /* F29 */ ControlMask, "\033[15;5~", 0, 0}, + { XK_F5, /* F41 */ Mod4Mask, "\033[15;6~", 0, 0}, + { XK_F5, /* F53 */ Mod1Mask, "\033[15;3~", 0, 0}, + { XK_F6, XK_NO_MOD, "\033[17~", 0, 0}, + { XK_F6, /* F18 */ ShiftMask, "\033[17;2~", 0, 0}, + { XK_F6, /* F30 */ ControlMask, "\033[17;5~", 0, 0}, + { XK_F6, /* F42 */ Mod4Mask, "\033[17;6~", 0, 0}, + { XK_F6, /* F54 */ Mod1Mask, "\033[17;3~", 0, 0}, + { XK_F7, XK_NO_MOD, "\033[18~", 0, 0}, + { XK_F7, /* F19 */ ShiftMask, "\033[18;2~", 0, 0}, + { XK_F7, /* F31 */ ControlMask, "\033[18;5~", 0, 0}, + { XK_F7, /* F43 */ Mod4Mask, "\033[18;6~", 0, 0}, + { XK_F7, /* F55 */ Mod1Mask, "\033[18;3~", 0, 0}, + { XK_F8, XK_NO_MOD, "\033[19~", 0, 0}, + { XK_F8, /* F20 */ ShiftMask, "\033[19;2~", 0, 0}, + { XK_F8, /* F32 */ ControlMask, "\033[19;5~", 0, 0}, + { XK_F8, /* F44 */ Mod4Mask, "\033[19;6~", 0, 0}, + { XK_F8, /* F56 */ Mod1Mask, "\033[19;3~", 0, 0}, + { XK_F9, XK_NO_MOD, "\033[20~", 0, 0}, + { XK_F9, /* F21 */ ShiftMask, "\033[20;2~", 0, 0}, + { XK_F9, /* F33 */ ControlMask, "\033[20;5~", 0, 0}, + { XK_F9, /* F45 */ Mod4Mask, "\033[20;6~", 0, 0}, + { XK_F9, /* F57 */ Mod1Mask, "\033[20;3~", 0, 0}, + { XK_F10, XK_NO_MOD, "\033[21~", 0, 0}, + { XK_F10, /* F22 */ ShiftMask, "\033[21;2~", 0, 0}, + { XK_F10, /* F34 */ ControlMask, "\033[21;5~", 0, 0}, + { XK_F10, /* F46 */ Mod4Mask, "\033[21;6~", 0, 0}, + { XK_F10, /* F58 */ Mod1Mask, "\033[21;3~", 0, 0}, + { XK_F11, XK_NO_MOD, "\033[23~", 0, 0}, + { XK_F11, /* F23 */ ShiftMask, "\033[23;2~", 0, 0}, + { XK_F11, /* F35 */ ControlMask, "\033[23;5~", 0, 0}, + { XK_F11, /* F47 */ Mod4Mask, "\033[23;6~", 0, 0}, + { XK_F11, /* F59 */ Mod1Mask, "\033[23;3~", 0, 0}, + { XK_F12, XK_NO_MOD, "\033[24~", 0, 0}, + { XK_F12, /* F24 */ ShiftMask, "\033[24;2~", 0, 0}, + { XK_F12, /* F36 */ ControlMask, "\033[24;5~", 0, 0}, + { XK_F12, /* F48 */ Mod4Mask, "\033[24;6~", 0, 0}, + { XK_F12, /* F60 */ Mod1Mask, "\033[24;3~", 0, 0}, + { XK_F13, XK_NO_MOD, "\033[1;2P", 0, 0}, + { XK_F14, XK_NO_MOD, "\033[1;2Q", 0, 0}, + { XK_F15, XK_NO_MOD, "\033[1;2R", 0, 0}, + { XK_F16, XK_NO_MOD, "\033[1;2S", 0, 0}, + { XK_F17, XK_NO_MOD, "\033[15;2~", 0, 0}, + { XK_F18, XK_NO_MOD, "\033[17;2~", 0, 0}, + { XK_F19, XK_NO_MOD, "\033[18;2~", 0, 0}, + { XK_F20, XK_NO_MOD, "\033[19;2~", 0, 0}, + { XK_F21, XK_NO_MOD, "\033[20;2~", 0, 0}, + { XK_F22, XK_NO_MOD, "\033[21;2~", 0, 0}, + { XK_F23, XK_NO_MOD, "\033[23;2~", 0, 0}, + { XK_F24, XK_NO_MOD, "\033[24;2~", 0, 0}, + { XK_F25, XK_NO_MOD, "\033[1;5P", 0, 0}, + { XK_F26, XK_NO_MOD, "\033[1;5Q", 0, 0}, + { XK_F27, XK_NO_MOD, "\033[1;5R", 0, 0}, + { XK_F28, XK_NO_MOD, "\033[1;5S", 0, 0}, + { XK_F29, XK_NO_MOD, "\033[15;5~", 0, 0}, + { XK_F30, XK_NO_MOD, "\033[17;5~", 0, 0}, + { XK_F31, XK_NO_MOD, "\033[18;5~", 0, 0}, + { XK_F32, XK_NO_MOD, "\033[19;5~", 0, 0}, + { XK_F33, XK_NO_MOD, "\033[20;5~", 0, 0}, + { XK_F34, XK_NO_MOD, "\033[21;5~", 0, 0}, + { XK_F35, XK_NO_MOD, "\033[23;5~", 0, 0}, +}; + +/* + * Selection types' masks. + * Use the same masks as usual. + * Button1Mask is always unset, to make masks match between ButtonPress. + * ButtonRelease and MotionNotify. + * If no match is found, regular selection is used. + */ +static uint selmasks[] = { + [SEL_RECTANGULAR] = Mod1Mask, +}; + +/* + * Printable characters in ASCII, used to estimate the advance width + * of single wide characters. + */ +static char ascii_printable[] = + " !\"#$%&'()*+,-./0123456789:;<=>?" + "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_" + "`abcdefghijklmnopqrstuvwxyz{|}~"; diff --git a/config.h b/config.h index eda5a3c..77341f1 100644 --- a/config.h +++ b/config.h @@ -5,8 +5,9 @@ * * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html */ -static char *font = "MesloLGS NF:style=Regular:size=10"; +static char *font = "Fira Code:size=11"; static int borderpx = 2; +float alpha = 0.8; /* * What program is execed by st depends of these precedence rules: @@ -16,7 +17,7 @@ static int borderpx = 2; * 4: value of shell in /etc/passwd * 5: value of shell in config.h */ -static char *shell = "/bin/sh"; +static char *shell = "/usr/bin/zsh"; char *utmp = NULL; /* scroll program: to enable use a string like "scroll" */ char *scroll = NULL; diff --git a/config.mk b/config.mk index c070a4a..aaa54ff 100644 --- a/config.mk +++ b/config.mk @@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config INCS = -I$(X11INC) \ `$(PKG_CONFIG) --cflags fontconfig` \ `$(PKG_CONFIG) --cflags freetype2` -LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ +LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft -lXrender\ `$(PKG_CONFIG) --libs fontconfig` \ `$(PKG_CONFIG) --libs freetype2` diff --git a/patches/st-alpha-0.8.2.diff b/patches/st-alpha-0.8.2.diff new file mode 100644 index 0000000..dad6615 --- /dev/null +++ b/patches/st-alpha-0.8.2.diff @@ -0,0 +1,163 @@ +diff --git a/config.def.h b/config.def.h +index 0e01717..e116631 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -82,6 +82,9 @@ char *termname = "st-256color"; + */ + unsigned int tabspaces = 8; + ++/* bg opacity */ ++float alpha = 0.8; ++ + /* Terminal colors (16 first used in escape sequence) */ + static const char *colorname[] = { + /* 8 normal colors */ +@@ -109,6 +112,7 @@ static const char *colorname[] = { + /* more colors can be added after 255 to use with DefaultXX */ + "#cccccc", + "#555555", ++ "black", + }; + + +@@ -117,7 +121,7 @@ static const char *colorname[] = { + * foreground, background, cursor, reverse cursor + */ + unsigned int defaultfg = 7; +-unsigned int defaultbg = 0; ++unsigned int defaultbg = 258; + static unsigned int defaultcs = 256; + static unsigned int defaultrcs = 257; + +diff --git a/config.mk b/config.mk +index 0cbb002..1d2f0e2 100644 +--- a/config.mk ++++ b/config.mk +@@ -16,7 +16,7 @@ PKG_CONFIG = pkg-config + INCS = -I$(X11INC) \ + `$(PKG_CONFIG) --cflags fontconfig` \ + `$(PKG_CONFIG) --cflags freetype2` +-LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft \ ++LIBS = -L$(X11LIB) -lm -lrt -lX11 -lutil -lXft -lXrender\ + `$(PKG_CONFIG) --libs fontconfig` \ + `$(PKG_CONFIG) --libs freetype2` + +diff --git a/st.h b/st.h +index 38c61c4..b7634ab 100644 +--- a/st.h ++++ b/st.h +@@ -120,3 +120,4 @@ extern char *termname; + extern unsigned int tabspaces; + extern unsigned int defaultfg; + extern unsigned int defaultbg; ++extern float alpha; +diff --git a/x.c b/x.c +index 0422421..588dec3 100644 +--- a/x.c ++++ b/x.c +@@ -98,6 +98,7 @@ typedef struct { + XSetWindowAttributes attrs; + int scr; + int isfixed; /* is fixed geometry? */ ++ int depth; /* bit depth */ + int l, t; /* left and top offset */ + int gm; /* geometry mask */ + } XWindow; +@@ -229,6 +230,7 @@ static char *usedfont = NULL; + static double usedfontsize = 0; + static double defaultfontsize = 0; + ++static char *opt_alpha = NULL; + static char *opt_class = NULL; + static char **opt_cmd = NULL; + static char *opt_embed = NULL; +@@ -688,7 +690,7 @@ xresize(int col, int row) + + XFreePixmap(xw.dpy, xw.buf); + xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, +- DefaultDepth(xw.dpy, xw.scr)); ++ xw.depth); + XftDrawChange(xw.draw, xw.buf); + xclear(0, 0, win.w, win.h); + +@@ -748,6 +750,13 @@ xloadcols(void) + else + die("could not allocate color %d\n", i); + } ++ ++ /* set alpha value of bg color */ ++ if (opt_alpha) ++ alpha = strtof(opt_alpha, NULL); ++ dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha); ++ dc.col[defaultbg].pixel &= 0x00FFFFFF; ++ dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24; + loaded = 1; + } + +@@ -1004,11 +1013,23 @@ xinit(int cols, int rows) + Window parent; + pid_t thispid = getpid(); + XColor xmousefg, xmousebg; ++ XWindowAttributes attr; ++ XVisualInfo vis; + + if (!(xw.dpy = XOpenDisplay(NULL))) + die("can't open display\n"); + xw.scr = XDefaultScreen(xw.dpy); +- xw.vis = XDefaultVisual(xw.dpy, xw.scr); ++ ++ if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) { ++ parent = XRootWindow(xw.dpy, xw.scr); ++ xw.depth = 32; ++ } else { ++ XGetWindowAttributes(xw.dpy, parent, &attr); ++ xw.depth = attr.depth; ++ } ++ ++ XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis); ++ xw.vis = vis.visual; + + /* font */ + if (!FcInit()) +@@ -1018,7 +1039,7 @@ xinit(int cols, int rows) + xloadfonts(usedfont, 0); + + /* colors */ +- xw.cmap = XDefaultColormap(xw.dpy, xw.scr); ++ xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None); + xloadcols(); + + /* adjust fixed window geometry */ +@@ -1038,19 +1059,15 @@ xinit(int cols, int rows) + | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; + xw.attrs.colormap = xw.cmap; + +- if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) +- parent = XRootWindow(xw.dpy, xw.scr); + xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, +- win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, ++ win.w, win.h, 0, xw.depth, InputOutput, + xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity + | CWEventMask | CWColormap, &xw.attrs); + + memset(&gcvalues, 0, sizeof(gcvalues)); + gcvalues.graphics_exposures = False; +- dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, +- &gcvalues); +- xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, +- DefaultDepth(xw.dpy, xw.scr)); ++ xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth); ++ dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalues); + XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); + XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); + +@@ -1894,6 +1911,9 @@ main(int argc, char *argv[]) + case 'a': + allowaltscreen = 0; + break; ++ case 'A': ++ opt_alpha = EARGF(usage()); ++ break; + case 'c': + opt_class = EARGF(usage()); + break; diff --git a/st b/st index 4ec51bc76b46a6e97d394fb2552ed9fe261a11c9..e3052bb93308325722e7c28a8457fccea0aec942 100755 GIT binary patch literal 102592 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 +#include + +/* macros */ +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define MAX(a, b) ((a) < (b) ? (b) : (a)) +#define LEN(a) (sizeof(a) / sizeof(a)[0]) +#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b)) +#define DIVCEIL(n, d) (((n) + ((d) - 1)) / (d)) +#define DEFAULT(a, b) (a) = (a) ? (a) : (b) +#define LIMIT(x, a, b) (x) = (x) < (a) ? (a) : (x) > (b) ? (b) : (x) +#define ATTRCMP(a, b) ((a).mode != (b).mode || (a).fg != (b).fg || \ + (a).bg != (b).bg) +#define TIMEDIFF(t1, t2) ((t1.tv_sec-t2.tv_sec)*1000 + \ + (t1.tv_nsec-t2.tv_nsec)/1E6) +#define MODBIT(x, set, bit) ((set) ? ((x) |= (bit)) : ((x) &= ~(bit))) + +#define TRUECOLOR(r,g,b) (1 << 24 | (r) << 16 | (g) << 8 | (b)) +#define IS_TRUECOL(x) (1 << 24 & (x)) + +enum glyph_attribute { + ATTR_NULL = 0, + ATTR_BOLD = 1 << 0, + ATTR_FAINT = 1 << 1, + ATTR_ITALIC = 1 << 2, + ATTR_UNDERLINE = 1 << 3, + ATTR_BLINK = 1 << 4, + ATTR_REVERSE = 1 << 5, + ATTR_INVISIBLE = 1 << 6, + ATTR_STRUCK = 1 << 7, + ATTR_WRAP = 1 << 8, + ATTR_WIDE = 1 << 9, + ATTR_WDUMMY = 1 << 10, + ATTR_BOLD_FAINT = ATTR_BOLD | ATTR_FAINT, +}; + +enum selection_mode { + SEL_IDLE = 0, + SEL_EMPTY = 1, + SEL_READY = 2 +}; + +enum selection_type { + SEL_REGULAR = 1, + SEL_RECTANGULAR = 2 +}; + +enum selection_snap { + SNAP_WORD = 1, + SNAP_LINE = 2 +}; + +typedef unsigned char uchar; +typedef unsigned int uint; +typedef unsigned long ulong; +typedef unsigned short ushort; + +typedef uint_least32_t Rune; + +#define Glyph Glyph_ +typedef struct { + Rune u; /* character code */ + ushort mode; /* attribute flags */ + uint32_t fg; /* foreground */ + uint32_t bg; /* background */ +} Glyph; + +typedef Glyph *Line; + +typedef union { + int i; + uint ui; + float f; + const void *v; + const char *s; +} Arg; + +void die(const char *, ...); +void redraw(void); +void draw(void); + +void printscreen(const Arg *); +void printsel(const Arg *); +void sendbreak(const Arg *); +void toggleprinter(const Arg *); + +int tattrset(int); +void tnew(int, int); +void tresize(int, int); +void tsetdirtattr(int); +void ttyhangup(void); +int ttynew(char *, char *, char *, char **); +size_t ttyread(void); +void ttyresize(int, int); +void ttywrite(const char *, size_t, int); + +void resettitle(void); + +void selclear(void); +void selinit(void); +void selstart(int, int, int); +void selextend(int, int, int, int); +int selected(int, int); +char *getsel(void); + +size_t utf8encode(Rune, char *); + +void *xmalloc(size_t); +void *xrealloc(void *, size_t); +char *xstrdup(char *); + +/* config.h globals */ +extern char *utmp; +extern char *scroll; +extern char *stty_args; +extern char *vtiden; +extern wchar_t *worddelimiters; +extern int allowaltscreen; +extern int allowwindowops; +extern char *termname; +extern unsigned int tabspaces; +extern unsigned int defaultfg; +extern unsigned int defaultbg; diff --git a/st.o b/st.o deleted file mode 100644 index c17cf916974aa393e0c8f9dfd5ab758bb618b73a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73160 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 K()}f`|Nj6wG)9R4 diff --git a/x.c b/x.c index 8c5e61a..ec66b01 100644 --- a/x.c +++ b/x.c @@ -106,6 +106,7 @@ typedef struct { XSetWindowAttributes attrs; int scr; int isfixed; /* is fixed geometry? */ + int depth; /* bit depth */ int l, t; /* left and top offset */ int gm; /* geometry mask */ } XWindow; @@ -244,6 +245,7 @@ static char *usedfont = NULL; static double usedfontsize = 0; static double defaultfontsize = 0; +static char *opt_alpha = NULL; static char *opt_class = NULL; static char **opt_cmd = NULL; static char *opt_embed = NULL; @@ -739,7 +741,7 @@ xresize(int col, int row) XFreePixmap(xw.dpy, xw.buf); xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, - DefaultDepth(xw.dpy, xw.scr)); + xw.depth); XftDrawChange(xw.draw, xw.buf); xclear(0, 0, win.w, win.h); @@ -799,6 +801,13 @@ xloadcols(void) else die("could not allocate color %d\n", i); } + + /* set alpha value of bg color */ + if (opt_alpha) + alpha = strtof(opt_alpha, NULL); + dc.col[defaultbg].color.alpha = (unsigned short)(0xffff * alpha); + dc.col[defaultbg].pixel &= 0x00FFFFFF; + dc.col[defaultbg].pixel |= (unsigned char)(0xff * alpha) << 24; loaded = 1; } @@ -1108,11 +1117,23 @@ xinit(int cols, int rows) Window parent; pid_t thispid = getpid(); XColor xmousefg, xmousebg; + XWindowAttributes attr; + XVisualInfo vis; if (!(xw.dpy = XOpenDisplay(NULL))) die("can't open display\n"); xw.scr = XDefaultScreen(xw.dpy); - xw.vis = XDefaultVisual(xw.dpy, xw.scr); + + if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) { + parent = XRootWindow(xw.dpy, xw.scr); + xw.depth = 32; + } else { + XGetWindowAttributes(xw.dpy, parent, &attr); + xw.depth = attr.depth; + } + + XMatchVisualInfo(xw.dpy, xw.scr, xw.depth, TrueColor, &vis); + xw.vis = vis.visual; /* font */ if (!FcInit()) @@ -1122,7 +1143,7 @@ xinit(int cols, int rows) xloadfonts(usedfont, 0); /* colors */ - xw.cmap = XDefaultColormap(xw.dpy, xw.scr); + xw.cmap = XCreateColormap(xw.dpy, parent, xw.vis, None); xloadcols(); /* adjust fixed window geometry */ @@ -1142,19 +1163,15 @@ xinit(int cols, int rows) | ButtonMotionMask | ButtonPressMask | ButtonReleaseMask; xw.attrs.colormap = xw.cmap; - if (!(opt_embed && (parent = strtol(opt_embed, NULL, 0)))) - parent = XRootWindow(xw.dpy, xw.scr); xw.win = XCreateWindow(xw.dpy, parent, xw.l, xw.t, - win.w, win.h, 0, XDefaultDepth(xw.dpy, xw.scr), InputOutput, + win.w, win.h, 0, xw.depth, InputOutput, xw.vis, CWBackPixel | CWBorderPixel | CWBitGravity | CWEventMask | CWColormap, &xw.attrs); memset(&gcvalues, 0, sizeof(gcvalues)); gcvalues.graphics_exposures = False; - dc.gc = XCreateGC(xw.dpy, parent, GCGraphicsExposures, - &gcvalues); - xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, - DefaultDepth(xw.dpy, xw.scr)); + xw.buf = XCreatePixmap(xw.dpy, xw.win, win.w, win.h, xw.depth); + dc.gc = XCreateGC(xw.dpy, xw.buf, GCGraphicsExposures, &gcvalues); XSetForeground(xw.dpy, dc.gc, dc.col[defaultbg].pixel); XFillRectangle(xw.dpy, xw.buf, dc.gc, 0, 0, win.w, win.h); @@ -1993,6 +2010,9 @@ main(int argc, char *argv[]) case 'a': allowaltscreen = 0; break; + case 'A': + opt_alpha = EARGF(usage()); + break; case 'c': opt_class = EARGF(usage()); break; diff --git a/x.c.orig b/x.c.orig index ee9247b..8c5e61a 100644 --- a/x.c.orig +++ b/x.c.orig @@ -81,6 +81,7 @@ typedef XftGlyphFontSpec GlyphFontSpec; typedef struct { int tw, th; /* tty width and height */ int w, h; /* window width and height */ + int hborderpx, vborderpx; int ch; /* char height */ int cw; /* char width */ int mode; /* window state/mode flags */ @@ -331,7 +332,7 @@ ttysend(const Arg *arg) int evcol(XEvent *e) { - int x = e->xbutton.x - borderpx; + int x = e->xbutton.x - win.hborderpx; LIMIT(x, 0, win.tw - 1); return x / win.cw; } @@ -339,7 +340,7 @@ evcol(XEvent *e) int evrow(XEvent *e) { - int y = e->xbutton.y - borderpx; + int y = e->xbutton.y - win.vborderpx; LIMIT(y, 0, win.th - 1); return y / win.ch; } @@ -722,6 +723,9 @@ cresize(int width, int height) col = MAX(1, col); row = MAX(1, row); + win.hborderpx = (win.w - col * win.cw) / 2; + win.vborderpx = (win.h - row * win.ch) / 2; + tresize(col, row); xresize(col, row); ttyresize(win.tw, win.th); @@ -839,8 +843,8 @@ xhints(void) sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize; sizeh->height = win.h; sizeh->width = win.w; - sizeh->height_inc = win.ch; - sizeh->width_inc = win.cw; + sizeh->height_inc = 1; + sizeh->width_inc = 1; sizeh->base_height = 2 * borderpx; sizeh->base_width = 2 * borderpx; sizeh->min_height = win.ch + 2 * borderpx; @@ -1122,8 +1126,8 @@ xinit(int cols, int rows) xloadcols(); /* adjust fixed window geometry */ - win.w = 2 * borderpx + cols * win.cw; - win.h = 2 * borderpx + rows * win.ch; + win.w = 2 * win.hborderpx + cols * win.cw; + win.h = 2 * win.vborderpx + rows * win.ch; if (xw.gm & XNegative) xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2; if (xw.gm & YNegative) @@ -1211,7 +1215,7 @@ xinit(int cols, int rows) int xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y) { - float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, yp; + float winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp; ushort mode, prevmode = USHRT_MAX; Font *font = &dc.font; int frcflags = FRC_NORMAL; @@ -1344,7 +1348,7 @@ void xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y) { int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1); - int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, + int winx = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, width = charlen * win.cw; Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; XRenderColor colfg, colbg; @@ -1434,17 +1438,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i /* Intelligent cleaning up of the borders. */ if (x == 0) { - xclear(0, (y == 0)? 0 : winy, borderpx, + xclear(0, (y == 0)? 0 : winy, win.vborderpx, winy + win.ch + - ((winy + win.ch >= borderpx + win.th)? win.h : 0)); + ((winy + win.ch >= win.vborderpx + win.th)? win.h : 0)); } - if (winx + width >= borderpx + win.tw) { + if (winx + width >= win.hborderpx + win.tw) { xclear(winx + width, (y == 0)? 0 : winy, win.w, - ((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch))); + ((winy + win.ch >= win.vborderpx + win.th)? win.h : (winy + win.ch))); } if (y == 0) - xclear(winx, 0, winx + width, borderpx); - if (winy + win.ch >= borderpx + win.th) + xclear(winx, 0, winx + width, win.hborderpx); + if (winy + win.ch >= win.vborderpx + win.th) xclear(winx, winy + win.ch, winx + width, win.h); /* Clean up the region we want to draw to. */ @@ -1538,35 +1542,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) case 3: /* Blinking Underline */ case 4: /* Steady Underline */ XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + (cy + 1) * win.ch - \ + win.hborderpx + cx * win.cw, + win.vborderpx + (cy + 1) * win.ch - \ cursorthickness, win.cw, cursorthickness); break; case 5: /* Blinking bar */ case 6: /* Steady bar */ XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, cursorthickness, win.ch); break; } } else { XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, win.cw - 1, 1); XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + cy * win.ch, + win.hborderpx + cx * win.cw, + win.vborderpx + cy * win.ch, 1, win.ch - 1); XftDrawRect(xw.draw, &drawcol, - borderpx + (cx + 1) * win.cw - 1, - borderpx + cy * win.ch, + win.hborderpx + (cx + 1) * win.cw - 1, + win.vborderpx + cy * win.ch, 1, win.ch - 1); XftDrawRect(xw.draw, &drawcol, - borderpx + cx * win.cw, - borderpx + (cy + 1) * win.ch - 1, + win.hborderpx + cx * win.cw, + win.vborderpx + (cy + 1) * win.ch - 1, win.cw, 1); } } diff --git a/x.o b/x.o deleted file mode 100644 index 67444be4402e874e04fa6b35975bc40d2e81add5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71472 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 UUs~zDzYPaj$v^iYbEMP%A8L=9i~s-t