From 86518e0564175c682562521de34862875170c19b Mon Sep 17 00:00:00 2001
From: TheDarkBug <41623496+TheDarkBug@users.noreply.github.com>
Date: Mon, 18 Jan 2021 21:17:32 +0100
Subject: [PATCH 001/492] Initial commit
---
LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 674 insertions(+)
create mode 100644 LICENSE
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f288702
--- /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)
+
+ 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:
+
+ Copyright (C)
+ 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
+.
From 2b46da139c1d5faab764ecef661bcff64130198d Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Mon, 18 Jan 2021 21:19:20 +0100
Subject: [PATCH 002/492] First commit.
---
Makefile | 35 ++++++++++++++++
README.md | 34 ++++++++++++++++
main.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 187 insertions(+)
create mode 100644 Makefile
create mode 100644 README.md
create mode 100644 main.c
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a75371a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,35 @@
+name = lightfetch
+files = main.c
+install_dir = /usr/bin/
+debug:
+ @echo Building debug...
+ gcc -Wall -Wextra -o $(name) $(files)
+ @echo Build completed! Running...
+ @echo
+ ./$(name)
+ @echo
+ @exit
+
+clean:
+ @echo Building debug...
+ gcc -Wall -Wextra -o $(name) $(files)
+ @echo Build completed! Running...
+ @echo
+ ./$(name)
+ @echo
+ rm -f $(name)
+ @echo Removed output file.
+ @exit
+
+install:
+ @echo Building release...
+ sudo gcc -o $(install_dir)$(name) $(files)
+ @echo Building and installation completed!
+ @exit
+
+uninstall:
+ @echo Uninstalling lightfetch...
+ sudo rm -f $(install_dir)$(name)
+ rm ../lightfetch
+ @echo Uninstall completed!
+ @exit
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4a4516e
--- /dev/null
+++ b/README.md
@@ -0,0 +1,34 @@
+# lightfetch
+
+A light system info tool for Linux.
+
+## Currently supported distros
+
+Alpine Linux, ArchBang, Arch Linux, ArcoLinux Artix Linux, CentOS, Debian, Devuan, elementary OS, Fedora, Gentoo Linux, gNewSense, GNU Guix, Hyperbola GNU/Linux-libre, instantOS, KISS Linux, Linux Lite, Linux Mint, Mageia, Manjaro, MX Linux, NixOS, openSUSE, Parabola GNU/Linux-libre, Pop!_OS, PureOS, Raspbian, Slackware, Ubuntu (and its flavours), Void Linux, and Voyager Live.
+
+## Building and installation
+
+To install you can type this commands in the terminal:
+
+```shell
+git clone https://github.com/TheDarkBug/lightfetch.git
+cd lightfetch
+make install
+```
+
+To uninstall:
+
+```shell
+cd lightfetch
+sudo make uninstall
+cd ..
+rm -rf lightfetch
+```
+
+## License
+
+This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/LICENSE).
+
+## Credits
+
+[ufetch](https://gitlab.com/jschx/ufetch/): ASCII Distro logos (with some edits by me)
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..26bd0fa
--- /dev/null
+++ b/main.c
@@ -0,0 +1,118 @@
+#include
+#include
+#include
+#include
+#include
+
+void pkgman();
+
+int main() {
+ // init variables and other useful things
+ char user[32], host[253];
+ struct utsname sys;
+
+ // get user and host names
+ snprintf(user, 32, "%s", getenv("USER"));
+ gethostname(host, 253);
+
+ if (uname(&sys) == -1) {
+ printf("Ah sh-t, an error\n");
+ }
+ char version_name[64];
+ FILE *fosr = fopen("/etc/os-release", "r");
+ fscanf(fosr,"%[^\n]", version_name);
+ fclose(fosr);
+ memmove(&version_name[0], &version_name[5], 64);
+ printf("%s@%s %s %s\n", user, host, version_name, sys.machine); //debug
+ pkgman();
+ return 0;
+}
+
+void pkgman() {
+ int apt, dnf, emerge, flatpak, nix, pacman, rpm, snap, xbps, yay;
+
+ FILE *fapt = popen("dpkg-query -f '${binary:Package}\n' -W 2>/dev/null | wc -l", "r");
+ FILE *fdnf = popen("dnf list installed 2>/dev/null | wc -l", "r");
+ FILE *femerge = popen("qlist -I 2>/dev/null | wc -l", "r");
+ FILE *fflatpak = popen("flatpak list 2>/dev/null | wc -l", "r");
+ FILE *fnix = popen("nix-store -q --requisites /run/current-system/sw 2>/dev/null | wc -l", "r");
+ FILE *fpacman = popen("pacman -Q 2>/dev/null | wc -l", "r");
+ FILE *frpm = popen("rpm -qa --last 2>/dev/null | wc -l", "r");
+ FILE *fsnap = popen("snap list 2>/dev/null | wc -l", "r");
+ FILE *fxbps = popen("xbps-query -l 2>/dev/null | wc -l", "r");
+ FILE *fyay = popen("yay -Q 2>/dev/null | wc -l", "r");
+ fscanf(fapt, "%d", &apt);
+ fscanf(fdnf, "%d", &dnf);
+ fscanf(femerge, "%d", &emerge);
+ fscanf(fflatpak, "%d", &flatpak);
+ fscanf(fnix, "%d", &nix);
+ fscanf(fpacman, "%d", &pacman);
+ fscanf(frpm, "%d", &rpm);
+ fscanf(fsnap, "%d", &snap);
+ fscanf(fxbps, "%d", &xbps);
+ fscanf(fyay, "%d", &yay);
+ fclose(fapt);
+ fclose(fdnf);
+ fclose(femerge);
+ fclose(fflatpak);
+ fclose(fnix);
+ fclose(fpacman);
+ fclose(frpm);
+ fclose(fsnap);
+ fclose(fxbps);
+ fclose(fyay);
+
+ int comma = 0;
+
+ if (apt > 0) {
+ if (comma == 1) printf(", ");
+ printf("apt: %d", apt);
+ comma = 1;
+ }
+ if (dnf > 0) {
+ if(comma == 1) printf(", ");
+ printf("dnf: %d", dnf);
+ comma = 1;
+ }
+ if (emerge > 0) {
+ if (comma == 1) printf(", ");
+ printf("emerge: %d", emerge);
+ comma = 1;
+ }
+ if (flatpak > 0) {
+ if (comma == 1) printf(", ");
+ printf("flatpak: %d", flatpak);
+ comma = 1;
+ }
+ if (nix > 0) {
+ if (comma == 1) printf(", ");
+ printf("nix: %d", nix);
+ comma = 1;
+ }
+ if (pacman > 0) {
+ if (comma == 1) printf(", ");
+ printf("pacman: %d", pacman);
+ comma = 1;
+ }
+ if (rpm > 0) {
+ if (comma == 1) printf(", ");
+ printf("rpm: %d", rpm);
+ comma = 1;
+ }
+ if (snap > 0) {
+ if (comma == 1) printf(", ");
+ printf("snap: %d", snap);
+ comma = 1;
+ }
+ if (xbps > 0) {
+ if (comma == 1) printf(", ");
+ printf("xbps: %d", xbps);
+ comma = 1;
+ }
+ if (yay > 0) {
+ if (comma == 1) printf(", ");
+ printf("yay: %d", yay);
+ comma = 1;
+ }
+ printf("\n");
+}
\ No newline at end of file
From 049d6c38951c3baf366a08b0711b42675e1c5ffa Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Mon, 18 Jan 2021 21:20:33 +0100
Subject: [PATCH 003/492] First commit.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4a4516e..db6a9e0 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A light system info tool for Linux.
## Currently supported distros
-Alpine Linux, ArchBang, Arch Linux, ArcoLinux Artix Linux, CentOS, Debian, Devuan, elementary OS, Fedora, Gentoo Linux, gNewSense, GNU Guix, Hyperbola GNU/Linux-libre, instantOS, KISS Linux, Linux Lite, Linux Mint, Mageia, Manjaro, MX Linux, NixOS, openSUSE, Parabola GNU/Linux-libre, Pop!_OS, PureOS, Raspbian, Slackware, Ubuntu (and its flavours), Void Linux, and Voyager Live.
+Arch Linux.
## Building and installation
From 85bfc1b7abe49545a7ee173a5ea02f9ea1494629 Mon Sep 17 00:00:00 2001
From: TheDarkBug <41623496+TheDarkBug@users.noreply.github.com>
Date: Mon, 18 Jan 2021 21:22:42 +0100
Subject: [PATCH 004/492] Update README.md
---
README.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/README.md b/README.md
index db6a9e0..103d4a6 100644
--- a/README.md
+++ b/README.md
@@ -16,13 +16,11 @@ cd lightfetch
make install
```
-To uninstall:
+To uninstall (this will also remove the repository folder):
```shell
cd lightfetch
sudo make uninstall
-cd ..
-rm -rf lightfetch
```
## License
From 0b7c4ebcebb7fbfaa1955c8acab1651edfcea9e3 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Mon, 18 Jan 2021 23:49:35 +0100
Subject: [PATCH 005/492] Added arch Linux logo.
---
Makefile | 2 +-
README.md | 6 ++----
main.c | 27 +++++++++++++++++++++++++--
test | Bin 0 -> 16600 bytes
test.c | 18 ++++++++++++++++++
5 files changed, 46 insertions(+), 7 deletions(-)
create mode 100755 test
create mode 100644 test.c
diff --git a/Makefile b/Makefile
index a75371a..63d1111 100644
--- a/Makefile
+++ b/Makefile
@@ -30,6 +30,6 @@ install:
uninstall:
@echo Uninstalling lightfetch...
sudo rm -f $(install_dir)$(name)
- rm ../lightfetch
+ rm -rf ../lightfetch
@echo Uninstall completed!
@exit
\ No newline at end of file
diff --git a/README.md b/README.md
index db6a9e0..e325f04 100644
--- a/README.md
+++ b/README.md
@@ -16,13 +16,11 @@ cd lightfetch
make install
```
-To uninstall:
+To uninstall (this will also remove the repository folder):
```shell
cd lightfetch
-sudo make uninstall
-cd ..
-rm -rf lightfetch
+make uninstall
```
## License
diff --git a/main.c b/main.c
index 26bd0fa..a967377 100644
--- a/main.c
+++ b/main.c
@@ -3,6 +3,17 @@
#include
#include
#include
+// COLORS
+#define NORMAL "\x1b[0m"
+#define BOLD "\x1b[1m"
+#define BLACK "\x1b[30m"
+#define RED "\x1b[31m"
+#define GREEN "\x1b[32m"
+#define YELLOW "\x1b[33m"
+#define BLUE "\x1b[34m"
+#define MAGENTA "\x1b[35m"
+#define CYAN "\x1b[36m"
+#define WHITE "\x1b[37m"
void pkgman();
@@ -23,8 +34,20 @@ int main() {
fscanf(fosr,"%[^\n]", version_name);
fclose(fosr);
memmove(&version_name[0], &version_name[5], 64);
- printf("%s@%s %s %s\n", user, host, version_name, sys.machine); //debug
- pkgman();
+
+ // Now we print the info and exit the program.
+ if (strcmp(version_name, "Arch Linux")) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS \n", BLUE, NORMAL, BOLD);
+ printf("%s / \\ %s%sKERNEL \n", BLUE, NORMAL, BOLD);
+ printf("%s /\\ \\ %s%s \n", BLUE, NORMAL, BOLD);
+ printf("%s / \\ %s%sOS \n", BLUE, NORMAL, BOLD);
+ printf("%s / __ \\ %s%sRAM \n", BLUE, NORMAL, BOLD);
+ printf("%s / __| |__-\\ %s%sSHELL \n", BLUE, NORMAL, BOLD);
+ printf("%s /_-'' ''-_\\ %s%sOS \n\n\n", BLUE, NORMAL, BOLD);
+ }
+
+
return 0;
}
diff --git a/test b/test
new file mode 100755
index 0000000000000000000000000000000000000000..3391b51595739fc8cf9078ebc9f8376819ee8b5d
GIT binary patch
literal 16600
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
literal 0
HcmV?d00001
diff --git a/test.c b/test.c
new file mode 100644
index 0000000..dba2cd7
--- /dev/null
+++ b/test.c
@@ -0,0 +1,18 @@
+#include
+#define NORMAL "\x1b[0m"
+#define BOLD "\x1b[1m"
+#define BLACK "\x1b[30m"
+#define RED "\x1b[31m"
+#define GREEN "\x1b[32m"
+#define YELLOW "\x1b[33m"
+#define BLUE "\x1b[34m"
+#define MAGENTA "\x1b[35m"
+#define CYAN "\x1b[36m"
+#define WHITE "\x1b[37m"
+
+//NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
+
+int main() {
+ printf("%sA%sA%sA%sA%sA%sA%sA%sA%sA%sA\n", NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE);
+ return 0;
+}
\ No newline at end of file
From 1baa5f0a6abd652f1e3b230d50092868925f4dff Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Mon, 18 Jan 2021 23:52:21 +0100
Subject: [PATCH 006/492] Updated README.md
---
test | Bin 16600 -> 0 bytes
test.c | 18 ------------------
2 files changed, 18 deletions(-)
delete mode 100755 test
delete mode 100644 test.c
diff --git a/test b/test
deleted file mode 100755
index 3391b51595739fc8cf9078ebc9f8376819ee8b5d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16600
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
diff --git a/test.c b/test.c
deleted file mode 100644
index dba2cd7..0000000
--- a/test.c
+++ /dev/null
@@ -1,18 +0,0 @@
-#include
-#define NORMAL "\x1b[0m"
-#define BOLD "\x1b[1m"
-#define BLACK "\x1b[30m"
-#define RED "\x1b[31m"
-#define GREEN "\x1b[32m"
-#define YELLOW "\x1b[33m"
-#define BLUE "\x1b[34m"
-#define MAGENTA "\x1b[35m"
-#define CYAN "\x1b[36m"
-#define WHITE "\x1b[37m"
-
-//NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
-
-int main() {
- printf("%sA%sA%sA%sA%sA%sA%sA%sA%sA%sA\n", NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE);
- return 0;
-}
\ No newline at end of file
From e75db660e89b4bad06878879e98a70a12393978d Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Tue, 19 Jan 2021 12:18:05 +0100
Subject: [PATCH 007/492] It gives some info, but is not fully functional...
---
main.c | 44 +++++++++++++++++++++++++++++++++-----------
1 file changed, 33 insertions(+), 11 deletions(-)
diff --git a/main.c b/main.c
index a967377..18858ab 100644
--- a/main.c
+++ b/main.c
@@ -29,22 +29,44 @@ int main() {
if (uname(&sys) == -1) {
printf("Ah sh-t, an error\n");
}
+
char version_name[64];
- FILE *fosr = fopen("/etc/os-release", "r");
- fscanf(fosr,"%[^\n]", version_name);
- fclose(fosr);
+ FILE *fos_rel = fopen("/etc/os-release", "r");
+ fscanf(fos_rel,"%[^\n]", version_name);
+ fclose(fos_rel);
memmove(&version_name[0], &version_name[5], 64);
+
+ char cpu_model[128];
+ system("lscpu | grep 'Model name:' > /tmp/lightfetch.cpu");
+ FILE *fcpu = fopen("/tmp/lightfetch.cpu", "r");
+ fscanf(fcpu, "%[^\n]", cpu_model);
+ fclose(fcpu);
+ memmove(&cpu_model[0], &cpu_model[33], 128);
+
+ int ram_max;
+ FILE *framm = popen("head -n1 /proc/meminfo | awk '{print $2}'", "r");
+ fscanf(framm, "%i", &ram_max);
+ fclose(framm);
+ ram_max = ram_max / 1024;
+
+ int ram_used;
+ FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
+ fscanf(framu, "%i", &ram_used);
+ fclose(framu);
+ ram_used = ram_used / 1024;
// Now we print the info and exit the program.
+ //NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
if (strcmp(version_name, "Arch Linux")) {
- printf("%s %s@%s\n", BOLD, user, host);
- printf("%s /\\ %s%sOS \n", BLUE, NORMAL, BOLD);
- printf("%s / \\ %s%sKERNEL \n", BLUE, NORMAL, BOLD);
- printf("%s /\\ \\ %s%s \n", BLUE, NORMAL, BOLD);
- printf("%s / \\ %s%sOS \n", BLUE, NORMAL, BOLD);
- printf("%s / __ \\ %s%sRAM \n", BLUE, NORMAL, BOLD);
- printf("%s / __| |__-\\ %s%sSHELL \n", BLUE, NORMAL, BOLD);
- printf("%s /_-'' ''-_\\ %s%sOS \n\n\n", BLUE, NORMAL, BOLD);
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
+ printf("%s / \\ %s%sKERNEL %s%s%s\n", BLUE, NORMAL, BOLD, NORMAL, sys.release, sys.machine);
+ printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
+ printf("%s / __ \\ %s%sSHELL%s\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / __| |__-\\ %s%sPKGS %s%s", BLUE, NORMAL, BOLD, NORMAL, NORMAL); pkgman();
+ printf("%s /_-'' ''-_\\ %s%sUPTIME%s\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf(" %s%s██%s██%s██%s██%s██%s██%s██%s██%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
From 29a80bf622f16886fd49e71962bf53cfe9eef5f9 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Tue, 19 Jan 2021 14:56:11 +0100
Subject: [PATCH 008/492] Info are given completely, also changed program name.
---
Makefile | 6 +++---
main.c | 37 ++++++++++++++++++++-----------------
2 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/Makefile b/Makefile
index 63d1111..5525ad6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-name = lightfetch
+name = litefetch
files = main.c
install_dir = /usr/bin/
debug:
@@ -28,8 +28,8 @@ install:
@exit
uninstall:
- @echo Uninstalling lightfetch...
+ @echo Uninstalling $(name)...
sudo rm -f $(install_dir)$(name)
- rm -rf ../lightfetch
+ rm -rf ../$(name)
@echo Uninstall completed!
@exit
\ No newline at end of file
diff --git a/main.c b/main.c
index 18858ab..902e1d4 100644
--- a/main.c
+++ b/main.c
@@ -3,6 +3,7 @@
#include
#include
#include
+#include
// COLORS
#define NORMAL "\x1b[0m"
#define BOLD "\x1b[1m"
@@ -19,26 +20,28 @@ void pkgman();
int main() {
// init variables and other useful things
- char user[32], host[253];
- struct utsname sys;
+ char user[32], host[253], shell[16];
+ struct utsname sys_var;
+ struct sysinfo sys;
// get user and host names
snprintf(user, 32, "%s", getenv("USER"));
gethostname(host, 253);
+ snprintf(shell, 16, "%s", getenv("SHELL"));
+ memmove(&shell[0], &shell[5], 16);
- if (uname(&sys) == -1) {
- printf("Ah sh-t, an error\n");
- }
+ if (uname(&sys_var) == -1) printf("Ah sh-t, an error\n");
+ if (sysinfo(&sys) == -1) printf("Ah sh-t, an error\n");
+
char version_name[64];
- FILE *fos_rel = fopen("/etc/os-release", "r");
+ FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
fscanf(fos_rel,"%[^\n]", version_name);
fclose(fos_rel);
- memmove(&version_name[0], &version_name[5], 64);
+ memmove(&version_name[0], &version_name[12], 64);
char cpu_model[128];
- system("lscpu | grep 'Model name:' > /tmp/lightfetch.cpu");
- FILE *fcpu = fopen("/tmp/lightfetch.cpu", "r");
+ FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
fscanf(fcpu, "%[^\n]", cpu_model);
fclose(fcpu);
memmove(&cpu_model[0], &cpu_model[33], 128);
@@ -48,7 +51,7 @@ int main() {
fscanf(framm, "%i", &ram_max);
fclose(framm);
ram_max = ram_max / 1024;
-
+
int ram_used;
FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
fscanf(framu, "%i", &ram_used);
@@ -60,12 +63,12 @@ int main() {
if (strcmp(version_name, "Arch Linux")) {
printf("%s %s@%s\n", BOLD, user, host);
printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
- printf("%s / \\ %s%sKERNEL %s%s%s\n", BLUE, NORMAL, BOLD, NORMAL, sys.release, sys.machine);
- printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
- printf("%s / __ \\ %s%sSHELL%s\n", BLUE, NORMAL, BOLD, NORMAL);
- printf("%s / __| |__-\\ %s%sPKGS %s%s", BLUE, NORMAL, BOLD, NORMAL, NORMAL); pkgman();
- printf("%s /_-'' ''-_\\ %s%sUPTIME%s\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / \\ %s%sKERNEL %s%s%s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
+ printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / __| |__-\\ %s%sPKGS %s%s", BLUE, NORMAL, BOLD, NORMAL, NORMAL); pkgman();
+ printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s██%s██%s██%s██%s██%s██%s██%s██%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
@@ -80,7 +83,7 @@ void pkgman() {
FILE *fdnf = popen("dnf list installed 2>/dev/null | wc -l", "r");
FILE *femerge = popen("qlist -I 2>/dev/null | wc -l", "r");
FILE *fflatpak = popen("flatpak list 2>/dev/null | wc -l", "r");
- FILE *fnix = popen("nix-store -q --requisites /run/current-system/sw 2>/dev/null | wc -l", "r");
+ FILE *fnix = popen("nix-store -q --requisites /run/current-sys_vartem/sw 2>/dev/null | wc -l", "r");
FILE *fpacman = popen("pacman -Q 2>/dev/null | wc -l", "r");
FILE *frpm = popen("rpm -qa --last 2>/dev/null | wc -l", "r");
FILE *fsnap = popen("snap list 2>/dev/null | wc -l", "r");
From b682128323062ecd30d3c79479d445580f17442e Mon Sep 17 00:00:00 2001
From: TheDarkBug <41623496+TheDarkBug@users.noreply.github.com>
Date: Tue, 19 Jan 2021 14:58:44 +0100
Subject: [PATCH 009/492] Update README.md
---
README.md | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 5d8a62b..cb5f00b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# lightfetch
+# LiteFetch
-A light system info tool for Linux.
+A lite system info tool for Linux.
## Currently supported distros
@@ -11,25 +11,21 @@ Arch Linux.
To install you can type this commands in the terminal:
```shell
-git clone https://github.com/TheDarkBug/lightfetch.git
-cd lightfetch
+git clone https://github.com/TheDarkBug/litefetch.git
+cd litefetch
make install
```
To uninstall (this will also remove the repository folder):
```shell
-cd lightfetch
-<<<<<<< HEAD
+cd litefetch
make uninstall
-=======
-sudo make uninstall
->>>>>>> 85bfc1b7abe49545a7ee173a5ea02f9ea1494629
```
## License
-This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/LICENSE).
+This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/litefetch/LICENSE).
## Credits
From e89ac12eef6fae0e56ec74589e1e50166023fd17 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Tue, 19 Jan 2021 15:46:09 +0100
Subject: [PATCH 010/492] Just improved optimization.
---
main.c | 75 +++++++++++++++++++++++++++-------------------------------
1 file changed, 35 insertions(+), 40 deletions(-)
diff --git a/main.c b/main.c
index 902e1d4..591610d 100644
--- a/main.c
+++ b/main.c
@@ -33,7 +33,6 @@ int main() {
if (uname(&sys_var) == -1) printf("Ah sh-t, an error\n");
if (sysinfo(&sys) == -1) printf("Ah sh-t, an error\n");
-
char version_name[64];
FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
fscanf(fos_rel,"%[^\n]", version_name);
@@ -46,11 +45,7 @@ int main() {
fclose(fcpu);
memmove(&cpu_model[0], &cpu_model[33], 128);
- int ram_max;
- FILE *framm = popen("head -n1 /proc/meminfo | awk '{print $2}'", "r");
- fscanf(framm, "%i", &ram_max);
- fclose(framm);
- ram_max = ram_max / 1024;
+ int ram_max = sys.totalram * sys.mem_unit / 1048576;
int ram_used;
FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
@@ -63,13 +58,13 @@ int main() {
if (strcmp(version_name, "Arch Linux")) {
printf("%s %s@%s\n", BOLD, user, host);
printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
- printf("%s / \\ %s%sKERNEL %s%s%s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
printf("%s / __| |__-\\ %s%sPKGS %s%s", BLUE, NORMAL, BOLD, NORMAL, NORMAL); pkgman();
printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
- printf(" %s%s██%s██%s██%s██%s██%s██%s██%s██%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
@@ -110,57 +105,57 @@ void pkgman() {
fclose(fxbps);
fclose(fyay);
- int comma = 0;
+ int pipe = 0;
if (apt > 0) {
- if (comma == 1) printf(", ");
- printf("apt: %d", apt);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("apt %d", apt);
+ pipe = 1;
}
if (dnf > 0) {
- if(comma == 1) printf(", ");
- printf("dnf: %d", dnf);
- comma = 1;
+ if(pipe == 1) printf(" | ");
+ printf("dnf %d", dnf);
+ pipe = 1;
}
if (emerge > 0) {
- if (comma == 1) printf(", ");
- printf("emerge: %d", emerge);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("emerge %d", emerge);
+ pipe = 1;
}
if (flatpak > 0) {
- if (comma == 1) printf(", ");
- printf("flatpak: %d", flatpak);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("flatpak %d", flatpak);
+ pipe = 1;
}
if (nix > 0) {
- if (comma == 1) printf(", ");
- printf("nix: %d", nix);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("nix %d", nix);
+ pipe = 1;
}
if (pacman > 0) {
- if (comma == 1) printf(", ");
- printf("pacman: %d", pacman);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("pacman %d", pacman);
+ pipe = 1;
}
if (rpm > 0) {
- if (comma == 1) printf(", ");
- printf("rpm: %d", rpm);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("rpm %d", rpm);
+ pipe = 1;
}
if (snap > 0) {
- if (comma == 1) printf(", ");
- printf("snap: %d", snap);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("snap %d", snap);
+ pipe = 1;
}
if (xbps > 0) {
- if (comma == 1) printf(", ");
- printf("xbps: %d", xbps);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("xbps %d", xbps);
+ pipe = 1;
}
if (yay > 0) {
- if (comma == 1) printf(", ");
- printf("yay: %d", yay);
- comma = 1;
+ if (pipe == 1) printf(" | ");
+ printf("yay %d", yay);
+ pipe = 1;
}
printf("\n");
-}
\ No newline at end of file
+}
From f12c1be5fefa1b9e596cf721e173de6f208522d1 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Tue, 19 Jan 2021 19:37:28 +0100
Subject: [PATCH 011/492] I am trying to add android support.
---
main.c | 49 ++++++++++++++++++++++++++++++++++---------------
1 file changed, 34 insertions(+), 15 deletions(-)
diff --git a/main.c b/main.c
index 591610d..ccfcb3e 100644
--- a/main.c
+++ b/main.c
@@ -2,8 +2,15 @@
#include
#include
#include
-#include
-#include
+#ifdef __linux__
+ #include
+ #include
+#elif __ANDROID__
+ #include
+ #include
+#elif _WIN32
+
+#endif
// COLORS
#define NORMAL "\x1b[0m"
#define BOLD "\x1b[1m"
@@ -20,25 +27,37 @@ void pkgman();
int main() {
// init variables and other useful things
- char user[32], host[253], shell[16];
- struct utsname sys_var;
- struct sysinfo sys;
+ char user[32], host[253], shell[64], version_name[64];
// get user and host names
- snprintf(user, 32, "%s", getenv("USER"));
- gethostname(host, 253);
- snprintf(shell, 16, "%s", getenv("SHELL"));
- memmove(&shell[0], &shell[5], 16);
+ #ifdef __linux__
+ struct utsname sys_var;
+ struct sysinfo sys;
+
+ snprintf(user, 32, "%s", getenv("USER"));
+ gethostname(host, 253);
+ snprintf(shell, 16, "%s", getenv("SHELL"));
+ memmove(&shell[0], &shell[5], 16);
+
+ FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
+ fscanf(fos_rel,"%[^\n]", version_name);
+ fclose(fos_rel);
+ memmove(&version_name[0], &version_name[12], 64);
+ #elif __ANDROID__
+ FILE *fwhoami = popen("whoami", "r");
+ fscanf(fwhoami,"%[^\n]", user);
+ fclose(fwhoami);
+
+ FILE *fos_rel = popen("getprop ro.system.build.version.release", "r");
+ fscanf(fos_rel,"%[^\n]", version_name);
+ fclose(fos_rel);
+ snprintf(shell, 16, "%s", getenv("SHELL"));
+ memmove(&shell[0], &shell[36], 64);
+ #endif
if (uname(&sys_var) == -1) printf("Ah sh-t, an error\n");
if (sysinfo(&sys) == -1) printf("Ah sh-t, an error\n");
- char version_name[64];
- FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
- fscanf(fos_rel,"%[^\n]", version_name);
- fclose(fos_rel);
- memmove(&version_name[0], &version_name[12], 64);
-
char cpu_model[128];
FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
fscanf(fcpu, "%[^\n]", cpu_model);
From b10a854d9b8fbedca0499ffcc9da35a7fa78d477 Mon Sep 17 00:00:00 2001
From: Adriano Oliviero
Date: Thu, 25 Feb 2021 21:47:00 +0100
Subject: [PATCH 012/492] Changed pkgman(), optimized overall performance.
---
Makefile | 40 ++--------
main.c | 227 +++++++++++++++++++------------------------------------
2 files changed, 85 insertions(+), 182 deletions(-)
diff --git a/Makefile b/Makefile
index 5525ad6..14e1cab 100644
--- a/Makefile
+++ b/Makefile
@@ -1,35 +1,11 @@
-name = litefetch
-files = main.c
-install_dir = /usr/bin/
-debug:
- @echo Building debug...
- gcc -Wall -Wextra -o $(name) $(files)
- @echo Build completed! Running...
- @echo
- ./$(name)
- @echo
- @exit
+NAME = litefetch
+FILES = main.c
+FLAGS = -O3 -Wall -Wextra
+INSTALL_DIR = /usr/bin/
+all: build install
-clean:
- @echo Building debug...
- gcc -Wall -Wextra -o $(name) $(files)
- @echo Build completed! Running...
- @echo
- ./$(name)
- @echo
- rm -f $(name)
- @echo Removed output file.
- @exit
+build: main.c
+ gcc $(FLAGS) -o $(NAME) $(FILES)
install:
- @echo Building release...
- sudo gcc -o $(install_dir)$(name) $(files)
- @echo Building and installation completed!
- @exit
-
-uninstall:
- @echo Uninstalling $(name)...
- sudo rm -f $(install_dir)$(name)
- rm -rf ../$(name)
- @echo Uninstall completed!
- @exit
\ No newline at end of file
+ sudo cp $(NAME) $(INSTALL_DIR)$(NAME)
\ No newline at end of file
diff --git a/main.c b/main.c
index ccfcb3e..66f5291 100644
--- a/main.c
+++ b/main.c
@@ -2,15 +2,8 @@
#include
#include
#include
-#ifdef __linux__
- #include
- #include
-#elif __ANDROID__
- #include
- #include
-#elif _WIN32
-
-#endif
+#include
+#include
// COLORS
#define NORMAL "\x1b[0m"
#define BOLD "\x1b[1m"
@@ -23,158 +16,92 @@
#define CYAN "\x1b[36m"
#define WHITE "\x1b[37m"
-void pkgman();
+char user[32], host[253], shell[64], version_name[64];
+int pkgman();
int main() {
- // init variables and other useful things
- char user[32], host[253], shell[64], version_name[64];
- // get user and host names
- #ifdef __linux__
- struct utsname sys_var;
- struct sysinfo sys;
+ // get user name, host name and shell
+ struct utsname sys_var;
+ struct sysinfo sys;
- snprintf(user, 32, "%s", getenv("USER"));
- gethostname(host, 253);
- snprintf(shell, 16, "%s", getenv("SHELL"));
- memmove(&shell[0], &shell[5], 16);
+ snprintf(user, 32, "%s", getenv("USER"));
+ gethostname(host, 253);
+ snprintf(shell, 16, "%s", getenv("SHELL"));
+ memmove(&shell[0], &shell[5], 16);
- FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
- fscanf(fos_rel,"%[^\n]", version_name);
- fclose(fos_rel);
- memmove(&version_name[0], &version_name[12], 64);
- #elif __ANDROID__
- FILE *fwhoami = popen("whoami", "r");
- fscanf(fwhoami,"%[^\n]", user);
- fclose(fwhoami);
+ // get os version
+ FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
+ fscanf(fos_rel,"%[^\n]", version_name);
+ fclose(fos_rel);
+ memmove(&version_name[0], &version_name[12], 32);
- FILE *fos_rel = popen("getprop ro.system.build.version.release", "r");
- fscanf(fos_rel,"%[^\n]", version_name);
- fclose(fos_rel);
- snprintf(shell, 16, "%s", getenv("SHELL"));
- memmove(&shell[0], &shell[36], 64);
- #endif
-
- if (uname(&sys_var) == -1) printf("Ah sh-t, an error\n");
- if (sysinfo(&sys) == -1) printf("Ah sh-t, an error\n");
-
- char cpu_model[128];
- FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
- fscanf(fcpu, "%[^\n]", cpu_model);
- fclose(fcpu);
+ if (uname(&sys_var) == -1) printf("Ah sh*t, an error\n");
+ if (sysinfo(&sys) == -1) printf("Ah sh*t, an error\n");
+
+ // get cpu info
+ char cpu_model[256];
+ FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
+ fscanf(fcpu, "%[^\n]", cpu_model);
+ fclose(fcpu);
memmove(&cpu_model[0], &cpu_model[33], 128);
- int ram_max = sys.totalram * sys.mem_unit / 1048576;
-
- int ram_used;
- FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
- fscanf(framu, "%i", &ram_used);
- fclose(framu);
- ram_used = ram_used / 1024;
-
- // Now we print the info and exit the program.
- //NORMAL, BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE
- if (strcmp(version_name, "Arch Linux")) {
- printf("%s %s@%s\n", BOLD, user, host);
- printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
- printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
- printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
- printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
- printf("%s / __| |__-\\ %s%sPKGS %s%s", BLUE, NORMAL, BOLD, NORMAL, NORMAL); pkgman();
- printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
- printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
- }
-
-
- return 0;
+ // get ram info
+ int ram_max = sys.totalram * sys.mem_unit / 1048576;
+ int ram_used;
+ FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
+ fscanf(framu, "%i", &ram_used);
+ fclose(framu);
+ ram_used = ram_used / 1024;
+
+ // print collected info
+ if (strcmp(version_name, "Arch Linux")) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
+ printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgman());
+ printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
}
-void pkgman() {
- int apt, dnf, emerge, flatpak, nix, pacman, rpm, snap, xbps, yay;
+int pkgman() { // this is just a function that returns the total of installed packages
+ int apt, dnf, emerge, flatpak, nix, pacman, rpm, snap, xbps, total = 0;
- FILE *fapt = popen("dpkg-query -f '${binary:Package}\n' -W 2>/dev/null | wc -l", "r");
- FILE *fdnf = popen("dnf list installed 2>/dev/null | wc -l", "r");
- FILE *femerge = popen("qlist -I 2>/dev/null | wc -l", "r");
- FILE *fflatpak = popen("flatpak list 2>/dev/null | wc -l", "r");
- FILE *fnix = popen("nix-store -q --requisites /run/current-sys_vartem/sw 2>/dev/null | wc -l", "r");
- FILE *fpacman = popen("pacman -Q 2>/dev/null | wc -l", "r");
- FILE *frpm = popen("rpm -qa --last 2>/dev/null | wc -l", "r");
- FILE *fsnap = popen("snap list 2>/dev/null | wc -l", "r");
- FILE *fxbps = popen("xbps-query -l 2>/dev/null | wc -l", "r");
- FILE *fyay = popen("yay -Q 2>/dev/null | wc -l", "r");
- fscanf(fapt, "%d", &apt);
- fscanf(fdnf, "%d", &dnf);
- fscanf(femerge, "%d", &emerge);
- fscanf(fflatpak, "%d", &flatpak);
- fscanf(fnix, "%d", &nix);
- fscanf(fpacman, "%d", &pacman);
- fscanf(frpm, "%d", &rpm);
- fscanf(fsnap, "%d", &snap);
- fscanf(fxbps, "%d", &xbps);
- fscanf(fyay, "%d", &yay);
- fclose(fapt);
- fclose(fdnf);
- fclose(femerge);
- fclose(fflatpak);
- fclose(fnix);
- fclose(fpacman);
- fclose(frpm);
- fclose(fsnap);
- fclose(fxbps);
- fclose(fyay);
+ FILE *file[9];
+ file[0] = popen("dpkg-query -f '${binary:Package}\n' -W 2> /dev/null | wc -l", "r");
+ file[1] = popen("dnf list installed 2> /dev/null | wc -l", "r");
+ file[2] = popen("qlist -I 2> /dev/null | wc -l", "r");
+ file[3] = popen("flatpak list 2> /dev/null | wc -l", "r");
+ file[4] = popen("nix-store -q --requisites /run/current-sys_vartem/sw 2> /dev/null | wc -l", "r");
+ file[5] = popen("pacman -Qq 2> /dev/null | wc -l", "r");
+ file[6] = popen("rpm -qa --last 2> /dev/null | wc -l", "r");
+ file[7] = popen("snap list 2> /dev/null | wc -l", "r");
+ file[8] = popen("xbps-query -l 2> /dev/null | wc -l", "r");
- int pipe = 0;
+ fscanf(file[0], "%d", &apt);
+ fscanf(file[1], "%d", &dnf);
+ fscanf(file[2], "%d", &emerge);
+ fscanf(file[3], "%d", &flatpak);
+ fscanf(file[4], "%d", &nix);
+ fscanf(file[5], "%d", &pacman);
+ fscanf(file[6], "%d", &rpm);
+ fscanf(file[7], "%d", &snap);
+ fscanf(file[8], "%d", &xbps);
+ for (int i = 0; i < 9; i++) fclose(file[i]);
- if (apt > 0) {
- if (pipe == 1) printf(" | ");
- printf("apt %d", apt);
- pipe = 1;
- }
- if (dnf > 0) {
- if(pipe == 1) printf(" | ");
- printf("dnf %d", dnf);
- pipe = 1;
- }
- if (emerge > 0) {
- if (pipe == 1) printf(" | ");
- printf("emerge %d", emerge);
- pipe = 1;
- }
- if (flatpak > 0) {
- if (pipe == 1) printf(" | ");
- printf("flatpak %d", flatpak);
- pipe = 1;
- }
- if (nix > 0) {
- if (pipe == 1) printf(" | ");
- printf("nix %d", nix);
- pipe = 1;
- }
- if (pacman > 0) {
- if (pipe == 1) printf(" | ");
- printf("pacman %d", pacman);
- pipe = 1;
- }
- if (rpm > 0) {
- if (pipe == 1) printf(" | ");
- printf("rpm %d", rpm);
- pipe = 1;
- }
- if (snap > 0) {
- if (pipe == 1) printf(" | ");
- printf("snap %d", snap);
- pipe = 1;
- }
- if (xbps > 0) {
- if (pipe == 1) printf(" | ");
- printf("xbps %d", xbps);
- pipe = 1;
- }
- if (yay > 0) {
- if (pipe == 1) printf(" | ");
- printf("yay %d", yay);
- pipe = 1;
- }
- printf("\n");
+ if (apt > 0) total += apt;
+ if (dnf > 0) total += dnf;
+ if (emerge > 0) total += emerge;
+ if (flatpak > 0) total += flatpak;
+ if (nix > 0) total += nix;
+ if (pacman > 0) total += pacman;
+ if (rpm > 0) total += rpm;
+ if (snap > 0) total += snap;
+ if (xbps > 0) total += xbps;
+
+ return total;
}
From 0a69bfe3660db0b71c13fa1722bf0d80efe629a7 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Fri, 5 Mar 2021 10:45:11 +0100
Subject: [PATCH 013/492] Changed from 'litefetch' to uwufetch, for the memes
---
Makefile | 2 +-
README.md | 14 ++++++--------
main.c | 2 +-
owofetch | Bin 0 -> 16800 bytes
4 files changed, 8 insertions(+), 10 deletions(-)
create mode 100755 owofetch
diff --git a/Makefile b/Makefile
index 14e1cab..38e4ffd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-NAME = litefetch
+NAME = owofetch
FILES = main.c
FLAGS = -O3 -Wall -Wextra
INSTALL_DIR = /usr/bin/
diff --git a/README.md b/README.md
index cb5f00b..86018e6 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# LiteFetch
+# OwoFetch
-A lite system info tool for Linux.
+A meme system info tool for Linux, based on nyan/uwu trend on r/linuxmasterrace.
## Currently supported distros
@@ -11,15 +11,15 @@ Arch Linux.
To install you can type this commands in the terminal:
```shell
-git clone https://github.com/TheDarkBug/litefetch.git
-cd litefetch
+git clone https://github.com/TheDarkBug/owofetch.git
+cd owofetch
make install
```
To uninstall (this will also remove the repository folder):
```shell
-cd litefetch
+cd owofetch
make uninstall
```
@@ -27,6 +27,4 @@ make uninstall
This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/litefetch/LICENSE).
-## Credits
-
-[ufetch](https://gitlab.com/jschx/ufetch/): ASCII Distro logos (with some edits by me)
+#
diff --git a/main.c b/main.c
index 66f5291..a93692c 100644
--- a/main.c
+++ b/main.c
@@ -60,7 +60,7 @@ int main() {
printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / \\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
+ printf("%s / ~owo~\\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgman());
printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
diff --git a/owofetch b/owofetch
new file mode 100755
index 0000000000000000000000000000000000000000..798ddd868e4da3d6e7dd52e6270bfaa88bc87199
GIT binary patch
literal 16800
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
literal 0
HcmV?d00001
From bed6fd3310fc340a23e8529aa68bb6435b23ef64 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Fri, 5 Mar 2021 10:49:09 +0100
Subject: [PATCH 014/492] Updated README.md and makefile.
---
Makefile | 2 +-
README.md | 12 ++++++------
owofetch | Bin 16800 -> 0 bytes
3 files changed, 7 insertions(+), 7 deletions(-)
delete mode 100755 owofetch
diff --git a/Makefile b/Makefile
index 38e4ffd..b95c510 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-NAME = owofetch
+NAME = uwufetch
FILES = main.c
FLAGS = -O3 -Wall -Wextra
INSTALL_DIR = /usr/bin/
diff --git a/README.md b/README.md
index 86018e6..ed04640 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# OwoFetch
+# UwUFetch
-A meme system info tool for Linux, based on nyan/uwu trend on r/linuxmasterrace.
+A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
@@ -11,20 +11,20 @@ Arch Linux.
To install you can type this commands in the terminal:
```shell
-git clone https://github.com/TheDarkBug/owofetch.git
-cd owofetch
+git clone https://github.com/TheDarkBug/uwufetch.git
+cd uwufetch
make install
```
To uninstall (this will also remove the repository folder):
```shell
-cd owofetch
+cd uwufetch
make uninstall
```
## License
-This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/litefetch/LICENSE).
+This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/uwufetch/LICENSE).
#
diff --git a/owofetch b/owofetch
deleted file mode 100755
index 798ddd868e4da3d6e7dd52e6270bfaa88bc87199..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16800
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
From eec302b2296a4a8c2320701c82063af287d7f43e Mon Sep 17 00:00:00 2001
From: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Date: Fri, 5 Mar 2021 12:01:15 +0100
Subject: [PATCH 015/492] Fixed Install Instructions
make runs the target all, which builds it and then copies it, while currently you only get an error because the compiled file doesn't exist
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ed04640..febc8d9 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ To install you can type this commands in the terminal:
```shell
git clone https://github.com/TheDarkBug/uwufetch.git
cd uwufetch
-make install
+make
```
To uninstall (this will also remove the repository folder):
From 2435e0d6b635fa8449ef0bec9c7423a0c6529b49 Mon Sep 17 00:00:00 2001
From: Nereuxofficial <37740907+Nereuxofficial@users.noreply.github.com>
Date: Fri, 5 Mar 2021 12:03:09 +0100
Subject: [PATCH 016/492] Added the uninstall target to the makefile
---
Makefile | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index b95c510..53297e3 100644
--- a/Makefile
+++ b/Makefile
@@ -8,4 +8,7 @@ build: main.c
gcc $(FLAGS) -o $(NAME) $(FILES)
install:
- sudo cp $(NAME) $(INSTALL_DIR)$(NAME)
\ No newline at end of file
+ sudo cp $(NAME) $(INSTALL_DIR)$(NAME)
+
+uninstall:
+ sudo rm $(INSTALL_DIR)$(NAME)
From f546dfbd9118f441dbb7466892d6bf2ffb19bb64 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Fri, 5 Mar 2021 17:22:48 +0100
Subject: [PATCH 017/492] Now you can uwu on Myanjaro, fixed wrong ram usage
and changed version_name
---
Makefile | 6 ++-
README.md | 5 +--
main.c | 107 --------------------------------------------------
uwufetch.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 117 insertions(+), 113 deletions(-)
delete mode 100644 main.c
create mode 100644 uwufetch.c
diff --git a/Makefile b/Makefile
index 53297e3..6f4ea61 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,12 @@
NAME = uwufetch
-FILES = main.c
+FILES = uwufetch.c
FLAGS = -O3 -Wall -Wextra
INSTALL_DIR = /usr/bin/
all: build install
+ clear
+ uwufetch
-build: main.c
+build: uwufetch.c
gcc $(FLAGS) -o $(NAME) $(FILES)
install:
diff --git a/README.md b/README.md
index febc8d9..dcab3da 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
-Arch Linux.
+NyArch Linuwu, Myanjaro Linuwu
## Building and installation
@@ -24,7 +24,4 @@ make uninstall
```
## License
-
This program is provided under the [GPL-3.0 License](https://github.com/TheDarkBug/uwufetch/LICENSE).
-
-#
diff --git a/main.c b/main.c
deleted file mode 100644
index a93692c..0000000
--- a/main.c
+++ /dev/null
@@ -1,107 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-#include
-// COLORS
-#define NORMAL "\x1b[0m"
-#define BOLD "\x1b[1m"
-#define BLACK "\x1b[30m"
-#define RED "\x1b[31m"
-#define GREEN "\x1b[32m"
-#define YELLOW "\x1b[33m"
-#define BLUE "\x1b[34m"
-#define MAGENTA "\x1b[35m"
-#define CYAN "\x1b[36m"
-#define WHITE "\x1b[37m"
-
-char user[32], host[253], shell[64], version_name[64];
-int pkgman();
-
-int main() {
-
- // get user name, host name and shell
- struct utsname sys_var;
- struct sysinfo sys;
-
- snprintf(user, 32, "%s", getenv("USER"));
- gethostname(host, 253);
- snprintf(shell, 16, "%s", getenv("SHELL"));
- memmove(&shell[0], &shell[5], 16);
-
- // get os version
- FILE *fos_rel = popen("lsb_release -a | grep Description", "r");
- fscanf(fos_rel,"%[^\n]", version_name);
- fclose(fos_rel);
- memmove(&version_name[0], &version_name[12], 32);
-
- if (uname(&sys_var) == -1) printf("Ah sh*t, an error\n");
- if (sysinfo(&sys) == -1) printf("Ah sh*t, an error\n");
-
- // get cpu info
- char cpu_model[256];
- FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
- fscanf(fcpu, "%[^\n]", cpu_model);
- fclose(fcpu);
- memmove(&cpu_model[0], &cpu_model[33], 128);
-
- // get ram info
- int ram_max = sys.totalram * sys.mem_unit / 1048576;
- int ram_used;
- FILE *framu = popen("grep -i MemAvailable /proc/meminfo | awk '{print $2}' ", "r");
- fscanf(framu, "%i", &ram_used);
- fclose(framu);
- ram_used = ram_used / 1024;
-
- // print collected info
- if (strcmp(version_name, "Arch Linux")) {
- printf("%s %s@%s\n", BOLD, user, host);
- printf("%s /\\ %s%sOS %s%s\n", BLUE, NORMAL, BOLD, NORMAL, version_name);
- printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
- printf("%s /\\ \\ %s%sCPU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / ~owo~\\ %s%sRAM %s%iM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, ram_used, ram_max);
- printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
- printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgman());
- printf("%s /_-'' ''-_\\ %s%sUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
- printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
- }
-}
-
-int pkgman() { // this is just a function that returns the total of installed packages
- int apt, dnf, emerge, flatpak, nix, pacman, rpm, snap, xbps, total = 0;
-
- FILE *file[9];
- file[0] = popen("dpkg-query -f '${binary:Package}\n' -W 2> /dev/null | wc -l", "r");
- file[1] = popen("dnf list installed 2> /dev/null | wc -l", "r");
- file[2] = popen("qlist -I 2> /dev/null | wc -l", "r");
- file[3] = popen("flatpak list 2> /dev/null | wc -l", "r");
- file[4] = popen("nix-store -q --requisites /run/current-sys_vartem/sw 2> /dev/null | wc -l", "r");
- file[5] = popen("pacman -Qq 2> /dev/null | wc -l", "r");
- file[6] = popen("rpm -qa --last 2> /dev/null | wc -l", "r");
- file[7] = popen("snap list 2> /dev/null | wc -l", "r");
- file[8] = popen("xbps-query -l 2> /dev/null | wc -l", "r");
-
- fscanf(file[0], "%d", &apt);
- fscanf(file[1], "%d", &dnf);
- fscanf(file[2], "%d", &emerge);
- fscanf(file[3], "%d", &flatpak);
- fscanf(file[4], "%d", &nix);
- fscanf(file[5], "%d", &pacman);
- fscanf(file[6], "%d", &rpm);
- fscanf(file[7], "%d", &snap);
- fscanf(file[8], "%d", &xbps);
- for (int i = 0; i < 9; i++) fclose(file[i]);
-
- if (apt > 0) total += apt;
- if (dnf > 0) total += dnf;
- if (emerge > 0) total += emerge;
- if (flatpak > 0) total += flatpak;
- if (nix > 0) total += nix;
- if (pacman > 0) total += pacman;
- if (rpm > 0) total += rpm;
- if (snap > 0) total += snap;
- if (xbps > 0) total += xbps;
-
- return total;
-}
diff --git a/uwufetch.c b/uwufetch.c
new file mode 100644
index 0000000..d997a2d
--- /dev/null
+++ b/uwufetch.c
@@ -0,0 +1,112 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+// COLORS
+#define NORMAL "\x1b[0m"
+#define BOLD "\x1b[1m"
+#define BLACK "\x1b[30m"
+#define RED "\x1b[31m"
+#define GREEN "\x1b[32m"
+#define YELLOW "\x1b[33m"
+#define BLUE "\x1b[34m"
+#define MAGENTA "\x1b[35m"
+#define CYAN "\x1b[36m"
+#define WHITE "\x1b[37m"
+
+char user[32], host[253], shell[64], version_name[64];
+int pkgman();
+
+int main() {
+
+ struct rusage r_usage;
+ struct utsname sys_var;
+ struct sysinfo sys;
+ // get user name, host name and shell
+ snprintf(user, 32, "%s", getenv("USER"));
+ gethostname(host, 253);
+ snprintf(shell, 16, "%s", getenv("SHELL"));
+ memmove(&shell[0], &shell[5], 16);
+
+ // get os version
+ FILE *fos_rel = popen("cut -d '=' -f2 <<< $(cat /etc/lsb-release | grep ID)", "r");
+ fscanf(fos_rel,"%[^\n]", version_name);
+ fclose(fos_rel);
+
+ if (uname(&sys_var) == -1) printf("Ah sh*t, an error\n");
+ if (sysinfo(&sys) == -1) printf("Ah sh*t, an error\n");
+
+ // get cpu info
+ char cpu_model[256];
+ FILE *fcpu = popen("lscpu | grep 'Model name:'", "r");
+ fscanf(fcpu, "%[^\n]", cpu_model);
+ fclose(fcpu);
+ memmove(&cpu_model[0], &cpu_model[33], 128);
+
+ // get ram info
+ int ram_max = sys.totalram * sys.mem_unit / 1048576;
+ getrusage(RUSAGE_SELF,&r_usage);
+
+ int pkgs = pkgman();
+ // print collected info
+ if (strcmp(version_name, "Arch") == 0) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOWOS %sNyArch Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /\\ \\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / > w <\\ %s%sRAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s /_-'' ''-_\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+ else if (strcmp(version_name, "ManjaroLinux") == 0) {
+ printf("%s \u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0 %s@%s\n", BOLD, user, host);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sOWOS %sMyanjaro Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m%s\e[0;42m \e[0m \e[0;42m \e[0m %s%sKERNEL %s%s %s\n", BLUE, BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sRAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+}
+
+int pkgman() { // this is just a function that returns the total of installed packages
+ int apt, dnf, emerge, flatpak, nix, pacman, rpm, xbps, total = 0;
+
+ FILE *file[8];
+ file[0] = popen("dpkg-query -f '${binary:Package}\n' -W 2> /dev/null | wc -l", "r");
+ file[1] = popen("dnf list installed 2> /dev/null | wc -l", "r");
+ file[2] = popen("qlist -I 2> /dev/null | wc -l", "r");
+ file[3] = popen("flatpak list 2> /dev/null | wc -l", "r");
+ file[4] = popen("nix-store -q --requisites /run/current-sys_vartem/sw 2> /dev/null | wc -l", "r");
+ file[5] = popen("pacman -Qq 2> /dev/null | wc -l", "r");
+ file[6] = popen("rpm -qa --last 2> /dev/null | wc -l", "r");
+ file[7] = popen("xbps-query -l 2> /dev/null | wc -l", "r");
+
+ fscanf(file[0], "%d", &apt);
+ fscanf(file[1], "%d", &dnf);
+ fscanf(file[2], "%d", &emerge);
+ fscanf(file[3], "%d", &flatpak);
+ fscanf(file[4], "%d", &nix);
+ fscanf(file[5], "%d", &pacman);
+ fscanf(file[6], "%d", &rpm);
+ fscanf(file[7], "%d", &xbps);
+ for (int i = 0; i < 8; i++) fclose(file[i]);
+
+ if (apt > 0) total += apt;
+ if (dnf > 0) total += dnf;
+ if (emerge > 0) total += emerge;
+ if (flatpak > 0) total += flatpak;
+ if (nix > 0) total += nix;
+ if (pacman > 0) total += pacman;
+ if (rpm > 0) total += rpm;
+ if (xbps > 0) total += xbps;
+
+ return total;
+}
From 931ad12ea94949275a3456e7bbd8b7175eec4fb6 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Fri, 5 Mar 2021 17:28:14 +0100
Subject: [PATCH 018/492] Removed some debug stuff in the makefile
---
Makefile | 2 --
1 file changed, 2 deletions(-)
diff --git a/Makefile b/Makefile
index 6f4ea61..b900ac2 100644
--- a/Makefile
+++ b/Makefile
@@ -3,8 +3,6 @@ FILES = uwufetch.c
FLAGS = -O3 -Wall -Wextra
INSTALL_DIR = /usr/bin/
all: build install
- clear
- uwufetch
build: uwufetch.c
gcc $(FLAGS) -o $(NAME) $(FILES)
From 1b35df67e92c34415d3a8b0d8ba56d2899149e39 Mon Sep 17 00:00:00 2001
From: Joe Todd <57013968+Joe-Todd0@users.noreply.github.com>
Date: Fri, 5 Mar 2021 21:09:29 +0000
Subject: [PATCH 019/492] Change RAM to WAM
---
uwufetch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/uwufetch.c b/uwufetch.c
index d997a2d..5fe3efc 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -57,7 +57,7 @@ int main() {
printf("%s /\\ %s%sOWOS %sNyArch Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
printf("%s /\\ \\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / > w <\\ %s%sRAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / > w <\\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
printf("%s /_-'' ''-_\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
From 4dbd4f94fbbc708eb2a4034a1b934fef3d03520d Mon Sep 17 00:00:00 2001
From: Joe Todd <57013968+Joe-Todd0@users.noreply.github.com>
Date: Fri, 5 Mar 2021 21:13:48 +0000
Subject: [PATCH 020/492] Update uwufetch.c
---
uwufetch.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/uwufetch.c b/uwufetch.c
index 5fe3efc..1474d36 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -68,7 +68,7 @@ int main() {
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sOWOS %sMyanjaro Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m%s\e[0;42m \e[0m \e[0;42m \e[0m %s%sKERNEL %s%s %s\n", BLUE, BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sRAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
From 57e3c264afb97f8118444c0cf70b418ecc2f718d Mon Sep 17 00:00:00 2001
From: zcake
Date: Sat, 6 Mar 2021 10:38:53 +0800
Subject: [PATCH 021/492] add nyartix support
---
uwufetch.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/uwufetch.c b/uwufetch.c
index 1474d36..f4a0aa2 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -74,6 +74,30 @@ int main() {
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
+
+ else if ((strcmp(version_name, "Artix")==0)) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS %sMyArtix Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /`'.,\\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / > w <\\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / ,`\\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / ,.'`. \\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+}
+
+
+
+
+
+
+
+
+
+
+
+
}
int pkgman() { // this is just a function that returns the total of installed packages
From 2ab9b4571014f3abe3923112675cf17a981c1c07 Mon Sep 17 00:00:00 2001
From: zcake
Date: Sat, 6 Mar 2021 10:40:09 +0800
Subject: [PATCH 022/492] remove useless line
---
uwufetch.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/uwufetch.c b/uwufetch.c
index f4a0aa2..3fd4269 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -86,18 +86,6 @@ int main() {
printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
-
-
-
-
-
-
-
-
-
-
-
-
}
int pkgman() { // this is just a function that returns the total of installed packages
From b97e1dc982f9f4d531bf8ded343a58730f9faee9 Mon Sep 17 00:00:00 2001
From: zcake
Date: Sat, 6 Mar 2021 10:45:00 +0800
Subject: [PATCH 023/492] fix typo
---
uwufetch | Bin 0 -> 16912 bytes
uwufetch.c | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
create mode 100755 uwufetch
diff --git a/uwufetch b/uwufetch
new file mode 100755
index 0000000000000000000000000000000000000000..9fec9ced9c023ce0769f36ff4906bf396dbe8999
GIT binary patch
literal 16912
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 w <\\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
From ff5832ce8d23b94a6fb62a5e4c80ff19f4c0b2fd Mon Sep 17 00:00:00 2001
From: zcake
Date: Sat, 6 Mar 2021 10:45:59 +0800
Subject: [PATCH 024/492] update readme
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index dcab3da..ecfab7d 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
-NyArch Linuwu, Myanjaro Linuwu
+NyArch Linuwu, Myanjaro Linuwu,Nyartix Linuwu
## Building and installation
From c88bbbac079afecd7c7c4e0b70453f22fabdcfd4 Mon Sep 17 00:00:00 2001
From: zcake3000 <70055899+zcake3000@users.noreply.github.com>
Date: Sat, 6 Mar 2021 10:54:54 +0800
Subject: [PATCH 025/492] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index ecfab7d..07fd9b5 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
-NyArch Linuwu, Myanjaro Linuwu,Nyartix Linuwu
+NyArch Linuwu, Myanjaro Linuwu, Nyartix Linuwu
## Building and installation
From e193095b04eaba2713ccbbcbb6a924894136ea3a Mon Sep 17 00:00:00 2001
From: TheDarkBug <41623496+TheDarkBug@users.noreply.github.com>
Date: Sat, 6 Mar 2021 08:55:50 +0100
Subject: [PATCH 026/492] Deleted compiled bin
---
uwufetch | Bin 16912 -> 0 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100755 uwufetch
diff --git a/uwufetch b/uwufetch
deleted file mode 100755
index 9fec9ced9c023ce0769f36ff4906bf396dbe8999..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16912
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
Date: Sat, 6 Mar 2021 08:58:48 +0100
Subject: [PATCH 027/492] Added .gitignore to prevent pushing binaries by
mistake
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
create mode 100644 .gitignore
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..00aa3ff
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+uwufetch
From 7fe4bc3fa9338cfe741f13f7f14fdcad21e78025 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Sat, 6 Mar 2021 14:35:10 +0100
Subject: [PATCH 028/492] Fedowa fetch is now available.
---
README.md | 2 +-
uwufetch.c | 42 ++++++++++++++++++++++++++----------------
2 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 07fd9b5..6c7f15e 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
-NyArch Linuwu, Myanjaro Linuwu, Nyartix Linuwu
+NyArch Linuwu, Nyartix Linuwu, Fedowa, Myanjaro.
## Building and installation
diff --git a/uwufetch.c b/uwufetch.c
index 7f1139b..7f058ff 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -32,7 +32,7 @@ int main() {
memmove(&shell[0], &shell[5], 16);
// get os version
- FILE *fos_rel = popen("cut -d '=' -f2 <<< $(cat /etc/lsb-release | grep ID)", "r");
+ FILE *fos_rel = popen("cut -d '=' -f2 <<< $(cat /etc/os-release | grep ID=) 2> /dev/null", "r");
fscanf(fos_rel,"%[^\n]", version_name);
fclose(fos_rel);
@@ -52,7 +52,7 @@ int main() {
int pkgs = pkgman();
// print collected info
- if (strcmp(version_name, "Arch") == 0) {
+ if (strcmp(version_name, "arch") == 0) {
printf("%s %s@%s\n", BOLD, user, host);
printf("%s /\\ %s%sOWOS %sNyArch Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
@@ -63,7 +63,29 @@ int main() {
printf("%s /_-'' ''-_\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
- else if (strcmp(version_name, "ManjaroLinux") == 0) {
+ else if (strcmp(version_name, "artix") == 0) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS %sNyArtix Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /`'.,\\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s /\u2022 w \u2022 \\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / ,`\\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / ,.'`. \\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+ else if (strcmp(version_name, "fedora") == 0) {
+ printf("%s _____%s%s %s@%s\n", BLUE, NORMAL, BOLD, user, host);
+ printf("%s / __)%s\\ %s%sOS %sFedowa\n", BLUE, CYAN, NORMAL, BOLD, NORMAL);
+ printf("%s > %s| / %s<%s\\ \\ %s%sKERNEL %s%s %s\n", WHITE, BLUE, WHITE, CYAN, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s __%s_| %sw%s|_%s_/ / %s%sCPUWU %s%s\n", CYAN, BLUE, WHITE, BLUE, CYAN, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / %s(_ _)%s_/ %s%sWAM %s%ldM/%iM\n", CYAN, BLUE, CYAN, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / / %s| | %s%sSHELL %s%s\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s \\ \\%s__/ | %s%sPKGS %s%s%d\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s \\%s(_____/ %s%sUWUPTIME %s%lid, %lih, %lim\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+ else if (strcmp(version_name, "manjaro") == 0) {
printf("%s \u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0 %s@%s\n", BOLD, user, host);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sOWOS %sMyanjaro Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m%s\e[0;42m \e[0m \e[0;42m \e[0m %s%sKERNEL %s%s %s\n", BLUE, BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
@@ -74,18 +96,6 @@ int main() {
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
-
- else if ((strcmp(version_name, "Artix")==0)) {
- printf("%s %s@%s\n", BOLD, user, host);
- printf("%s /\\ %s%sOS %sNyArtix Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
- printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
- printf("%s /`'.,\\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
- printf("%s / > w <\\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
- printf("%s / ,`\\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
- printf("%s / ,.'`. \\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
- printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
- printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
-}
}
int pkgman() { // this is just a function that returns the total of installed packages
@@ -121,4 +131,4 @@ int pkgman() { // this is just a function that returns the total of installed pa
if (xbps > 0) total += xbps;
return total;
-}
+}
\ No newline at end of file
From 2045dfd731c3ea1df7c432d3fb0924bd9b971ffa Mon Sep 17 00:00:00 2001
From: PK
Date: Sat, 6 Mar 2021 11:23:07 -0600
Subject: [PATCH 029/492] Support for Debian (Hack)
---
uwufetch.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/uwufetch.c b/uwufetch.c
index 7f058ff..a437004 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -74,6 +74,19 @@ int main() {
printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
+
+ else if (strcmp(version_name, "debian") == 0) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s _____ %s%sOWOS %sdebiNyan gnUwU/linuwu\n", RED, NORMAL, BOLD, NORMAL);
+ printf("%s / ___ \\ %s%sKERNEL %s%s %s\n", RED, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s | / OwO | %s%sCPUWU %s%s\n", RED, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s | \\____- %s%sWAM %s%ldM/%iM\n", RED, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s -_ %s%sSHELL %s%s\n", RED, NORMAL, BOLD, NORMAL, shell);
+ printf("%s --_ %s%sPKGS %s%s%d\n", RED, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s %s%sUWUPTIME %s%lid, %lih, %lim\n", RED, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+
else if (strcmp(version_name, "fedora") == 0) {
printf("%s _____%s%s %s@%s\n", BLUE, NORMAL, BOLD, user, host);
printf("%s / __)%s\\ %s%sOS %sFedowa\n", BLUE, CYAN, NORMAL, BOLD, NORMAL);
From 3707b7f5989dfb3914ce89d171f6e4d6f9198e9f Mon Sep 17 00:00:00 2001
From: Joe Todd <57013968+Joe-Todd0@users.noreply.github.com>
Date: Sat, 6 Mar 2021 19:43:06 +0000
Subject: [PATCH 030/492] add package manager name
Added the package manager name after the amount of packages installed.
---
uwufetch.c | 71 ++++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 53 insertions(+), 18 deletions(-)
diff --git a/uwufetch.c b/uwufetch.c
index 1474d36..47d6ba8 100644
--- a/uwufetch.c
+++ b/uwufetch.c
@@ -17,7 +17,7 @@
#define CYAN "\x1b[36m"
#define WHITE "\x1b[37m"
-char user[32], host[253], shell[64], version_name[64];
+char user[32], host[253], shell[64], version_name[64], pkgman_name[64];
int pkgman();
int main() {
@@ -32,7 +32,7 @@ int main() {
memmove(&shell[0], &shell[5], 16);
// get os version
- FILE *fos_rel = popen("cut -d '=' -f2 <<< $(cat /etc/lsb-release | grep ID)", "r");
+ FILE *fos_rel = popen("cut -d '=' -f2 <<< $(cat /etc/os-release | grep ID=) 2> /dev/null", "r");
fscanf(fos_rel,"%[^\n]", version_name);
fclose(fos_rel);
@@ -52,25 +52,60 @@ int main() {
int pkgs = pkgman();
// print collected info
- if (strcmp(version_name, "Arch") == 0) {
+ if (strcmp(version_name, "arch") == 0) {
printf("%s %s@%s\n", BOLD, user, host);
printf("%s /\\ %s%sOWOS %sNyArch Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
- printf("%s /\\ \\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s /\\ \\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
printf("%s / > w <\\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
printf("%s / __ \\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
- printf("%s / __| |__-\\ %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s / __| |__-\\ %s%sPKGS %s%s%d %s\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
printf("%s /_-'' ''-_\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
- else if (strcmp(version_name, "ManjaroLinux") == 0) {
+ else if (strcmp(version_name, "artix") == 0) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s /\\ %s%sOS %sNyArtix Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
+ printf("%s / \\ %s%sKERNEL %s%s %s\n", BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s /`'.,\\ %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s /\u2022 w \u2022 \\ %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / ,`\\ %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s / ,.'`. \\ %s%sPKGS %s%s%d %s\n",BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
+ printf("%s /.,'` `'.\\ %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+
+ else if (strcmp(version_name, "debian") == 0) {
+ printf("%s %s@%s\n", BOLD, user, host);
+ printf("%s _____ %s%sOWOS %sdebiNyan gnUwU/linuwu\n", RED, NORMAL, BOLD, NORMAL);
+ printf("%s / ___ \\ %s%sKERNEL %s%s %s\n", RED, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s | / OwO | %s%sCPUWU %s%s\n", RED, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s | \\____- %s%sWAM %s%ldM/%iM\n", RED, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s -_ %s%sSHELL %s%s\n", RED, NORMAL, BOLD, NORMAL, shell);
+ printf("%s --_ %s%sPKGS %s%s%d %s\n", RED, NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
+ printf("%s %s%sUWUPTIME %s%lid, %lih, %lim\n", RED, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+
+ else if (strcmp(version_name, "fedora") == 0) {
+ printf("%s _____%s%s %s@%s\n", BLUE, NORMAL, BOLD, user, host);
+ printf("%s / __)%s\\ %s%sOS %sFedowa\n", BLUE, CYAN, NORMAL, BOLD, NORMAL);
+ printf("%s > %s| / %s<%s\\ \\ %s%sKERNEL %s%s %s\n", WHITE, BLUE, WHITE, CYAN, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
+ printf("%s __%s_| %sw%s|_%s_/ / %s%sCPUWU %s%s\n", CYAN, BLUE, WHITE, BLUE, CYAN, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s / %s(_ _)%s_/ %s%sWAM %s%ldM/%iM\n", CYAN, BLUE, CYAN, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
+ printf("%s / / %s| | %s%sSHELL %s%s\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, shell);
+ printf("%s \\ \\%s__/ | %s%sPKGS %s%s%d %s\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
+ printf("%s \\%s(_____/ %s%sUWUPTIME %s%lid, %lih, %lim\n", CYAN, BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
+ printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
+ }
+ else if (strcmp(version_name, "manjaro") == 0) {
printf("%s \u25b3 \u25b3 \u25e0\u25e0\u25e0\u25e0 %s@%s\n", BOLD, user, host);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sOWOS %sMyanjaro Linuwu\n", BLUE, NORMAL, BOLD, NORMAL);
printf("%s \e[0;42m \e[0m\e[0;42m\e[1;30m > w < \e[0m%s\e[0;42m \e[0m \e[0;42m \e[0m %s%sKERNEL %s%s %s\n", BLUE, BLUE, NORMAL, BOLD, NORMAL, sys_var.release, sys_var.machine);
- printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m %s%sCPUWU %s%s\n", BLUE, NORMAL, BOLD, NORMAL, cpu_model);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sWAM %s%ldM/%iM\n", BLUE, NORMAL, BOLD, NORMAL, r_usage.ru_maxrss, ram_max);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sSHELL %s%s\n", BLUE, NORMAL, BOLD, NORMAL, shell);
- printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sPKGS %s%s%d\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs);
+ printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sPKGS %s%s%d %s\n", BLUE, NORMAL, BOLD, NORMAL, NORMAL, pkgs, pkgman_name);
printf("%s \e[0;42m \e[0m \e[0;42m \e[0m \e[0;42m \e[0m %s%sUWUPTIME %s%lid, %lih, %lim\n", BLUE, NORMAL, BOLD, NORMAL, sys.uptime/60/60/24, sys.uptime/60/60%24, sys.uptime/60%60);
printf(" %s%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\u2587\u2587%s\n", BOLD, BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, NORMAL);
}
@@ -98,15 +133,15 @@ int pkgman() { // this is just a function that returns the total of installed pa
fscanf(file[6], "%d", &rpm);
fscanf(file[7], "%d", &xbps);
for (int i = 0; i < 8; i++) fclose(file[i]);
+
+ if (apt > 0) { total += apt; snprintf(pkgman_name, 64, "(%s)", "apt"); }
+ if (dnf > 0) { total += dnf; snprintf(pkgman_name, 64, "(%s)", "dnf"); }
+ if (emerge > 0) { total += emerge; snprintf(pkgman_name, 64, "(%s)", "emerge"); }
+ if (flatpak > 0) { total += flatpak; snprintf(pkgman_name, 64, "(%s)", "flatpak"); }
+ if (nix > 0) { total += nix; snprintf(pkgman_name, 64, "(%s)", "nix"); }
+ if (pacman > 0) { total += pacman; snprintf(pkgman_name, 64, "(%s)", "pacman"); }
+ if (rpm > 0) { total += rpm; snprintf(pkgman_name, 64, "(%s)", "rpm"); }
+ if (xbps > 0) { total += xbps; snprintf(pkgman_name, 64, "(%s)", "xbps"); }
- if (apt > 0) total += apt;
- if (dnf > 0) total += dnf;
- if (emerge > 0) total += emerge;
- if (flatpak > 0) total += flatpak;
- if (nix > 0) total += nix;
- if (pacman > 0) total += pacman;
- if (rpm > 0) total += rpm;
- if (xbps > 0) total += xbps;
-
- return total;
+ return total;
}
From 782039c0ed9eb8b644f70460e59a8c82a2bbe3d2 Mon Sep 17 00:00:00 2001
From: TheDarkBug
Date: Sat, 6 Mar 2021 21:17:29 +0100
Subject: [PATCH 031/492] Split code in functions, changed printing system.
edited makefile to copy images in .config/uwufetch/
---
Makefile | 3 +
README.md | 6 +-
res/arch.png | Bin 0 -> 94938 bytes
uwufetch.c | 181 ++++++++++++++++++++++++++++++---------------------
4 files changed, 110 insertions(+), 80 deletions(-)
create mode 100644 res/arch.png
diff --git a/Makefile b/Makefile
index b900ac2..98400a1 100644
--- a/Makefile
+++ b/Makefile
@@ -9,6 +9,9 @@ build: uwufetch.c
install:
sudo cp $(NAME) $(INSTALL_DIR)$(NAME)
+ mkdir ~/.config/uwufetch/
+ cp res/* ~/.config/uwufetch/
uninstall:
sudo rm $(INSTALL_DIR)$(NAME)
+ rm -rf ~/.config/uwufetch
diff --git a/README.md b/README.md
index 6c7f15e..2d3a9c2 100644
--- a/README.md
+++ b/README.md
@@ -4,20 +4,18 @@ A meme system info tool for Linux, based on nyan/UwU trend on r/linuxmasterrace.
## Currently supported distros
-NyArch Linuwu, Nyartix Linuwu, Fedowa, Myanjaro.
+Nyarch Linuwu, Nyartix Linuwu, Debinyan, Fedowa, Myanjaro.
## Building and installation
To install you can type this commands in the terminal:
-
```shell
git clone https://github.com/TheDarkBug/uwufetch.git
cd uwufetch
make
```
-To uninstall (this will also remove the repository folder):
-
+To uninstall:
```shell
cd uwufetch
make uninstall
diff --git a/res/arch.png b/res/arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab540a89ba55c5109dc4b0c8b0aec9f2b845fbe5
GIT binary patch
literal 94938
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