
Inkycal
+Inkycal
+Main class for inkycal Project +Copyright by aceinnolab
+-
+
- +class inkycal.main.Inkycal(settings_path=None, render=True) +
Inkycal main class
+Main class of Inkycal, test and run the main Inkycal program.
+-
+
- Args:
-
+
settings_path = str -> the full path to your settings.json file +if no path is given, tries looking for settings file in /boot folder.
+render = bool (True/False) -> show the image on the epaper display?
+
+- Attributes:
-
+
optimize = True/False. Reduce number of colours on the generated image +to improve rendering on E-Papers. Set this to False for 9.7” E-Paper.
+
+
-
+
- +classmethod add_module(filepath) +
registers a third party module for inkycal.
+Uses the full filepath of the third party module to check if it is inside +the correct folder, then checks if it’s an inkycal module. Lastly, the +init files in /inkycal and /inkycal/modules are updated to allow using +the new module.
+-
+
- Args:
-
+
filepath: The full filepath of the third party module. Modules should be +in Inkycal/inkycal/modules.
+
+- Usage:
-
+
download a third-party module. The exact link is provided by the +developer of that module and starts with +https://raw.githubusercontent.com/…
+enter the following in bash to download a module:
+++$ cd Inkycal/inkycal/modules #navigate to modules folder in inkycal +$ wget https://raw.githubusercontent.com/... #download the module +
then register it with this function:
+++>>> from inkycal import Inkycal +>>> Inkycal.add_module('/full/path/to/the/module/in/inkycal/modules.py') +
+
+
-
+
- +calibrate() +
Calibrate the E-Paper display
+Uses the Display class to calibrate the display with the default of 3 +cycles. After a refresh cycle, a new image is generated and shown.
+
-
+
- +countdown(interval_mins=None) +
Returns the remaining time in seconds until next display update
+
-
+
- +classmethod remove_module(filename, remove_file=True) +
unregisters an inkycal module.
+Looks for given filename.py in /modules folder, removes entries of that +module in init files inside /inkycal and /inkycal/modules
+-
+
- Args:
-
+
filename: The filename (with .py ending) of the module which should be +unregistered. e.g. ‘mymodule.py’
+remove_file: ->bool (True/False). If set to True, the module is deleted +after unregistering it, else it remains in the /modules folder
+
+- Usage:
-
+
Look for the module in Inkycal/inkycal/modules which should be removed. +Only the filename (with .py) is required, not the full path.
+Use this function to unregister the module from inkycal:
+++>>> from inkycal import Inkycal +>>> Inkycal.remove_module('mymodule.py') +
+
+
-
+
- +run() +
Runs main program in nonstop mode.
+Uses an infinity loop to run Inkycal nonstop. Inkycal generates the image +from all modules, assembles them in one image, refreshed the E-Paper and +then sleeps until the next sheduled update.
+
-
+
- +test() +
Tests if Inkycal can run without issues.
+Attempts to import module names from settings file. Loads the config +for each module and initializes the module. Tries to run the module and +checks if the images could be generated correctly.
+Generated images can be found in the /images folder of Inkycal.
+
Display
+Display
+Inkycal ePaper driving functions +Copyright by aceinnolab
+-
+
- +class inkycal.display.display.Display(epaper_model) +
Display class for inkycal
+Creates an instance of the driver for the selected E-Paper model and allows +rendering images and calibrating the E-Paper display
+-
+
- Args:
-
+
epaper_model: The name of your E-Paper model.
+
+
-
+
- +calibrate(cycles=3) +
Calibrates the display to retain crisp colours
+Flushes the selected display several times with it’s supported colours, +removing any previous effects of ghosting.
+-
+
- Args:
-
+
cycles: -> int. The number of times to flush the display with it’s +supported colours.
+
+
It’s recommended to calibrate the display after every 6 display updates +for best results. For black-white only displays, calibration is less +critical, but not calibrating regularly results in grey-ish text.
+Please note that calibration takes a while to complete. 3 cycles may +take 10 minutes on black-white E-Papers while it takes 20 minutes on coloured +E-Paper displays.
+
-
+
- +classmethod get_display_names() list +
Prints all supported E-Paper models.
+Fetches all filenames in driver folder and prints them on the console.
+-
+
- Returns:
Printed version of all supported Displays.
+
+
Use one of the models to intilialize the Display class in order to gain +access to the E-Paper.
+You can use this function directly without creating the Display class:
+++>>> Display.get_display_names() +
-
+
- +get_display_size() tuple +
Returns the size of the display as a tuple -> (width, height)
+-
+
- Args:
-
+
model_name: str -> The name of the E-Paper display to get it’s size.
+
+- Returns:
(width, height) ->tuple, showing the size of the display
+
+
You can use this function directly without creating the Display class:
+++>>> Display.get_display_size('model_name') +
-
+
- +async render(im_black: ~PIL.Image.Image, im_colour=<class 'PIL.Image.Image'>) None +
Renders an image on the selected E-Paper display.
+Initlializes the E-Paper display, sends image data and executes command +to update the display.
+-
+
- Args:
-
+
im_black: The image for the black-pixels. Anything in this image that is +black is rendered as black on the display. This is required and ideally +should be a black-white image.
+im_colour: For E-Paper displays supporting colour, a separate image, +ideally black-white is required for the coloured pixels. Anything that is +black in this image will show up as either red/yellow.
+
+
Rendering an image for black-white E-Paper displays:
+++>>> sample_image = Image.open('path/to/file.png') +>>> display = Display('my_black_white_display') +>>> display.render(sample_image) +
Rendering black-white on coloured E-Paper displays:
+++>>> sample_image = Image.open('path/to/file.png') +>>> display = Display('my_coloured_display') +>>> display.render(sample_image, sample_image) +
Rendering coloured image where 2 images are available:
+++>>> black_image = Image.open('path/to/file.png') # black pixels +>>> colour_image = Image.open('path/to/file.png') # coloured pixels +>>> display = Display('my_coloured_display') +>>> display.render(black_image, colour_image) +
Custom functions
+Custom functions
+Inkycal custom-functions for ease-of-use
+Copyright by aceinnolab
+-
+
- +inkycal.custom.functions.auto_fontsize(font, max_height) +
Scales a given font to 80% of max_height.
+Gets the height of a font and scales it until 80% of the max_height +is filled.
+-
+
- Args:
-
+
font: A PIL Font object.
+max_height: An integer representing the height to adjust the font to +which the given font should be scaled to.
+
+- Returns:
A PIL font object with modified height.
+
+
-
+
- +inkycal.custom.functions.draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)) +
Draws a border at given coordinates.
+-
+
- Args:
-
+
image: The image on which the border should be drawn (usually im_black or +im_colour.
+xy: Tuple representing the top-left corner of the border e.g. (32, 100) +where 32 is the x co-ordinate and 100 is the y-coordinate.
+size: Size of the border as a tuple -> (width, height).
+radius: Radius of the corners, where 0 = plain rectangle, 5 = round corners.
+thickness: Thickness of the border in pixels.
+shrinkage: A tuple containing decimals presenting a percentage of shrinking +-> (width_shrink_percentage, height_shrink_percentage). +e.g. (0.1, 0.2) ~ shrinks the width of border by 10%, shrinks height of +border by 20%
+
+
-
+
- +inkycal.custom.functions.get_fonts() +
Print all available fonts by name.
+Searches the /font folder in Inkycal and displays all fonts found in +there.
+-
+
- Returns:
printed output of all available fonts. To access a fontfile, use the +fonts dictionary to access it.
+++>>> fonts['fontname'] +
+
To use a font, use the following sytax, where fontname is one of the +printed fonts of this function:
+++>>> ImageFont.truetype(fonts['fontname'], size = 10) +
-
+
- +inkycal.custom.functions.get_system_tz() +
Gets the system-timezone
+Gets the timezone set by the system.
+-
+
- Returns:
-
+
A timezone if a system timezone was found.
+None if no timezone was found.
+
+
The extracted timezone can be used to show the local time instead of UTC. e.g.
+++>>> import arrow +>>> print(arrow.now()) # returns non-timezone-aware time +>>> print(arrow.now(tz=get_system_tz()) # prints timezone aware time. +
-
+
- +inkycal.custom.functions.internet_available() +
checks if the internet is available.
+Attempts to connect to google.com with a timeout of 5 seconds to check +if the network can be reached.
+-
+
- Returns:
-
+
True if connection could be established.
+False if the internet could not be reached.
+
+
Returned output can be used to add a check for internet availability:
+++>>> if internet_available(): +>>> #...do something that requires internet connectivity +
-
+
- +inkycal.custom.functions.text_wrap(text, font=None, max_width=None) +
Splits a very long text into smaller parts
+Splits a long text to smaller lines which can fit in a line with max_width. +Uses a Font object for more accurate calculations.
+-
+
- Args:
-
+
text -> Text as a string
+font: A PIL font object which is used to calculate the size.
+max_width: int-> a width in pixels defining the maximum width before +splitting the text into the next chunk.
+
+- Returns:
A list containing chunked strings of the full text.
+
+
-
+
- +inkycal.custom.functions.write(image, xy, box_size, text, font=None, **kwargs) +
Writes text on a image.
+Writes given text at given position on the specified image.
+-
+
- Args:
-
+
image: The image to draw this text on, usually im_black or im_colour.
+xy: tuple-> (x,y) representing the x and y co-ordinate.
+box_size: tuple -> (width, height) representing the size of the text box.
+text: string, the actual text to add on the image.
+font: A PIL Font object e.g. +ImageFont.truetype(fonts[‘fontname’], size = 10).
+
+- Args: (optional)
-
+
alignment: alignment of the text, use ‘center’, ‘left’, ‘right’.
+autofit: bool (True/False). Automatically increases fontsize to fill in +as much of the box-height as possible.
+colour: black by default, do not change as it causes issues with rendering +on e-Paper.
+rotation: Rotate the text with the text-box by a given angle anti-clockwise.
+fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill a +maximum of 90% of the size of the full width of text-box.
+fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill a +maximum of 90% of the size of the full height of the text-box.
+
+
Helper classes
+Helper classes
+Inkycal iCalendar parsing module +Copyright by aceinnolab
+-
+
- +class inkycal.modules.ical_parser.iCalendar +
iCalendar parsing moudule for inkycal. +Parses events from given iCalendar URLs / paths
+-
+
- +static all_day(event) +
Check if an event is an all day event. +Returns True if event is all day, else False
+
-
+
- +clear_events() +
clear previously parsed events
+
-
+
- +get_events(timeline_start, timeline_end, timezone=None) +
Input an arrow (time) object for: +* the beginning of timeline (events have to end after this time) +* the end of the timeline (events have to begin before this time) +* timezone if events should be formatted to local time +Returns a list of events sorted by date
+
-
+
- +static get_system_tz() +
Get the timezone set by the system
+
-
+
- +load_from_file(filepath) +
Input a string or list of strings containing valid iCalendar filepaths +example: ‘path1’ (single file) OR [‘path1’, ‘path2’] (multiple files) +returns a list of iCalendars as string (raw)
+
-
+
- +load_url(url, username=None, password=None) +
Input a string or list of strings containing valid iCalendar URLs +example: ‘URL1’ (single url) OR [‘URL1’, ‘URL2’] (multiple URLs) +add username and password to access protected files
+
-
+
- +show_events(fmt='DD MMM YY HH:mm') +
print all parsed events in a more readable way +use the format (fmt) parameter to specify the date format +see https://arrow.readthedocs.io/en/latest/#supported-tokens +for more info tokens
+
-
+
- +sort() +
Sort all parsed events in order of beginning time
+
Custom image class for Inkycal Project +Takes care of handling images. Made to be used by other modules to handle +images.
+Copyright by aceinnolab
+-
+
- +class inkycal.modules.inky_image.Inkyimage(image=None) +
Custom Imge class written for commonly used image operations.
+-
+
- +autoflip(layout) +
flips the image automatically to the given layout.
+-
+
- Args:
-
+
layout:-> str. Choose horizontal or vertical.
+
+
Checks the image’s width and height.
+In horizontal mode, the image is flipped if the image height is greater +than the image width.
+In vertical mode, the image is flipped if the image width is greater +than the image height.
+
-
+
- +clear() +
Removes currently saved image if present.
+
-
+
- +flip(angle) +
Flips the image by the given angle.
+-
+
- Args:
-
+
angle:->int. A multiple of 90, e.g. 90, 180, 270, 360.
+
+
-
+
- +load(path) +
loads an image from a URL or filepath.
+-
+
- Args:
-
+
path:The full path or url of the image file +e.g. https://sample.com/logo.png or /home/pi/Downloads/nice_pic.png
+
+- Raises:
-
+
FileNotFoundError: This Exception is raised when the file could not be +found.
+OSError: A OSError is raised when the URL doesn’t point to the correct +file-format, i.e. is not an image
+TypeError: if the URLS doesn’t start with htpp
+
+
-
+
- +static merge(image1, image2) +
Merges two images into one.
+Replaces white pixels of the first image with transparent ones. Then pastes +the first image on the second one.
+-
+
- Args:
-
+
image1: A PIL Image object in ‘RGBA’ mode.
+image2: A PIL Image object in ‘RGBA’ mode.
+
+- Returns:
-
+
A single image.
+
+
-
+
- +static preview(image) +
“Previews an image on gpicview (only works on Rapsbian with Desktop).
+
-
+
- +remove_alpha() +
Removes transparency if image has transparency.
+Checks if an image has an alpha band and replaces the transparency with +white pixels.
+
-
+
- +resize(width=None, height=None) +
Resize an image to desired width or height
+
-
+
- +to_palette(palette, dither=True) +
Maps an image to a given colour palette.
+Maps each pixel from the image to a colour from the palette.
+-
+
- Args:
-
+
palette: A supported token. (see below)
+dither:->bool. Use dithering? Set to False for solid colour fills.
+
+- Returns:
-
+
two images: one for the coloured band and one for the black band.
+
+- Raises:
-
+
ValueError if palette token is not supported
+
+
Supported palette tokens:
+++>>> 'bwr' # black-white-red +>>> 'bwy' # black-white-yellow +>>> 'bw' # black-white +
Contents:
- Inkycal -
- Display -
- Custom functions -
- Helper classes +
- Display +
- Custom functions +
- Helper classes
- About Inkycal
- Quickstart
- Installing Inkycal @@ -84,7 +84,7 @@
- Inkycal -
- Display -
- Custom functions -
- Helper classes +
- Display +
- Custom functions +
- Helper classes
- About Inkycal
- Quickstart
- Developer documentation diff --git a/docs/searchindex.js b/docs/searchindex.js index 1e582ea..15ba625 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["about", "dev_doc", "index", "inkycal", "quickstart"], "filenames": ["about.md", "dev_doc.md", "index.rst", "inkycal.rst", "quickstart.md"], "titles": ["About Inkycal", "Developer documentation", "Inkycal documentation", "Inkycal", "Quickstart"], "terms": {"i": [0, 1], "python3": 0, "softwar": 0, "select": 0, "e": [0, 4], "paper": 0, "displai": [0, 2], "It": 0, "": 0, "open": 0, "sourc": 0, "non": 0, "commerci": 0, "fulli": 0, "modular": 0, "user": 0, "friendli": 0, "even": 0, "run": 0, "well": 0, "raspberri": [0, 4], "pi": [0, 4], "zero": 0, "ha": 0, "web": [0, 4], "ui": [0, 4], "which": 0, "take": 0, "care": 0, "ad": 0, "your": [0, 4], "detail": 0, "No": 0, "more": [0, 4], "edit": 0, "file": [0, 2], "yai": 0, "parti": [0, 1], "_": 0, "face": 0, "The": 0, "main": 0, "idea": 0, "behind": 0, "wa": 0, "creat": [0, 1, 2], "dashboard": 0, "blend": 0, "environ": 0, "show": 0, "you": 0, "all": 0, "inform": 0, "without": 0, "have": 0, "look": 0, "them": 0, "up": 0, "sever": 0, "built": 0, "modul": [0, 1, 2], "help": 0, "stai": 0, "organis": 0, "provid": 0, "weather": 0, "forecast": 0, "full": 0, "week": 0, "next": 0, "few": 0, "hour": 0, "get": 0, "latest": 0, "new": 0, "from": 0, "atom": 0, "rss": 0, "feed": 0, "icalendar": 0, "agenda": 0, "mai": 0, "synchronis": 0, "phone": 0, "monthli": 0, "calendar": 0, "also": 0, "event": 0, "sync": 0, "googl": 0, "etc": 0, "fetch": 0, "some": 0, "joke": 0, "form": 0, "smile": 0, "what": 0, "compat": 0, "third": [0, 1], "someth": 0, "miss": 0, "can": 0, "write": 0, "own": 0, "share": 0, "commun": 0, "discord": 0, "case": 0, "re": 0, "pinch": 0, "set": [0, 2], "noob": 0, "welcom": 0, "too": 0, "cours": 0, "develop": [0, 2], "mainli": [0, 1], "aceisac": 0, "univers": 0, "student": 0, "other": 0, "free": 0, "time": 0, "mean": 0, "we": 0, "work": 0, "noth": 0, "doesn": 0, "t": 0, "don": 0, "need": 0, "anyth": 0, "invest": 0, "larg": 0, "amount": 0, "effort": 0, "coffe": 0, "pleas": [0, 4], "support": 0, "via": [0, 4], "donat": 0, "u": 0, "keep": 0, "thi": [0, 1], "project": 0, "aliv": 0, "thank": 0, "who": 1, "wish": 1, "custom": 2, "function": 2, "helper": 2, "class": 2, "about": 2, "quickstart": 2, "instal": 2, "index": 2, "search": 2, "page": 2, "directli": 4, "github": 4, "repo": 4, "clone": 4, "git": 4, "http": 4, "com": 4, "aceinnolab": 4, "go": 4, "download": 4, "folder": 4, "cd": 4, "pip3": 4, "navig": 4, "copi": 4, "gener": 4, "come": 4, "soon": 4, "auto_fonts": [], "draw_bord": [], "get_font": [], "get_system_tz": [], "internet_avail": [], "text_wrap": [], "inkyimag": [], "copyright": [], "settings_path": [], "none": [], "render": [], "true": [], "test": [], "program": [], "arg": [], "str": [], "path": [], "json": [], "given": [], "tri": [], "boot": [], "bool": [], "fals": [], "imag": [], "epap": [], "attribut": [], "optim": [], "reduc": [], "number": [], "colour": [], "improv": [], "9": [], "7": [], "classmethod": [], "add_modul": [], "filepath": [], "regist": [], "us": [], "check": [], "insid": [], "correct": [], "an": [], "lastli": [], "init": [], "ar": [], "updat": [], "allow": [], "should": [], "usag": [], "exact": [], "link": [], "start": [], "raw": [], "githubusercont": [], "enter": [], "follow": [], "bash": [], "wget": [], "import": [], "py": [], "calibr": [], "default": [], "3": [], "cycl": [], "after": [], "refresh": [], "shown": [], "countdown": [], "interval_min": [], "return": [], "remain": [], "second": [], "until": [], "remove_modul": [], "filenam": [], "remove_fil": [], "unregist": [], "remov": [], "entri": [], "end": [], "g": [], "mymodul": [], "If": [], "delet": [], "els": [], "onli": [], "requir": [], "nonstop": [], "mode": [], "infin": [], "loop": [], "assembl": [], "one": [], "sleep": [], "shedul": [], "issu": [], "attempt": [], "name": [], "load": [], "config": [], "each": [], "initi": [], "could": [], "correctli": [], "found": [], "drive": [], "epaper_model": [], "instanc": [], "driver": [], "model": [], "retain": [], "crisp": [], "flush": [], "ani": [], "previou": [], "effect": [], "ghost": [], "int": [], "recommend": [], "everi": [], "6": [], "best": [], "result": [], "For": [], "black": [], "white": [], "less": [], "critic": [], "regularli": [], "grei": [], "ish": [], "text": [], "note": [], "while": [], "complet": [], "10": [], "minut": [], "20": [], "get_display_nam": [], "list": [], "print": [], "consol": [], "version": [], "intili": [], "order": [], "gain": [], "access": [], "get_display_s": [], "tupl": [], "size": [], "width": [], "height": [], "model_nam": [], "async": [], "im_black": [], "pil": [], "im_colour": [], "initli": [], "send": [], "data": [], "execut": [], "command": [], "pixel": [], "ideal": [], "separ": [], "either": [], "red": [], "yellow": [], "sample_imag": [], "png": [], "my_black_white_displai": [], "my_coloured_displai": [], "where": [], "2": [], "avail": [], "black_imag": [], "colour_imag": [], "eas": [], "font": [], "max_height": [], "scale": [], "80": [], "fill": [], "A": [], "object": [], "integ": [], "repres": [], "adjust": [], "modifi": [], "xy": [], "radiu": [], "5": [], "thick": [], "1": [], "shrinkag": [], "0": [], "draw": [], "border": [], "coordin": [], "drawn": [], "usual": [], "top": [], "left": [], "corner": [], "32": [], "100": [], "x": [], "co": [], "ordin": [], "y": [], "plain": [], "rectangl": [], "round": [], "contain": [], "decim": [], "present": [], "percentag": [], "shrink": [], "width_shrink_percentag": [], "height_shrink_percentag": [], "output": [], "To": [], "fontfil": [], "dictionari": [], "fontnam": [], "sytax": [], "imagefont": [], "truetyp": [], "system": [], "timezon": [], "extract": [], "local": [], "instead": [], "utc": [], "arrow": [], "now": [], "awar": [], "tz": [], "internet": [], "connect": [], "timeout": [], "network": [], "reach": [], "establish": [], "add": [], "do": [], "max_width": [], "split": [], "veri": [], "long": [], "smaller": [], "part": [], "line": [], "fit": [], "accur": [], "calcul": [], "string": [], "defin": [], "maximum": [], "befor": [], "chunk": [], "box_siz": [], "kwarg": [], "posit": [], "specifi": [], "box": [], "actual": [], "option": [], "align": [], "center": [], "right": [], "autofit": [], "automat": [], "increas": [], "fontsiz": [], "much": [], "possibl": [], "chang": [], "caus": [], "rotat": [], "angl": [], "anti": [], "clockwis": [], "fill_width": [], "90": [], "fill_height": [], "pars": [], "ical_pars": [], "moudul": [], "url": [], "static": [], "all_dai": [], "dai": [], "clear_ev": [], "clear": [], "previous": [], "get_ev": [], "timeline_start": [], "timeline_end": [], "input": [], "begin": [], "timelin": [], "format": [], "sort": [], "date": [], "load_from_fil": [], "valid": [], "exampl": [], "path1": [], "singl": [], "OR": [], "path2": [], "multipl": [], "load_url": [], "usernam": [], "password": [], "url1": [], "url2": [], "protect": [], "show_ev": [], "fmt": [], "dd": [], "mmm": [], "yy": [], "hh": [], "mm": [], "readabl": [], "wai": [], "paramet": [], "see": [], "readthedoc": [], "io": [], "en": [], "token": [], "info": [], "handl": [], "made": [], "inky_imag": [], "img": [], "written": [], "commonli": [], "oper": [], "autoflip": [], "layout": [], "flip": [], "choos": [], "horizont": [], "vertic": [], "In": [], "greater": [], "than": [], "current": [], "save": [], "180": [], "270": [], "360": [], "sampl": [], "logo": [], "home": [], "nice_p": [], "rais": [], "filenotfounderror": [], "except": [], "when": [], "oserror": [], "point": [], "typeerror": [], "htpp": [], "merg": [], "image1": [], "image2": [], "two": [], "replac": [], "first": [], "transpar": [], "ones": [], "Then": [], "past": [], "rgba": [], "preview": [], "gpicview": [], "rapsbian": [], "desktop": [], "remove_alpha": [], "alpha": [], "band": [], "resiz": [], "desir": [], "to_palett": [], "palett": [], "dither": [], "map": [], "below": [], "solid": [], "valueerror": [], "bwr": [], "bwy": [], "bw": []}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": 0, "inkyc": [0, 2, 3, 4], "develop": 1, "document": [1, 2], "content": 2, "indic": 2, "tabl": 2, "displai": 3, "custom": 3, "function": 3, "helper": 3, "class": 3, "quickstart": 4, "instal": 4, "creat": 4, "set": 4, "file": 4}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About Inkycal": [[0, "about-inkycal"]], "Developer documentation": [[1, "developer-documentation"]], "Quickstart": [[4, "quickstart"]], "Installing Inkycal": [[4, "installing-inkycal"]], "Creating settings file": [[4, "creating-settings-file"]], "Inkycal documentation": [[2, "inkycal-documentation"]], "Contents:": [[2, null]], "Indices and tables": [[2, "indices-and-tables"]], "Inkycal": [[3, "inkycal"]], "Display": [[3, "display"]], "Custom functions": [[3, "custom-functions"]], "Helper classes": [[3, "helper-classes"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["about", "dev_doc", "index", "inkycal", "quickstart"], "filenames": ["about.md", "dev_doc.md", "index.rst", "inkycal.rst", "quickstart.md"], "titles": ["About Inkycal", "Developer documentation", "Inkycal documentation", "Inkycal", "Quickstart"], "terms": {"i": [0, 1, 3], "python3": 0, "softwar": 0, "select": [0, 3], "e": [0, 3, 4], "paper": [0, 3], "displai": [0, 2], "It": [0, 3], "": [0, 3], "open": [0, 3], "sourc": 0, "non": [0, 3], "commerci": 0, "fulli": 0, "modular": 0, "user": 0, "friendli": 0, "even": 0, "run": [0, 3], "well": 0, "raspberri": [0, 4], "pi": [0, 3, 4], "zero": 0, "ha": [0, 3], "web": [0, 4], "ui": [0, 4], "which": [0, 3], "take": [0, 3], "care": [0, 3], "ad": 0, "your": [0, 3, 4], "detail": 0, "No": 0, "more": [0, 3, 4], "edit": 0, "file": [0, 2, 3], "yai": 0, "parti": [0, 1, 3], "_": 0, "face": 0, "The": [0, 3], "main": [0, 3], "idea": 0, "behind": 0, "wa": [0, 3], "creat": [0, 1, 2, 3], "dashboard": 0, "blend": 0, "environ": 0, "show": [0, 3], "you": [0, 3], "all": [0, 3], "inform": 0, "without": [0, 3], "have": [0, 3], "look": [0, 3], "them": [0, 3], "up": [0, 3], "sever": [0, 3], "built": 0, "modul": [0, 1, 2, 3], "help": 0, "stai": 0, "organis": 0, "provid": [0, 3], "weather": 0, "forecast": 0, "full": [0, 3], "week": 0, "next": [0, 3], "few": 0, "hour": 0, "get": [0, 3], "latest": [0, 3], "new": [0, 3], "from": [0, 3], "atom": 0, "rss": 0, "feed": 0, "icalendar": [0, 2, 3], "agenda": 0, "mai": [0, 3], "synchronis": 0, "phone": 0, "monthli": 0, "calendar": 0, "also": 0, "event": [0, 3], "sync": 0, "googl": [0, 3], "etc": 0, "fetch": [0, 3], "some": 0, "joke": 0, "form": 0, "smile": 0, "what": 0, "compat": 0, "third": [0, 1, 3], "someth": [0, 3], "miss": 0, "can": [0, 3], "write": [0, 2, 3], "own": 0, "share": 0, "commun": 0, "discord": 0, "case": 0, "re": 0, "pinch": 0, "set": [0, 2, 3], "noob": 0, "welcom": 0, "too": 0, "cours": 0, "develop": [0, 2, 3], "mainli": [0, 1], "aceisac": 0, "univers": 0, "student": 0, "other": [0, 3], "free": 0, "time": [0, 3], "mean": 0, "we": 0, "work": [0, 3], "noth": 0, "doesn": [0, 3], "t": [0, 3], "don": 0, "need": 0, "anyth": [0, 3], "invest": 0, "larg": 0, "amount": 0, "effort": 0, "coffe": 0, "pleas": [0, 3, 4], "support": [0, 3], "via": [0, 4], "donat": 0, "u": 0, "keep": 0, "thi": [0, 1, 3], "project": [0, 3], "aliv": 0, "thank": 0, "who": 1, "wish": 1, "custom": 2, "function": 2, "auto_fonts": [2, 3], "draw_bord": [2, 3], "get_font": [2, 3], "get_system_tz": [2, 3], "internet_avail": [2, 3], "text_wrap": [2, 3], "helper": 2, "class": 2, "inkyimag": [2, 3], "about": 2, "quickstart": 2, "instal": 2, "index": 2, "search": [2, 3], "page": 2, "copyright": 3, "aceinnolab": [3, 4], "settings_path": 3, "none": 3, "render": 3, "true": 3, "test": 3, "program": 3, "arg": 3, "str": 3, "path": 3, "json": 3, "given": 3, "tri": 3, "boot": 3, "folder": [3, 4], "bool": 3, "fals": 3, "imag": 3, "epap": 3, "attribut": 3, "optim": 3, "reduc": 3, "number": 3, "colour": 3, "gener": [3, 4], "improv": 3, "9": 3, "7": 3, "classmethod": 3, "add_modul": 3, "filepath": 3, "regist": 3, "us": 3, "check": 3, "insid": 3, "correct": 3, "an": 3, "lastli": 3, "init": 3, "ar": 3, "updat": 3, "allow": 3, "should": 3, "usag": 3, "download": [3, 4], "exact": 3, "link": 3, "start": 3, "http": [3, 4], "raw": 3, "githubusercont": 3, "com": [3, 4], "enter": 3, "follow": 3, "bash": 3, "cd": [3, 4], "navig": [3, 4], "wget": 3, "import": 3, "py": 3, "calibr": 3, "default": 3, "3": 3, "cycl": 3, "after": 3, "refresh": 3, "shown": 3, "countdown": 3, "interval_min": 3, "return": 3, "remain": 3, "second": 3, "until": 3, "remove_modul": 3, "filenam": 3, "remove_fil": 3, "unregist": 3, "remov": 3, "entri": 3, "end": 3, "g": 3, "mymodul": 3, "If": 3, "delet": 3, "els": 3, "onli": 3, "requir": 3, "nonstop": 3, "mode": 3, "infin": 3, "loop": 3, "assembl": 3, "one": 3, "sleep": 3, "shedul": 3, "issu": 3, "attempt": 3, "name": 3, "load": 3, "config": 3, "each": 3, "initi": 3, "could": 3, "correctli": 3, "found": 3, "drive": 3, "epaper_model": 3, "instanc": 3, "driver": 3, "model": 3, "retain": 3, "crisp": 3, "flush": 3, "ani": 3, "previou": 3, "effect": 3, "ghost": 3, "int": 3, "recommend": 3, "everi": 3, "6": 3, "best": 3, "result": 3, "For": 3, "black": 3, "white": 3, "less": 3, "critic": 3, "regularli": 3, "grei": 3, "ish": 3, "text": 3, "note": 3, "while": 3, "complet": 3, "10": 3, "minut": 3, "20": 3, "get_display_nam": 3, "list": 3, "print": 3, "consol": 3, "version": 3, "intili": 3, "order": 3, "gain": 3, "access": 3, "directli": [3, 4], "get_display_s": 3, "tupl": 3, "size": 3, "width": 3, "height": 3, "model_nam": 3, "async": 3, "im_black": 3, "pil": 3, "im_colour": 3, "initli": 3, "send": 3, "data": 3, "execut": 3, "command": 3, "pixel": 3, "ideal": 3, "separ": 3, "either": 3, "red": 3, "yellow": 3, "sample_imag": 3, "png": 3, "my_black_white_displai": 3, "my_coloured_displai": 3, "where": 3, "2": 3, "avail": 3, "black_imag": 3, "colour_imag": 3, "eas": 3, "font": 3, "max_height": 3, "scale": 3, "80": 3, "fill": 3, "A": 3, "object": 3, "integ": 3, "repres": 3, "adjust": 3, "modifi": 3, "xy": 3, "radiu": 3, "5": 3, "thick": 3, "1": 3, "shrinkag": 3, "0": 3, "draw": 3, "border": 3, "coordin": 3, "drawn": 3, "usual": 3, "top": 3, "left": 3, "corner": 3, "32": 3, "100": 3, "x": 3, "co": 3, "ordin": 3, "y": 3, "plain": 3, "rectangl": 3, "round": 3, "contain": 3, "decim": 3, "present": 3, "percentag": 3, "shrink": 3, "width_shrink_percentag": 3, "height_shrink_percentag": 3, "output": 3, "To": 3, "fontfil": 3, "dictionari": 3, "fontnam": 3, "sytax": 3, "imagefont": 3, "truetyp": 3, "system": 3, "timezon": 3, "extract": 3, "local": 3, "instead": 3, "utc": 3, "arrow": 3, "now": 3, "awar": 3, "tz": 3, "internet": 3, "connect": 3, "timeout": 3, "network": 3, "reach": 3, "establish": 3, "add": 3, "do": 3, "max_width": 3, "split": 3, "veri": 3, "long": 3, "smaller": 3, "part": 3, "line": 3, "fit": 3, "accur": 3, "calcul": 3, "string": 3, "defin": 3, "maximum": 3, "befor": 3, "chunk": 3, "box_siz": 3, "kwarg": 3, "posit": 3, "specifi": 3, "box": 3, "actual": 3, "option": 3, "align": 3, "center": 3, "right": 3, "autofit": 3, "automat": 3, "increas": 3, "fontsiz": 3, "much": 3, "possibl": 3, "chang": 3, "caus": 3, "rotat": 3, "angl": 3, "anti": 3, "clockwis": 3, "fill_width": 3, "90": 3, "fill_height": 3, "pars": 3, "ical_pars": 3, "moudul": 3, "url": 3, "static": 3, "all_dai": 3, "dai": 3, "clear_ev": 3, "clear": 3, "previous": 3, "get_ev": 3, "timeline_start": 3, "timeline_end": 3, "input": 3, "begin": 3, "timelin": 3, "format": 3, "sort": 3, "date": 3, "load_from_fil": 3, "valid": 3, "exampl": 3, "path1": 3, "singl": 3, "OR": 3, "path2": 3, "multipl": 3, "load_url": 3, "usernam": 3, "password": 3, "url1": 3, "url2": 3, "protect": 3, "show_ev": 3, "fmt": 3, "dd": 3, "mmm": 3, "yy": 3, "hh": 3, "mm": 3, "readabl": 3, "wai": 3, "paramet": 3, "see": 3, "readthedoc": 3, "io": 3, "en": 3, "token": 3, "info": 3, "handl": 3, "made": 3, "inky_imag": 3, "img": 3, "written": 3, "commonli": 3, "oper": 3, "autoflip": 3, "layout": 3, "flip": 3, "choos": 3, "horizont": 3, "vertic": 3, "In": 3, "greater": 3, "than": 3, "current": 3, "save": 3, "180": 3, "270": 3, "360": 3, "sampl": 3, "logo": 3, "home": 3, "nice_p": 3, "rais": 3, "filenotfounderror": 3, "except": 3, "when": 3, "oserror": 3, "point": 3, "typeerror": 3, "htpp": 3, "merg": 3, "image1": 3, "image2": 3, "two": 3, "replac": 3, "first": 3, "transpar": 3, "ones": 3, "Then": 3, "past": 3, "rgba": 3, "preview": 3, "gpicview": 3, "rapsbian": 3, "desktop": 3, "remove_alpha": 3, "alpha": 3, "band": 3, "resiz": 3, "desir": 3, "to_palett": 3, "palett": 3, "dither": 3, "map": 3, "below": 3, "solid": 3, "valueerror": 3, "bwr": 3, "bwy": 3, "bw": 3, "github": 4, "repo": 4, "clone": 4, "git": 4, "go": 4, "pip3": 4, "copi": 4, "come": 4, "soon": 4}, "objects": {"inkycal.custom": [[3, 0, 0, "-", "functions"]], "inkycal.custom.functions": [[3, 1, 1, "", "auto_fontsize"], [3, 1, 1, "", "draw_border"], [3, 1, 1, "", "get_fonts"], [3, 1, 1, "", "get_system_tz"], [3, 1, 1, "", "internet_available"], [3, 1, 1, "", "text_wrap"], [3, 1, 1, "", "write"]], "inkycal.display": [[3, 0, 0, "-", "display"]], "inkycal.display.display": [[3, 2, 1, "", "Display"]], "inkycal.display.display.Display": [[3, 3, 1, "", "calibrate"], [3, 3, 1, "", "get_display_names"], [3, 3, 1, "", "get_display_size"], [3, 3, 1, "", "render"]], "inkycal": [[3, 0, 0, "-", "main"]], "inkycal.main": [[3, 2, 1, "", "Inkycal"]], "inkycal.main.Inkycal": [[3, 3, 1, "", "add_module"], [3, 3, 1, "", "calibrate"], [3, 3, 1, "", "countdown"], [3, 3, 1, "", "remove_module"], [3, 3, 1, "", "run"], [3, 3, 1, "", "test"]], "inkycal.modules": [[3, 0, 0, "-", "ical_parser"], [3, 0, 0, "-", "inky_image"]], "inkycal.modules.ical_parser": [[3, 2, 1, "", "iCalendar"]], "inkycal.modules.ical_parser.iCalendar": [[3, 3, 1, "", "all_day"], [3, 3, 1, "", "clear_events"], [3, 3, 1, "", "get_events"], [3, 3, 1, "", "get_system_tz"], [3, 3, 1, "", "load_from_file"], [3, 3, 1, "", "load_url"], [3, 3, 1, "", "show_events"], [3, 3, 1, "", "sort"]], "inkycal.modules.inky_image": [[3, 2, 1, "", "Inkyimage"]], "inkycal.modules.inky_image.Inkyimage": [[3, 3, 1, "", "autoflip"], [3, 3, 1, "", "clear"], [3, 3, 1, "", "flip"], [3, 3, 1, "", "load"], [3, 3, 1, "", "merge"], [3, 3, 1, "", "preview"], [3, 3, 1, "", "remove_alpha"], [3, 3, 1, "", "resize"], [3, 3, 1, "", "to_palette"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"about": 0, "inkyc": [0, 2, 3, 4], "develop": 1, "document": [1, 2], "content": 2, "indic": 2, "tabl": 2, "displai": 3, "custom": 3, "function": 3, "helper": 3, "class": 3, "quickstart": 4, "instal": 4, "creat": 4, "set": 4, "file": 4}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About Inkycal": [[0, "about-inkycal"]], "Developer documentation": [[1, "developer-documentation"]], "Inkycal documentation": [[2, "inkycal-documentation"]], "Contents:": [[2, null]], "Indices and tables": [[2, "indices-and-tables"]], "Quickstart": [[4, "quickstart"]], "Installing Inkycal": [[4, "installing-inkycal"]], "Creating settings file": [[4, "creating-settings-file"]], "Inkycal": [[3, "module-inkycal.main"]], "Display": [[3, "module-inkycal.display.display"]], "Custom functions": [[3, "module-inkycal.custom.functions"]], "Helper classes": [[3, "module-inkycal.modules.ical_parser"]]}, "indexentries": {"display (class in inkycal.display.display)": [[3, "inkycal.display.display.Display"]], "inkycal (class in inkycal.main)": [[3, "inkycal.main.Inkycal"]], "inkyimage (class in inkycal.modules.inky_image)": [[3, "inkycal.modules.inky_image.Inkyimage"]], "add_module() (inkycal.main.inkycal class method)": [[3, "inkycal.main.Inkycal.add_module"]], "all_day() (inkycal.modules.ical_parser.icalendar static method)": [[3, "inkycal.modules.ical_parser.iCalendar.all_day"]], "auto_fontsize() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.auto_fontsize"]], "autoflip() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.autoflip"]], "calibrate() (inkycal.display.display.display method)": [[3, "inkycal.display.display.Display.calibrate"]], "calibrate() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.calibrate"]], "clear() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.clear"]], "clear_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.clear_events"]], "countdown() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.countdown"]], "draw_border() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.draw_border"]], "flip() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.flip"]], "get_display_names() (inkycal.display.display.display class method)": [[3, "inkycal.display.display.Display.get_display_names"]], "get_display_size() (inkycal.display.display.display method)": [[3, "inkycal.display.display.Display.get_display_size"]], "get_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.get_events"]], "get_fonts() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.get_fonts"]], "get_system_tz() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.get_system_tz"]], "get_system_tz() (inkycal.modules.ical_parser.icalendar static method)": [[3, "inkycal.modules.ical_parser.iCalendar.get_system_tz"]], "icalendar (class in inkycal.modules.ical_parser)": [[3, "inkycal.modules.ical_parser.iCalendar"]], "inkycal.custom.functions": [[3, "module-inkycal.custom.functions"]], "inkycal.display.display": [[3, "module-inkycal.display.display"]], "inkycal.main": [[3, "module-inkycal.main"]], "inkycal.modules.ical_parser": [[3, "module-inkycal.modules.ical_parser"]], "inkycal.modules.inky_image": [[3, "module-inkycal.modules.inky_image"]], "internet_available() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.internet_available"]], "load() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.load"]], "load_from_file() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.load_from_file"]], "load_url() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.load_url"]], "merge() (inkycal.modules.inky_image.inkyimage static method)": [[3, "inkycal.modules.inky_image.Inkyimage.merge"]], "module": [[3, "module-inkycal.custom.functions"], [3, "module-inkycal.display.display"], [3, "module-inkycal.main"], [3, "module-inkycal.modules.ical_parser"], [3, "module-inkycal.modules.inky_image"]], "preview() (inkycal.modules.inky_image.inkyimage static method)": [[3, "inkycal.modules.inky_image.Inkyimage.preview"]], "remove_alpha() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.remove_alpha"]], "remove_module() (inkycal.main.inkycal class method)": [[3, "inkycal.main.Inkycal.remove_module"]], "render() (inkycal.display.display.display method)": [[3, "inkycal.display.display.Display.render"]], "resize() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.resize"]], "run() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.run"]], "show_events() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.show_events"]], "sort() (inkycal.modules.ical_parser.icalendar method)": [[3, "inkycal.modules.ical_parser.iCalendar.sort"]], "test() (inkycal.main.inkycal method)": [[3, "inkycal.main.Inkycal.test"]], "text_wrap() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.text_wrap"]], "to_palette() (inkycal.modules.inky_image.inkyimage method)": [[3, "inkycal.modules.inky_image.Inkyimage.to_palette"]], "write() (in module inkycal.custom.functions)": [[3, "inkycal.custom.functions.write"]]}}) \ No newline at end of file
Quickstart
-+ Installing Inkycal
Install inkycal directly via the GitHub repo:
# clone the repo diff --git a/docs/search.html b/docs/search.html index 7047887..96410e9 100644 --- a/docs/search.html +++ b/docs/search.html @@ -46,9 +46,9 @@
Contents: