1
0
mirror of https://github.com/gryf/urxvt-wrapper.git synced 2025-12-17 19:40:25 +01:00

Added/corrected docstrings and comments.

This commit is contained in:
2021-02-20 12:06:46 +01:00
parent ca0e8dcb22
commit 8ae8335564

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
""" """
Wrapper for launchin urxvt terminal emulator. It supports automatically Wrapper for launching URXVT terminal emulator. It supports automatically
generated font list for normal and bold typefaces, setting up bitmap font as a generated font list for normal and bold typefaces, setting up bitmap font as a
main one, selecting an icon and so on. main one, selecting an icon and so on.
@@ -77,11 +77,10 @@ LOG = Logger(__name__)()
class Font: class Font:
""" """
Represents font object, which as it repr will be a string, like Represents font object, which can produce valid XFT strings for provided
fonts as it's attributes - bold and regular.
xft:font name:style=somestyle:pixelsize=12 xft:font name:style=somestyle:pixelsize=12
It might be seen in two variants: regular and bold.
""" """
XFT_TEMPLATE = 'xft:%s:style=%s:pixelsize=%d' XFT_TEMPLATE = 'xft:%s:style=%s:pixelsize=%d'
@@ -128,8 +127,10 @@ class Font:
Font style depends on the particular font, and can be one of case Font style depends on the particular font, and can be one of case
insensitive: regular, normal, book, medium. insensitive: regular, normal, book, medium.
Technicly, medium style should be semi-bold or bold, but there is at Technically, medium style should be semi-bold or bold, but there is at
least one font face which treats medium style as regular one. least one font face which treats medium style as regular one. It is
placed as a last resort, and choice for particular font face is left
to the user.
""" """
if self._regular is not None: if self._regular is not None:
return self._regular return self._regular
@@ -157,13 +158,24 @@ class Font:
filename2: font_name2,font_name3:style=style1,style2 filename2: font_name2,font_name3:style=style1,style2
filename3: font_name4:style=style3,style4 filename3: font_name4:style=style3,style4
Return a dictionary of styles associated to the font name, i.e.: Information about fonts will be stored as a class variable
_AVAILABLE_FONTS within two dictionaries: bold and regular, stored in
corresponding keys in mentioned dict. _AVAILABLE_FONTS will have a
format:
{font_name1: (style), {'bold': {'font name': 'Bold',
font_name2: (style1, style2), 'font name3': 'bold'},
font_name3: (style1, style2), 'regular': {'font_name1': 'Regular',
font_name4: (style3, style4)} 'font_name2': 'Medium',
'font_name3': 'Normal'}}
As for regular/normal/book/medium styles, whatever style is available
for given font, it will be chosen, as ordered in _REGULAR list
whichever matches first.
Note, that fc-list and all the parsing is done once, per running this
script, regardless of font faces passed by -f option or those defined
in ADDITIONAL_FONTS.
""" """
if Font._AVAILABLE_FONTS: if Font._AVAILABLE_FONTS:
return return
@@ -221,7 +233,7 @@ class Font:
class Urxvt: class Urxvt:
""" """
Runner for the urxvt Runner for the URXVT
""" """
# Arbitrary added fonts, that provides symbols, icons, emoji (besides # Arbitrary added fonts, that provides symbols, icons, emoji (besides
# those in defualt font) # those in defualt font)
@@ -241,6 +253,7 @@ class Urxvt:
self._validate() self._validate()
def run(self): def run(self):
"""Run terminal emulator"""
args = self._make_command_args() args = self._make_command_args()
LOG.info('%s', args) LOG.info('%s', args)
@@ -258,7 +271,7 @@ class Urxvt:
self.perl_extensions = 'tabbedalt,' + PERLEXT self.perl_extensions = 'tabbedalt,' + PERLEXT
def _validate(self): def _validate(self):
# vaildate fonts # validate fonts
for font in self.fonts: for font in self.fonts:
if not any((font.regular, font.bold)): if not any((font.regular, font.bold)):
LOG.error('Font %s seems to be unusable or nonexistent.', LOG.error('Font %s seems to be unusable or nonexistent.',
@@ -285,8 +298,8 @@ class Urxvt:
Parse potentially provided font list, add additional fonts to it, Parse potentially provided font list, add additional fonts to it,
adjust for possible bitmap font and return a list of Font objects. adjust for possible bitmap font and return a list of Font objects.
""" """
# get the copy of affitional fonts # get the copy of additional fonts
font_faces = Urxvt._ADDITIONAL_FONTS[:] font_faces = ADDITIONAL_FONTS[:]
# find out main font/fonts passed by commandline/env/default # find out main font/fonts passed by commandline/env/default
if ',' in font_string: if ',' in font_string:
@@ -310,7 +323,7 @@ def main():
'as default(s) one, should be provided by font name, ' 'as default(s) one, should be provided by font name, '
'not file name(s), default is "%s"' % DEFAULT_FONT) 'not file name(s), default is "%s"' % DEFAULT_FONT)
parser.add_argument('-b', '--bitmap', action='store_true', help='use ' parser.add_argument('-b', '--bitmap', action='store_true', help='use '
'bitmap font in addition to scalable defined above') 'bitmap font prior to scalable defined above')
parser.add_argument('-i', '--icon', default=ICON, help='select icon from ' parser.add_argument('-i', '--icon', default=ICON, help='select icon from '
'%s, default "%s"' % (ICON_PATH, ICON)) '%s, default "%s"' % (ICON_PATH, ICON))
parser.add_argument('-t', '--tabbedalt', action='store_true', parser.add_argument('-t', '--tabbedalt', action='store_true',