From 68f6348718b4129a6992601bf314123139513c99 Mon Sep 17 00:00:00 2001 From: Edward Tirado Jr Date: Sun, 16 Feb 2025 20:13:29 -0600 Subject: [PATCH] Initial commmit --- .gitignore | 153 +++++ LICENSE | 674 ++++++++++++++++++++ README.md | 24 + requirements.txt | 6 + src/.env.example | 3 + src/apps/home/__init__.py | 2 + src/apps/home/home.py | 55 ++ src/apps/home/widgets/__init__.py | 0 src/apps/home/widgets/app_menu.py | 63 ++ src/apps/home/widgets/calendar.py | 34 + src/apps/home/widgets/clock.py | 20 + src/apps/huecontrol/__init__.py | 1 + src/apps/huecontrol/hue.py | 49 ++ src/apps/huecontrol/widgets/group.py | 88 +++ src/apps/mycroft/__init__.py | 1 + src/apps/mycroft/mycroft.py | 62 ++ src/apps/mycroft/responses/text_response.py | 23 + src/apps/snapcast/__init__.py | 1 + src/apps/snapcast/snapcontrol.py | 97 +++ src/apps/snapcast/widgets/group.py | 134 ++++ src/assets/default_bg.jpg | Bin 0 -> 131324 bytes src/layout.py | 26 + src/main.py | 68 ++ src/style.css | 127 ++++ 24 files changed, 1711 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 requirements.txt create mode 100644 src/.env.example create mode 100644 src/apps/home/__init__.py create mode 100644 src/apps/home/home.py create mode 100644 src/apps/home/widgets/__init__.py create mode 100644 src/apps/home/widgets/app_menu.py create mode 100644 src/apps/home/widgets/calendar.py create mode 100644 src/apps/home/widgets/clock.py create mode 100644 src/apps/huecontrol/__init__.py create mode 100644 src/apps/huecontrol/hue.py create mode 100644 src/apps/huecontrol/widgets/group.py create mode 100644 src/apps/mycroft/__init__.py create mode 100644 src/apps/mycroft/mycroft.py create mode 100644 src/apps/mycroft/responses/text_response.py create mode 100644 src/apps/snapcast/__init__.py create mode 100644 src/apps/snapcast/snapcontrol.py create mode 100644 src/apps/snapcast/widgets/group.py create mode 100644 src/assets/default_bg.jpg create mode 100644 src/layout.py create mode 100644 src/main.py create mode 100644 src/style.css diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6c089e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,153 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b906ce9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 2021 Edward Tirado Jr + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Raspberry Pi Display Copyright (C) 2021 Edward Tirado Jr + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..98b73a7 --- /dev/null +++ b/README.md @@ -0,0 +1,24 @@ +# Pi Display + +A display designed for the official Raspberry Pi 7" touchscreen (should work on most screens though). Includes integration with: + +- [Snapcast](https://github.com/badaix/snapcast) +- [Mycroft AI](https://mycroft.ai/) +- [Philips Hue](https://www.philips-hue.com/) + + +![Pi Display](https://imgur.com/l28rJKd.gif) + +## Requirements +- [Gtk 3](https://www.gtk.org) +- [Python 3](https://www.python.org/) +- [PyGObject dependencies](https://pygobject.readthedocs.io/en/latest/getting_started.html) + +## Setup +1. Create a virtual environment in the root directory (and activate it): + - `python3 -m venv env` + - `source env/bin/activate` +2. Install dependencies: `pip install -r requirements.txt` +3. Rename `src/.env.example` to `src/.env` and update variables + - Setting `ENVIRONMENT=dev` prevents the screen from opening maximized +4. Enter the src directory and use `python main.py` to start the application diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..cd6f582 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,6 @@ +mycroft-messagebus-client +pycairo +PyGObject +python-dotenv +snapcast +phue diff --git a/src/.env.example b/src/.env.example new file mode 100644 index 0000000..641c2fe --- /dev/null +++ b/src/.env.example @@ -0,0 +1,3 @@ +SNAPCAST_SERVER_IP=192.168.0.123 +SNAPCAST_TCP_PORT=1715 +#ENVIRONMENT='dev' diff --git a/src/apps/home/__init__.py b/src/apps/home/__init__.py new file mode 100644 index 0000000..10eac25 --- /dev/null +++ b/src/apps/home/__init__.py @@ -0,0 +1,2 @@ +from . import widgets +from .home import HomeView diff --git a/src/apps/home/home.py b/src/apps/home/home.py new file mode 100644 index 0000000..61e2dd4 --- /dev/null +++ b/src/apps/home/home.py @@ -0,0 +1,55 @@ +import gi + +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk +from .widgets.clock import ClockLabel +from .widgets.calendar import CalendarBox +from .widgets.app_menu import AppMenu + + +class HomeView(Gtk.Grid): + def __init__(self, parent): + Gtk.Grid.__init__(self) + self.parent = parent + self.row_name = "Home" + self.date_stack = self.build_date_box() + self.date_stack.set_transition_type(Gtk.StackTransitionType.OVER_UP) + self.picture_box = self.build_picture_box() + + self.add(self.date_stack) + self.attach_next_to(self.picture_box, self.date_stack, Gtk.PositionType.RIGHT, 3, 1) + + def build_date_box(self): + date_stack = Gtk.Stack() + date_stack.set_name("main_menu") + + date_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + date_box.set_name("date-box") + date_box.set_hexpand(True) + date_box.set_vexpand(True) + + menu_button = Gtk.Button.new_with_label("Menu") + menu_button.set_name("menu-button") + menu_button.connect("clicked", self.toggle_menu) + + date_box.pack_start(CalendarBox(), False, False, 2) + date_box.pack_start(ClockLabel(), False, False, 2) + date_box.pack_end(menu_button, False, False, 2) + + main_menu = AppMenu(self, self.parent) + date_stack.add_titled(date_box, "date_box", "Date") + date_stack.add_titled(main_menu, "main_menu", "Menu") + + return date_stack + + def build_picture_box(self): + picture_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + picture_box.set_name("picture-box") + picture_box.set_hexpand(True) + picture_box.set_vexpand(True) + + return picture_box + + def toggle_menu(self, button): + self.date_stack.set_visible_child_name('main_menu') diff --git a/src/apps/home/widgets/__init__.py b/src/apps/home/widgets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/apps/home/widgets/app_menu.py b/src/apps/home/widgets/app_menu.py new file mode 100644 index 0000000..04b0404 --- /dev/null +++ b/src/apps/home/widgets/app_menu.py @@ -0,0 +1,63 @@ +import gi + +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk + + +class AppMenu(Gtk.ScrolledWindow): + def __init__(self, parent, main_window): + super().__init__() + self.parent = parent + self.main_window = main_window + self.apps = { + "Snapcast": "snapcast_view", + "Lights": "hue_view", + "Mycroft": "mycroft_view" + } + + self.app_grid = self.build_grid() + self.add(self.app_grid) + + def build_grid(self): + app_grid = Gtk.Grid(orientation=Gtk.Orientation.VERTICAL) + app_grid.set_hexpand(True) + app_grid_context = app_grid.get_style_context() + app_grid_context.add_class("main-menu") + + home_app_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + home_app_box.set_hexpand(True) + home_app_box_context = home_app_box.get_style_context() + home_app_box_context.add_class("app-box") + + home_app_button = Gtk.Button.new_with_label("Home") + home_app_button_context = home_app_button.get_style_context() + home_app_button_context.add_class("menu-button") + home_app_button.connect('clicked', self.reset_home_view) + + home_app_box.pack_start(home_app_button, False, False, 0) + + app_grid.add(home_app_box) + + for name, app in self.apps.items(): + app_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + app_box_context = app_box.get_style_context() + app_box_context.add_class("app-box") + + app_button = Gtk.Button.new_with_label(name) + app_button_context = app_button.get_style_context() + app_button_context.add_class("menu-button") + app_button.connect('clicked', self.update_view, app) + + app_box.pack_start(app_button, False, False, 0) + + app_grid.add(app_box) + + return app_grid + + def update_view(self, button, view): + self.main_window.emit("update_view", view) + self.reset_home_view() + + def reset_home_view(self, button=None): + self.parent.date_stack.set_visible_child_name("date_box") diff --git a/src/apps/home/widgets/calendar.py b/src/apps/home/widgets/calendar.py new file mode 100644 index 0000000..2e6fa91 --- /dev/null +++ b/src/apps/home/widgets/calendar.py @@ -0,0 +1,34 @@ +from datetime import datetime + +import gi + +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk, GLib + + +class CalendarBox(Gtk.Box): + def __init__(self): + Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL) + GLib.timeout_add_seconds(1, self.update_date) + self.set_name("calendar-box") + + self.month_label = Gtk.Label("") + self.day_of_month_label = Gtk.Label("") + self.day_of_month_label.set_name("day-of-month-label") + self.day_of_week_label = Gtk.Label("") + + self.pack_start(self.month_label, False, False, 2) + self.pack_start(self.day_of_month_label, False, False, 2) + self.pack_start(self.day_of_week_label, False, False, 2) + + self.update_date() + + def update_date(self): + date = datetime.today() + + self.month_label.set_text(date.strftime("%B")) + self.day_of_month_label.set_text(date.strftime("%d").upper()) + self.day_of_week_label.set_text(date.strftime("%A")) + + return GLib.SOURCE_CONTINUE diff --git a/src/apps/home/widgets/clock.py b/src/apps/home/widgets/clock.py new file mode 100644 index 0000000..a88176c --- /dev/null +++ b/src/apps/home/widgets/clock.py @@ -0,0 +1,20 @@ +import gi +import time +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk, GLib + +class ClockLabel(Gtk.Label): + def __init__(self): + Gtk.Label.__init__(self, "") + GLib.timeout_add_seconds(1, self.update_time) + self.set_name("clock") + self.update_time() + + def update_time(self): + time = self.get_time() + self.set_text(time) + return GLib.SOURCE_CONTINUE + + def get_time(self): + return time.strftime("%H:%M") diff --git a/src/apps/huecontrol/__init__.py b/src/apps/huecontrol/__init__.py new file mode 100644 index 0000000..1b68db4 --- /dev/null +++ b/src/apps/huecontrol/__init__.py @@ -0,0 +1 @@ +from .hue import HueView diff --git a/src/apps/huecontrol/hue.py b/src/apps/huecontrol/hue.py new file mode 100644 index 0000000..23bc8c6 --- /dev/null +++ b/src/apps/huecontrol/hue.py @@ -0,0 +1,49 @@ +import gi +from dotenv import dotenv_values +from gi.repository import Gtk +from phue import Bridge + +from .widgets.group import GroupBox + +gi.require_version("Gtk", "3.0") + + +class HueView(Gtk.ScrolledWindow): + def __init__(self, parent, header_bar): + Gtk.ScrolledWindow.__init__(self, Gtk.Adjustment(0, 0, 0, 0, 0, 0)) + header_bar = header_bar(self, "Lights") + self.config = dotenv_values(".env") + self.parent = parent + + self.content_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + self.content_box.set_name("hue-content-box") + + content_box_context = self.content_box.get_style_context() + content_box_context.add_class("content-box") + self.content_box.pack_start(header_bar, False, False, 1) + + self.bridge_ip = self.config["PHILIPS_HUE_BRIDGE_IP"] + self.bridge = self.connect_to_hue() + + self.build_light_groups() + self.add(self.content_box) + self.connect_to_hue() + + def connect_to_hue(self): + bridge = Bridge(self.bridge_ip) + bridge.connect() + return bridge + + def build_light_groups(self): + groups = self.bridge.groups + group_box = Gtk.FlowBox() + group_box.set_max_children_per_line(4) + group_box.set_selection_mode(Gtk.SelectionMode.NONE) + + for group in groups: + group_box.add(GroupBox(self.bridge, group)) + + self.content_box.pack_start(group_box, True, True, 1) + + def reset_view(self, button): + self.parent.emit("update_view", "home_view") diff --git a/src/apps/huecontrol/widgets/group.py b/src/apps/huecontrol/widgets/group.py new file mode 100644 index 0000000..0178a3d --- /dev/null +++ b/src/apps/huecontrol/widgets/group.py @@ -0,0 +1,88 @@ +import gi +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk, GLib + +class GroupBox(Gtk.Box): + def __init__(self, bridge, group): + Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL) + self.context = self.get_style_context() + self.context.add_class("group-box") + self.context.add_class("groups-container") + self.bridge = bridge + + # GROUP NAME + self.name = Gtk.Label("") + + # GROUP ON/OFF SWITCH + #self.group_switch = Gtk.Switch() + #self.mute_switch.set_state(not group.muted) + #self.mute_switch.connect("notify::active", parent.on_mute_toggle, {"type": "group", "group": group}) + + #self.clients = self.build_clients_box(group) + self.build_header() + self.build_separator() + self.build_lights_box(group) + + self.update_fields(group) + + + def update_fields(self, group): + self.name.set_text(group.name) + + + def build_header(self): + # HEADER + group_header_box = Gtk.Box() + group_header_context = group_header_box.get_style_context() + group_header_context.add_class("group-header") + + group_header_box.pack_start(self.name, False, False, 1) + + self.pack_start(group_header_box, False, False, 1) + + + def build_lights_box(self, group): + lights_container = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + lights_container_context = lights_container.get_style_context() + lights_container_context.add_class("client-container") + + lights_label = Gtk.Label("Lights") + lights_label_context = lights_label.get_style_context() + lights_label_context.add_class("title") + lights_label.set_halign(Gtk.Align.START) + lights_container.pack_start(lights_label, False, False, 0) + + for light in group.lights: + light_box = Gtk.Box() + light_box_context = light_box.get_style_context() + light_box_context.add_class("client-box") + + light_switch = Gtk.Switch() + light_switch.set_state(light.on) + light_switch.connect( + "notify::active", + self.on_light_toggle, + light + ) + + name = Gtk.Label(light.name) + + light_box.pack_start(name, False, False, 1) + light_box.pack_end(light_switch, False, False, 1) + + lights_container.pack_start(light_box, False, False, 0) + + self.pack_start(lights_container, False, False, 1) + + def build_separator(self): + # SEPARATOR + separator = Gtk.Separator() + separator_context = separator.get_style_context() + separator_context.add_class("separator") + + self.pack_start(separator, False, False, 1) + + + def on_light_toggle(self, switch, gparam, light): + self.bridge.set_light(light.light_id, 'on', switch.get_state()) diff --git a/src/apps/mycroft/__init__.py b/src/apps/mycroft/__init__.py new file mode 100644 index 0000000..02dc678 --- /dev/null +++ b/src/apps/mycroft/__init__.py @@ -0,0 +1 @@ +from .mycroft import MycroftView diff --git a/src/apps/mycroft/mycroft.py b/src/apps/mycroft/mycroft.py new file mode 100644 index 0000000..cb3c98b --- /dev/null +++ b/src/apps/mycroft/mycroft.py @@ -0,0 +1,62 @@ +import gi + +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk +from mycroft_bus_client import MessageBusClient +from time import sleep +from .responses.text_response import MycroftTextResponse + + +class MycroftView(Gtk.ScrolledWindow): + def __init__(self, parent, header_bar): + Gtk.ScrolledWindow.__init__(self, Gtk.Adjustment(0, 0, 0, 0, 0, 0)) + self.display_in_use = False + self.parent = parent + self.stack = Gtk.Stack() + self.stack.set_name("mycroft-stack") + + content_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + content_box.set_name("mycroft-content-box") + content_box_context = content_box.get_style_context() + content_box_context.add_class("content-box") + + self.default_message = {"text": "Say \"Hey, Mycroft\" to activate Mycroft"} + self.text_response = MycroftTextResponse(self.default_message) + + self.build_stack() + content_box.pack_start(header_bar(self, "Mycroft"), False, False, 1) + content_box.pack_end(self.stack, True, True, 1) + + self.add(content_box) + + self.client = MessageBusClient() + self.client.run_in_thread() + self.client.on("speak", self.handle_utterance) + + def build_stack(self): + self.stack.add_titled(self.text_response, "text_response", "Text") + + def handle_utterance(self, message): + # Ignore requests that come in while another + # is displayed until a queue has been implemented + if self.display_in_use == True: + return + + self.handle_text_response(message) + self.reset_view() + + def handle_text_response(self, message): + self.text_response.set_label(message) + self.update_view("text_response") + + def reset_view(self, button=None): + self.display_in_use = False + self.text_response.set_label(self.default_message) + self.parent.emit("update_view", "home_view") + + def update_view(self, new_view): + self.display_in_use = True + self.stack.set_visible_child_name(new_view) + self.parent.emit("update_view", "mycroft_view") + sleep(15) diff --git a/src/apps/mycroft/responses/text_response.py b/src/apps/mycroft/responses/text_response.py new file mode 100644 index 0000000..e3d526a --- /dev/null +++ b/src/apps/mycroft/responses/text_response.py @@ -0,0 +1,23 @@ +import gi +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk + + +class MycroftTextResponse(Gtk.Box): + def __init__(self, message): + Gtk.Box.__init__(self) + + self.utterance_label = Gtk.Label() + self.set_label(message) + self.pack_start(self.utterance_label, True, True, 1) + + + def set_label(self, message): + try: + self.utterance_label.set_text(message.data["utterance"]) + except: + self.utterance_label.set_text(message["text"]) + + self.utterance_label.set_line_wrap(True) + self.utterance_label.set_max_width_chars(50) diff --git a/src/apps/snapcast/__init__.py b/src/apps/snapcast/__init__.py new file mode 100644 index 0000000..eb09839 --- /dev/null +++ b/src/apps/snapcast/__init__.py @@ -0,0 +1 @@ +from .snapcontrol import SnapCastView diff --git a/src/apps/snapcast/snapcontrol.py b/src/apps/snapcast/snapcontrol.py new file mode 100644 index 0000000..b53e07a --- /dev/null +++ b/src/apps/snapcast/snapcontrol.py @@ -0,0 +1,97 @@ +import asyncio + +import gi +import snapcast.control + +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk, GObject +from dotenv import dotenv_values +from .widgets.group import GroupBox + + +class SnapCastView(Gtk.ScrolledWindow): + __gsignals__ = { + 'update_groups': (GObject.SIGNAL_RUN_FIRST, None, (int,)), + 'toggle_mute': (GObject.SIGNAL_RUN_FIRST, None, (str,)), + 'stream_changed': (GObject.SIGNAL_RUN_FIRST, None, (Gtk.ComboBox,)), + } + + def __init__(self, parent, header_bar): + Gtk.ScrolledWindow.__init__(self, Gtk.Adjustment(0, 0, 0, 0, 0, 0)) + self.content_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + self.content_box.set_name("snapcast-content-box") + content_box_context = self.content_box.get_style_context() + content_box_context.add_class("content-box") + + self.parent = parent + self.row_name = "Snapcontrol" + self.loop = asyncio.get_event_loop() + self.config = dotenv_values(".env") + self.server = self.loop.run_until_complete( + snapcast.control.create_server( + self.loop, + self.config["SNAPCAST_SERVER_IP"], + self.config["SNAPCAST_TCP_PORT"]) + ) + self.groups_container = Gtk.Box() + groups_container_context = self.groups_container.get_style_context() + groups_container_context.add_class("groups-container") + self.groups_container.set_name("groups-container") + self.groups = Gtk.FlowBox() + + self.generate_view(header_bar) + self.connect("stream_changed", self.on_stream_changed) + + def generate_view(self, header_bar): + self.content_box.pack_start(header_bar(self, "Snapcast"), False, False, 1) + self.groups.set_valign(Gtk.Align.START) + self.groups.set_selection_mode(Gtk.SelectionMode.NONE) + self.groups.set_name("snapcast-grid") + + self.update_group_list() + self.groups_container.pack_end(self.groups, True, True, 1) + self.content_box.pack_end(self.groups_container, True, True, 1) + + self.add(self.content_box) + + def set_volume(self, volume): + # set volume for client #0 to 50% + client = self.server.clients[1] + self.loop.run_until_complete(self.server.client_volume( + client.identifier, { + 'percent': volume, + 'muted': False + }) + ) + + def on_mute_toggle(self, switch, gparam, player): + if (player["type"] == 'group'): + self.loop.run_until_complete( + self.server.group_mute(player["group"].identifier, + not switch.get_state() + )) + else: + self.loop.run_until_complete(self.server.client_volume( + player["client"], { + 'muted': not switch.get_state() + } + )) + + def on_stream_changed(self, view, combo): + tree_iter = combo.get_active_iter() + + if tree_iter is not None: + model = combo.get_model() + group_id, stream_id = model[tree_iter][:2] + + self.loop.run_until_complete( + self.server.group_stream(group_id, stream_id) + ) + + def update_group_list(self): + for group in self.server.groups: + group_box = GroupBox(self, group) + self.groups.add(group_box) + + def reset_view(self, button): + self.parent.emit("update_view", "home_view") diff --git a/src/apps/snapcast/widgets/group.py b/src/apps/snapcast/widgets/group.py new file mode 100644 index 0000000..27ce205 --- /dev/null +++ b/src/apps/snapcast/widgets/group.py @@ -0,0 +1,134 @@ +import gi +gi.require_version("Gtk", "3.0") + +from gi.repository import Gtk, GLib + +class GroupBox(Gtk.Box): + def __init__(self, parent, group): + self.parent = parent + self.streams = [] + + Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL) + self.context = self.get_style_context() + self.context.add_class("group-box") + + #GLib.timeout_add_seconds(1, self.update_fields, parent.server.group(group.identifier)) + + # GROUP NAME + self.name = Gtk.Label("") + + # GROUP MUTE SWITCH + self.mute_switch = Gtk.Switch() + self.mute_switch.set_state(not group.muted) + self.mute_switch.connect("notify::active", parent.on_mute_toggle, {"type": "group", "group": group}) + + #self.clients = self.build_clients_box(group) + self.build_header() + self.build_source_dropdown(group) + self.build_separator() + self.build_clients_box(group) + + self.update_fields(group) + + + def update_fields(self, group): + self.name.set_text(group.friendly_name) + self.mute_switch.set_state(not group.muted) + + #return GLib.SOURCE_CONTINUE + + + def build_header(self): + # HEADER + group_header_box = Gtk.Box() + group_header_context = group_header_box.get_style_context() + group_header_context.add_class("group-header") + + group_header_box.pack_start(self.name, False, False, 1) + group_header_box.pack_end(self.mute_switch, False, False, 1) + + self.pack_start(group_header_box, False, False, 1) + + + def build_source_dropdown(self, group): + self.streams = [] + + # DROPDOWN + stream_store = Gtk.ListStore(str, str) + for stream in self.parent.server.streams: + self.streams.append(stream.friendly_name) + stream_store.append([group.identifier, stream.friendly_name]) + + source_dropdown = Gtk.ComboBox.new_with_model_and_entry(stream_store) + source_dropdown.set_entry_text_column(1) + + # If the stream isn't found, just use the first one + # This can be caused by changing the stream name on the server + try: + source_dropdown.set_active(self.streams.index(group.stream)) + except: + source_dropdown.set_active(0) + + source_dropdown.connect("changed", self.on_stream_changed) + + source_dropdown_context = source_dropdown.get_style_context() + source_dropdown_context.add_class("dropdown") + + source_container = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + + source_label = Gtk.Label("Source") + source_label_context = source_label.get_style_context() + source_label_context.add_class("title") + source_label.set_halign(Gtk.Align.START) + + source_container.pack_start(source_label, False, False, 1) + source_container.pack_end(source_dropdown, False, False, 1) + source_container_context = source_container.get_style_context() + source_container_context.add_class("source-container") + + self.pack_start(source_container, False, False, 1) + + + def build_clients_box(self, group): + client_container = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) + client_context = client_container.get_style_context() + client_context.add_class("client-container") + + clients_label = Gtk.Label("Clients") + clients_label_context = clients_label.get_style_context() + clients_label_context.add_class("title") + clients_label.set_halign(Gtk.Align.START) + client_container.pack_start(clients_label, False, False, 0) + + for client_name in group.clients: + client_box = Gtk.Box() + client_box_context = client_box.get_style_context() + client_box_context.add_class("client-box") + + client_switch = Gtk.Switch() + client_switch.set_state(not self.parent.server.client(client_name).muted) + client_switch.connect( + "notify::active", + self.parent.on_mute_toggle, + {"type": "client", "client": client_name} + ) + + name = Gtk.Label(self.parent.server.client(client_name).friendly_name) + + client_box.pack_start(name, False, False, 1) + client_box.pack_end(client_switch, False, False, 1) + + client_container.pack_start(client_box, False, False, 0) + + self.pack_start(client_container, False, False, 1) + + def build_separator(self): + # SEPARATOR + separator = Gtk.Separator() + separator_context = separator.get_style_context() + separator_context.add_class("separator") + + self.pack_start(separator, False, False, 1) + + def on_stream_changed(self, source_dropdown): + self.parent.emit("stream_changed", source_dropdown) diff --git a/src/assets/default_bg.jpg b/src/assets/default_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7f888668ecaecff5d6058805932fd5ed04f4a26f GIT binary patch literal 131324 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 z z%{5Y%kwfbePBP=JFcr;O!qH_B*8|Mr92$pZrx~jXCIY%6rq$X}t(#sjePk?kICvQA9DIfdhLfpaa4NvqjLKWBV{I-? zMe}~4${mDSS-jOhvN8#!H)=1!^I5ikk3g~Ss@283D}{5n)?nPkV>UTLZ66J*6+cIk z69!*$`*WdT8MAJr-Cj#vduv+#7lJ5f`@5uduW(1j!D``qD%)p=HqaSbxwoJo{{Y1< z9an+(LvPpqs?hY+ol2gyI~m zTTvHDa-HJ)yHU~6kaUH-9g$m}ilp$T{{Y+UblyUA+w|q*s+<1acef`j{{S<06xw-e zM$&6zLU~-JuhHBS8pb_JJ63ECCkS(

ZbO1gmBuct-Prt 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