diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..9e8860e --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,240 @@ +[200530] + +Added LICENSE (GPL v3) +Added GPL heading to important scripts +Tidied up directory for initial Git commit + -> removed Precompiled_Packages + -> removed compressed monocleOS package +Included xlunch source code in package +Added README.md + + +[200512] + +Added AppArmor support +Added DontZap to Xorg's ServerFlags +Added installation of specific drivers and microcode + -> support for nvidia, amdgpu/radeon, intel graphics + -> added early KMS. graphics drivers should be in initramfs +Improved modification of mkinitcpio.conf + -> allows kernel modules to be specified from installer +Removed close from "gtk-decoration-layout=menu:close" + -> Polybar handles window action buttons +Removed labels from Polybar by default + -> gives a cleaner, more modern look + -> ...aaaand removes issues for small screens + -> added option to add them back in Settings > Themes & Personalisation > Status Bar +Simplified logo +Added onboard and mousetweaks for on-screen keyboard support + -> added i3 shortcut to open onboard $mod+K + -> defaults are defined by gsettings on .firstBoot in monocleOS +Updated precompiled packages + -> grub-silent has patched missing unicode.pf2 so removed from package + + +[200227] + +Replaced compton with picom +Updated precompiled packages +Tidied up some code +Improved installer fatal error checking + + +[191028] + +Fixed major issue with sudo inside subshells where authentication was needed twice + -> echo -e "$password" | sudo -Sv specified in subshells to reauthenticate + <- using !tty_tickets would solve the problem, but create a massive security hole, in that any process run by the user would have sudo access during that time +Fixed major bug where polybar messed up commands which relied on STDIN + -> appended >/dev/null 2>&1 & +Fixed major issues with recovery functions + -> removed all systemd-inhibit's from function calls + -> these caused errors, presumably should be run as root ¯\_(ツ)_/¯ + -> fixed ownership permissions of /home/user on factory reset + -> fixed permissions of /var/recovery where files were set to 444, thus recovery user could not overwrite files in monocleOS update + -> set to 700, allows recovery rwx + -> added extract & reinstall monocleOS to factory reset function + -> added configuration needed for various configs when reinstalled, i.e. polybar.conf +Fixed zenity error dialogues where both error and success messages would show + -> this got awfully confusing + -> success dialogue is shown at end of subshell sequence. failed commands will exit with error, with || { zenity ...; exit 1 }, thus never reach success. :( + <- error function should be implemented soon, else things gonna get messy +Made 'Waiting for automatic updates to stop' a separate function +Improved verfication of package for monocleOS --recoveryUpdate + -> removed UUOC and added check for PKGBUILD + -> added progress bar during extracting to keep the user entertained +Fixed extraction of package + -> NTS: don't use relative paths in scripts... +Moved tips-service --daemon to .xinitrc from i3 config in order to make it die when x is killed +Reduced sleep time in polybar.sh +Increased width of recovery key entry dialogue +Improved UI of WiFi dialogues. Added progress bar for connecting +Added check for root in initMonocle +Fixed a bug in initMonocle where $USER was referenced - should be passed as $1 +Fixed bug in funcRecoveryKey where $HOST was referenced - this is called $HOSTNAME in bash +monocleOS-recovery --format didn't include hidden dirs/files, fixed by specifying two wildcards: * & .* +Added duration of install to installer.sh +Added plymouth & xzoom to Precompiled_Packages +Added gnome-keyring and mkinitpcio (may be replaced by dracut in future) to packages +Removed lock hint, as it cannot show over gnome-screensaver due to tty locking + + +[191005] + +Improved efficiency of tips-service + -> tips are defined in arrays (app tips use associative arrays), removing a billion if statements + -> makes adding new tips easier +Corrected wording in automatic-updates.timer, grubUpgrade.hook +Changed recovery key save message +Automatic updates fixed + -> unit is run as root + -> update is run by sudo -u monocle + -> allows systemd-inhibit to work. cannot find a reason as to why this didn't before +Switched location of lock and power off icon +Added new hostname on reset +Recovery + -> reinstall monocle now builds package in separate directory + -> added manual update of monocleOS package option + -> funcUpdateCopy requires recovery user password to copy to /var/recovery + -> trivial check is performed to verify that package is monocleos by grep + -> added hostname to recovery key document + -> closes all open applications gracefully when starting action +Polybar + -> added labels to window buttons + -> added closeAll function, using i3 [class=".*"] kill +Various bug fixes +Added linux & linux-firmware to packages.txt + -> for some stupid reason it was removed from base group + + +[190912] + +Removed unused files from tar: + -> camera_shutter.wav, cronUpdate, systab +Replaced grub-shusher with grub-silent + -> removed 10_linux + -> changed /etc/default/grub + -> doesn't seem to build grub-mkfont, thus unicode.pf2 has been added to pkg. installer.sh will copy if needed to /boot/grub/fonts +Included efibootmgr for efi without secure boot + -> changed label for secure boot to 'monocleOS Signed' +Polybar does not start on .firstBoot +Added support for installing precompiled packages on install + -> will install all packages in dir, shortening install time + -> obvs they'll still be compiled on auto updates +installer.sh: + -> tabs changed to spaces to prevent arch-chroot (bash) interpreting them for tab-completion + -> for loop inside own echo '' as local var didn't expand + -> created INSTALL.sh, redirects all output to a log file and takes installDisk as an argument +Factory reset: + -> using a hardcoded location for a tmp keyfile instead of echoing it to luksKeyChange + -> added appropriate sudoers + -> shreds all files in /home/user if overwrite=1 - does not unmount /home and reformat (this was a stupid idea) +Increase iconPadding to allow for larger fonts +Added x-systemd.device-timeout=0 to fstab for root + + +[190908] + +Added systemd-inhibit to recovery reinstall functions +Added pgrep update to recovery reinstall functions + -> sends SIGINT and waits for it to stop every 11s w/ zenity dialogue +Pointed all pacman hook execs to /usr/bin/update +Grub-shusher implemented to patch grub on update by pacman hook + -> added to installer.sh +Grub is reinstalled on update of package +Fixed efiPath logic in installer +Changed some wording for zenity dialogues +Environment vars from install are echoed to /etc/monocleOS.env and sourced instead of sed'ing files +Moved all reinstall and factory reset recovery options to a separate executable -> this can be referenced outside of /usr/bin/monocleOS in the future e.g. an RE +Added a factory reset option in settings + -> extra sudoers lines needed: user can execute factory reset as root with user password + -> arch-install-scripts required for genfstab - could replace with sed but that's a pain + -> this also allows monocleOS to be installed from itself with installer.sh, could be implemented in future but needs to be made graphical +Removed redundant else statements in monocleOS where || was also specified + -> this only caused issues +cp changelog to new root + + +[190902] + +Replaced cron with systemd timers +Increased width of shutdown, sleep, etc. timer dialogues +Used i3 reload in place of pkill x where possible +Added tips-service + -> daemon is started in i3 config + -> settings added in monocleOS, separate config file +Fixed Files desktop icon, exec'ing nautilus -> thunar +Plymouth + -> added plymouth 'Enter your password' dialogue + -> image overlays entry box, becomes transparent when bullets appear, returns when none. + -> lowered goodbye on shutdown +Fixed initMonocle not removing line from sudoers.d/monocleOS +Rejigged some code for launchers to check if entries file exists +Added default vars in case user config file does not exist +All user applications are launched from application-wrapper + -> allows various 'hooks' to be implemented easily + -> used for showing a hint per app, on launch + + +[190822] + +Changed lockscreen from i3lock-color to gnome-screensaver + -> locks at tty level and looks more like plymouth + -> configured on firstBoot +Changed from py3status to polybar + -> removed redundant packages for py3status + -> removed desktop launcher search button + <- lowered desktop launcher search button + <- made launcherSearch windowed to fit under polybar + -> added awesome and material icons fonts + -> added buttons to allow floating, and window layouts + -> made i3 click to focus for this reason + -> installer replaced BATTERY & BACKLIGHT_PLACEHOLDER in polybar.conf on install, if available +Removed launcherSearch from desktop and added launcherMenu to polybar + -> added to SettingsThemeColour by launcher.conf +Added dunst as notification daemon + -> started in xinitrc + -> added dunstrc to SettingsThemeColour +Changed screenshot logic - no button, only PrtScr does -i +Removed window decoration for gtk-3.0, replaced uniformly by polybar +Internet connectivity check moved to monocleOS, for use externally, from initMonocle + -> also not exec'd by root which is more secure +Added warning dialogue for advanced settings +Reduced magnification to 2x + -> changed notification to notify-send instead of zenity +Made gnome-calculator float by default +Improved wording of dialogues +Added pavucontrol as sound option +Re-added goodbye to plymouth with nicer coding, needs testing + + +RELEASE NOTES +--- +Install now takes longer, due to compilation of polybar + -> consider compiling this before and installing bin + + +[190813] + +Added functionality for themes +Fixed issues with GTK fonts +Fixed misc bugs +New plymouth theme +Added magnifier +Improved screenshot + + +[190620] + +Fixed bugs with recovery + + +[190618] + +Added functionality for search in launcher +Improved lockscreen to see text on light background + + +[190526] + +First mostly stable release :) diff --git a/INSTALL.sh b/INSTALL.sh new file mode 100755 index 0000000..8c54aca --- /dev/null +++ b/INSTALL.sh @@ -0,0 +1,11 @@ +#!/bin/bash +logFile="monocleOS_Install.log" +touch $logFile +if [ -z "$1" ]; then + echo "$@ - Usage: ./INSTALL.sh /path/to/disk" + exit 1 +else + installDisk="$1" +fi +sudo ./monocleOS_Installer.sh $installDisk > $logFile 2>&1 & +tail -f $logFile 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 +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8e3b48 --- /dev/null +++ b/README.md @@ -0,0 +1,256 @@ +
+ +![Logo](../assets/logo.png?raw=true) + +
+ +# monocleOS + +A simplistic, easy-to-use operating system, based on Arch Linux. + +## Contents + +1. [Dedication](#dedication) +2. [Features](#features) +3. [Design](#design) +4. [Installation](#installation) + 1. [TL;DR](#tldr) +5. [Technical Specifications](#technical-specifications) + 1. [Partitioning](#partitioning) + 2. [Users](#users) + 3. [Desktop](#desktop) + 4. [Bootloader](#bootloader) + 5. [Services](#services) + 6. [Recovery](#recovery) +6. [Other Quirks](#other-quirks) +7. [Limitations](#limitations) + 1. [Security Considerations](#security-considerations) + 2. [Known Bugs](#known-bugs) + 3. [Reporting Bugs](#reporting-bugs) +8. [Todo](#todo) +9. [License](#license) +10. [Credits](#credits) +11. [Donate](#donate) + +## Dedication + +For those people who want a free OS that works out of the box, does not track you, and contains zero adverts, popups, or annoying 'your PC needs to reboot' messages. monocleOS comes preinstalled with a few applications to let you do what you want, without getting in the way. + +This project was made specifically with the elderly in mind, but anyone is welcome to use it; monocleOS started as a hobby to help my grandparents become part of the ever-growing online world. However, as such - a hobby, expect a few hiccups. Please feel free to contribute any code or ideas. :smiley: + +## Features + +- Clean & minimal, theme-able UI +- Preinstalled applications, such as [Firefox](https://www.mozilla.org/en-US/firefox/new/), [LibreOffice](https://www.libreoffice.org/) and [VLC](https://www.videolan.org/vlc/) - no bloatware whatsoever +- Automatic, unobtrusive updates +- LUKS encryption by design +- Built entirely upon trusted open-source software + +## Design + +Here are some example screenshots of monocleOS in action: + +![Launcher](../assets/launcher.png?raw=true "xlunch launcher") ![Launcher menu](../assets/menu.png?raw=true "Launcher menu") +![Lock screen](../assets/gnome-screensaver.png?raw=true "Lock screen") ![Web browser](../assets/epiphany.png?raw=true "Epiphany web browser with detailed status bar") +![LibreOffice](../assets/libreoffice_with_onboard.png?raw=true "LibreOffice with onboard") ![i3](../assets/i3_example.png?raw=true "Example of i3's layout scheme") + +## Installation + +To install monocleOS, you will need an existing GNU/Linux OS with arch-install-scripts installed, in order to bootstrap the base Arch system, along with some fairly standard programs. The complete list is as follows: +- arch-install-scripts +- fdisk +- cryptsetup +- lvm2 +- dosfstools +- e2fsprogs +- pciutils +- util-linux +- tar +- and of course bash + +Conveniently, these package names are the same among most major GNU/Linux distributions. + +The latest Arch install image will suffice: + +You will need to be able to access the installer's files from somewhere within the installation media, e.g. a live CD. These could be added to the image, mounted from an external drive, etc. If installing on a VM, the best option would be to create an ISO of the files and mount it as a disc. Alternatively, you could clone this repository once booted into the installation media, with `git clone https://github.com/Zedeldi/monocleOS.git`. Further, unless you have a local copy of the required packages, you will need a internet connection. + +Currently, the installer expects the monocleOS package to be found at monocleOS.tar.gz. This is copied to /var/monocle/monocleOS/, extracted, then built & installed with makepkg. To meet this requirement, add the contents of the pkg directory to the specified tar.gz archive, in the location referenced by the installer script. Note: if you want to use an already built package, just remove the `tar -xzvf` line, and change `makepkg -si` to be `pacman -U /path/to/package`. + +Precompiled packages can be dumped in the specified folder (by default, 'Precompiled_Packages'), and they will be installed alongside everything else. This could serve as a method of making drop-in changes to the system during installation. It reduces install time, by eliminating the need for compilation of AUR packages. Note: if a more recent version of a package is found, pacman/yay will install it, *increasing* installation time. + +You can invoke the installer with `INSTALL.sh /dev/SDX`, or by changing the installDisk variable in monocleOS_Installer.sh and running that directly. All data on /dev/SDX will be very quickly wiped. Make sure you have checked and double checked the drive letter. + +If there are any changes you would like to make to the system, do it before rebooting. You will need to unlock the LUKS partition with the generated keyfile (by default found at /tmp/luksKey), and mount the required partitions. There is no way of getting unrestricted root access while booted into monocleOS, or at least that's the plan... If this is undesired, set a password for root and enable TTY switching (see [below](#other-quirks)), or modify sudoers to allow user elevated privileges. + +### TL;DR + +1. Boot Arch installation media +2. `git clone https://github.com/Zedeldi/monocleOS.git` +3. `cd monocleOS/pkg; tar -czvf ../monocleOS.tar.gz *` +4. `cd ../; ./INSTALL.sh /dev/sdX` + +## Technical Specifications + +monocleOS is, in essence, a preconfigured rice setup of Arch, with a one-click installer. It may not suit the average power user, but should be useful for those who want something that 'just works'™. + +### Partitioning + +monocleOS uses a LVM on LUKS approach for its partitioning layout. In the case of an MBR system, an MSDOS partition table is used; conversely, for UEFI, GPT is used. +The default filesystems and sizes are as follows - this can be configured in the installer: + +- ESP, in case of UEFI system - FAT32, 550MB +- Boot - ext4, 500MB +- LUKS + - LVM + - Swap - size of total RAM + - Root - ext4, 25G + - Home - ext4, the rest + +During installation, a random keyfile is generated for LUKS, and embedded into the unencrypted initramfs for the first boot. The user then creates a password, which replaces this keyfile. Note: the user's password, and the LUKS encryption key are the same; they are always handled together. + +### Users + +Users are configured to 'sandbox' various processes, such as the user's, updates and recovery operations. Each user has sudo access for specific purposes, as defined in sudoers.d. See the note above regarding the user's password. + +### Desktop + +The launcher, xlunch, can be found here: . Compiled binaries are provided within the monocleOS package. The source code for these can be found in `pkg/src/xlunch_data/src/`. The only differences between xlunch & xlunch_menu is the window title, in order to allow i3 to differentiate between them - making the menu launcher 'float'. + +Polybar is used for the status bar at the top of the screen. This provides a consistent UI, where an 'exit' button, and menu-based application launcher can always be found. + +i3-gaps is used as the window manager, as it provides an ideal, one-app-at-a-time interface, perfect for simple tasks. +- The 'float' button can be used to create a layered window environment. +- i3's layout can be changed from Polybar too. +- Basic i3 keybindings are used, to close apps, lock the X session, and start various applications. + +See [credits](#credits). + +### Bootloader + +Currently, monocleOS uses grub-silent, in order to supress various messages that GRUB produces. Secure boot is supported through preloader-signed for EFI systems. Note: grub-silent only supports x86_64 for EFI, though this is the most common anyways. + +### Services + +Enabled systemd services: +- NetworkManager +- ntpd +- avahi-daemon +- org.cups.cupsd +- automatic-update.timer +- linux-modules-cleanup +- clamav-freshclam +- clamav-daemon +- clamav-scan.timer +- apparmor +- preload + +From the user's .xinitrc and i3 configuration, the following are executed: +- picom +- gnome-screensaver +- xss-lock +- dunst +- tips-service +- i3 + - polybar + - xlunch + +### Recovery + +Currently, the options for recovery are somewhat limited, but sufficient. A recovery user is created, which the user can switch to, with the correct 'recovery key' - namely, the recovery user's password. Note: 'recovery' is only permitted to perform specific actions as root - see Users. This recovery key is also added as a key to the LUKS partition. + +Through elevated privileges, the user's password can then be changed, and further the LUKS partition password. For this reason, the generated recovery key must be kept safe. + +Additional options include a factory reset, and reinstallation of system packages. These can be done without the recovery key, although factory resetting requires the user's password instead. + +#### Chroot + +If the LUKS password is known, one can gain access to the install by booting up an external OS and opening the LUKS partition using `cryptsetup open /dev/sdXY`. Then, after mounting /dev/monocleOS/System, you can chroot into it, change a password, and perform system maintenance. + +## Other Quirks + +TTY switching with Ctrl+Alt+{1-6} is locked from Xorg, to prevent unwanted, unexpected TTY switching. This can be disabled by removing /etc/X11/xorg.conf.d/50-lockdown.conf. + +The root account is locked; you will need to create a password from an external boot device (see [chroot](#chroot)) or during [installation](#installation). + +## Limitations + +Arch is famously known for its bleeding-edge updates. While this does increase the roll-out of security patches, which is essential for older computer users, it also increases the risk of new bugs - hence a limitation. If someone is willing to create a Debian-based, etc. build of monocleOS, they are more than welcome to! The main processes that should need to changed is bootstrapping the base OS, and references to packages and package management. Admittedly, the predominant reason for the use of Arch was my familiarity with its setup. + +### Security Considerations + +Due to the automatic login setup (in order to avoid entering the LUKS password, then the user's password), if an attacker could kill the user's xorg process, an unlocked session would be handed to them. A complete solution to this would be a customised getty-like service, which handles the user's login session. DontZap is set in /etc/X11/xorg.conf.d/50-lockdown.conf to prevent killing Xorg with Ctrl+Alt+Bksp. + +Block encryption only protects data while it is locked, e.g. physical theft; while the machine is powered on, data is protected by access permissions and enforced by AppArmor. EncFS could be of use for the user's /home folders, such as Documents. Additional profiles for user applications should be written for AppArmor - this is on the [todo](#todo) list. + +Furthermore, during a factory reset, the LUKS master key is never actually changed... only keyslots to unlock the device. Ideally, the LUKS parititon should be completely reformatted, but due to the parititoning scheme used, this cannot happen while online, as the root partition resides here. If the recovery environment was a separate OS, e.g. installed on a separate partition, then a complete reinstall could occur, even from a chroot. As a workaround for this issue, users have the option to `shred` files within /home. Alternatively, the partitioning configuration could be changed to have /home on a separate LUKS device, though this would incur additional overheads. + +The user is allowed to execute any command as recovery, but recovery can only execute certain programs, such as `chpasswd`, `pacman`, and `true`, as root. However, this means that, with the recovery key, a malicious person could install *any* package or change *any* password as root through privilege escalation. This could be mitigated by restricting sudo permissions further to more limited actions, e.g. only allow the install of packages which are in a predefined list. On the other hand, this is to a no greater extent when compared with other operating systems; if an attacker has the user's (often with root/administrator rights) password, then they can change pretty much anything. Keep all passwords and recovery keys safe! + +### Known Bugs + +Occasionally, on the first boot, Plymouth does not display the splash screen correctly, but rather its fallback. I believe this is due to missing graphics modules from the initramfs, which are added on the next `mkinitcpio` in `initMonocle`, but I am not too sure. + +The layout of Polybar and xlunch does not work amazingly well on monitor resolutions less than or equal to 800x600, without manual configuration - such as reducing vertical icon spacing in Settings. This could be configured on first boot by checking the output of xrandr and configuring accordingly. + +### Reporting Bugs + +If you find more ~~bad coding~~ mishaps, please let me know, and I'll try to figure something out when I'm bored. Any suggestions are welcome! Attach as many relevant logs, screenshots, etc. as possible - Note: when installing, the `INSTALL.sh` script will output to `monocleOS_Install.log`. + +## Todo + +- Make a graphical installer, possibly using whiptail to minimise dependencies & size +- ~~Add support for detecting devices and installing specific drivers, e.g. `if $(lspci | grep -iq 'nvidia'); then pacman -S nvidia; fi`~~ + - ~~Add kernel modules, e.g. `MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)`, to mkinitcpio.conf for early KMS~~ +- Improve support for tablets and touchscreen devices, e.g. on-screen keyboard. See , & +- AppArmor profiles + +## License + +monocleOS is licensed under the [GNU GPL v3](https://www.gnu.org/licenses/gpl-3.0-standalone.html), ensuring the freedom to distribute, modify, and inspect its source code, with the conditions that all significant changes must be specified, the original be included/referenced, and all derivatives must also be licensed by the GPL v3, protecting the same freedoms of other users. Due to the nature of this project, install instructions must always be provided to prevent '[tivoization](http://en.wikipedia.org/wiki/Tivoization)'. + +I am not responsible for any damages, data loss or thermonuclear war caused by this software. (How did you even start thermonuclear war with this?!) + +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. + +[![GPL v3 Logo](../assets/GPLv3_Logo.png?raw=true)](https://www.gnu.org/licenses/gpl-3.0-standalone.html) + +Please note that packages used within monocleOS (not contained within this repository) may use their own licenses; you agree to those terms separately by installing the packages referenced at installation. Their sources or upstream URLs can be found on the [Arch official repos](https://www.archlinux.org/packages/) or within their respective PKGBUILD. See [below](#credits) for the most important contributors, and where to find them. + +## Credits + +This project could not exist without the following open-source applications (thank you!): + +Arch Linux = + +GNU = + +Linux = , + +GNOME Project = + +Launcher = + +WM = , , (i3-gaps fork: ) + +Status bar = , + +Notifications = , + +Boot animation = , + +Theme: +- GTK = +- Icons = +- Plymouth = + +Please see packages.txt or the 'packages' variable within the installer for a complete list. + +## Donate + +If you found monocleOS useful, and would like to make a donation, you're an awesome person. Please consider donating to the [above projects](#credits) first, as without them, monocleOS would not be possble. Donations to [Cancer Research UK](https://www.cancerresearchuk.org/) would be greatly treasured personally, as this charity holds a special place in my heart. Thank you! + +My bitcoin address is: bc1q5aygkqypxuw7cjg062tnh56sd0mxt0zd5md536 + +[![Bitcoin](../assets/bitcoin.png?raw=true)](bitcoin:bc1q5aygkqypxuw7cjg062tnh56sd0mxt0zd5md536) + +“We make a living by what we get. We make a life by what we give.” ― Winston Churchill diff --git a/monocleOS_Installer.sh b/monocleOS_Installer.sh new file mode 100755 index 0000000..5f9db40 --- /dev/null +++ b/monocleOS_Installer.sh @@ -0,0 +1,400 @@ +#!/bin/bash + +# monocleOS_Installer.sh +# Copyright (C) 2020 Zack Didcott + +# 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 . + +## Variables +# Installer +keyring=1 +# Partitioning +if [ -z "$1" ]; then + installDisk="/dev/sdX" ## THIS DRIVE WILL BE WIPED +else + installDisk="$1" +fi +[ -d /sys/firmware/efi ] && bootloader="efi" || bootloader="mbr" ## Must be 'efi' or 'mbr' +bootloaderArch="x86_64" ## For EFI. Normally this, but in some cases 64-bit CPUs have a 32-bit UEFI (i.e. ASUS T100TA) - note this may not be supported on grub-silent +secureBoot=0 ## For EFI. Currently uses PreLoader with MS Windows' Keys - GRUB must be enrolled on first boot when enabled +if [[ $bootloader == "efi" ]]; then diskType="gpt"; elif [[ $bootloader == "mbr" ]]; then diskType="msdos"; fi ## Only 'gpt' and 'msdos' are supported +diskSize="`fdisk -l | grep "Disk $installDisk" | awk '{print $3}'`" +diskSizeUnit="`fdisk -l | grep "Disk $installDisk" | awk '{print $4}' | cut -c 1`" ## Find Unit of fdisk. Assumes GiB or TiB +if [[ $diskSizeUnit == 'T' ]]; then diskSize=$(( $diskSize * 1024 )); fi ## Convert to GiB if TiB +# LUKS +luksMap="Root" +luksKey="/tmp/luksKey" +# FS +bootLabel="Boot" +rootLabel="System" +swapLabel="Swap" +homeLabel="Home" +# LVM +VG="monocleOS" +rootLV="System" +rootSize=25 +swapLV="Swap" +swapSize=`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` ## in kB +homeLV="Home" + +## Paths +rootPath="/dev/$VG/$rootLV" +swapPath="/dev/$VG/$swapLV" +homePath="/dev/$VG/$homeLV" +# Mounts +rootMount="/mnt" + +# Packages +pkgfile='packages.txt' +packages="aisleriot alsa-utils apparmor arc-gtk-theme arc-icon-theme arch-install-scripts avahi awesome-terminal-fonts base base-devel clamav clamtk cups dunst epiphany evolution feh ffmpegthumbnailer file-roller foomatic-db foomatic-db-engine foomatic-db-gutenprint-ppds foomatic-db-nonfree-ppds foomatic-db-ppds four-in-a-row gedit ghostscript git gnome-calculator gnome-calendar gnome-chess gnome-keyring gnome-mahjongg gnome-mines gnome-screensaver gnome-screenshot gnome-sudoku gnome-system-monitor gnome-terminal gnuchess gpicview grub-silent gsfonts gtk-engine-murrine gutenprint gvfs-mtp hunspell hunspell-en_GB i3-gaps iagno kernel-modules-hook libreoffice-fresh libsecret linux linux-firmware mkinitcpio networkmanager nm-connection-editor noto-fonts noto-fonts-cjk noto-fonts-emoji nss-mdns mousetweaks ntp onboard pavucontrol picom preload playerctl plymouth polybar pulseaudio pulseaudio-alsa quadrapassel reflector sudo system-config-printer thunar thunar-archive-plugin thunar-media-tags-plugin thunar-sendto-clamtk thunar-volman ttf-dejavu ttf-font-awesome ttf-liberation ttf-material-icons-git tumbler vlc wine winetricks xcursor-breeze xorg xorg-drivers xorg-xinit xss-lock xzoom yay zenity" +if [[ $bootloader == "efi" ]]; then packages="$packages efibootmgr"; fi +if [[ $secureBoot == 1 ]]; then packages="$packages preloader-signed"; fi +# Kernel & Drivers +kparams="" +kmodules="" +cpu=`lscpu` +if (echo $cpu | grep -iq 'amd'); then packages="$packages amd-ucode"; fi +if (echo $cpu | grep -iq 'intel'); then packages="$packages intel-ucode"; fi +gpu=`lspci | grep -i 'vga'` # Note: all xorg-drivers are installed explicitly anyway, I have just listed them here too +if (echo $gpu | grep -iq 'nvidia'); then + packages="$packages nvidia nvidia-utils lib32-nvidia-utils" + kparams="$kparams nvidia-drm.modeset=1" + kmodules="$kmodules nvidia nvidia_modeset nvidia_uvm nvidia_drm" + + # For nouveau, uncomment the following, and comment the above + #packages="$packages mesa lib32-mesa libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau xf86-video-nouveau" + #kmodules="$kmodules nouveau" +fi +if (echo $gpu | grep -iq 'amd') || (echo $gpu | grep -iqw 'ati'); then + packages="$packages mesa lib32-mesa libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau vulkan-radeon lib32-vulkan-radeon xf86-video-ati xf86-video-amdgpu" + kmodules="$kmodules amdgpu radeon" +fi +if (echo $gpu | grep -iq 'intel'); then + packages="$packages mesa lib32-mesa intel-media-driver libva-intel-driver vulkan-intel lib32-vulkan-intel xf86-video-intel" + kmodules="$kmodules i915" +fi +# Installation Files +pkgtar="monocleOS.tar.gz" +chnglog="CHANGELOG" +precompiled="Precompiled_Packages" +if [ -d "$precompiled" ]; then + installPrecompiled=1 +else + installPrecompiled=0 +fi + +# Configuration +installer="yay" +region="Europe" +city="London" +locale="en_GB.UTF-8" +vconsole="uk" +xkeymap="gb" +paperSize="a4" +hostname="monocleOS-$(cat /dev/urandom | tr -dc '0-9A-Z' | fold -w 4 | head -n 1)" +password="`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`" +issue="Welcome to monocleOS!" +battery=`ls -1 /sys/class/power_supply/ | grep -i 'BAT'` +backlight=`ls -1 /sys/class/backlight/ | head -n 1` + +echo "Installing monocleOS to $installDisk (`date +'%H:%M:%S'`)" +startTime=$SECONDS + +## Preliminary Checks +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" + exit 1 +fi +if [ -n "$installDisk" ]; then + if (( ( $(($swapSize / 1048576)) + $rootSize + 5) > $diskSize )); then + echo "Sum of partition sizes are greater than size of disk... aborting" + exit + else + rootSize=$rootSize'G' + swapSize=$swapSize'K' + fi +fi +if [[ $keyring == 1 ]]; then pacman -Sy --noconfirm archlinux-keyring; fi + +# Set Paths for Install, if installDisk is set +if [ -n "$installDisk" ]; then + if [[ $bootloader == "efi" ]]; then + efiPath=$installDisk"1" + bootPath=$installDisk"2" + luksPath=$installDisk"3" + elif [[ $bootloader == "mbr" ]]; then + bootPath=$installDisk"1" + luksPath=$installDisk"2" + else + echo "'bootloader' must be 'efi' or 'mbr'" + exit + fi +fi + +## Installation +# Partitioning +if [ -n "$installDisk" ]; then + ( + if [[ $diskType == "msdos" ]]; then + echo o # Create a new empty DOS partition table + fi + if [[ $diskType == "gpt" ]]; then + echo g + fi + if [[ $bootloader == "efi" ]]; then + echo n + echo + echo + echo +550M # To avoid confusion between MB & MiB and ensure not FAT16 + echo t # Change partition type + echo 1 # EFI System + fi + echo n # Add a new partition, Boot + if [[ $diskType == "msdos" ]]; then echo p; fi # Primary in case of msdos + echo # Partition number + echo # First sector (Accept default: 1) + echo +500M # Last Sector (500MiB) + echo n # Root + if [[ $diskType == "msdos" ]]; then echo p; fi + echo + echo + echo # Last Sector (End) + if [[ $bootloader == "mbr" ]]; then + echo a # Set bootable flag on boot partition as fallback + echo 1 + fi + echo w # Write changes + ) | fdisk $installDisk +fi + +# Formatting +if [ -n "$installDisk" ]; then + # Make Keys + dd if=/dev/urandom of=$luksKey bs=512 count=4 + #echo -n "$password" > $luksKey + # EFI, Boot, Root + if [[ $bootloader == "efi" ]]; then mkfs.fat -F32 $efiPath; fi + mkfs.ext4 -FL $bootLabel $bootPath + cryptsetup -q luksFormat $luksPath --key-file=$luksKey + luksUUID=`cryptsetup luksUUID $luksPath` + cryptsetup open $luksPath $luksMap --key-file=$luksKey; lvmPath="/dev/mapper/$luksMap" + pvcreate $lvmPath + vgcreate $VG $lvmPath + lvcreate -L $swapSize -n $swapLV $VG; swapPath="/dev/$VG/$swapLV" + lvcreate -L $rootSize -n $rootLV $VG; rootPath="/dev/$VG/$rootLV" + lvcreate -l +100%FREE -n $homeLV $VG; homePath="/dev/$VG/$homeLV" + mkfs.ext4 -FL $homeLabel $homePath + mkswap -L $swapLabel $swapPath + mkfs.ext4 -FL $rootLabel $rootPath + vgchange -a n $VG + cryptsetup close $luksMap +fi + +# Mount +cryptsetup open $luksPath $luksMap --key-file=$luksKey; lvmPath="/dev/mapper/$luksMap" +sleep 5 +mount $rootPath $rootMount; rootPath=$rootMount +mkdir $rootMount/boot; mount $bootPath $rootMount/boot; bootPath="$rootMount/boot" +if [[ $bootloader == "efi" ]]; then mkdir $bootPath/esp; mount $efiPath $bootPath/esp; efiPath="$bootPath/esp"; fi +mkdir $rootMount/home; mount $homePath $rootMount/home; homePath="$rootMount/home" +swapon $swapPath + +# Packages +pacstrap $rootPath base base-devel linux linux-firmware git + +# Configuration +genfstab -U $rootMount >> $rootMount/etc/fstab +rootUUID=$(findmnt $rootMount -no UUID) +sed -ie "/^\UUID=$rootUUID/ s/rw,relatime/rw,relatime,x-systemd.device-timeout=0/" $rootMount/etc/fstab ## Remove timeout for password +# Chroot +mkdir -p $rootMount/priv +cp $luksKey $rootMount/priv/defaultKey.bin +chmod -R 000 $rootMount/priv +mkdir -p $rootMount/var/monocle/monocleOS/ +cp $pkgtar $rootMount/var/monocle/monocleOS/ +cp $chnglog $rootMount/var/monocle/monocleOS/ +if [[ $installPrecompiled == 1 ]]; then cp -R $precompiled $rootMount/var/monocle/monocleOS/; fi +mkdir -p $rootMount/var/recovery/ +echo $packages > $pkgfile +cp $pkgfile $rootMount/var/recovery/ +cp $pkgtar $rootMount/var/recovery/ + +if [[ $bootloader == "efi" ]]; then efiPath="/boot/esp"; fi ## Set efiPath relative to chroot + +# As configuration is done by echoing to arch-chroot, tab indents are not good as bash will interpret them for tab-completion. This whole configuration section is hacky, and should really be executed by a script +echo "## Basic Configuration +ln -sf /usr/share/zoneinfo/$region/$city /etc/localtime +hwclock --systohc +sed -i '/"en_US.UTF-8 UTF-8"/s/^#//g' /etc/locale.gen; sed -i '/'$locale'/s/^#//g' /etc/locale.gen +locale-gen +echo "LANG=en_US.UTF-8" > /etc/locale.conf +echo "KEYMAP=$vconsole" > /etc/vconsole.conf +echo "$hostname" > /etc/hostname +echo "127.0.0.1 localhost" >> /etc/hosts +echo "::1 localhost" >> /etc/hosts +echo "127.0.1.1 $hostname.localdomain $hostname" >> /etc/hosts +echo "$issue" > /etc/issue +echo "" >> /etc/issue +echo "monocleOS UUID=$luksUUID /priv/defaultKey.bin luks" >> /etc/crypttab.initramfs +echo '[multilib] +Include = /etc/pacman.d/mirrorlist' >> /etc/pacman.conf +pacman -Sy +## Creating Users +useradd -rmd /var/monocle -c 'System User' monocle +chown -R monocle:monocle /var/monocle +useradd -rmd /var/recovery -c 'Recovery User' recovery +chown -R recovery:recovery /var/recovery +chmod -R 700 /var/recovery +useradd -m -c 'User' user +echo 'user:$password' | chpasswd +echo 'Defaults>recovery targetpw +monocle ALL=(root)NOPASSWD:/usr/bin/pacman +recovery ALL=(root)NOPASSWD:/usr/bin/chpasswd, /usr/bin/pacman, /usr/bin/cryptsetup luksKillSlot /dev/disk/by-uuid/$luksUUID 0, /usr/bin/cryptsetup luksAddKey /dev/disk/by-uuid/$luksUUID --key-slot 0, /usr/bin/true +user ALL=(recovery) ALL +user ALL=(recovery)NOPASSWD:/usr/bin/monocleOS-recovery --installBase, /usr/bin/monocleOS-recovery --installExtract, /usr/bin/monocleOS-recovery --installMonocle +user ALL=(root)NOPASSWD:/usr/bin/initMonocle +user ALL=(root)NOPASSWD:/usr/bin/monocleOS --themeColour user +user ALL=(root) /usr/bin/cryptsetup luksChangeKey /dev/disk/by-uuid/$luksUUID --key-slot 0, /usr/bin/cryptsetup luksKillSlot /dev/disk/by-uuid/$luksUUID 1, /usr/bin/cryptsetup luksAddKey /dev/disk/by-uuid/$luksUUID --key-slot 1, /usr/bin/cryptsetup luksChangeKey /dev/disk/by-uuid/$luksUUID --key-slot 0 /tmp/luksKey.tmp, /usr/bin/passwd recovery, /usr/bin/monocleOS-recovery --resetFormat 0, /usr/bin/monocleOS-recovery --resetFormat 1, /usr/bin/monocleOS-recovery --resetDefaults, /usr/bin/monocleOS-recovery --resetPassword, /usr/bin/monocleOS-recovery --resetPermissions, /usr/bin/true' > /etc/sudoers.d/monocleOS; chown root:root /etc/sudoers.d/monocleOS; chmod 0440 /etc/sudoers.d/monocleOS; visudo -cf /etc/sudoers.d/monocleOS || rm /etc/sudoers.d/monocleOS +passwd -l root +passwd -l monocle +passwd -l recovery +## Installing Packages +sudo -iu monocle +cd +git clone https://aur.archlinux.org/$installer.git +cd $installer +makepkg -si --noconfirm" | arch-chroot $rootPath +## For loop requires echo ''... +echo ' +sudo -iu monocle +if [[ '${installPrecompiled}' == 1 ]]; then + cd /var/monocle/monocleOS/'${precompiled}' + for package in *.pkg.tar.xz + do + '${installer}' -U --noconfirm $package + done +fi' | arch-chroot $rootPath +echo " +sudo -iu monocle +cd +$installer -S --needed --noconfirm $packages +cd monocleOS +tar -xzvf $pkgtar +makepkg -si --noconfirm" | arch-chroot $rootPath + +## Preserve environment variables from install +echo "luksUUID='$luksUUID' +rootUUID='$rootUUID' +installer='$installer' +bootloader='$bootloader' +bootloaderArch='$bootloaderArch' +efiPath='$efiPath' +secureBoot='$secureBoot' +VG='$VG' +homeLabel='$homeLabel' +homeLV='$homeLV' +kmodules='$kmodules'" > $rootMount/etc/monocleOS.env + +echo "## Configuring Packages +localectl set-x11-keymap $xkeymap +echo "$paperSize" > /etc/papersize +cp /etc/monocleOS/nsswitch.conf /etc/nsswitch.conf +plymouth-set-default-theme monocleOS +sed -i 's/BACKLIGHT_PLACEHOLDER/'$backlight'/g' /etc/monocleOS/polybar.conf.skel +sed -i 's/BATTERY_PLACEHOLDER/'$battery'/g' /etc/monocleOS/polybar.conf.skel +echo MODULES=\($kmodules\) | tee /etc/mkinitcpio.conf > /dev/null +echo FILES=\(/priv/defaultKey.bin\) | tee -a /etc/mkinitcpio.conf > /dev/null +echo HOOKS=\(base systemd sd-plymouth keyboard autodetect sd-vconsole modconf block sd-encrypt sd-lvm2 filesystems fsck shutdown\) | tee -a /etc/mkinitcpio.conf > /dev/null +if (echo $kmodules | grep -iq 'nvidia'); then mv /etc/pacman.d/hooks/nvidia.hook.disabled /etc/pacman.d/hooks/nvidia.hook; fi +mkinitcpio -P +sed -i 's/KPARAMS_PLACEHOLDER/'$kparams'/g' /etc/default/grub.monocleOS +cp /etc/default/grub.monocleOS /etc/default/grub +if [[ $bootloader == "efi" ]]; then + grub-install --target=$bootloaderArch-efi --efi-directory=$efiPath --bootloader-id=GRUB + if [[ $secureBoot == 1 ]]; then + cp /usr/share/preloader-signed/PreLoader.efi $efiPath/EFI/Boot/ + cp /usr/share/preloader-signed/HashTool.efi $efiPath/EFI/Boot/ + cp $efiPath/EFI/GRUB/grubx64.efi $efiPath/EFI/Boot/loader.efi + efibootmgr --verbose --disk $installDisk --part 1 --create --label 'monocleOS Signed' --loader /EFI/Boot/PreLoader.efi + cp /usr/share/preloader-signed/PreLoader.efi $efiPath/EFI/Boot/bootx64.efi + else + efibootmgr --verbose --disk $installDisk --part 1 --create --label 'monocleOS' --loader /EFI/GRUB/grubx64.efi + fi +elif [[ $bootloader == "mbr" ]]; then + grub-install --target=i386-pc $installDisk + grub-install --target=i386-pc --force $installDisk'1' +fi +grub-mkconfig -o /boot/grub/grub.cfg +## Enabling Services +systemctl enable NetworkManager +systemctl enable ntpd +systemctl enable avahi-daemon +systemctl enable org.cups.cupsd +usermod -aG cups user +systemctl enable automatic-update.timer +systemctl enable linux-modules-cleanup +systemctl enable clamav-freshclam +systemctl enable clamav-daemon +systemctl enable clamav-scan.timer +systemctl enable apparmor +systemctl enable preload" | arch-chroot $rootPath + +echo "## Configuring User Files +sudo -iu user +mkdir /home/user/Desktop; mkdir /home/user/Documents; mkdir /home/user/Downloads; mkdir /home/user/Pictures; mkdir /home/user/Pictures/Screenshots +cp /etc/monocleOS/bash_profile.skel /home/user/.bash_profile +cp /usr/share/backgrounds/white_circle.png /home/user/.wallpaper.png +cp /etc/monocleOS/xinitrc.skel /home/user/.xinitrc +mkdir -p /home/user/.config/dunst +cp /etc/monocleOS/dunstrc.skel /home/user/.config/dunst/dunstrc +mkdir -p /home/user/.config/i3 +cp /etc/monocleOS/i3.conf.skel /home/user/.config/i3/config +mkdir -p /home/user/.config/polybar +cp /etc/monocleOS/polybar.conf.skel /home/user/.config/polybar/config +mkdir -p /home/user/.icons/default +cp /etc/monocleOS/icons.default /home/user/.icons/default/index.theme +mkdir -p /home/user/.config/gtk-3.0 +cp /etc/monocleOS/gtkSettings.ini /home/user/.config/gtk-3.0/settings.ini +cp /etc/monocleOS/gtkrc /home/user/.gtkrc-2.0 +cp /etc/monocleOS/Trolltech.conf /home/user/.config/Trolltech.conf +cp /etc/monocleOS/pam_environment.skel /home/user/.pam_environment +mkdir -p /home/user/.config/monocleOS +cp /usr/share/themes/Arc/gtk-2.0/gtkrc /home/user/.config/monocleOS/arc_gtk2_gtkrc +cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource /home/user/.config/monocleOS/arc_gtk3_gtk_gresource +cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc /home/user/.config/monocleOS/arc_dark_gtk2_gtkrc +cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource /home/user/.config/monocleOS/arc_dark_gtk3_gtk_gresource +cp /etc/monocleOS/launcher.conf /home/user/.config/monocleOS/launcher.conf +cp /etc/monocleOS/tips-service.conf /home/user/.config/monocleOS/tips-service.conf +touch /home/user/.hushlogin +touch /home/user/.firstBoot" | arch-chroot $rootPath + +echo "mkdir -p /root/.icons/default +cp /etc/monocleOS/icons.default /root/.icons/default/index.theme +mkdir -p /root/.config/gtk-3.0 +ln -sf /home/user/.config/gtk-3.0/settings.ini /root/.config/gtk-3.0/settings.ini +ln -sf /home/user/.gtkrc-2.0 /root/.gtkrc-2.0 +cp /etc/monocleOS/Trolltech.conf /root/.config/Trolltech.conf +cp /etc/monocleOS/pam_environment.skel /root/.pam_environment +cp /usr/share/themes/Arc/gtk-2.0/gtkrc /usr/share/themes/Arc/gtk-2.0/gtkrc.bk +cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource /usr/share/themes/Arc/gtk-3.0/gtk.gresource.bk +cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc.bk +cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource.bk" | arch-chroot $rootPath + +umount -R $rootPath +swapoff /dev/$VG/$swapLV +vgchange -a n $VG +cryptsetup close $luksMap + +echo "monocleOS has been installed to $installDisk (`date +'%H:%M:%S'`)" +echo "Installation time: `TZ=UTC0 printf '%(%H:%M:%S)T\n' $(( SECONDS - startTime ))` ($(( SECONDS - startTime ))s)" diff --git a/packages.txt b/packages.txt new file mode 100644 index 0000000..a6785ff --- /dev/null +++ b/packages.txt @@ -0,0 +1 @@ +aisleriot alsa-utils apparmor arc-gtk-theme arc-icon-theme arch-install-scripts avahi awesome-terminal-fonts base base-devel clamav clamtk cups dunst epiphany evolution feh ffmpegthumbnailer file-roller foomatic-db foomatic-db-engine foomatic-db-gutenprint-ppds foomatic-db-nonfree-ppds foomatic-db-ppds four-in-a-row gedit ghostscript git gnome-calculator gnome-calendar gnome-chess gnome-keyring gnome-mahjongg gnome-mines gnome-screensaver gnome-screenshot gnome-sudoku gnome-system-monitor gnome-terminal gnuchess gpicview grub-silent gsfonts gtk-engine-murrine gutenprint gvfs-mtp hunspell hunspell-en_GB i3-gaps iagno kernel-modules-hook libreoffice-fresh libsecret linux linux-firmware mkinitcpio networkmanager nm-connection-editor noto-fonts noto-fonts-cjk noto-fonts-emoji nss-mdns mousetweaks ntp onboard pavucontrol picom preload playerctl plymouth polybar pulseaudio pulseaudio-alsa quadrapassel reflector sudo system-config-printer thunar thunar-archive-plugin thunar-media-tags-plugin thunar-sendto-clamtk thunar-volman ttf-dejavu ttf-font-awesome ttf-liberation ttf-material-icons-git tumbler vlc wine winetricks xcursor-breeze xorg xorg-drivers xorg-xinit xss-lock xzoom yay zenity diff --git a/pkg/40-libinput.conf b/pkg/40-libinput.conf new file mode 100644 index 0000000..e3b87c1 --- /dev/null +++ b/pkg/40-libinput.conf @@ -0,0 +1,53 @@ +# Match on all types of devices but joysticks +# +# If you want to configure your devices, do not copy this file. +# Instead, use a config snippet that contains something like this: +# +# Section "InputClass" +# Identifier "something or other" +# MatchDriver "libinput" +# +# MatchIsTouchpad "on" +# ... other Match directives ... +# Option "someoption" "value" +# EndSection +# +# This applies the option any libinput device also matched by the other +# directives. See the xorg.conf(5) man page for more info on +# matching devices. + +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" + Option "Tapping" "on" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/pkg/50-lockdown.conf b/pkg/50-lockdown.conf new file mode 100644 index 0000000..91f85e0 --- /dev/null +++ b/pkg/50-lockdown.conf @@ -0,0 +1,4 @@ +Section "ServerFlags" + Option "DontVTSwitch" "true" + Option "DontZap" "true" +EndSection diff --git a/pkg/PKGBUILD b/pkg/PKGBUILD new file mode 100644 index 0000000..616deba --- /dev/null +++ b/pkg/PKGBUILD @@ -0,0 +1,108 @@ +# Maintainer: Zack Didcott + +pkgname=monocleos +pkgver=1 +pkgrel=1 +pkgdesc="monocleOS package" +arch=('i686' 'x86_64') +url="" +license=('GPL3') +depends=('sh' 'libx11' 'imlib2') +makedepends=('git' 'gcc' 'make' 'sed' 'grep') +provides=('monocleos') +conflicts=('monocleos' 'xlunch-git') +#'git+https://github.com/Tomas-M/xlunch.git' 'SKIP' +source=('xlunch_precompiled' 'xlunch_menu_precompiled' 'monocleOS' 'monocleOS-recovery' 'update' 'initMonocle' 'toggleTouchpad.sh' 'entries.dsv.skel' 'dunstrc' 'i3.conf' 'polybar.conf' 'polybar.sh' 'bash_profile' 'xinitrc' 'icons.default' 'gtkSettings.ini' 'gtkrc' 'Trolltech.conf' 'pam_environment' 'autologin.conf' 'grubUpgrade.hook' 'mirrorUpgrade.hook' 'themeUpgrade.hook' 'nvidia.hook' '40-libinput.conf' '50-lockdown.conf' 'clamd.conf' 'nsswitch.conf' 'os-release' 'grub' 'launcher.conf' 'application-wrapper' 'tips-service' 'tips-service.conf' 'automatic-update.service' 'automatic-update.timer' 'clamav-scan.service' 'clamav-scan.timer' 'onboard.theme') +sha256sums=('4e578283544c131cc3089eddda912d7013dda7ea49b1375fe40b73fb9ffd17d9' + 'd8c2ac853a530e6e049f12da497de4232db8887633748158944bd2f6b601308c' + 'cb331af6fc4ff6b4839f45946614c1570260497233884a8bbc7201d5c563365e' + 'f0622aae0a29bd60505b5468546c9d1d03ff6db1ef60600529dc18889bed0040' + 'ed5855ffc350f335762949bd6ebb6e755a084ee30831cc744063de9c06bb91fa' + 'fc3e46c81a71fb8c16b739773d62651ed511aabe60df5dc56003dbaaf8ee0f9d' + 'd1ad17c0b9c5848c16c81ceadc6883298c0841a3bbd28ab1d783eb01ea4470a7' + 'b25e3f34fb820e3852770b975c5f308ebc46b70d89e830da778ca7653f028677' + 'adc0d2a470f0f299a0aea22b0d69cd3faf3272e11b202db88b9e27037987bfe9' + 'ffd07cc540d7a2066fce02a4d8d0448f1b8bc196ae27b56c803d749278a1accd' + 'acd0a2d06acee8d43888510bcc6643d4bf5e4046be596403f1e45f0fb7934fad' + '89cc9997992ec01e91b4d702b15492053ea94daf19a161c1a2ce3d367c08bc63' + 'c7eab30d4a506c48d0468e6b95ef812ac0cd8817d3d9c55b8d6176bd13dc9a78' + 'f2a21065f2a5df3afcb17127966fdad79be8d3439fec7e7d20d23a3f86ff1b93' + 'ff9c676132f801fedde204c4deea7beddb6a493520df0a66a9050646cb32b6b0' + '2f99e6f6a9a61538b2acd99d09f5f5d8ee58cfcaa85daf029f7c99903cdfa40c' + '23ed56570291e6c1e09f1b325a8fba112a1167bda8c7e5378bd3eb3ae9751142' + '9b0d4235f54aea86d6666d4c72afd1b9935a4d0b3ab306e3e04f0d85ab109ddf' + '37dcb9b30dcbfb75589ac02045268341843199e165fccc1d972fb623284c55d7' + '96370674ad080323f4835e84aac75f891cebff27f3a9f2282b55710684c2814c' + '3b150947fa88b6a87198adc273f7f8ad3ba34bce8d3bc48a98fc00628f245b57' + '15e91565a9e34012898e2d31b79cf5d6d83363e6fd638191c51b59cf3d4ec930' + '110750dccfd2f06aa8a66b4c552beaf7a918306db7aaa78866c36e148bd82bb1' + 'f0dc23a79a14636fae81155ecd550637d718723599bfaa3011616c9f6e57c032' + '89d854f900ffbc2f3e23ec8364f54bbeab17a7eaf3ffebe6bbc9d688a097959a' + 'e5d244ba8652ceda9db4aff11c63b74478367fe681daee53fdf5435c3e5be1bc' + 'e45742be50a7ec9a99ccac6eaf6ba7c25e338ff291aa1a4be28cbf496e9c547f' + '8af175b737b65680eca36f7e466685cb3a00b2a4aaf8c544127ed31796cea4db' + 'd04f7a45ffc38f9d9270269e0fc2a0d7a4fee1fb0658bb484408d10511d48e1d' + 'b0723486fa2a2436e9ea0b7ceeb67b140ac0abe0bd1b7e7f36e79130d25f521a' + '45eddf00118a0a5b92b609e4a4d2d99cd81cd340e0c36ab8eaa41c32e41aaf4b' + 'f01f1812e12e8984e43a60e2381d6b06373e6f0d9b2e2277d3f0f2a546ed6461' + '815cdec13cefa8d6a3f48ebc5076ea42b900283f3e26a89105ef39600bb3952d' + 'def68aa83945a89f453686fa6ae3f2e618a8772013690dffeb19bf3bfd2b051f' + '60c042a6029f73876fe021cd71eae0212b788b98bde78ffe0db2ddcb10316e8c' + 'd4b077e3bfc73e8a8c805eecdf1e738d99ddf24dc1e19c3d942d98c51c56a629' + 'a5c709482b52d13fd5426a64d0477df00330b8bf1f1c17b4bcc329f080ffc52b' + '914d96ff940cf0b1924621ff58e05f85151549b0b2341ac18f37bcc4f30fc08d' + '1780c064138848c3f2c668d9618e2d34ef815bcda872dc8ca57c98780d9ac7ba') + +#build() { +# cd "$srcdir/xlunch" +# make DESTDIR="../../xlunch/" +#} + +package() { + mkdir -p "$pkgdir"/usr/share/ + mkdir -p "$pkgdir"/usr/share/plymouth/themes/ + cp -R plymouth/* "$pkgdir"/usr/share/plymouth/themes/ + cp -R backgrounds "$pkgdir"/usr/share/backgrounds + cp -R desktop "$pkgdir"/usr/share/desktop + cp -R xlunch_data "$pkgdir"/usr/share/xlunch + mkdir -p "$pkgdir/usr/share/monocleOS/" + install -Dm644 launcher.conf "$pkgdir"/etc/monocleOS/launcher.conf + install -Dm644 tips-service.conf "$pkgdir"/etc/monocleOS/tips-service.conf + install -Dm755 tips-service "$pkgdir"/usr/bin/tips-service + install -Dm755 application-wrapper "$pkgdir"/usr/bin/application-wrapper + install -Dm644 dunstrc "$pkgdir"/etc/monocleOS/dunstrc.skel + install -Dm644 i3.conf "$pkgdir"/etc/monocleOS/i3.conf.skel + install -Dm644 polybar.conf "$pkgdir"/etc/monocleOS/polybar.conf.skel + install -Dm755 polybar.sh "$pkgdir"/usr/bin/polybar.sh + install -Dm644 bash_profile "$pkgdir"/etc/monocleOS/bash_profile.skel + install -Dm755 xinitrc "$pkgdir"/etc/monocleOS/xinitrc.skel + install -Dm644 icons.default "$pkgdir"/etc/monocleOS/icons.default + install -Dm644 gtkSettings.ini "$pkgdir"/etc/monocleOS/gtkSettings.ini + install -Dm644 gtkrc "$pkgdir"/etc/monocleOS/gtkrc + install -Dm644 Trolltech.conf "$pkgdir"/etc/monocleOS/Trolltech.conf + install -Dm644 pam_environment "$pkgdir"/etc/monocleOS/pam_environment.skel + install -Dm644 automatic-update.service "$pkgdir"/usr/lib/systemd/system/automatic-update.service + install -Dm644 automatic-update.timer "$pkgdir"/usr/lib/systemd/system/automatic-update.timer + install -Dm644 clamav-scan.service "$pkgdir"/usr/lib/systemd/system/clamav-scan.service + install -Dm644 clamav-scan.timer "$pkgdir"/usr/lib/systemd/system/clamav-scan.timer + install -Dm644 grub "$pkgdir"/etc/default/grub.monocleOS + install -Dm644 autologin.conf "$pkgdir"/etc/systemd/system/getty@tty1.service.d/override.conf + install -Dm644 grubUpgrade.hook "$pkgdir"/etc/pacman.d/hooks/grubUpgrade.hook + install -Dm644 mirrorUpgrade.hook "$pkgdir"/etc/pacman.d/hooks/mirrorUpgrade.hook + install -Dm644 themeUpgrade.hook "$pkgdir"/etc/pacman.d/hooks/themeUpgrade.hook + install -Dm644 nvidia.hook "$pkgdir"/etc/pacman.d/hooks/nvidia.hook.disabled + install -Dm644 40-libinput.conf "$pkgdir"/etc/X11/xorg.conf.d/40-libinput.conf + install -Dm644 50-lockdown.conf "$pkgdir"/etc/X11/xorg.conf.d/50-lockdown.conf + install -Dm644 nsswitch.conf "$pkgdir"/etc/monocleOS/nsswitch.conf + #install -Dm644 os-release "$pkgdir"/etc/os-release + #install -Dm755 ./xlunch/xlunch "$pkgdir"/usr/bin/xlunch + install -Dm755 xlunch_precompiled "$pkgdir"/usr/bin/xlunch + install -Dm755 xlunch_menu_precompiled "$pkgdir"/usr/bin/xlunch_menu + install -Dm644 entries.dsv.skel "$pkgdir"/etc/xlunch/entries.dsv.skel + install -Dm755 monocleOS "$pkgdir"/usr/bin/monocleOS + install -Dm755 initMonocle "$pkgdir"/usr/bin/initMonocle + install -Dm755 monocleOS-recovery "$pkgdir"/usr/bin/monocleOS-recovery + install -Dm755 update "$pkgdir"/usr/bin/update + install -Dm755 toggleTouchpad.sh "$pkgdir"/usr/bin/toggleTouchpad.sh + install -Dm644 onboard.theme "$pkgdir"/usr/share/onboard/themes/monocleOS.theme +} diff --git a/pkg/Trolltech.conf b/pkg/Trolltech.conf new file mode 100644 index 0000000..e148896 --- /dev/null +++ b/pkg/Trolltech.conf @@ -0,0 +1,2 @@ +[Qt] +style=GTK+ diff --git a/pkg/application-wrapper b/pkg/application-wrapper new file mode 100755 index 0000000..a01a473 --- /dev/null +++ b/pkg/application-wrapper @@ -0,0 +1,90 @@ +#!/bin/bash + +wait=2 + +app="${1,,}" +case "$app" in + calculator) + /usr/bin/gnome-calculator & + ;; + calendar) + /usr/bin/gnome-calendar & + ;; + camera) + /usr/bin/cheese & + ;; + cards) + /usr/bin/sol & + ;; + chess) + /usr/bin/gnome-chess & + ;; + email) + /usr/bin/evolution & + ;; + files) + /usr/bin/thunar & + ;; + four_in_a_row) + /usr/bin/four-in-a-row & + ;; + games) + /usr/bin/monocleOS --games & + ;; + lock) + /usr/bin/monocleOS --lock & + ;; + magnifier) + /usr/bin/monocleOS --magnifier & + sleep $wait + /usr/bin/tips-service --app magnifier + ;; + mahjongg) + /usr/bin/gnome-mahjongg & + ;; + media_player) + /usr/bin/vlc & + ;; + mines) + /usr/bin/gnome-mines & + ;; + office) + /usr/bin/libreoffice & + sleep $wait + /usr/bin/tips-service --app office + ;; + osk) + /usr/bin/onboard & + ;; + quadrapassel) + /usr/bin/quadrapassel & + ;; + reversi) + /usr/bin/iagno & + ;; + screenshot) + /usr/bin/monocleOS --screenshot & + ;; + settings) + /usr/bin/monocleOS --settings & + sleep $wait + /usr/bin/tips-service --app settings + ;; + sleep) + /usr/bin/monocleOS --suspend & + ;; + sudoku) + /usr/bin/gnome-sudoku & + ;; + turn_off) + /usr/bin/monocleOS --poweroff & + ;; + web) + /usr/bin/epiphany & + sleep $wait + /usr/bin/tips-service --app web + ;; + *) + echo $"Usage: $0 {APP}" + exit 1 +esac diff --git a/pkg/autologin.conf b/pkg/autologin.conf new file mode 100644 index 0000000..f4368a3 --- /dev/null +++ b/pkg/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --noissue --skip-login --login-options "-f user" %I $TERM diff --git a/pkg/automatic-update.service b/pkg/automatic-update.service new file mode 100644 index 0000000..ecaf482 --- /dev/null +++ b/pkg/automatic-update.service @@ -0,0 +1,13 @@ +[Unit] +Description=Automatic Updates +After=network-online.target + +[Service] +Type=simple +ExecStart=/usr/bin/update +TimeoutStopSec=180 +KillMode=process +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target diff --git a/pkg/automatic-update.timer b/pkg/automatic-update.timer new file mode 100644 index 0000000..206e6f3 --- /dev/null +++ b/pkg/automatic-update.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Automatic Updates - 5 minutes after boot then every day + +[Timer] +OnBootSec=5min +OnUnitActiveSec=1day +Unit=automatic-update.service + +[Install] +WantedBy=multi-user.target diff --git a/pkg/bash_profile b/pkg/bash_profile new file mode 100644 index 0000000..3b0176d --- /dev/null +++ b/pkg/bash_profile @@ -0,0 +1,8 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc +if [[ ! $DISPLAY && XDG_VTNR -eq 1 ]]; then + exec startx >/dev/null 2>&1 +fi diff --git a/pkg/clamav-scan.service b/pkg/clamav-scan.service new file mode 100644 index 0000000..b3326bf --- /dev/null +++ b/pkg/clamav-scan.service @@ -0,0 +1,12 @@ +[Unit] +Description=Scanning of for downloads harmful files + +[Service] +Type=simple +ExecStart=clamscan -r --remove /home/user/Downloads +TimeoutStopSec=20 +KillMode=process +KillSignal=SIGINT + +[Install] +WantedBy=multi-user.target diff --git a/pkg/clamav-scan.timer b/pkg/clamav-scan.timer new file mode 100644 index 0000000..a8c0680 --- /dev/null +++ b/pkg/clamav-scan.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Automatic scanning of downloads every hour + +[Timer] +OnBootSec=10min +OnUnitActiveSec=1hour +Unit=clamav-scan.service + +[Install] +WantedBy=multi-user.target diff --git a/pkg/clamd.conf b/pkg/clamd.conf new file mode 100644 index 0000000..2b77ed9 --- /dev/null +++ b/pkg/clamd.conf @@ -0,0 +1,728 @@ +## +## Example config file for the Clam AV daemon +## Please read the clamd.conf(5) manual before editing this file. +## + + +# Comment or remove the line below. +#Example + +# Uncomment this option to enable logging. +# LogFile must be writable for the user running daemon. +# A full path is required. +# Default: disabled +LogFile /var/log/clamav/clamd.log + +# By default the log file is locked for writing - the lock protects against +# running clamd multiple times (if want to run another clamd, please +# copy the configuration file, change the LogFile variable, and run +# the daemon with --config-file option). +# This option disables log file locking. +# Default: no +#LogFileUnlock yes + +# Maximum size of the log file. +# Value of 0 disables the limit. +# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) +# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size +# in bytes just don't use modifiers. If LogFileMaxSize is enabled, log +# rotation (the LogRotate option) will always be enabled. +# Default: 1M +#LogFileMaxSize 2M + +# Log time with each message. +# Default: no +LogTime yes + +# Also log clean files. Useful in debugging but drastically increases the +# log size. +# Default: no +#LogClean yes + +# Use system logger (can work together with LogFile). +# Default: no +#LogSyslog yes + +# Specify the type of syslog messages - please refer to 'man syslog' +# for facility names. +# Default: LOG_LOCAL6 +#LogFacility LOG_MAIL + +# Enable verbose logging. +# Default: no +#LogVerbose yes + +# Enable log rotation. Always enabled when LogFileMaxSize is enabled. +# Default: no +#LogRotate yes + +# Enable Prelude output. +# Default: no +#PreludeEnable yes +# +# Set the name of the analyzer used by prelude-admin. +# Default: ClamAV +#PreludeAnalyzerName ClamAV + +# Log additional information about the infected file, such as its +# size and hash, together with the virus name. +#ExtendedDetectionInfo yes + +# This option allows you to save a process identifier of the listening +# daemon (main thread). +# Default: disabled +PidFile /run/clamav/clamd.pid + +# Optional path to the global temporary directory. +# Default: system specific (usually /tmp or /var/tmp). +TemporaryDirectory /tmp + +# Path to the database directory. +# Default: hardcoded (depends on installation options) +#DatabaseDirectory /var/lib/clamav + +# Only load the official signatures published by the ClamAV project. +# Default: no +#OfficialDatabaseOnly no + +# The daemon can work in local mode, network mode or both. +# Due to security reasons we recommend the local mode. + +# Path to a local socket file the daemon will listen on. +# Default: disabled (must be specified by a user) +LocalSocket /run/clamav/clamd.ctl + +# Sets the group ownership on the unix socket. +# Default: disabled (the primary group of the user running clamd) +#LocalSocketGroup virusgroup + +# Sets the permissions on the unix socket to the specified mode. +# Default: disabled (socket is world accessible) +#LocalSocketMode 660 + +# Remove stale socket after unclean shutdown. +# Default: yes +#FixStaleSocket yes + +# TCP port address. +# Default: no +#TCPSocket 3310 + +# TCP address. +# By default we bind to INADDR_ANY, probably not wise. +# Enable the following to provide some degree of protection +# from the outside world. This option can be specified multiple +# times if you want to listen on multiple IPs. IPv6 is now supported. +# Default: no +#TCPAddr 127.0.0.1 + +# Maximum length the queue of pending connections may grow to. +# Default: 200 +#MaxConnectionQueueLength 30 + +# Clamd uses FTP-like protocol to receive data from remote clients. +# If you are using clamav-milter to balance load between remote clamd daemons +# on firewall servers you may need to tune the options below. + +# Close the connection when the data size limit is exceeded. +# The value should match your MTA's limit for a maximum attachment size. +# Default: 25M +#StreamMaxLength 10M + +# Limit port range. +# Default: 1024 +#StreamMinPort 30000 +# Default: 2048 +#StreamMaxPort 32000 + +# Maximum number of threads running at the same time. +# Default: 10 +#MaxThreads 20 + +# Waiting for data from a client socket will timeout after this time (seconds). +# Default: 120 +#ReadTimeout 300 + +# This option specifies the time (in seconds) after which clamd should +# timeout if a client doesn't provide any initial command after connecting. +# Default: 30 +#CommandReadTimeout 30 + +# This option specifies how long to wait (in milliseconds) if the send buffer +# is full. +# Keep this value low to prevent clamd hanging +# +# Default: 500 +#SendBufTimeout 200 + +# Maximum number of queued items (including those being processed by +# MaxThreads threads) +# It is recommended to have this value at least twice MaxThreads if possible. +# WARNING: you shouldn't increase this too much to avoid running out of file +# descriptors, +# the following condition should hold: +# MaxThreads*MaxRecursion + (MaxQueue - MaxThreads) + 6< RLIMIT_NOFILE (usual +# max is 1024) +# +# Default: 100 +#MaxQueue 200 + +# Waiting for a new job will timeout after this time (seconds). +# Default: 30 +#IdleTimeout 60 + +# Don't scan files and directories matching regex +# This directive can be used multiple times +# Default: scan all +#ExcludePath ^/proc/ +#ExcludePath ^/sys/ + +# Maximum depth directories are scanned at. +# Default: 15 +#MaxDirectoryRecursion 20 + +# Follow directory symlinks. +# Default: no +#FollowDirectorySymlinks yes + +# Follow regular file symlinks. +# Default: no +#FollowFileSymlinks yes + +# Scan files and directories on other filesystems. +# Default: yes +#CrossFilesystems yes + +# Perform a database check. +# Default: 600 (10 min) +#SelfCheck 600 + +# Execute a command when virus is found. In the command string %v will +# be replaced with the virus name. +# Default: no +#VirusEvent command + +# Run as another user (clamd must be started by root for this option to work) +# Default: don't drop privileges +User root + +# Stop daemon when libclamav reports out of memory condition. +#ExitOnOOM yes + +# Don't fork into background. +# Default: no +#Foreground yes + +# Enable debug messages in libclamav. +# Default: no +#Debug yes + +# Do not remove temporary files (for debug purposes). +# Default: no +#LeaveTemporaryFiles yes + +# Permit use of the ALLMATCHSCAN command. If set to no, clamd will reject +# any ALLMATCHSCAN command as invalid. +# Default: yes +#AllowAllMatchScan no + +# Detect Possibly Unwanted Applications. +# Default: no +#DetectPUA yes + +# Exclude a specific PUA category. This directive can be used multiple times. +# See https://github.com/vrtadmin/clamav-faq/blob/master/faq/faq-pua.md for +# the complete list of PUA categories. +# Default: Load all categories (if DetectPUA is activated) +#ExcludePUA NetTool +#ExcludePUA PWTool + +# Only include a specific PUA category. This directive can be used multiple +# times. +# Default: Load all categories (if DetectPUA is activated) +#IncludePUA Spy +#IncludePUA Scanner +#IncludePUA RAT + +# This option causes memory or nested map scans to dump the content to disk. +# If you turn on this option, more data is written to disk and is available +# when the LeaveTemporaryFiles option is enabled. +#ForceToDisk yes + +# This option allows you to disable the caching feature of the engine. By +# default, the engine will store an MD5 in a cache of any files that are +# not flagged as virus or that hit limits checks. Disabling the cache will +# have a negative performance impact on large scans. +# Default: no +#DisableCache yes + +# In some cases (eg. complex malware, exploits in graphic files, and others), +# ClamAV uses special algorithms to detect abnormal patterns and behaviors that +# may be malicious. This option enables alerting on such heuristically +# detected potential threats. +# Default: yes +#HeuristicAlerts yes + +# Allow heuristic alerts to take precedence. +# When enabled, if a heuristic scan (such as phishingScan) detects +# a possible virus/phish it will stop scan immediately. Recommended, saves CPU +# scan-time. +# When disabled, virus/phish detected by heuristic scans will be reported only at +# the end of a scan. If an archive contains both a heuristically detected +# virus/phish, and a real malware, the real malware will be reported +# +# Keep this disabled if you intend to handle "*.Heuristics.*" viruses +# differently from "real" malware. +# If a non-heuristically-detected virus (signature-based) is found first, +# the scan is interrupted immediately, regardless of this config option. +# +# Default: no +#HeuristicScanPrecedence yes + + +## +## Heuristic Alerts +## + +# With this option clamav will try to detect broken executables (both PE and +# ELF) and alert on them with the Broken.Executable heuristic signature. +# Default: no +#AlertBrokenExecutables yes + +# Alert on encrypted archives _and_ documents with heuristic signature (encrypted .zip, .7zip, .rar, .pdf). +# Default: no +#AlertEncrypted yes + +# Alert on encrypted archives with heuristic signature (encrypted .zip, .7zip, .rar). +# Default: no +#AlertEncryptedArchive yes + +# Alert on encrypted archives with heuristic signature (encrypted .pdf). +# Default: no +#AlertEncryptedDoc yes + +# With this option enabled OLE2 files containing VBA macros, which were not +# detected by signatures will be marked as "Heuristics.OLE2.ContainsMacros". +# Default: no +#AlertOLE2Macros yes + +# Alert on SSL mismatches in URLs, even if the URL isn't in the database. +# This can lead to false positives. +# Default: no +#AlertPhishingSSLMismatch yes + +# Alert on cloaked URLs, even if URL isn't in database. +# This can lead to false positives. +# Default: no +#AlertPhishingCloak yes + +# Alert on raw DMG image files containing partition intersections +# Default: no +#AlertPartitionIntersection yes + + +## +## Executable files +## + +# PE stands for Portable Executable - it's an executable file format used +# in all 32 and 64-bit versions of Windows operating systems. This option +# allows ClamAV to perform a deeper analysis of executable files and it's also +# required for decompression of popular executable packers such as UPX, FSG, +# and Petite. If you turn off this option, the original files will still be +# scanned, but without additional processing. +# Default: yes +#ScanPE yes + +# Certain PE files contain an authenticode signature. By default, we check +# the signature chain in the PE file against a database of trusted and +# revoked certificates if the file being scanned is marked as a virus. +# If any certificate in the chain validates against any trusted root, but +# does not match any revoked certificate, the file is marked as whitelisted. +# If the file does match a revoked certificate, the file is marked as virus. +# The following setting completely turns off authenticode verification. +# Default: no +#DisableCertCheck yes + +# Executable and Linking Format is a standard format for UN*X executables. +# This option allows you to control the scanning of ELF files. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanELF yes + + +## +## Documents +## + +# This option enables scanning of OLE2 files, such as Microsoft Office +# documents and .msi files. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanOLE2 yes + +# This option enables scanning within PDF files. +# If you turn off this option, the original files will still be scanned, but +# without decoding and additional processing. +# Default: yes +#ScanPDF yes + +# This option enables scanning within SWF files. +# If you turn off this option, the original files will still be scanned, but +# without decoding and additional processing. +# Default: yes +#ScanSWF yes + +# This option enables scanning xml-based document files supported by libclamav. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanXMLDOCS yes + +# This option enables scanning of HWP3 files. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanHWP3 yes + + +## +## Mail files +## + +# Enable internal e-mail scanner. +# If you turn off this option, the original files will still be scanned, but +# without parsing individual messages/attachments. +# Default: yes +#ScanMail yes + +# Scan RFC1341 messages split over many emails. +# You will need to periodically clean up $TemporaryDirectory/clamav-partial +# directory. +# WARNING: This option may open your system to a DoS attack. +# Never use it on loaded servers. +# Default: no +#ScanPartialMessages yes + +# With this option enabled ClamAV will try to detect phishing attempts by using +# HTML.Phishing and Email.Phishing NDB signatures. +# Default: yes +#PhishingSignatures no + +# With this option enabled ClamAV will try to detect phishing attempts by +# analyzing URLs found in emails using WDB and PDB signature databases. +# Default: yes +#PhishingScanURLs no + + +## +## Data Loss Prevention (DLP) +## + +# Enable the DLP module +# Default: No +#StructuredDataDetection yes + +# This option sets the lowest number of Credit Card numbers found in a file +# to generate a detect. +# Default: 3 +#StructuredMinCreditCardCount 5 + +# This option sets the lowest number of Social Security Numbers found +# in a file to generate a detect. +# Default: 3 +#StructuredMinSSNCount 5 + +# With this option enabled the DLP module will search for valid +# SSNs formatted as xxx-yy-zzzz +# Default: yes +#StructuredSSNFormatNormal yes + +# With this option enabled the DLP module will search for valid +# SSNs formatted as xxxyyzzzz +# Default: no +#StructuredSSNFormatStripped yes + + +## +## HTML +## + +# Perform HTML normalisation and decryption of MS Script Encoder code. +# Default: yes +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +#ScanHTML yes + + +## +## Archives +## + +# ClamAV can scan within archives and compressed files. +# If you turn off this option, the original files will still be scanned, but +# without unpacking and additional processing. +# Default: yes +#ScanArchive yes + + +## +## Limits +## + +# The options below protect your system against Denial of Service attacks +# using archive bombs. + +# This option sets the maximum amount of data to be scanned for each input +# file. +# Archives and other containers are recursively extracted and scanned up to +# this value. +# Value of 0 disables the limit +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 100M +#MaxScanSize 150M + +# Files larger than this limit won't be scanned. Affects the input file itself +# as well as files contained inside it (when the input file is an archive, a +# document or some other kind of container). +# Value of 0 disables the limit. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 25M +#MaxFileSize 30M + +# Nested archives are scanned recursively, e.g. if a Zip archive contains a RAR +# file, all files within it will also be scanned. This options specifies how +# deeply the process should be continued. +# Note: setting this limit too high may result in severe damage to the system. +# Default: 16 +#MaxRecursion 10 + +# Number of files to be scanned within an archive, a document, or any other +# container file. +# Value of 0 disables the limit. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10000 +#MaxFiles 15000 + +# Maximum size of a file to check for embedded PE. Files larger than this value +# will skip the additional analysis step. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10M +#MaxEmbeddedPE 10M + +# Maximum size of a HTML file to normalize. HTML files larger than this value +# will not be normalized or scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10M +#MaxHTMLNormalize 10M + +# Maximum size of a normalized HTML file to scan. HTML files larger than this +# value after normalization will not be scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 2M +#MaxHTMLNoTags 2M + +# Maximum size of a script file to normalize. Script content larger than this +# value will not be normalized or scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 5M +#MaxScriptNormalize 5M + +# Maximum size of a ZIP file to reanalyze type recognition. ZIP files larger +# than this value will skip the step to potentially reanalyze as PE. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 1M +#MaxZipTypeRcg 1M + +# This option sets the maximum number of partitions of a raw disk image to be +# scanned. +# Raw disk images with more partitions than this value will have up to +# the value number partitions scanned. Negative values are not allowed. +# Note: setting this limit too high may result in severe damage or impact +# performance. +# Default: 50 +#MaxPartitions 128 + +# This option sets the maximum number of icons within a PE to be scanned. +# PE files with more icons than this value will have up to the value number +# icons scanned. +# Negative values are not allowed. +# WARNING: setting this limit too high may result in severe damage or impact +# performance. +# Default: 100 +#MaxIconsPE 200 + +# This option sets the maximum recursive calls for HWP3 parsing during +# scanning. HWP3 files using more than this limit will be terminated and +# alert the user. +# Scans will be unable to scan any HWP3 attachments if the recursive limit +# is reached. +# Negative values are not allowed. +# WARNING: setting this limit too high may result in severe damage or impact +# performance. +# Default: 16 +#MaxRecHWP3 16 + +# This option sets the maximum calls to the PCRE match function during +# an instance of regex matching. +# Instances using more than this limit will be terminated and alert the user +# but the scan will continue. +# For more information on match_limit, see the PCRE documentation. +# Negative values are not allowed. +# WARNING: setting this limit too high may severely impact performance. +# Default: 100000 +#PCREMatchLimit 20000 + +# This option sets the maximum recursive calls to the PCRE match function +# during an instance of regex matching. +# Instances using more than this limit will be terminated and alert the user +# but the scan will continue. +# For more information on match_limit_recursion, see the PCRE documentation. +# Negative values are not allowed and values > PCREMatchLimit are superfluous. +# WARNING: setting this limit too high may severely impact performance. +# Default: 2000 +#PCRERecMatchLimit 10000 + +# This option sets the maximum filesize for which PCRE subsigs will be +# executed. Files exceeding this limit will not have PCRE subsigs executed +# unless a subsig is encompassed to a smaller buffer. +# Negative values are not allowed. +# Setting this value to zero disables the limit. +# WARNING: setting this limit too high or disabling it may severely impact +# performance. +# Default: 25M +#PCREMaxFileSize 100M + +# When AlertExceedsMax is set, files exceeding the MaxFileSize, MaxScanSize, or +# MaxRecursion limit will be flagged with the virus +# "Heuristics.Limits.Exceeded". +# Default: no +#AlertExceedsMax yes + + +## +## On-access Scan Settings +## + +# Enable on-access scanning. Currently, this is supported via fanotify. +# Clamuko/Dazuko support has been deprecated. +# Default: no +ScanOnAccess yes + +# Set the mount point to be scanned. The mount point specified, or the mount +# point containing the specified directory will be watched. If any directories +# are specified, this option will preempt the DDD system. This will notify +# only. It can be used multiple times. +# (On-access scan only) +# Default: disabled +OnAccessMountPath /home/user + +# Don't scan files larger than OnAccessMaxFileSize +# Value of 0 disables the limit. +# Default: 5M +#OnAccessMaxFileSize 10M + +# Set the include paths (all files inside them will be scanned). You can have +# multiple OnAccessIncludePath directives but each directory must be added +# in a separate line. (On-access scan only) +# Default: disabled +OnAccessIncludePath /home/user/Downloads + +# Set the exclude paths. All subdirectories are also excluded. +# (On-access scan only) +# Default: disabled +#OnAccessExcludePath /var/log/ + +# With this option you can whitelist the root UID (0). Processes run under +# root with be able to access all files without triggering scans or +# permission denied events. +# Note that if clamd cannot check the uid of the process that generated an +# on-access scan event (e.g., because OnAccessPrevention was not enabled, and +# the process already exited), clamd will perform a scan. Thus, setting +# OnAccessExcludeRootUID is not *guaranteed* to prevent every access by the +# root user from triggering a scan (unless OnAccessPrevention is enabled). +# Default: no +#OnAccessExcludeRootUID no + +# With this option you can whitelist specific UIDs. Processes with these UIDs +# will be able to access all files without triggering scans or permission +# denied events. +# This option can be used multiple times (one per line). +# Using a value of 0 on any line will disable this option entirely. +# To whitelist the root UID (0) please enable the OnAccessExcludeRootUID +# option. +# Also note that if clamd cannot check the uid of the process that generated an +# on-access scan event (e.g., because OnAccessPrevention was not enabled, and +# the process already exited), clamd will perform a scan. Thus, setting +# OnAccessExcludeUID is not *guaranteed* to prevent every access by the +# specified uid from triggering a scan (unless OnAccessPrevention is enabled). +# Default: disabled +OnAccessExcludeUID 0 + +# Toggles dynamic directory determination. Allows for recursively watching +# include paths. +# (On-access scan only) +# Default: no +#OnAccessDisableDDD yes + +# Modifies fanotify blocking behaviour when handling permission events. +# If off, fanotify will only notify if the file scanned is a virus, +# and not perform any blocking. +# (On-access scan only) +# Default: no +OnAccessPrevention no + +# Toggles extra scanning and notifications when a file or directory is +# created or moved. +# Requires the DDD system to kick-off extra scans. +# NOTE: This feature is disabled until a thread resource leak bug +# in the OnAccessExtraScanning code can be resolved. +# (On-access scan only) +# Default: no +OnAccessExtraScanning yes + +## +## Bytecode +## + +# With this option enabled ClamAV will load bytecode from the database. +# It is highly recommended you keep this option on, otherwise you'll miss +# detections for many new viruses. +# Default: yes +#Bytecode yes + +# Set bytecode security level. +# Possible values: +# None - No security at all, meant for debugging. +# DO NOT USE THIS ON PRODUCTION SYSTEMS. +# This value is only available if clamav was built +# with --enable-debug! +# TrustSigned - Trust bytecode loaded from signed .c[lv]d files, insert +# runtime safety checks for bytecode loaded from other sources. +# Paranoid - Don't trust any bytecode, insert runtime checks for all. +# Recommended: TrustSigned, because bytecode in .cvd files already has these +# checks. +# Note that by default only signed bytecode is loaded, currently you can only +# load unsigned bytecode in --enable-debug mode. +# +# Default: TrustSigned +#BytecodeSecurity TrustSigned + +# Set bytecode timeout in milliseconds. +# +# Default: 5000 +# BytecodeTimeout 1000 + +## +## Statistics gathering and submitting +## diff --git a/pkg/dunstrc b/pkg/dunstrc new file mode 100644 index 0000000..4a496bb --- /dev/null +++ b/pkg/dunstrc @@ -0,0 +1,195 @@ +[global] + font = DejaVu Sans 12 + + # allow a small subset of html markup: + # bold + # italic + # strikethrough + # underline + # + # for a complete reference see http://developer.gnome.org/pango/stable/PangoMarkupFormat.html + # If markup is not allowed, those tags will be stripped out of the message. + allow_markup = yes + + # The format of the message. Possible variables are: + # %a appname + # %s summary + # %b body + # %i iconname (including its path) + # %I iconname (without its path) + # %p progress value if set ([ 0%] to [100%]) or nothing + # Markup is allowed + format = "%a: %s\n%b" + + # Sort messages by urgency + sort = yes + + # Show how many messages are currently hidden (because of geometry) + indicate_hidden = yes + + # alignment of message text. + # Possible values are "left", "center" and "right" + alignment = right + + # The frequency with which text that is longer than the notification + # window allows bounces back and forth. + # This option conflicts with 'word_wrap'. + # Set to 0 to disable + bounce_freq = 0 + + # show age of message if message is older than show_age_threshold seconds. + # set to -1 to disable + show_age_threshold = 60 + + # split notifications into multiple lines if they don't fit into geometry + word_wrap = yes + + # ignore newlines '\n' in notifications + ignore_newline = no + + + # the geometry of the window + # geometry [{width}]x{height}][+/-{x}+/-{y}] + # The geometry of the message window. + # The height is measured in number of notifications everything else in pixels. If the width + # is omitted but the height is given ("-geometry x2"), the message window + # expands over the whole screen (dmenu-like). If width is 0, + # the window expands to the longest message displayed. + # A positive x is measured from the left, a negative from the + # right side of the screen. Y is measured from the top and down respectevly. + # The width can be negative. In this case the actual width is the + # screen width minus the width defined in within the geometry option. + geometry = "300x5-30+40" + + # The transparency of the window. range: [0; 100] + # This option will only work if a compositing windowmanager is present (e.g. xcompmgr, compiz, etc..) + transparency = 10 + + # Don't remove messages, if the user is idle (no mouse or keyboard input) + # for longer than idle_threshold seconds. + # Set to 0 to disable. + idle_threshold = 120 + + # Which monitor should the notifications be displayed on. + monitor = 0 + + # Display notification on focused monitor. Possible modes are: + # mouse: follow mouse pointer + # keyboard: follow window with keyboard focus + # none: don't follow anything + # + # "keyboard" needs a windowmanager that exports the _NET_ACTIVE_WINDOW property. + # This should be the case for almost all modern windowmanagers. + # + # If this option is set to mouse or keyboard, the monitor option will be + # ignored. + follow = keyboard + + # should a notification popped up from history be sticky or + # timeout as if it would normally do. + sticky_history = yes + + # The height of a single line. If the height is smaller than the font height, + # it will get raised to the font height. + # This adds empty space above and under the text. + line_height = 0 + + # Draw a line of 'separatpr_height' pixel height between two notifications. + # Set to 0 to disable + separator_height = 2 + + # padding between text and separator + padding = 8 + + # horizontal padding + horizontal_padding = 8 + + # Define a color for the separator. + # possible values are: + # * auto: dunst tries to find a color fitting to the background + # * foreground: use the same color as the foreground + # * frame: use the same color as the frame. + # * anything else will be interpreted as a X color + separator_color = frame + + # print a notification on startup + # This is mainly for error detection, since dbus (re-)starts dunst + # automatically after a crash. + startup_notification = false + + # dmenu path + #dmenu = /usr/bin/dmenu -p dunst: + + # browser for opening urls in context menu + browser = /usr/bin/epiphany + +[frame] + width = 0 + color = "#000000" + +[shortcuts] + # shortcuts are specified as [modifier+][modifier+]...key + # available modifiers are 'ctrl', 'mod1' (the alt-key), 'mod2', 'mod3' + # and 'mod4' (windows-key) + # xev might be helpful to find names for keys + + # close notification + close = mod4+m + + # close all notifications + close_all = mod4+shift+m + + # redisplay last message(s) + history = mod4+n + + # context menu + context = mod4+shift+i + +[urgency_low] + # IMPORTANT: colors have to be defined in quotation marks. + # Otherwise the '#' and following would be interpreted as a comment. + background = "#222222" + foreground = "#888888" + timeout = 10 + +[urgency_normal] + background = "#0088CC" + foreground = "#ffffff" + timeout = 10 + +[urgency_critical] + background = "#900000" + foreground = "#ffffff" + timeout = 0 + + +# Every section that isn't one of the above is interpreted as a rules +# to override settings for certain messages. +# Messages can be matched by 'appname', 'summary', 'body' or 'icon' +# and you can override the 'timeout', 'urgency', 'foreground', 'background' +# and 'format'. +# Shell-like globbing will get expanded. +# +# SCRIPTING +# you can specify a script that gets run when the rule matches by setting +# the 'script' option. +# The script will be called as follows: +# script appname summary body icon urgency +# where urgency can be "LOW", "NORMAL" or "CRITICAL". +# +# NOTE: if you don't want a notification to be displayed, set the format to "" +# NOTE: It might be helpful to run dunst -print in a terminal in order to find +# fitting options for rules. + +#[espeak] +# summary = "*" +# script = dunst_espeak.sh + +#[script-test] +# summary = "*script*" +# script = dunst_test.sh + +#[ignore] +## This notification will not be displayed +# summary = "foobar" +# format = "" diff --git a/pkg/entries.dsv.skel b/pkg/entries.dsv.skel new file mode 100644 index 0000000..147db5d --- /dev/null +++ b/pkg/entries.dsv.skel @@ -0,0 +1,15 @@ +#Calculator;/usr/share/xlunch/icons/numix/calc.png;/usr/bin/application-wrapper calculator +#Calendar;/usr/share/xlunch/icons/numix/calendar-black-31.png;/usr/bin/application-wrapper calendar +#Camera;/usr/share/xlunch/icons/numix/accessories-camera.png;/usr/bin/application-wrapper camera +#Email;/usr/share/xlunch/icons/numix/internet-mail.png;/usr/bin/application-wrapper email +#Files;/usr/share/xlunch/icons/numix/file-manager.png;/usr/bin/application-wrapper files +#Games;/usr/share/xlunch/icons/numix/gnome-arcade.png;/usr/bin/application-wrapper games +#Media Player;/usr/share/xlunch/icons/numix/vlc.png;/usr/bin/application-wrapper media_player +#Office;/usr/share/xlunch/icons/numix/libreoffice-writer.png;/usr/bin/application-wrapper office +#Web;/usr/share/xlunch/icons/numix/web-browser.png;/usr/bin/application-wrapper web +Settings;/usr/share/xlunch/icons/numix/preferences-system.png;/usr/bin/application-wrapper settings +#Magnifier;/usr/share/xlunch/icons/numix/search.png;/usr/bin/application-wrapper magnifier +#Screenshot;/usr/share/xlunch/icons/numix/accessories-screenshot.png;/usr/bin/application-wrapper screenshot +#Lock;/usr/share/xlunch/themes/color_circle/icons/lock.png;/usr/bin/application-wrapper lock +#Sleep;/usr/share/xlunch/themes/color_circle/icons/suspend.png;/usr/bin/application-wrapper sleep +Turn Off;/usr/share/xlunch/themes/color_circle/icons/shutdown.png;/usr/bin/application-wrapper turn_off diff --git a/pkg/grub b/pkg/grub new file mode 100644 index 0000000..0eb0418 --- /dev/null +++ b/pkg/grub @@ -0,0 +1,55 @@ +# GRUB boot loader configuration + +GRUB_DEFAULT=0 +GRUB_TIMEOUT=0 +GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT +GRUB_DISTRIBUTOR="monocleOS" +GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root=/dev/monocleOS/System vt.global_cursor_default=0 loglevel=3 rd.systemd.show_status=auto rd.udev.log_priority=3 apparmor=1 lsm=lockdown,yama,apparmor KPARAMS_PLACEHOLDER" +GRUB_CMDLINE_LINUX="" + +# Preload both GPT and MBR modules so that they are not missed +GRUB_PRELOAD_MODULES="part_gpt part_msdos" + +# Uncomment to enable booting from LUKS encrypted devices +#GRUB_ENABLE_CRYPTODISK=y + +# Uncomment to enable Hidden Menu, and optionally hide the timeout count +#GRUB_HIDDEN_TIMEOUT=0 +#GRUB_HIDDEN_TIMEOUT_QUIET=true + +# Uncomment to use basic console +GRUB_TERMINAL_INPUT=console + +# Uncomment to disable graphical terminal +#GRUB_TERMINAL_OUTPUT=console + +# The resolution used on graphical terminal +# note that you can use only modes which your graphic card supports via VBE +# you can see them in real GRUB with the command `vbeinfo' +GRUB_GFXMODE=auto + +# Uncomment to allow the kernel use the same resolution used by grub +GRUB_GFXPAYLOAD_LINUX=keep + +# Uncomment if you want GRUB to pass to the Linux kernel the old parameter +# format "root=/dev/xxx" instead of "root=/dev/disk/by-uuid/xxx" +#GRUB_DISABLE_LINUX_UUID=true + +# Uncomment to disable generation of recovery mode menu entries +GRUB_DISABLE_RECOVERY=true + +# Uncomment and set to the desired menu colors. Used by normal and wallpaper +# modes only. Entries specified as foreground/background. +#GRUB_COLOR_NORMAL="light-blue/black" +#GRUB_COLOR_HIGHLIGHT="light-cyan/blue" + +# Uncomment one of them for the gfx desired, a image background or a gfxtheme +#GRUB_BACKGROUND="/path/to/wallpaper" +#GRUB_THEME="/path/to/gfxtheme" + +# Uncomment to get a beep at GRUB start +#GRUB_INIT_TUNE="480 440 1" + +# Uncomment to make GRUB remember the last selection. This requires to +# set 'GRUB_DEFAULT=saved' above. +#GRUB_SAVEDEFAULT="true" diff --git a/pkg/grubUpgrade.hook b/pkg/grubUpgrade.hook new file mode 100644 index 0000000..2e9c225 --- /dev/null +++ b/pkg/grubUpgrade.hook @@ -0,0 +1,10 @@ +[Trigger] +Operation = Upgrade +Type = Package +Target = grub + +[Action] +Description = Updating GRUB Bootloader +When = PostTransaction +Depends = grub +Exec = /bin/sh -c "/usr/bin/update --grub" diff --git a/pkg/gtkSettings.ini b/pkg/gtkSettings.ini new file mode 100644 index 0000000..83546d0 --- /dev/null +++ b/pkg/gtkSettings.ini @@ -0,0 +1,17 @@ +[Settings] +gtk-theme-name=Arc-Dark +gtk-icon-theme-name=Arc +gtk-font-name=Cantarell 11 +gtk-cursor-theme-name=Breeze +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle=hintfull +gtk-xft-rgba=none +gtk-decoration-layout=menu diff --git a/pkg/gtkrc b/pkg/gtkrc new file mode 100644 index 0000000..38297ce --- /dev/null +++ b/pkg/gtkrc @@ -0,0 +1,15 @@ +gtk-theme-name="Arc-Dark" +gtk-icon-theme-name="Arc" +gtk-font-name="Cantarell 11" +gtk-cursor-theme-name="Breeze" +gtk-cursor-theme-size=0 +gtk-toolbar-style=GTK_TOOLBAR_BOTH_HORIZ +gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR +gtk-button-images=1 +gtk-menu-images=1 +gtk-enable-event-sounds=1 +gtk-enable-input-feedback-sounds=1 +gtk-xft-antialias=1 +gtk-xft-hinting=1 +gtk-xft-hintstyle="hintfull" +gtk-xft-rgba="none" diff --git a/pkg/i3.conf b/pkg/i3.conf new file mode 100644 index 0000000..285e235 --- /dev/null +++ b/pkg/i3.conf @@ -0,0 +1,207 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:DejaVu Sans 12 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +#bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +#set $ws1 "1" +#set $ws2 "2" +#set $ws3 "3" +#set $ws4 "4" +#set $ws5 "5" +#set $ws6 "6" +#set $ws7 "7" +#set $ws8 "8" +#set $ws9 "9" +#set $ws10 "10" + +# switch to workspace +#bindsym $mod+1 workspace $ws1 +#bindsym $mod+2 workspace $ws2 +#bindsym $mod+3 workspace $ws3 +#bindsym $mod+4 workspace $ws4 +#bindsym $mod+5 workspace $ws5 +#bindsym $mod+6 workspace $ws6 +#bindsym $mod+7 workspace $ws7 +#bindsym $mod+8 workspace $ws8 +#bindsym $mod+9 workspace $ws9 +#bindsym $mod+0 workspace $ws10 + +# move focused container to workspace +#bindsym $mod+Shift+1 move container to workspace $ws1 +#bindsym $mod+Shift+2 move container to workspace $ws2 +#bindsym $mod+Shift+3 move container to workspace $ws3 +#bindsym $mod+Shift+4 move container to workspace $ws4 +#bindsym $mod+Shift+5 move container to workspace $ws5 +#bindsym $mod+Shift+6 move container to workspace $ws6 +#bindsym $mod+Shift+7 move container to workspace $ws7 +#bindsym $mod+Shift+8 move container to workspace $ws8 +#bindsym $mod+Shift+9 move container to workspace $ws9 +#bindsym $mod+Shift+0 move container to workspace $ws10 + +# reload the configuration file +#bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +#bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'" + +# resize window (you can also use the mouse for that) +#mode "resize" { +# # These bindings trigger as soon as you enter the resize mode +# +# # Pressing left will shrink the window’s width. +# # Pressing right will grow the window’s width. +# # Pressing up will shrink the window’s height. +# # Pressing down will grow the window’s height. +# bindsym j resize shrink width 10 px or 10 ppt +# bindsym k resize grow height 10 px or 10 ppt +# bindsym l resize shrink height 10 px or 10 ppt +# bindsym semicolon resize grow width 10 px or 10 ppt +# +# # same bindings, but for the arrow keys +# bindsym Left resize shrink width 10 px or 10 ppt +# bindsym Down resize grow height 10 px or 10 ppt +# bindsym Up resize shrink height 10 px or 10 ppt +# bindsym Right resize grow width 10 px or 10 ppt +# +# # back to normal: Enter or Escape or $mod+r +# bindsym Return mode "default" +# bindsym Escape mode "default" +# bindsym $mod+r mode "default" +#} + +#bindsym $mod+r mode "resize" + +## Keybinds +## XF86 +# Power +bindsym XF86Standby exec /usr/bin/application-wrapper sleep +bindsym XF86Sleep exec /usr/bin/application-wrapper sleep +bindsym XF86Lock exec /usr/bin/application-wrapper lock +bindsym $mod+l exec /usr/bin/application-wrapper lock + +# Volume controls +bindsym XF86AudioRaiseVolume exec --no-startup-id amixer set Master 5%+ +bindsym XF86AudioLowerVolume exec --no-startup-id amixer set Master 5%- +bindsym XF86AudioMute exec --no-startup-id amixer set Master toggle + +## PulseAudio Alternatives - Allows volumes over 100% +#pactl set-sink-volume 0 +5% +#pactl set-sink-volume 0 -5% +#pactl set-sink-mute 0 toggle + +# Screen brightness controls +bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness +bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness + +# Touchpad controls +bindsym XF86TouchpadToggle exec /usr/bin/toggleTouchpad.sh # toggle touchpad + +# Media player controls +bindsym XF86AudioPlay exec playerctl play +bindsym XF86AudioPause exec playerctl pause +bindsym XF86AudioNext exec playerctl next +bindsym XF86AudioPrev exec playerctl previous + +# Applications +bindsym XF86Calculator exec /usr/bin/application-wrapper calculator +bindsym XF86HomePage exec /usr/bin/application-wrapper web +bindsym XF86Mail exec /usr/bin/application-wrapper email + +# UI +bindsym $mod+Escape kill +bindsym --release button3 kill +bindsym $mod+Shift+Escape exec /usr/bin/monocleOS --close +bindsym --release $mod+Return exec /usr/bin/monocleOS --launcherMenu +bindsym $mod+Delete exec /usr/bin/monocleOS --taskMgr +bindsym --release Print exec /usr/bin/application-wrapper screenshot +bindsym $mod+K exec /usr/bin/application-wrapper osk +bindsym $mod+M exec /usr/bin/application-wrapper magnifier + +## Colours +client.focused #0088CC #0088CC #FFFFFF #DDDDDD +client.focused_inactive #333333 #333333 #888888 #292D2E +client.unfocused #333333 #333333 #888888 #292D2E +client.urgent #2F343A #900000 #FFFFFF #900000 + +## Settings ## +## Windows +for_window [title="Calculator"] floating enable +for_window [title="monocleOS Menu"] floating enable +for_window [title="xzoom*"] floating enable; border pixel 2; focus +## UI +title_align center +workspace_layout tabbed +default_border none +default_floating_border normal +hide_edge_borders both +floating_minimum_size 0 x 0 +floating_maximum_size 800 x 600 +focus_follows_mouse no + +## Polybar +exec_always --no-startup-id /usr/bin/polybar.sh +## Launcher +exec /usr/bin/monocleOS --launcher diff --git a/pkg/icons.default b/pkg/icons.default new file mode 100644 index 0000000..1a0c2dd --- /dev/null +++ b/pkg/icons.default @@ -0,0 +1,4 @@ +[Icon Theme] +Name=Default +Comment=Default Cursor Theme +Inherits=Breeze diff --git a/pkg/initMonocle b/pkg/initMonocle new file mode 100755 index 0000000..ab28199 --- /dev/null +++ b/pkg/initMonocle @@ -0,0 +1,108 @@ +#!/bin/bash + +# initMonocle - executed on first boot to configure basic system +# Copyright (C) 2020 Zack Didcott + +# 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 . + +if [ ! -e /home/$1/.firstBoot ]; then + zenity --width 200 --error --title="Exiting..." --text="This program should only be run on the first boot." + exit 1 +elif [ ! "$(id -u)" -eq 0 ]; then + zenity --width 200 --error --title="Exiting..." --text="This program must be run as root." + exit 1 +elif [ ! -e /priv/defaultKey.bin ]; then + zenity --width 200 --error --title="Exiting..." --text="Key does not exist or access denied." + exit 1 +fi + +source /etc/monocleOS.env + +region="Europe" +city="London" +locale="en_GB.UTF-8" +vconsole="uk" +xkeymap="gb" +paperSize="a4" +password="" +confirmPW="" + +( +echo "10"; sleep 5 +echo "# Setting the time..."; ln -sf /usr/share/zoneinfo/$region/$city /etc/localtime +echo "20"; sleep 1 +echo "# Setting the time..."; hwclock --systohc +echo "30"; sleep 1 +echo "# Setting language..."; sed -i '/'$locale'/s/^#//g' /etc/locale.gen +echo "40"; sleep 1 +echo "# Setting language..."; locale-gen +echo "60"; sleep 1 +echo "# Setting language..."; echo "LANG=$locale" > /etc/locale.conf +echo "70"; sleep 1 +echo "# Setting up keyboard..."; echo "KEYMAP=$vconsole" > /etc/vconsole.conf +echo "80"; sleep 1 +echo "# Setting up keyboard..."; localectl set-x11-keymap $xkeymap +echo "90"; sleep 1 +echo "# Setting up printers..."; echo "$paperSize" > /etc/papersize +echo "100"; sleep 1 +) | zenity --width 200 --progress --title="Setting up your PC" --text="We're just getting a few things ready for you..." --percentage=0 --auto-close --no-cancel + +while [[ "$password" != "$confirmPW" ]] || [[ "$password" == "" ]]; do + password="" + password=`zenity --password --title="Create a Password"` + confirmPW=`zenity --password --title="Confirm Your Password"` + if [[ "$password" != "$confirmPW" ]]; then + zenity --width 200 --error --title="Creating Password Failed" --text="Passwords do not match. Please try again." + elif [[ "$password" == "" ]]; then + zenity --width 200 --error --title="Creating Password Failed" --text="Password cannot be empty. Please try again." + fi +done + +( +echo "10"; sleep 1 +echo "# Adding password..." +echo "$1:$password" | chpasswd || { zenity --width 200 --error --title="Adding Password Failed" --text="Unable to add password."; exit 1; } +# Assuming password change worked +echo -e "$password" | cryptsetup luksChangeKey -q /dev/disk/by-uuid/$luksUUID --key-file=/priv/defaultKey.bin --key-slot 0 || { zenity --width 200 --error --title="Something Unexpected Happened" --text="Something went wrong. Do NOT poweroff your PC.\nPlease contact your system administrator."; exit 1; } +echo "30"; sleep 1 +echo "# Adding password..."; echo "monocleOS UUID=$luksUUID none luks" > /etc/crypttab.initramfs +echo "45"; sleep 1 +echo "# Adding password..."; sed -i '/FILES/d' /etc/mkinitcpio.conf +echo "60"; sleep 1 +echo "# Almost done..."; mkinitcpio -P || { zenity --width 200 --error --title="Something Unexpected Happened" --text="Something went wrong. Do NOT poweroff your PC.\nPlease contact your system administrator."; exit 1; } +echo "85"; sleep 1 +echo "# Finished."; shred -u /priv/defaultKey.bin +echo "100"; sleep 1 +zenity --width 200 --info --title="Password Updated" --text="Password Added Successfully." +) | zenity --width 200 --progress --title="Adding Your New Password" --text="Please wait..." --percentage=0 --auto-close --no-cancel + +zenity --width 200 --question --title="Create a Recovery Key" --text "Would you like to create a recovery key, in case you forget your password?\nIt is recommended to do this." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 +if [ $? = 0 ]; then + recvKey="`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`" # Use "tr -dc '[:graph:]'" for all printable characters, not including space + ( + echo "25"; sleep 1 + echo "# Adding recovery key..."; echo -e "$password" | cryptsetup luksKillSlot /dev/disk/by-uuid/$luksUUID 1 # This should fail, but just in case - don't tell user + echo "50"; sleep 1 + echo "# Adding recovery key..."; echo -e "$password\n$recvKey" | cryptsetup luksAddKey -q /dev/disk/by-uuid/$luksUUID --key-slot 1 || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "60"; sleep 1 + echo "# Adding recovery key..."; echo -e "recovery:$recvKey" | chpasswd || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "75"; sleep 1 + echo "# Saving recovery key..."; echo -e "Date: `date +'%d/%m/%y %H:%M:%S'`\nYour monocleOS recovery key for $HOSTNAME is:\n\n\t$recvKey\n\nPrint this document and keep it in a safe place." > /home/$1/Recovery_Key_${HOSTNAME}_`date +'%d%m%y%H%M%S'`.txt || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Recovery Key Added" --text="Success! The key is stored in your files. Please print this document and keep it in a safe place." + ) | zenity --width 200 --progress --title="Creating Recovery Key" --text="Please wait..." --percentage=0 --auto-close --no-cancel +fi + +rm /home/$1/.firstBoot +sed -i '/initMonocle/d' /etc/sudoers.d/monocleOS; visudo -cf /etc/sudoers.d/monocleOS || rm /etc/sudoers.d/monocleOS # Disallow this script from being executed by user again diff --git a/pkg/launcher.conf b/pkg/launcher.conf new file mode 100644 index 0000000..c7a2b49 --- /dev/null +++ b/pkg/launcher.conf @@ -0,0 +1,5 @@ +gridIconSize=64 +gridVPadding=30 +gridFontSize=12 +menuBG=#0088CCCC +statusbar=compact diff --git a/pkg/mirrorUpgrade.hook b/pkg/mirrorUpgrade.hook new file mode 100644 index 0000000..e2706e6 --- /dev/null +++ b/pkg/mirrorUpgrade.hook @@ -0,0 +1,10 @@ +[Trigger] +Operation = Upgrade +Type = Package +Target = pacman-mirrorlist + +[Action] +Description = Updating pacman-mirrorlist with reflector and removing pacnew... +When = PostTransaction +Depends = reflector +Exec = /bin/sh -c "/usr/bin/update --mirrorlist" diff --git a/pkg/monocleOS b/pkg/monocleOS new file mode 100755 index 0000000..20c2488 --- /dev/null +++ b/pkg/monocleOS @@ -0,0 +1,1162 @@ +#!/bin/bash + +# monocleOS +# Copyright (C) 2020 Zack Didcott + +# 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 . + +source /etc/monocleOS.env + +function funcClose { + kill=9 + + zenity --width 200 --question --title="Close Applcation" --text "Do you want to forcefully close this application?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + #xkill -id `xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2` # xprop returns id of active window, xkill terminates it - this solution is equivalent to SIGKILL + pid=`xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d\# -f2) | grep '_NET_WM_PID' | grep -oE '[[:digit:]]*$'` # xprop returns id of active window, is passed to xprop to get PID... then grep'd + kill -$kill $pid + else + exit + fi +} + +function funcCloseAll { + zenity --width 200 --question --title="Close All Applcations" --text "Do you want to exit all applications?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + #xdotool search "" windowkill %@ # Kills ALL xorg child processes, including i3 + i3-msg '[class=".*"] kill' + else + exit + fi +} + +# NOT IMPLEMENTED YET! Function to keep all error messages uniformed and relative to an error code. Pass to function with funcError [error]. +#function funcError { +# case "$1" in +# 021357) +# zenity --width=200 --error --title="" --text="Error code: $1" +# ;; +# *) +# echo $"Usage: $0 {Error}" +# exit 1 +# esac +#} + +function funcFreeSpaceCheck { + if [[ $1 = 'System' ]]; then + free=$(df -B 1073741824 /dev/mapper/monocleOS-System | tail -1 | awk '{print $4}' | sed 's/[A-Za-z]*//g') + if [[ $free -lt 5 ]]; then echo "is running low on system storage. Automatic updates may fail. Please contact your system administrator."; fi + elif [[ $1 = 'Home' ]]; then + free=$(df -B 1073741824 /dev/mapper/monocleOS-Home | tail -1 | awk '{print $4}' | sed 's/[A-Za-z]*//g') + if [[ $free -lt 5 ]]; then echo "is running low on user storage. You may need to delete or move some files soon." + else echo "has ${free}GiB of storage left."; fi + fi +} + +function funcGames { + # https://wiki.archlinux.org/index.php/List_of_games + selection=`zenity --height=250 --title "Games" --list --column "Select a Game" "Cards" "Chess" "Four in a Row" "Mahjongg" "Mines" "Quadrapassel" "Reversi" "Sudoku"` || exit + if [[ $selection = "Cards" ]]; then exec /usr/bin/application-wrapper cards + elif [[ $selection = "Chess" ]]; then exec /usr/bin/application-wrapper chess + elif [[ $selection = "Four in a Row" ]]; then exec /usr/bin/application-wrapper four_in_a_row + elif [[ $selection = "Mahjongg" ]]; then exec /usr/bin/application-wrapper mahjongg + elif [[ $selection = "Mines" ]]; then exec /usr/bin/application-wrapper mines + elif [[ $selection = "Quadrapassel" ]]; then exec /usr/bin/application-wrapper quadrapassel + elif [[ $selection = "Reversi" ]]; then exec /usr/bin/application-wrapper reversi + elif [[ $selection = "Sudoku" ]]; then exec /usr/bin/application-wrapper sudoku + else zenity --width=200 --error --title="Error" --text="Something went wrong." + fi +} + +function funcIcon { + configSkel='/etc/xlunch/entries.dsv.skel' + configDir='/home/'$USER'/.config/xlunch/' + configFile='entries.dsv' + + declare -a appName=('Calculator' 'Calendar' 'Camera' 'Email' 'Files' 'Games' 'Media Player' 'Office' 'Web' 'Magnifier' 'Screenshot' 'Sleep' 'Lock') + declare -a appStatus=(TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE) + + # To Do: Find current status by reading from file + selection=`zenity --height=350 --width=300 --list --text "Which applications should be displayed?" --checklist --column "Select" --column "Application" ${appStatus[0]} "${appName[0]}" ${appStatus[1]} "${appName[1]}" ${appStatus[2]} "${appName[2]}" ${appStatus[3]} "${appName[3]}" ${appStatus[4]} "${appName[4]}" ${appStatus[5]} "${appName[5]}" ${appStatus[6]} "${appName[6]}" ${appStatus[7]} "${appName[7]}" ${appStatus[8]} "${appName[8]}" ${appStatus[9]} "${appName[9]}" ${appStatus[10]} "${appName[10]}" ${appStatus[11]} "${appName[11]}" ${appStatus[12]} "${appName[12]}" --separator=":"` + + if [ $? = 0 ]; then + [[ -d $configDir ]] || mkdir $configDir # Mkdir if not already exist + rm /home/$USER/Desktop/*.desktop + cp $configSkel $configDir$configFile + while IFS=':' read -ra APP; do # Parse each line with separator and create array + for i in "${APP[@]}"; do # Parse array into $i + # Write to entries.dsv + # sed -i '//s/^/#/g' file # To comment + sed -i "/$i/s/^#//g" $configDir$configFile + desktopFile=`find /usr/share/desktop -type f -iname "$i.desktop" -print0` + if [[ -e "$desktopFile" ]]; then cp "$desktopFile" /home/$USER/Desktop/; fi + done + done <<< "$selection" + #pkill x # logout wouldn't work as not login shell. NOTE: this isn't graceful + pkill xlunch + monocleOS --launcher & + exit + else + exit + fi +} + +function funcInternetCheck { + if ping -q -c 1 -W 1 1.1.1.1 >/dev/null 2>&1; then + zenity --width 200 --info --title="Connecting to the Internet..." --text="You are successfully connected to the internet." + else + zenity --width 200 --question --title="Connecting to the Internet..." --text "Cannot connect to the internet.\nWould you like to set up a WiFi connection?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then monocleOS --wifi; fi + fi +} + +function funcInternetCheckNoX { + if ping -q -c 1 -W 1 1.1.1.1 >/dev/null 2>&1; then + if [[ $1 = 'label' ]]; then echo  Online + else echo ; fi + else + if [[ $1 = 'label' ]]; then echo  Offline + else echo ; fi + fi +} + +# Padding values in launchers are adjusted to fit most screens +function funcLauncher { + if [[ -e /home/$USER/.firstBoot ]]; then + ## gsettings + # gnome-screensaver + gsettings set org.gnome.desktop.screensaver picture-uri file:///home/user/.wallpaper.png + # onboard + gsettings set org.gnome.desktop.interface toolkit-accessibility true + gsettings set org.onboard layout '/usr/share/onboard/layouts/Compact.onboard' + gsettings set org.onboard theme '/usr/share/onboard/themes/monocleOS.theme' + gsettings set org.onboard show-status-icon false + gsettings set org.onboard.auto-show enabled true + gsettings set org.onboard snippets '[]' + gsettings set org.onboard.typing-assistance auto-capitalization true + gsettings set org.onboard.typing-assistance.word-suggestions enabled true + gsettings set org.onboard.window docking-enabled true + # Setup system + sudo /usr/bin/initMonocle $USER + /usr/bin/monocleOS --internetCheck + while [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; do + /usr/bin/monocleOS --icon + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Selecting Programs Failed" --text="You must select your desired programs and click OK. Please try again." + fi + done + /usr/bin/polybar.sh + notify-send -u normal -t 10000 -a "monocleOS Setup" "All done! Your PC is ready to use. " + exit # monocleOS --icon restarts launcher, so we can just quit here + elif [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Cannot Start Launcher" --text="Please select your desired programs and click OK." + while [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; do + /usr/bin/monocleOS --icon + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Selecting Programs Failed" --text="You must select your desired programs and click OK. Please try again." + fi + done + else + if [[ ! -f /home/$USER/.config/monocleOS/launcher.conf ]]; then + # Defaults + gridIconSize=64 + gridVPadding=30 + gridFontSize=12 + else + # User Preferences + source /home/$USER/.config/monocleOS/launcher.conf + fi + nohup xlunch --input /home/$USER/.config/xlunch/entries.dsv \ + --noprompt \ + --background "/home/$USER/.wallpaper.png" \ + --iconpadding 40 \ + --iconvpadding $gridVPadding \ + --textpadding 10 \ + --iconsize $gridIconSize \ + --columns 5 \ + --leastmargin 0 \ + --hidemissing \ + --highlight /usr/share/xlunch/icons/base/xlunch_highlight.png \ + --font "/usr/share/fonts/TTF/DejaVuSans.ttf/$gridFontSize" \ + --multiple \ + --dontquit \ + --desktop & + # --button '/usr/share/xlunch/icons/categories/20x20/all.png;/usr/share/xlunch/icons/categories/20x20/all.png;15,45;/usr/bin/monocleOS --launcherSearch' + fi +} + +function funcLauncherSearch { + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Cannot Start Launcher" --text="Please select your desired programs and click OK." + while [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; do + /usr/bin/monocleOS --icon + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Selecting Programs Failed" --text="You must select your desired programs and click OK. Please try again." + fi + done + else + xlunch --input /home/$USER/.config/xlunch/entries.dsv \ + --prompt "Search: " \ + --windowed \ + --selectonly \ + --textafter \ + --background "/home/$USER/.wallpaper.png" \ + --iconpadding 10 \ + --iconvpadding 5 \ + --textpadding 10 \ + --leastmargin 20 \ + --iconsize 48 \ + --columns 2 \ + --hidemissing \ + --font "/usr/share/fonts/TTF/DejaVuSans.ttf/14" \ + --button '/usr/share/xlunch/icons/categories/20x20/others.png;/usr/share/xlunch/icons/categories/20x20/others.png;15,15;true' + fi +} + +function funcLauncherMenu { + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Cannot Start Launcher" --text="Please select your desired programs and click OK." + while [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; do + /usr/bin/monocleOS --icon + if [[ ! -f /home/$USER/.config/xlunch/entries.dsv ]]; then + zenity --width 200 --error --title="Selecting Programs Failed" --text="You must select your desired programs and click OK. Please try again." + fi + done + else + if [[ ! -f /home/$USER/.config/monocleOS/launcher.conf ]]; then + # Defaults + menuBG=#0088CCCC + else + # User Preferences + source /home/$USER/.config/monocleOS/launcher.conf + fi + menuBG="${menuBG//\#}" # xlunch doesn't want # passed to it + xlunch_menu --input /home/$USER/.config/xlunch/entries.dsv \ + --prompt "Search: " \ + --windowed \ + -x 0 -y 30 \ + --width 600 \ + --height 800 \ + --selectonly \ + --textafter \ + --backgroundcolor $menuBG \ + --iconpadding 10 \ + --iconvpadding 5 \ + --textpadding 10 \ + --leastmargin 20 \ + --iconsize 48 \ + --columns 2 \ + --hidemissing \ + --focuslostterminate \ + --font "/usr/share/fonts/TTF/DejaVuSans.ttf/14" + fi +} + +function funcLock { + # This is configured on firstBoot # + # gsettings set org.gnome.desktop.screensaver picture-uri file:///home/user/.wallpaper.png + gnome-screensaver-command -l +} + +function funcMagnifier { + /usr/bin/xzoom -geometry 200x200+5+35 -mag 2 + #zenity --width 300 --info --title="Magnifier" --text="To use the screen magnifier, hold the left mouse button over the magnifier and drag your mouse around the screen. To close the magnifier, click on its window and exit as normal." +} + +function funcPassword { + getPW=1 + #cryptsetup isLuks $dev && echo "$dev is a LUKS Device" || echo "$dev is not a LUKS Device" # Needs root + + #export SUDO_ASKPASS="/usr/bin/askPass" + #sudo -A # Use to gain sudo access, and check current password + + while [[ $getPW = 1 ]]; do + currentPW=`zenity --password --title="Enter Current Password"` || exit + echo -e $currentPW | sudo -S true # Verify password with sudo + if [ $? != 0 ]; then + zenity --width 200 --error --title="Authentication Error" --text="Incorrect Password. Please Try Again." + else + getPW=0 + fi + done + + while [[ "$newPW" != "$confirmPW" ]] || [[ "$newPW" == "" ]]; do + newPW="" + newPW=`zenity --password --title="Enter New Password"` || exit + confirmPW=`zenity --password --title="Confirm New Password"` || exit + if [[ "$newPW" != "$confirmPW" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Passwords do not match. Please try again." + elif [[ "$newPW" == "" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Password cannot be empty. Please try again." + elif [[ "$currentPW" == "$newPW" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Password Unchanged." + exit 1 + fi + done + + ( + echo -e $currentPW | sudo -Sv # Regain sudo access for subshell in case not run from tty + echo "33"; sleep 1 + echo "# Changing password..." + echo -e "$currentPW\n$newPW\n$confirmPW" | passwd $USER || { zenity --width 200 --error --title="Changing Password Failed" --text="Unable to change password."; exit 1; } # NOTE: https://stackoverflow.com/questions/3667432/storing-sudo-password-as-variable-in-script-is-it-safe/3667479#3667479 + echo "66"; sleep 1 + echo "# Changing password..." + # Assuming password change worked + echo -e "$currentPW\n$newPW\n$confirmPW" | sudo cryptsetup luksChangeKey /dev/disk/by-uuid/$luksUUID --key-slot 0 || { zenity --width 200 --error --title="Something Unexpected Happened" --text="Something went wrong. Do NOT poweroff your PC.\nPlease contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Password Updated" --text="Password Changed Successfully." + ) | zenity --width 200 --progress --title="Changing Password" --text="Please wait..." --percentage=0 --auto-close --no-cancel +} + +function funcPoweroff { + if pgrep update > /dev/null; then + zenity --width 250 --question --title="System Updating..." --text "Your PC is currently updating... Would you like your PC to automatically power off when finished?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + while pgrep update > /dev/null; do + sleep 30 + done + ( + echo "0"; sleep 1 + echo "# Turning off in 9 seconds..." + echo "10"; sleep 1 + echo "# Turning off in 8 seconds..." + echo "20"; sleep 1 + echo "# Turning off in 7 seconds..." + echo "30"; sleep 1 + echo "# Turning off in 6 seconds..." + echo "40"; sleep 1 + echo "# Turning off in 5 seconds..." + echo "50"; sleep 1 + echo "# Turning off in 4 seconds..." + echo "60"; sleep 1 + echo "# Turning off in 3 seconds..." + echo "70"; sleep 1 + echo "# Turning off in 2 seconds..." + echo "80"; sleep 1 + echo "# Turning off in 1 second..." + echo "90"; sleep 1 + echo "# Turning off your PC..."; systemctl poweroff + echo "100"; sleep 1 + ) | zenity --width 300 --progress --title="Click Cancel to Continue Using your PC" --text="Turning off in 10 seconds..." --percentage=0 --auto-close || exit + else + exit + fi + else + systemctl poweroff + fi +} + +function funcReboot { + if pgrep update > /dev/null; then + zenity --width 250 --question --title="System Updating..." --text "Your PC is currently updating... Would you like your PC to automatically reboot when finished?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + while pgrep update > /dev/null; do + sleep 30 + done + ( + echo "0"; sleep 1 + echo "# Rebooting in 9 seconds..." + echo "10"; sleep 1 + echo "# Rebooting in 8 seconds..." + echo "20"; sleep 1 + echo "# Rebooting in 7 seconds..." + echo "30"; sleep 1 + echo "# Rebooting in 6 seconds..." + echo "40"; sleep 1 + echo "# Rebooting in 5 seconds..." + echo "50"; sleep 1 + echo "# Rebooting in 4 seconds..." + echo "60"; sleep 1 + echo "# Rebooting in 3 seconds..." + echo "70"; sleep 1 + echo "# Rebooting in 2 seconds..." + echo "80"; sleep 1 + echo "# Rebooting in 1 second..." + echo "90"; sleep 1 + echo "# Rebooting your PC..."; systemctl reboot + echo "100"; sleep 1 + ) | zenity --width 300 --progress --title="Click Cancel to Continue Using your PC" --text="Rebooting in 10 seconds..." --percentage=0 --auto-close || exit + else + exit + fi + else + systemctl reboot + fi +} + +function funcRecovery { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=250 --title "Recovery Settings" --list --column "Option" "Create a Recovery Key" "Forgot my Password" "Reinstall System" "Perform a Factory Reset" "Manually Update monocleOS"` || funcSettingsAdvanced + if [[ $selection = "Create a Recovery Key" ]]; then funcRecoveryKey + elif [[ $selection = "Forgot my Password" ]]; then funcRecoveryPassword + elif [[ $selection = "Reinstall System" ]]; then funcRecoveryInstall + elif [[ $selection = "Perform a Factory Reset" ]]; then funcRecoveryFactory + elif [[ $selection = "Manually Update monocleOS" ]]; then funcRecoveryUpdate + fi + done +} + +function funcRecoveryKey { + zenity --width 250 --question --title="Create a Recovery Key" --text "Would you like to create a recovery key, in case you forget your password?\nThis will make all previous recovery keys invalid." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + getPW=1 + while [[ $getPW = 1 ]]; do + currentPW=`zenity --password --title="Enter Current Password"` || exit + echo -e $currentPW | sudo -S true # Verify password with sudo + if [ $? != 0 ]; then + zenity --width 200 --error --title="Authentication Error" --text="Incorrect Password. Please Try Again." + else + getPW=0 + fi + done + recvKey="`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`" # Use "tr -dc '[:graph:]'" for all printable characters, not including space + ( + echo -e $currentPW | sudo -Sv # Regain sudo access for subshell in case not run from tty + echo "25"; sleep 1 + echo "# Removing any existing recovery keys..."; echo -e "$currentPW" | sudo cryptsetup luksKillSlot /dev/disk/by-uuid/$luksUUID 1 # This may fail, but is not fatal + echo "50"; sleep 1 + echo "# Adding recovery key..."; echo -e "$currentPW\n$recvKey\n$recvKey" | sudo cryptsetup luksAddKey /dev/disk/by-uuid/$luksUUID --key-slot 1 || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "60"; sleep 1 + echo "# Adding recovery key..."; echo -e "$recvKey\n$recvKey" | sudo passwd recovery || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "75"; sleep 1 + echo "# Saving recovery key..."; echo -e "Date: `date +'%d/%m/%y %H:%M:%S'`\nYour monocleOS recovery key for $HOSTNAME is:\n\n\t$recvKey\n\nPrint this document and keep it in a safe place." > /home/$USER/Recovery_Key_${HOSTNAME}_`date +'%d%m%y%H%M%S'`.txt || { zenity --width 200 --error --title="Adding a Recovery Key Failed" --text="Unable to add a recovery key."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Recovery Key Added" --text="Success! The key is stored in your files. Please print this document and keep it in a safe place." + ) | zenity --width 200 --progress --title="Creating Recovery Key" --text="Please wait..." --percentage=0 --auto-close --no-cancel + else + exit + fi +} + +function funcRecoveryPassword { + username=$USER + zenity --width 200 --question --title="Reset Password" --text "Would you like to reset your password? You will need a recovery key to continue." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + getPW=1 + while [[ $getPW = 1 ]]; do + recvKey=`zenity --width 350 --entry --title "Enter Recovery Key" --text="Enter a recovery key"` || exit + echo -e $recvKey | sudo -Su recovery true # Verify password with sudo + if [ $? != 0 ]; then + zenity --width 200 --error --title="Authentication Error" --text="Incorrect Recovery Key. Please Try Again." + else + getPW=0 + fi + done + + while [[ "$newPW" != "$confirmPW" ]] || [[ "$newPW" == "" ]]; do + newPW="" + newPW=`zenity --password --title="Enter New Password"` || exit + confirmPW=`zenity --password --title="Confirm New Password"` || exit + if [[ "$newPW" != "$confirmPW" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Passwords do not match. Please try again." + elif [[ "$newPW" == "" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Password cannot be empty. Please try again." + elif [[ "$currentPW" == "$newPW" ]]; then + zenity --width 200 --error --title="Changing Password Failed" --text="Password Unchanged." + exit + fi + done + + ( + echo -e $recvKey | sudo -Svu recovery # Regain sudo access for subshell in case not run from tty + echo "25"; sleep 1 + echo "# Changing password..." + sudo -H -u recovery bash -c "echo "$username:$newPW" | sudo chpasswd " || { zenity --width 200 --error --title="Resetting Password Failed" --text="Unable to reset password."; exit 1; } + echo "50"; sleep 1 + echo "# Changing password..." + # Assuming password change worked + echo -e "$recvKey" | sudo -H -u recovery bash -c "sudo cryptsetup luksKillSlot /dev/disk/by-uuid/$luksUUID 0" || { zenity --width 200 --error --title="Something Unexpected Happened" --text="Something went wrong. Do NOT poweroff your PC.\nPlease contact your system administrator."; exit 1; } + echo "75"; sleep 1 + echo "# Changing password..." + echo -e "$recvKey\n$newPW\n$confirmPW" | sudo -H -u recovery bash -c "sudo cryptsetup luksAddKey /dev/disk/by-uuid/$luksUUID --key-slot 0" || { zenity --width 200 --error --title="Something Unexpected Happened" --text="Something went wrong. Do NOT poweroff your PC.\nPlease contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Password Reset" --text="Success! Your password has been changed." + ) | zenity --width 200 --progress --title="Resetting Password" --text="Please wait..." --percentage=0 --auto-close --no-cancel + else + exit + fi +} + +function funcRecoveryInstall { + /usr/bin/monocleOS --updateStop || exit + zenity --width 250 --question --title="Reinstall monocleOS" --text "Would you like to reinstall monocleOS? Your data will NOT be deleted.\nThis process can take an hour and cannot be cancelled." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + pkill xlunch; pkill polybar # Stop user launching any applications + i3-msg '[class=".*"] kill' + ( + echo "25"; sleep 10 + echo "# Reinstalling System Programs..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installBase || { zenity --width 200 --error --title="Reinstalling monocleOS Failed" --text="Something went wrong while reinstalling. Please contact your system administrator."; exit 1; } + echo "50"; sleep 1 + echo "# Extracting monocleOS..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installExtract || { zenity --width 200 --error --title="Reinstalling monocleOS Failed" --text="Something went wrong while reinstalling. Please contact your system administrator."; exit 1; } + echo "75"; sleep 1 + echo "# Reinstalling monocleOS..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installMonocle || { zenity --width 200 --error --title="Reinstalling monocleOS Failed" --text="Something went wrong while reinstalling. Please contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="monocleOS has been Reinstalled" --text="Success! monocleOS has been reinstalled. It is recommended to restart your PC now." + pkill x + ) | zenity --width 200 --progress --title="Reinstalling monocleOS" --text="This process may take up to an hour. Do NOT turn off your PC." --percentage=0 --auto-close --no-cancel + else + exit + fi +} + +function funcRecoveryFactory { + /usr/bin/monocleOS --updateStop || exit + zenity --width 300 --question --title="Overwrite Data?" --text "Would you like to securely overwrite your data, so that it is more difficult to recover? This can take a few hours depending on the size of your files. It is recommended to select 'Yes' if you are selling this device." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + overwrite=1 + etaMsg="This process may take a few hours." + else + overwrite=0 + etaMsg="This process will take approximately 5 minutes." + fi + + confirm=$(zenity --entry --title "Confirm Factory Reset" --text="Type 'YES' in capital letters to proceed. ALL USER DATA WILL BE DELETED.\n$etaMsg") || exit + if [[ $confirm != "YES" ]]; then + exit 1 + else + getPW=1 + while [[ $getPW = 1 ]]; do + currentPW=`zenity --password --title="Enter Current Password"` || exit + echo -e $currentPW | sudo -S true # Verify password with sudo + if [ $? != 0 ]; then + zenity --width 200 --error --title="Authentication Error" --text="Incorrect Password. Please Try Again." + else + getPW=0 + fi + done + pkill xlunch; pkill polybar # Stop user launching any applications + i3-msg '[class=".*"] kill' + ( + echo "10"; sleep 10 + echo "# Reinstalling monocleOS..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installExtract || { zenity --width 200 --error --title="Reinstalling monocleOS Failed" --text="Something went wrong while extracting. Please verify the integrity of the package."; exit 1; } + sudo -H -u recovery /usr/bin/monocleOS-recovery --installMonocle || { zenity --width 200 --error --title="Reinstalling monocleOS Failed" --text="Something went wrong while reinstalling. Please contact your system administrator."; exit 1; } + echo "30"; sleep 1 + echo "# Deleting user data..."; echo -e $currentPW | sudo -Sv # Regain sudo access for subshell in case not run from tty + # Doing it this way means the user's password is never sent as a parameter to an external command or visible in a file + dd if=/dev/urandom of=/tmp/luksKey.tmp bs=512 count=4 + echo -e "$currentPW" | sudo /usr/bin/cryptsetup luksChangeKey /dev/disk/by-uuid/$luksUUID --key-slot 0 /tmp/luksKey.tmp || { zenity --width 200 --error --title="Something Went Wrong" --text="There may be issues with your device. Please contact your system administrator."; exit 1; } + sudo /usr/bin/monocleOS-recovery --resetFormat $overwrite || { zenity --width 200 --error --title="Something Went Wrong" --text="There may be issues with your device. Please contact your system administrator."; exit 1; } + echo "50"; sleep 1 + echo "# Restoring default settings..."; echo -e $currentPW | sudo -Sv + sudo /usr/bin/monocleOS-recovery --resetDefaults || { zenity --width 200 --error --title="Something Went Wrong" --text="There may be issues with your device. Please contact your system administrator."; exit 1; } + echo "70"; sleep 1 + echo "# Resetting permissions"; echo -e $currentPW | sudo -Sv + sudo /usr/bin/monocleOS-recovery --resetPermissions || { zenity --width 200 --error --title="Something Went Wrong" --text="There may be issues with your device. Please contact your system administrator."; exit 1; } + echo "80"; sleep 1 + echo "# Removing password..."; echo -e $currentPW | sudo -Sv + sudo /usr/bin/monocleOS-recovery --resetPassword || { zenity --width 200 --error --title="Something Went Wrong" --text="There may be issues with your device. Please contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Factory Reset Complete" --text="Success! Your computer is like new! Press OK to shutdown your PC."; funcPoweroff + ) | zenity --width 200 --progress --title="Resetting your PC" --text="$etaMsg Do NOT turn off or unplug your device." --percentage=0 --auto-close --no-cancel + fi +} + +function funcRecoveryUpdate { + pkg="/tmp/monocleOS.tar.gz" + extractDir=`mktemp -d` + + /usr/bin/monocleOS --updateStop || exit + + pkgtar=`zenity --file-selection --title="Open Package File" --filename=$HOME/` || exit + + # Verify that supplied package is monocleOS + cd $extractDir + ( + echo "33" + echo "# Copying..."; cp $pkgtar $pkg; chmod 444 $pkg # Ensure recovery user has read access + echo "66" + echo "# Extracting..."; tar -xzf $pkg + echo "100" + ) | zenity --width 200 --progress --title="Verifying package..." --text="Please wait..." --percentage=0 --auto-close --no-cancel + if [[ ! -f PKGBUILD ]]; then + zenity --width 200 --error --title="Invalid Package" --text="The file provided did not contain a PKGBUILD. Exiting..." + cd; rm -rf $extractDir $pkg + exit 1 + elif ! grep -qw "pkgname=monocleos" PKGBUILD; then # Verify that PKGBUILD is for monocleOS + zenity --width 200 --error --title="Invalid Package" --text="This package is not for monocleOS. Please supply a correct package. Exiting..." + cd; rm -rf $extractDir $pkg + exit 1 + else + cd; rm -rf $extractDir + fi + + getPW=1 + while [[ $getPW = 1 ]]; do + recvKey=`zenity --width 350 --entry --title "Enter Recovery Key" --text="Enter a recovery key"` || exit # Ask for password to prevent copying of malicious package + echo -e $recvKey | sudo -Su recovery true # Verify password with sudo + if [ $? != 0 ]; then + zenity --width 200 --error --title="Authentication Error" --text="Incorrect Recovery Key. Please Try Again." + else + getPW=0 + fi + done + + pkill xlunch; pkill polybar # Stop user launching any applications + i3-msg '[class=".*"] kill' + ( + echo "25"; sleep 5 + echo "# Copying package files..."; echo -e $recvKey | sudo -Svu recovery # Regain sudo access for subshell in case not run from tty + sudo -H -u recovery /usr/bin/monocleOS-recovery --updateCopy $pkg || { zenity --width 200 --error --title="Updating monocleOS Failed" --text="Something went wrong while updating. Please contact your system administrator."; exit 1; } # Requires sudo password + echo "50"; sleep 1 + echo "# Extracting monocleOS..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installExtract || { zenity --width 200 --error --title="Updating monocleOS Failed" --text="Something went wrong while extracting. Please verify the integrity of the package."; exit 1; } + echo "75"; sleep 1 + echo "# Updating monocleOS..."; sudo -H -u recovery /usr/bin/monocleOS-recovery --installMonocle || { zenity --width 200 --error --title="Updating monocleOS Failed" --text="Something went wrong while updating. Please contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="monocleOS has been Updated" --text="Success! monocleOS has been updated. It is recommended to restart your PC now." + rm -f $pkg + pkill x + ) | zenity --width 200 --progress --title="Updating monocleOS" --text="This process shouldn't take too long. Do NOT turn off your PC." --percentage=0 --auto-close --no-cancel +} + +function funcScreenshot { + gnome-screenshot -i + #gnome-screenshot -ac; aplay /usr/share/monocleOS/camera_shutter.wav & zenity --width 200 --info --title="Screenshot Taken" --text="A picture of your screen has been copied to your clipboard." + # Screen flash - for scrnum in $(seq 0 $((`xrandr | grep -iwc 'connected'` - 1))); do xcalib -a -b 35 -o $scrnum; done; for scrnum in $(seq 0 $((`xrandr | grep -iwc 'connected'` - 1))); do xcalib -c -o $scrnum; done +} + +function funcSettings { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=300 --title "Settings" --list --column "Option" "Add/Remove Programs" "Change your Password" "Hints & Tips" "Themes & Personalisation" "Sound" "WiFi Settings" "Advanced"` || exit + if [[ $selection = "Add/Remove Programs" ]]; then funcIcon + elif [[ $selection = "Change your Password" ]]; then funcPassword + elif [[ $selection = "Hints & Tips" ]]; then funcSettingsTips + elif [[ $selection = "Themes & Personalisation" ]]; then funcSettingsTheme + elif [[ $selection = "Sound" ]]; then exec pavucontrol + elif [[ $selection = "WiFi Settings" ]]; then funcWifi + elif [[ $selection = "Advanced" ]]; then funcSettingsAdvanced + fi + done +} + +function funcSettingsAdvanced { + zenity --width 200 --question --title="Warning" --text "Changing advanced settings may be dangerous to your PC. Are you sure you want to continue?" --ok-label="Continue" --cancel-label="Go Back" + if [ $? = 0 ]; then + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=300 --title "Settings - Advanced" --list --column "Option" "Network" "Printers" "Recovery" "Terminal" "Wine" "Open System Monitor"` || funcSettings + if [[ $selection = "Network" ]]; then exec nm-connection-editor + elif [[ $selection = "Printers" ]]; then exec system-config-printer + elif [[ $selection = "Recovery" ]]; then funcRecovery + elif [[ $selection = "Terminal" ]]; then exec gnome-terminal + elif [[ $selection = "Wine" ]]; then funcWine + elif [[ $selection = "Open System Monitor" ]]; then exec gnome-system-monitor + fi + done + else + funcSettings + fi +} + +function funcSettingsTheme { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=300 --title "Settings - Personalisation" --list --column "Option" "Colours" "Light/Dark Theme" "Change your Wallpaper" "Status Bar" "Font Size" "Icon Size" "Vertical Icon Spacing"` || funcSettings + if [[ $selection = "Colours" ]]; then sudo /usr/bin/monocleOS --themeColour $USER # function requires current username passed to it as run with sudo. NOTE: $2 to call, $1 to function + elif [[ $selection = "Light/Dark Theme" ]]; then funcThemeGTK + elif [[ $selection = "Change your Wallpaper" ]]; then funcWallpaper + elif [[ $selection = "Status Bar" ]]; then funcStatusbar + elif [[ $selection = "Font Size" ]]; then + fontSize=`zenity --scale --title="Font Size" --text="Select a font size" --min-value=10 --max-value=16 --value=12` + if [ $? = 0 ]; then + sed -i '/'gridFontSize='/s/.*/'gridFontSize=$fontSize'/' /home/$USER/.config/monocleOS/launcher.conf + sed -i "s/font pango:DejaVu Sans.*/font pango:DejaVu Sans $fontSize/g" /home/$USER/.config/i3/config + sed -i '/'gtk-font-name='/s/.*/'gtk-font-name="Cantarell ${fontSize}"'/' /home/$USER/.gtkrc-2.0 + sed -i "/gtk-font-name=/s/.*/gtk-font-name=Cantarell ${fontSize}/" /home/$USER/.config/gtk-3.0/settings.ini + pkill xlunch + i3 reload + monocleOS --launcher & + else + exit + fi + elif [[ $selection = "Icon Size" ]]; then + iconSize=`zenity --scale --title="Icon Size" --text="Select an icon size" --min-value=42 --max-value=72 --value=64` + if [ $? = 0 ]; then + sed -i '/'gridIconSize='/s/.*/'gridIconSize=$iconSize'/' /home/$USER/.config/monocleOS/launcher.conf + pkill xlunch + monocleOS --launcher & + else + exit + fi + elif [[ $selection = "Vertical Icon Spacing" ]]; then + vSpacing=`zenity --scale --title="Vertical Icon Spacing" --text="Select vertical icon spacing" --min-value=20 --max-value=40 --value=30` + if [ $? = 0 ]; then + sed -i '/'gridVPadding='/s/.*/'gridVPadding=$vSpacing'/' /home/$USER/.config/monocleOS/launcher.conf + pkill xlunch + monocleOS --launcher & + else + exit + fi + fi + done +} + +function funcSettingsTips { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=250 --width=350 --title "Settings - Hints & Tips" --list --column "Option" "Enable/Disable Periodic Tips" "Change Frequency of Periodic Tips" "Enable/Disable Application-Specific Tips"` || funcSettings + if [[ $selection = "Enable/Disable Periodic Tips" ]]; then + enable=`zenity --title="Periodic Hints & Tips" --list --radiolist --column="Select" --column="Status" TRUE Enable FALSE Disable` + if [[ $enable = "Enable" ]]; then + sed -i '/'periodicTips='/s/.*/'periodicTips=1'/' /home/$USER/.config/monocleOS/tips-service.conf + pkill tips-service + nohup /usr/bin/tips-service --daemon & + elif [[ $enable = "Disable" ]]; then + sed -i '/'periodicTips='/s/.*/'periodicTips=0'/' /home/$USER/.config/monocleOS/tips-service.conf + pkill tips-service + fi + elif [[ $selection = "Change Frequency of Periodic Tips" ]]; then + frequency=`zenity --scale --title="Periodic Hints & Tips" --text="How often should a random tip be shown, in minutes?\nNOTE: Changing this value will enable Periodic Tips." --min-value=30 --max-value=240 --value=120` + if [ $? = 0 ]; then + sed -i '/'periodicTipsFreq='/s/.*/'periodicTipsFreq=$frequency'/' /home/$USER/.config/monocleOS/tips-service.conf + sed -i '/'periodicTips='/s/.*/'periodicTips=1'/' /home/$USER/.config/monocleOS/tips-service.conf + pkill tips-service + nohup /usr/bin/tips-service --daemon & + else + exit + fi + elif [[ $selection = "Enable/Disable Application-Specific Tips" ]]; then + enable=`zenity --title="Application Hints & Tips" --list --radiolist --column="Select" --column="Status" TRUE Enable FALSE Disable` + if [[ $enable = "Enable" ]]; then + sed -i '/'applicationTips='/s/.*/'applicationTips=1'/' /home/$USER/.config/monocleOS/tips-service.conf + pkill tips-service + nohup /usr/bin/tips-service --daemon & + elif [[ $enable = "Disable" ]]; then + sed -i '/'applicationTips='/s/.*/'applicationTips=0'/' /home/$USER/.config/monocleOS/tips-service.conf + pkill tips-service + fi + fi + done +} + +function funcStatusbar { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=300 --title "Settings - Status Bar" --list --column "Theme" "Compact" "Detailed"` || funcSettingsTheme + if [[ $selection = "Compact" ]]; then sed -i '/'statusbar='/s/.*/'statusbar=compact'/' /home/$USER/.config/monocleOS/launcher.conf + elif [[ $selection = "Detailed" ]]; then sed -i '/'statusbar='/s/.*/'statusbar=detailed'/' /home/$USER/.config/monocleOS/launcher.conf + fi + /usr/bin/polybar.sh + done +} + +function funcSuspend { + if pgrep update > /dev/null; then + zenity --width 250 --question --title="System Updating..." --text "Your PC is currently updating... Would you like your PC to automatically sleep when finished?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + while pgrep update > /dev/null; do + sleep 30 + done + ( + echo "0"; sleep 1 + echo "# Sleeping in 9 seconds..." + echo "10"; sleep 1 + echo "# Sleeping in 8 seconds..." + echo "20"; sleep 1 + echo "# Sleeping in 7 seconds..." + echo "30"; sleep 1 + echo "# Sleeping in 6 seconds..." + echo "40"; sleep 1 + echo "# Sleeping in 5 seconds..." + echo "50"; sleep 1 + echo "# Sleeping in 4 seconds..." + echo "60"; sleep 1 + echo "# Sleeping in 3 seconds..." + echo "70"; sleep 1 + echo "# Sleeping in 2 seconds..." + echo "80"; sleep 1 + echo "# Sleeping in 1 second..." + echo "90"; sleep 1 + echo "# Putting your PC to sleep..."; systemctl suspend + echo "100"; sleep 1 + ) | zenity --width 300 --progress --title="Click Cancel to Continue Using your PC" --text="Sleeping in 10 seconds..." --percentage=0 --auto-close || exit + else + exit + fi + else + systemctl suspend + fi +} + +function funcTaskMgr { + selection=`zenity --height=250 --title "Power Options" --list --column "Option" "Sleep" "Power Off" "Open System Monitor"` || exit + if [[ $selection = "Sleep" ]]; then funcSuspend + elif [[ $selection = "Power Off" ]]; then funcPoweroff + elif [[ $selection = "Open System Monitor" ]]; then exec gnome-system-monitor + fi +} + +function funcThemeColour { + #### monocleOS Defaults #### + ## Launcher Menu + # #0088CC{CC} + ## Dunst + # #0088CC (Normal) + # #900000 (Urgent) + ## i3 + # #0088CC + # #900000 (Urgent) + ## Arc GTK-2.0 + # #5294e2 + ## Arc GTK-3.0 + # #4DADD4 + # #2E96C0 + # #5294E2 + # #2679DB + # #76C0DE (HL) + # #7EAFE9 (HL) + # #A9CAF1 (L) + # #B1CFF2 (L) + + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=300 --title "Select a Colour" --list --column "Colour" "Default" "Blue" "Green" "Orange" "Pink" "Purple" "Red"` || exit + if [[ $selection = "Default" ]]; then + plymouthTheme="monocleOS" + elif [[ $selection = "Blue" ]]; then + plymouthTheme="monocleOS_blue" + mainColour="#0088CC" + highlightColour="#729FD5" + lightColour="#A9CAF1" + elif [[ $selection = "Green" ]]; then + plymouthTheme="monocleOS_green" + mainColour="#5BA611" + highlightColour="#7AE274" + lightColour="#A9F1CA" + elif [[ $selection = "Orange" ]]; then + plymouthTheme="monocleOS_orange" + mainColour="#D64937" + highlightColour="#F67997" + lightColour="#E699B7" + elif [[ $selection = "Pink" ]]; then + plymouthTheme="monocleOS_pink" + mainColour="#FF41FF" + highlightColour="#FF81FF" + lightColour="#FFC1FF" + elif [[ $selection = "Purple" ]]; then + plymouthTheme="monocleOS_purple" + mainColour="#8237D6" + highlightColour="#9277E6" + lightColour="#A287E6" + elif [[ $selection = "Red" ]]; then + plymouthTheme="monocleOS_red" + mainColour="#EF2929" + highlightColour="#F27174" + lightColour="#F1CACA" + fi + done + + # tmpdir=`mktemp -d` - using permanent directory for themeUpgrade.hook + cp /etc/monocleOS/dunstrc.skel /home/$1/.config/monocleOS/dunstrc + cp /etc/monocleOS/i3.conf.skel /home/$1/.config/monocleOS/i3.conf + cp /usr/share/themes/Arc/gtk-2.0/gtkrc.bk /home/$1/.config/monocleOS/arc_gtk2_gtkrc + cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource.bk /home/$1/.config/monocleOS/arc_gtk3_gtk_gresource + cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc.bk /home/$1/.config/monocleOS/arc_dark_gtk2_gtkrc + cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource.bk /home/$1/.config/monocleOS/arc_dark_gtk3_gtk_gresource + + if [[ $selection != "Default" ]]; then + cd /home/$1/.config/monocleOS + sed -i '/'menuBG='/s/.*/'menuBG=${mainColour}CC'/' launcher.conf + sed -i 's/#0088CC/'$mainColour'/gI' dunstrc + sed -i 's/#0088CC/'$mainColour'/gI' i3.conf + for file in *gtkrc; do + sed -i 's/#5294e2/'$mainColour'/gI' $file + done + for file in *gresource; do + sed -i 's/#4DADD4/'$mainColour'/gI' $file + sed -i 's/#2E96C0/'$mainColour'/gI' $file + sed -i 's/#5294E2/'$mainColour'/gI' $file + sed -i 's/#2679DB/'$mainColour'/gI' $file + sed -i 's/#76C0DE/'$highlightColour'/gI' $file + sed -i 's/#7EAFE9/'$highlightColour'/gI' $file + sed -i 's/#A9CAF1/'$lightColour'/gI' $file + sed -i 's/#B1CFF2/'$lightColour'/gI' $file + done + else + cd /home/$1/.config/monocleOS + sed -i '/'menuBG='/s/.*/'menuBG=#0088CCCC'/' launcher.conf + fi + + # Apply + # NOTE: as GTK changes appear immediately, the success dialogue has the original i3 border, with the new GTK colour theme. Move the 'cp's to after this dialogue in order to fix this + ( + echo "12"; sleep 5 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/dunstrc /home/$1/.config/dunst/dunstrc + echo "24"; sleep 1 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/i3.conf /home/$1/.config/i3/config + echo "36"; sleep 1 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/arc_gtk2_gtkrc /usr/share/themes/Arc/gtk-2.0/gtkrc + echo "48"; sleep 1 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/arc_gtk3_gtk_gresource /usr/share/themes/Arc/gtk-3.0/gtk.gresource + echo "60"; sleep 1 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/arc_dark_gtk2_gtkrc /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc + echo "72"; sleep 1 + echo "# Applying new theme..."; cp /home/$1/.config/monocleOS/arc_dark_gtk3_gtk_gresource /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource + echo "84"; sleep 1 + echo "# Applying new power-on screen..."; plymouth-set-default-theme -R $plymouthTheme || { zenity --width 200 --error --title="Changing Colour Theme Failed" --text="Something went wrong. Your PC may not be able to boot correctly. Please contact your system administrator."; exit 1; } + echo "100"; sleep 1 + zenity --width 200 --info --title="Colour Theme Changed" --text="Success! Your colour theme has been changed." + pkill x + ) | zenity --width 200 --progress --title="Changing Colour Theme" --text="This process may take approximately one minute... Please do NOT turn off your PC." --percentage=0 --auto-close --no-cancel +} + +function funcThemeGTK { + grep "Arc-Dark" /home/$USER/.config/gtk-3.0/settings.ini + if [ $? = 0 ]; then + zenity --width 200 --question --title="Change Theme" --text "Do you want to change to a light theme? This will close all applications." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + sed -i '/Inherits=Breeze/s/.*/Inherits=Breeze_Snow/' /home/$USER/.icons/default/index.theme + sed -i '/gtk-theme-name=Arc-Dark/s/.*/gtk-theme-name=Arc/' /home/$USER/.config/gtk-3.0/settings.ini + sed -i '/gtk-theme-name="Arc-Dark"/s/.*/gtk-theme-name="Arc"/' /home/$USER/.gtkrc-2.0 + pkill x + else + exit + fi + else + zenity --width 200 --question --title="Change Theme" --text "Do you want to change to a dark theme? This will close all applications." --ok-label="Yes" --cancel-label="No" # Yes=0, No=1 + if [ $? = 0 ]; then + sed -i '/Inherits=Breeze_Snow/s/.*/Inherits=Breeze/' /home/$USER/.icons/default/index.theme + sed -i '/gtk-theme-name=Arc/s/.*/gtk-theme-name=Arc-Dark/' /home/$USER/.config/gtk-3.0/settings.ini + sed -i '/gtk-theme-name="Arc"/s/.*/gtk-theme-name="Arc-Dark"/' /home/$USER/.gtkrc-2.0 + pkill x + else + exit + fi + fi +} + +function funcUpdateStop { + while pgrep update > /dev/null; do + pkill -2 update + ( + echo "0"; sleep 2 + echo "# Waiting for automatic updates to stop.." + echo "10"; sleep 2 + echo "# Waiting for automatic updates to stop..." + echo "20"; sleep 2 + echo "# Waiting for automatic updates to stop." + echo "30"; sleep 2 + echo "# Waiting for automatic updates to stop.." + echo "40"; sleep 2 + echo "# Waiting for automatic updates to stop..." + echo "50"; sleep 2 + echo "# Waiting for automatic updates to stop." + echo "60"; sleep 2 + echo "# Waiting for automatic updates to stop.." + echo "70"; sleep 2 + echo "# Waiting for automatic updates to stop..." + echo "80"; sleep 2 + echo "# Waiting for automatic updates to stop." + echo "90"; sleep 2 + echo "# Waiting for automatic updates to stop.." + echo "100"; sleep 2 + ) | zenity --width 300 --progress --title="Stopping Updates" --text="Waiting for automatic updates to stop." --percentage=0 --auto-close || exit 1 + done +} + +function funcWallpaper { + restartLauncher=0 + loop=1 + cp ~/.wallpaper.png ~/.wallpaper.png.bak + while [ $loop = 1 ]; do # While not confirmed, keep asking for wallpaper or until cancelled + wallpaper=`zenity --file-selection --title="Select a Wallpaper" --filename=/usr/share/backgrounds/` + if [ $? = 0 ]; then + cp $wallpaper ~/.wallpaper.png # <-- All files in /usr/share/backgrounds must be PNG for xlunch + restartLauncher=1 # Only restart launcher when necessary + feh --bg-fill --no-xinerama /home/$USER/.wallpaper.png + pkill xlunch + zenity --width 200 --question --title="Change Wallpaper" --text "Select this wallpaper?" --ok-label="Yes" --cancel-label="No" # Yes=0, No=1, doesn't write to named variable' + if [ $? = 0 ]; then + loop=0 + rm ~/.wallpaper.png.bak + monocleOS --launcher & + exit + elif [ $? = 1 ]; then loop=1; fi + else + # If cancelled, revert wallpaper in case it was ever changed and delete backup + cp ~/.wallpaper.png.bak ~/.wallpaper.png + rm ~/.wallpaper.png.bak + if [ $restartLauncher = 1 ]; then + feh --bg-fill --no-xinerama /home/$USER/.wallpaper.png + monocleOS --launcher & + fi + exit + fi + done +} + +function funcWifi { + # https://askubuntu.com/questions/461825/how-to-connect-to-wifi-from-the-command-line + + #ifname="wlan0" + connected=0 + private="no" + hidden="no" + + nmcli radio wifi on + list=`nmcli -g "SSID" d wifi list` + if [[ $list = "" ]]; then zenity --width=200 --error --text="Couldn't find any WiFi networks. Is the WiFi  switch on your device turned on?"; exit; fi # Print dialogue and exit if no WiFi networks found + + # Print each line individually for zenity --list + ssid=`for line in $list; do + echo $line + done | zenity --height=300 --title "Network Name" --list --column "Network Name"` || exit + + #ssid=`zenity --title "Network Name" --entry --text "SSID\n$list\n\nEnter SSID Name"` # Manual Text Entry + + # man nmcli: wifi connect (B)SSID [password password] [wep-key-type {key | phrase}] [ifname ifname] [bssid BSSID] [name name] [private {yes | no}] [hidden {yes | no}] + # Could rely on nm-applet to enter password here, but would need to be installed and running + # Not specifying interface to let NM decide. $private and $hidden are set to default + while [ $connected = 0 ]; do + pw=`zenity --width 200 --title "Password" --password` || exit + ( + echo "33"; sleep 1 + echo "# Please wait..."; nmcli d wifi connect $ssid password $pw private $private hidden $hidden + echo "66"; sleep 1 + echo "# Please wait..." + echo "100"; sleep 1 + ) | zenity --width 200 --progress --title="Connecting to $ssid..." --text="Please wait..." --percentage=0 --auto-close --no-cancel + nmcli -g "CONNECTION" device status | grep "$ssid" + if [ $? = 0 ]; then + connected=1 + zenity --width 200 --info --title="Connecting to $ssid..." --text="Connected to $ssid successfully." + exit + else + zenity --width=200 --error --title="Unable to Connect to $ssid" --text="Check the password and try again." + nmcli connection delete $ssid + fi + done +} + +function funcWine { + selection="" + while [[ $selection = "" ]]; do + selection=`zenity --height=250 --width=250 --title "Wine Settings" --list --column "Option" "Add a Windows Application" "Execute a Windows Application" "Open Desktop Folder" "Configure Wine"` || funcSettingsAdvanced # Hardcoded to return to settings. Change this before calling funcWine from anywhere else + if [[ $selection = "Add a Windows Application" ]]; then + file=`zenity --file-selection --title="Select a Windows Application" --filename=/home/$USER/` || funcWine + name=`zenity --width=200 --title="Enter a Name for $file" --entry --text="Enter a friendly name for $file." --entry-text="e.g. Calculator"` || funcWine + if [ $? = 0 ]; then + [[ -d "/home/$USER/Desktop/Windows Applications" ]] || mkdir "/home/$USER/Desktop/Windows Applications" + echo -e "[Desktop Entry]\nType=Application\nVersion=1.0\nName=$name\nComment=A Windows Application\nExec=wine "$file"\nIcon=/usr/share/xlunch/icons/numix/distributor-logo-windows.png\nTerminal=false" > "/home/$USER/Desktop/Windows Applications/$name.desktop" + chmod +x "/home/$USER/Desktop/Windows Applications/$name.desktop" + if [ $? = 0 ]; then zenity --width 200 --info --title="Created Shortcut" --text="Connected a shortcut for $file in your Desktop folder."; fi + fi + elif [[ $selection = "Execute a Windows Application" ]]; then + file=`zenity --file-selection --title="Select a Windows Application" --filename=/home/$USER/` || funcWine + if [ $? = 0 ]; then wine "$file"; fi + elif [[ $selection = "Open Desktop Folder" ]]; then exec thunar "/home/$USER/Desktop/Windows Applications" + elif [[ $selection = "Configure Wine" ]]; then exec winetricks + fi + done +} + +case "$1" in + --close) + funcClose + ;; + --closeAll) + funcCloseAll + ;; + --freeSpaceCheck) + funcFreeSpaceCheck $2 + ;; + --games) + funcGames + ;; + --icon) + funcIcon + ;; + --internetCheck) + funcInternetCheck + ;; + --internetCheckNoX) + funcInternetCheckNoX $2 + ;; + --launcher) + funcLauncher + ;; + --launcherSearch) + funcLauncherSearch + ;; + --launcherMenu) + funcLauncherMenu + ;; + --lock) + funcLock + ;; + --magnifier) + funcMagnifier + ;; + --password) + funcPassword + ;; + --poweroff) + funcPoweroff + ;; + --reboot) + funcReboot + ;; + --recovery) + funcRecovery + ;; + --recoveryInstall) + funcRecoveryInstall + ;; + --recoveryKey) + funcRecoveryKey + ;; + --recoveryPassword) + funcRecoveryPassword + ;; + --recoveryReset) + funcRecoveryFactory + ;; + --recoveryUpdate) + funcRecoveryUpdate + ;; + --screenshot) + funcScreenshot + ;; + --settings) + funcSettings + ;; + --suspend) + funcSuspend + ;; + --taskMgr) + funcTaskMgr + ;; + --themeColour) + funcThemeColour $2 + ;; + --themeGTK) + funcThemeGTK + ;; + --updateStop) + funcUpdateStop + ;; + --wallpaper) + funcWallpaper + ;; + --wifi) + funcWifi + ;; + --wine) + funcWine + ;; + *) + echo $"Usage: $0 close{All}|freeSpaceCheck|games|icon|internetCheck{NoX}|launcher{Menu|Search}|lock|magnifier|password|poweroff|reboot|recovery{Install|Key|Password|Reset|Update}|screenshot|settings|suspend|taskMgr|theme{Colour|GTK}|updateStop|wallpaper|wifi|wine" + exit 1 +esac diff --git a/pkg/monocleOS-recovery b/pkg/monocleOS-recovery new file mode 100755 index 0000000..567f022 --- /dev/null +++ b/pkg/monocleOS-recovery @@ -0,0 +1,155 @@ +#!/bin/bash + +# monocleOS-recovery +# Copyright (C) 2020 Zack Didcott + +# 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 . + +source /etc/monocleOS.env +luksKey="/tmp/luksKey" + +## Factory Reset Functions + +function funcResetFormat { + ## User + if [[ $1 = 1 ]]; then find /home/user -type f -print0 | xargs -0 shred -zu; fi # Other methods of secure deletion: chattr +s (potentially insecure), srm (most secure), wipe (only magnetic storage), and dd (very slow, for blocks) + rm -rf /home/user/* /home/user/.* + ## System + systemctl stop org.cups.cupsd + rm -rf /etc/cups /var/log /var/spool + $installer -S --noconfirm cups + systemctl stop NetworkManager + shred -zu /etc/NetworkManager/system-connections/* # shred in case of saved private network connection data + hostname="monocleOS-$(cat /dev/urandom | tr -dc '0-9A-Z' | fold -w 4 | head -n 1)" + echo "$hostname" > /etc/hostname + echo "127.0.0.1 localhost" > /etc/hosts + echo "::1 localhost" >> /etc/hosts + echo "127.0.1.1 $hostname.localdomain $hostname" >> /etc/hosts +} + +function funcResetDefaults { + ## Config + battery=`ls -1 /sys/class/power_supply/ | grep -i 'BAT'` + backlight=`ls -1 /sys/class/backlight/ | head -n 1` + sed -i 's/BACKLIGHT_PLACEHOLDER/'$backlight'/g' /etc/monocleOS/polybar.conf.skel + sed -i 's/BATTERY_PLACEHOLDER/'$battery'/g' /etc/monocleOS/polybar.conf.skel + ## System Files + plymouth-set-default-theme monocleOS + cp /usr/share/themes/Arc/gtk-2.0/gtkrc.bk /usr/share/themes/Arc/gtk-2.0/gtkrc + cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource.bk /usr/share/themes/Arc/gtk-3.0/gtk.gresource + cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc.bk /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc + cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource.bk /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource + ## User Files + mkdir /home/user/Desktop; mkdir /home/user/Documents; mkdir /home/user/Downloads; mkdir /home/user/Pictures; mkdir /home/user/Pictures/Screenshots + cp /etc/monocleOS/bash_profile.skel /home/user/.bash_profile + cp /usr/share/backgrounds/white_circle.png /home/user/.wallpaper.png + cp /etc/monocleOS/xinitrc.skel /home/user/.xinitrc + mkdir -p /home/user/.config/dunst + cp /etc/monocleOS/dunstrc.skel /home/user/.config/dunst/dunstrc + mkdir -p /home/user/.config/i3 + cp /etc/monocleOS/i3.conf.skel /home/user/.config/i3/config + mkdir -p /home/user/.config/polybar + cp /etc/monocleOS/polybar.conf.skel /home/user/.config/polybar/config + mkdir -p /home/user/.icons/default + cp /etc/monocleOS/icons.default /home/user/.icons/default/index.theme + mkdir -p /home/user/.config/gtk-3.0 + cp /etc/monocleOS/gtkSettings.ini /home/user/.config/gtk-3.0/settings.ini + cp /etc/monocleOS/gtkrc /home/user/.gtkrc-2.0 + cp /etc/monocleOS/Trolltech.conf /home/user/.config/Trolltech.conf + cp /etc/monocleOS/pam_environment.skel /home/user/.pam_environment + mkdir -p /home/user/.config/monocleOS + cp /usr/share/themes/Arc/gtk-2.0/gtkrc.bk /home/user/.config/monocleOS/arc_gtk2_gtkrc + cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource.bk /home/user/.config/monocleOS/arc_gtk3_gtk_gresource + cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc.bk /home/user/.config/monocleOS/arc_dark_gtk2_gtkrc + cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource.bk /home/user/.config/monocleOS/arc_dark_gtk3_gtk_gresource + cp /etc/monocleOS/launcher.conf /home/user/.config/monocleOS/launcher.conf + cp /etc/monocleOS/tips-service.conf /home/user/.config/monocleOS/tips-service.conf + touch /home/user/.hushlogin + touch /home/user/.firstBoot + chown -R user:user /home/user # Set ownership of /home/user +} + +function funcResetPassword { + dd if=/dev/urandom of=$luksKey bs=512 count=4 + cp $luksKey /priv/defaultKey.bin + chmod -R 000 /priv + cryptsetup luksKillSlot -q /dev/disk/by-uuid/$luksUUID 1 --key-file=/tmp/luksKey.tmp # Disable recovery key, using temporary intermediate key created from caller + cryptsetup luksChangeKey -q /dev/disk/by-uuid/$luksUUID --key-slot 0 --key-file=/tmp/luksKey.tmp $luksKey # Change (what was) user password to random keyfile + echo "monocleOS UUID=$luksUUID /priv/defaultKey.bin luks" > /etc/crypttab.initramfs + echo MODULES=\($kmodules\) | tee /etc/mkinitcpio.conf > /dev/null + echo FILES=\(/priv/defaultKey.bin\) | tee -a /etc/mkinitcpio.conf > /dev/null + echo HOOKS=\(base systemd sd-plymouth keyboard autodetect sd-vconsole modconf block sd-encrypt sd-lvm2 filesystems fsck shutdown\) | tee -a /etc/mkinitcpio.conf > /dev/null + mkinitcpio -P + newPW="`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`" + echo "user:$newPW" | chpasswd + passwd -l monocle + passwd -l recovery + passwd -l root +} + +function funcResetPermissions { + echo "user ALL=(root)NOPASSWD:/usr/bin/initMonocle" >> /etc/sudoers.d/monocleOS; visudo -cf /etc/sudoers.d/monocleOS || rm /etc/sudoers.d/monocleOS +} + +## Reinstall Functions + +function funcInstallBase { + packages=`cat ~/packages.txt` + $installer -S --force --noconfirm $packages +} + +function funcInstallExtract { + rm -rf ~/monocleOS_build; mkdir ~/monocleOS_build + cd ~/monocleOS_build; tar -xzf ~/monocleOS.tar.gz +} + +function funcInstallMonocle { + cd ~/monocleOS_build; makepkg -si --force --noconfirm +} + +## Update Functions + +function funcUpdateCopy { + cp $1 ~/ +} + +case "$1" in + --resetFormat) + funcResetFormat $2 + ;; + --resetDefaults) + funcResetDefaults + ;; + --resetPassword) + funcResetPassword + ;; + --resetPermissions) + funcResetPermissions + ;; + --installBase) + funcInstallBase + ;; + --installExtract) + funcInstallExtract + ;; + --installMonocle) + funcInstallMonocle + ;; + --updateCopy) + funcUpdateCopy $2 + ;; + *) + echo $"Usage: $0 reset{Format [overwrite]|Defaults|Permissions|Password}|install{Base|Extract|Monocle}|update{Copy [filename]}" + exit 1 +esac diff --git a/pkg/nsswitch.conf b/pkg/nsswitch.conf new file mode 100644 index 0000000..19ceeb2 --- /dev/null +++ b/pkg/nsswitch.conf @@ -0,0 +1,18 @@ +# Name Service Switch configuration file. +# See nsswitch.conf(5) for details. + +passwd: files mymachines systemd +group: files mymachines systemd +shadow: files + +publickey: files + +hosts: files mymachines myhostname mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns +networks: files + +protocols: files +services: files +ethers: files +rpc: files + +netgroup: files diff --git a/pkg/nvidia.hook b/pkg/nvidia.hook new file mode 100644 index 0000000..d7c1cc8 --- /dev/null +++ b/pkg/nvidia.hook @@ -0,0 +1,15 @@ +[Trigger] +Operation=Install +Operation=Upgrade +Operation=Remove +Type=Package +Target=nvidia +Target=linux +# Change the linux part above and in the Exec line if a different kernel is used + +[Action] +Description=Update Nvidia module in initcpio +Depends=mkinitcpio +When=PostTransaction +NeedsTargets +Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P' diff --git a/pkg/onboard.theme b/pkg/onboard.theme new file mode 100644 index 0000000..05e5d57 --- /dev/null +++ b/pkg/onboard.theme @@ -0,0 +1,16 @@ + + + Charcoal + 0.0 + flat + 5.0 + 100.0 + 100.0 + 8.0 + 40.0 + -3.0 + DejaVu Sans + + 0.0 + 0.0 + diff --git a/pkg/os-release b/pkg/os-release new file mode 100644 index 0000000..2150ea4 --- /dev/null +++ b/pkg/os-release @@ -0,0 +1,9 @@ +NAME="monocleOS" +PRETTY_NAME="monocleOS" +ID=monocleOS +BUILD_ID=rolling +ANSI_COLOR="0;36" +HOME_URL="" +DOCUMENTATION_URL="" +SUPPORT_URL="" +BUG_REPORT_URL="" diff --git a/pkg/pam_environment b/pkg/pam_environment new file mode 100644 index 0000000..acaddfc --- /dev/null +++ b/pkg/pam_environment @@ -0,0 +1 @@ +QT_QPA_PLATFORMTHEME=gtk2 diff --git a/pkg/polybar.conf b/pkg/polybar.conf new file mode 100644 index 0000000..c1f3ba1 --- /dev/null +++ b/pkg/polybar.conf @@ -0,0 +1,200 @@ +[settings] +screenchange-reload = true + +[bar/compact] +width = 100% +height = 30 + +border-color = #00000000 +background = #cc000000 +foreground = #ccffffff + +line-color = #ffffffff +line-size = 16 + +spacing = 2 +padding-left = 2 +padding-right = 5 +module-margin = 3 + +font-0 = NotoSans-Regular:size=11;-1 +font-1 = MaterialIcons:size=12;0 +font-2 = FontAwesome:size=12;0 + +modules-left = launcher +modules-right = volume backlight internet-access battery separator float layout close +modules-center = date + +[bar/detailed] +width = 100% +height = 30 + +border-color = #00000000 +background = #cc000000 +foreground = #ccffffff + +line-color = #ffffffff +line-size = 16 + +spacing = 2 +padding-left = 2 +padding-right = 5 +module-margin = 3 + +font-0 = NotoSans-Regular:size=11;-1 +font-1 = MaterialIcons:size=12;0 +font-2 = FontAwesome:size=12;0 + +modules-left = launcher-det +modules-right = volume backlight internet-access-det battery separator float-det layout-det close-det +modules-center = date + +[module/separator] +type = custom/text +content = | +content-foreground = #FFFFFF + +[module/backlight] +type = internal/xbacklight +card = BACKLIGHT_PLACEHOLDER +format = + +ramp-0 =  +ramp-1 =  +ramp-2 =  + +bar-width = 10 +bar-indicator = | +bar-indicator-font = 3 +bar-indicator-foreground = #ff +bar-fill = ─ +bar-fill-font = 3 +bar-fill-foreground = #c9665e +bar-empty = ─ +bar-empty-font = 3 +bar-empty-foreground = #44 + +[module/battery] +type = internal/battery +battery = BATTERY_PLACEHOLDER +full-at = 100 + +format-charging = +format-discharging = +format-full = + +ramp-capacity-0 =  +ramp-capacity-0-foreground = #f53c3c +ramp-capacity-1 =  +ramp-capacity-1-foreground = #ffa900 +ramp-capacity-2 =  +ramp-capacity-3 =  +ramp-capacity-4 =  + +bar-capacity-width = 10 +bar-capacity-format = %{+u}%{+o}%fill%%empty%%{-u}%{-o} +bar-capacity-fill = █ +bar-capacity-fill-foreground = #ddffffff +bar-capacity-fill-font = 3 +bar-capacity-empty = █ +bar-capacity-empty-font = 3 +bar-capacity-empty-foreground = #44ffffff + +animation-charging-0 =  +animation-charging-1 =  +animation-charging-2 =  +animation-charging-3 =  +animation-charging-4 =  +animation-charging-framerate = 750 + +[module/workspace] +type = custom/text +content = Workspace: +content-foreground = #FFFFFF + +[module/i3] +type = internal/i3 + +[module/date] +type = internal/date +date =  %%{F#999}%d-%m-%Y%%{F-} %%{F#fff}%H:%M%%{F-} +date-alt = %%{F#fff}%A, %d %B %Y %%{F#999}%H:%M:%S%%{F-} + +[module/volume] +type = internal/pulseaudio +use-ui-max = false + +format-volume = +label-muted =  muted +label-muted-foreground = #66 + +ramp-volume-0 =  +ramp-volume-1 =  +ramp-volume-2 =  +ramp-volume-3 =  + +[module/internet-access] +type = custom/script +exec = /usr/bin/monocleOS --internetCheckNoX +tail = false +click-left = /usr/bin/monocleOS --internetCheck >/dev/null 2>&1 & +interval = 60 +format-foreground = #ffffff + +[module/float] +type = custom/text +content =  +content-forground = #FFFFFF +click-left = i3-msg floating toggle + +[module/layout] +type = custom/text +content =  +content-forground = #FFFFFF +click-left = i3-msg layout toggle + +[module/close] +type = custom/text +content =  +content-foreground = #E45E5E +click-left = i3-msg kill +click-middle = /usr/bin/monocleOS --closeAll >/dev/null 2>&1 & +click-right = /usr/bin/monocleOS --close >/dev/null 2>&1 & + +[module/launcher] +type = custom/text +content =  +click-left = /usr/bin/monocleOS --launcherMenu >/dev/null 2>&1 & + +[module/internet-access-det] +type = custom/script +exec = /usr/bin/monocleOS --internetCheckNoX label +tail = false +click-left = /usr/bin/monocleOS --internetCheck >/dev/null 2>&1 & +interval = 60 +format-foreground = #ffffff + +[module/float-det] +type = custom/text +content =  Float +content-forground = #FFFFFF +click-left = i3-msg floating toggle + +[module/layout-det] +type = custom/text +content =  Layout +content-forground = #FFFFFF +click-left = i3-msg layout toggle + +[module/close-det] +type = custom/text +content =  Exit +content-foreground = #E45E5E +click-left = i3-msg kill +click-middle = /usr/bin/monocleOS --closeAll >/dev/null 2>&1 & +click-right = /usr/bin/monocleOS --close >/dev/null 2>&1 & + +[module/launcher-det] +type = custom/text +content =  Activities +click-left = /usr/bin/monocleOS --launcherMenu >/dev/null 2>&1 & diff --git a/pkg/polybar.sh b/pkg/polybar.sh new file mode 100755 index 0000000..65681dd --- /dev/null +++ b/pkg/polybar.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Terminate already running bar instances +killall -q polybar + +# Wait until the processes have been shut down +while pgrep -u $UID -x polybar >/dev/null; do sleep 0.25; done + +# Launch Polybar, using default config location ~/.config/polybar/config +if [[ -e /home/$USER/.firstBoot ]]; then + exit +else + if [[ ! -f /home/$USER/.config/monocleOS/launcher.conf ]]; then statusbar=compact + else source /home/$USER/.config/monocleOS/launcher.conf; fi + polybar $statusbar & + echo "Polybar ($statusbar) launched..." +fi diff --git a/pkg/src/backgrounds/ColdWarm.png b/pkg/src/backgrounds/ColdWarm.png new file mode 100644 index 0000000..ad629bc Binary files /dev/null and b/pkg/src/backgrounds/ColdWarm.png differ diff --git a/pkg/src/backgrounds/Dark_Ivy.png b/pkg/src/backgrounds/Dark_Ivy.png new file mode 100644 index 0000000..f3ba0f9 Binary files /dev/null and b/pkg/src/backgrounds/Dark_Ivy.png differ diff --git a/pkg/src/backgrounds/Fabric.png b/pkg/src/backgrounds/Fabric.png new file mode 100644 index 0000000..3734af5 Binary files /dev/null and b/pkg/src/backgrounds/Fabric.png differ diff --git a/pkg/src/backgrounds/Flowerbed.png b/pkg/src/backgrounds/Flowerbed.png new file mode 100644 index 0000000..06571cb Binary files /dev/null and b/pkg/src/backgrounds/Flowerbed.png differ diff --git a/pkg/src/backgrounds/Icescape.png b/pkg/src/backgrounds/Icescape.png new file mode 100644 index 0000000..9ac6b9f Binary files /dev/null and b/pkg/src/backgrounds/Icescape.png differ diff --git a/pkg/src/backgrounds/RainDrops.png b/pkg/src/backgrounds/RainDrops.png new file mode 100644 index 0000000..d5f49c9 Binary files /dev/null and b/pkg/src/backgrounds/RainDrops.png differ diff --git a/pkg/src/backgrounds/Road.png b/pkg/src/backgrounds/Road.png new file mode 100644 index 0000000..b746ef9 Binary files /dev/null and b/pkg/src/backgrounds/Road.png differ diff --git a/pkg/src/backgrounds/Sandstone.png b/pkg/src/backgrounds/Sandstone.png new file mode 100644 index 0000000..9b18ab8 Binary files /dev/null and b/pkg/src/backgrounds/Sandstone.png differ diff --git a/pkg/src/backgrounds/SeaSunset.png b/pkg/src/backgrounds/SeaSunset.png new file mode 100644 index 0000000..b0606e4 Binary files /dev/null and b/pkg/src/backgrounds/SeaSunset.png differ diff --git a/pkg/src/backgrounds/Wood.png b/pkg/src/backgrounds/Wood.png new file mode 100644 index 0000000..e687eb4 Binary files /dev/null and b/pkg/src/backgrounds/Wood.png differ diff --git a/pkg/src/backgrounds/adwaita_day.png b/pkg/src/backgrounds/adwaita_day.png new file mode 100644 index 0000000..691d2c3 Binary files /dev/null and b/pkg/src/backgrounds/adwaita_day.png differ diff --git a/pkg/src/backgrounds/adwaita_morning.png b/pkg/src/backgrounds/adwaita_morning.png new file mode 100644 index 0000000..80bdeb0 Binary files /dev/null and b/pkg/src/backgrounds/adwaita_morning.png differ diff --git a/pkg/src/backgrounds/adwaita_night.png b/pkg/src/backgrounds/adwaita_night.png new file mode 100644 index 0000000..fad92f9 Binary files /dev/null and b/pkg/src/backgrounds/adwaita_night.png differ diff --git a/pkg/src/backgrounds/black_circle.png b/pkg/src/backgrounds/black_circle.png new file mode 100644 index 0000000..fed9a9b Binary files /dev/null and b/pkg/src/backgrounds/black_circle.png differ diff --git a/pkg/src/backgrounds/classic.png b/pkg/src/backgrounds/classic.png new file mode 100644 index 0000000..c5d7af5 Binary files /dev/null and b/pkg/src/backgrounds/classic.png differ diff --git a/pkg/src/backgrounds/color_circle.png b/pkg/src/backgrounds/color_circle.png new file mode 100644 index 0000000..534ec0c Binary files /dev/null and b/pkg/src/backgrounds/color_circle.png differ diff --git a/pkg/src/backgrounds/endless-shapes.png b/pkg/src/backgrounds/endless-shapes.png new file mode 100644 index 0000000..20fc576 Binary files /dev/null and b/pkg/src/backgrounds/endless-shapes.png differ diff --git a/pkg/src/backgrounds/symbolics-1.png b/pkg/src/backgrounds/symbolics-1.png new file mode 100644 index 0000000..99236ed Binary files /dev/null and b/pkg/src/backgrounds/symbolics-1.png differ diff --git a/pkg/src/backgrounds/symbolics-2.png b/pkg/src/backgrounds/symbolics-2.png new file mode 100644 index 0000000..3e82a89 Binary files /dev/null and b/pkg/src/backgrounds/symbolics-2.png differ diff --git a/pkg/src/backgrounds/white_circle.png b/pkg/src/backgrounds/white_circle.png new file mode 100644 index 0000000..63d7894 Binary files /dev/null and b/pkg/src/backgrounds/white_circle.png differ diff --git a/pkg/src/backgrounds/white_circle_mix.png b/pkg/src/backgrounds/white_circle_mix.png new file mode 100644 index 0000000..90486b7 Binary files /dev/null and b/pkg/src/backgrounds/white_circle_mix.png differ diff --git a/pkg/src/desktop/calculator.desktop b/pkg/src/desktop/calculator.desktop new file mode 100755 index 0000000..149b761 --- /dev/null +++ b/pkg/src/desktop/calculator.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Calculator +Comment=Crunch some numbers +Exec=/usr/bin/application-wrapper calculator +Icon=/usr/share/xlunch/icons/numix/calc.png +Terminal=false diff --git a/pkg/src/desktop/calendar.desktop b/pkg/src/desktop/calendar.desktop new file mode 100755 index 0000000..90e4819 --- /dev/null +++ b/pkg/src/desktop/calendar.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Calendar +Comment=Organise your schedule +Exec=/usr/bin/application-wrapper calendar +Icon=/usr/share/xlunch/icons/numix/calendar-black-31.png +Terminal=false diff --git a/pkg/src/desktop/camera.desktop b/pkg/src/desktop/camera.desktop new file mode 100755 index 0000000..6f1fe07 --- /dev/null +++ b/pkg/src/desktop/camera.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Camera +Comment=Take a picture +Exec=/usr/bin/application-wrapper camera +Icon=/usr/share/xlunch/icons/numix/accessories-camera.png +Terminal=false diff --git a/pkg/src/desktop/email.desktop b/pkg/src/desktop/email.desktop new file mode 100755 index 0000000..1e65d17 --- /dev/null +++ b/pkg/src/desktop/email.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Email +Comment=Read your mail +Exec=/usr/bin/application-wrapper email +Icon=/usr/share/xlunch/icons/numix/internet-mail.png +Terminal=false diff --git a/pkg/src/desktop/files.desktop b/pkg/src/desktop/files.desktop new file mode 100755 index 0000000..dd0f952 --- /dev/null +++ b/pkg/src/desktop/files.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Files +Comment=Manage your files +Exec=/usr/bin/application-wrapper files +Icon=/usr/share/xlunch/icons/numix/file-manager.png +Terminal=false diff --git a/pkg/src/desktop/games.desktop b/pkg/src/desktop/games.desktop new file mode 100755 index 0000000..a5682a9 --- /dev/null +++ b/pkg/src/desktop/games.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Games +Comment=Play some games +Exec=/usr/bin/application-wrapper games +Icon=/usr/share/xlunch/icons/numix/gnome-arcade.png +Terminal=false diff --git a/pkg/src/desktop/magnifier.desktop b/pkg/src/desktop/magnifier.desktop new file mode 100755 index 0000000..6020143 --- /dev/null +++ b/pkg/src/desktop/magnifier.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Magnifier +Comment=On-screen Magnifier +Exec=/usr/bin/application-wrapper magnifier +Icon=/usr/share/xlunch/icons/numix/search.png +Terminal=false diff --git a/pkg/src/desktop/media player.desktop b/pkg/src/desktop/media player.desktop new file mode 100755 index 0000000..743831c --- /dev/null +++ b/pkg/src/desktop/media player.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Media Player +Comment=Watch a video +Exec=/usr/bin/application-wrapper media_player +Icon=/usr/share/xlunch/icons/numix/vlc.png +Terminal=false diff --git a/pkg/src/desktop/office.desktop b/pkg/src/desktop/office.desktop new file mode 100755 index 0000000..89972dd --- /dev/null +++ b/pkg/src/desktop/office.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Office +Comment=Create a document +Exec=/usr/bin/application-wrapper office +Icon=/usr/share/xlunch/icons/numix/libreoffice-writer.png +Terminal=false diff --git a/pkg/src/desktop/screenshot.desktop b/pkg/src/desktop/screenshot.desktop new file mode 100755 index 0000000..95e7368 --- /dev/null +++ b/pkg/src/desktop/screenshot.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Screenshot +Comment=Take a picture of your screen +Exec=/usr/bin/application-wrapper screenshot +Icon=/usr/share/xlunch/icons/numix/accessories-screenshot.png +Terminal=false diff --git a/pkg/src/desktop/settings.desktop b/pkg/src/desktop/settings.desktop new file mode 100755 index 0000000..5025574 --- /dev/null +++ b/pkg/src/desktop/settings.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Settings +Comment=Personalise your PC +Exec=/usr/bin/application-wrapper settings +Icon=/usr/share/xlunch/icons/numix/preferences-system.png +Terminal=false diff --git a/pkg/src/desktop/web.desktop b/pkg/src/desktop/web.desktop new file mode 100755 index 0000000..682c6c2 --- /dev/null +++ b/pkg/src/desktop/web.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Web +Comment=Browse the Internet +Exec=/usr/bin/application-wrapper web +Icon=/usr/share/xlunch/icons/numix/web-browser.png +Terminal=false diff --git a/pkg/src/plymouth/monocleOS/box.png b/pkg/src/plymouth/monocleOS/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/box.png differ diff --git a/pkg/src/plymouth/monocleOS/bullet.png b/pkg/src/plymouth/monocleOS/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS/entry.png b/pkg/src/plymouth/monocleOS/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS/entry.png differ diff --git a/pkg/src/plymouth/monocleOS/entry_password.png b/pkg/src/plymouth/monocleOS/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_1.png b/pkg/src/plymouth/monocleOS/loading2_1.png new file mode 100755 index 0000000..fafc8ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_10.png b/pkg/src/plymouth/monocleOS/loading2_10.png new file mode 100755 index 0000000..eb59554 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_100.png b/pkg/src/plymouth/monocleOS/loading2_100.png new file mode 100644 index 0000000..cb67de1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_101.png b/pkg/src/plymouth/monocleOS/loading2_101.png new file mode 100644 index 0000000..db81010 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_102.png b/pkg/src/plymouth/monocleOS/loading2_102.png new file mode 100644 index 0000000..3b4f9e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_103.png b/pkg/src/plymouth/monocleOS/loading2_103.png new file mode 100644 index 0000000..c3d2fcf Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_104.png b/pkg/src/plymouth/monocleOS/loading2_104.png new file mode 100644 index 0000000..e1a62e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_105.png b/pkg/src/plymouth/monocleOS/loading2_105.png new file mode 100644 index 0000000..e6acef0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_106.png b/pkg/src/plymouth/monocleOS/loading2_106.png new file mode 100644 index 0000000..22390b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_107.png b/pkg/src/plymouth/monocleOS/loading2_107.png new file mode 100644 index 0000000..3f9c056 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_108.png b/pkg/src/plymouth/monocleOS/loading2_108.png new file mode 100644 index 0000000..0c573e7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_109.png b/pkg/src/plymouth/monocleOS/loading2_109.png new file mode 100644 index 0000000..c6b28c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_11.png b/pkg/src/plymouth/monocleOS/loading2_11.png new file mode 100755 index 0000000..89fb611 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_110.png b/pkg/src/plymouth/monocleOS/loading2_110.png new file mode 100644 index 0000000..53478a1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_111.png b/pkg/src/plymouth/monocleOS/loading2_111.png new file mode 100644 index 0000000..fd5f9d0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_112.png b/pkg/src/plymouth/monocleOS/loading2_112.png new file mode 100644 index 0000000..94bfc51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_113.png b/pkg/src/plymouth/monocleOS/loading2_113.png new file mode 100644 index 0000000..19d3840 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_114.png b/pkg/src/plymouth/monocleOS/loading2_114.png new file mode 100644 index 0000000..82f0f82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_115.png b/pkg/src/plymouth/monocleOS/loading2_115.png new file mode 100644 index 0000000..4200709 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_116.png b/pkg/src/plymouth/monocleOS/loading2_116.png new file mode 100644 index 0000000..fbafa88 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_117.png b/pkg/src/plymouth/monocleOS/loading2_117.png new file mode 100644 index 0000000..6d73cba Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_118.png b/pkg/src/plymouth/monocleOS/loading2_118.png new file mode 100644 index 0000000..1d6a068 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_119.png b/pkg/src/plymouth/monocleOS/loading2_119.png new file mode 100644 index 0000000..563f1ac Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_12.png b/pkg/src/plymouth/monocleOS/loading2_12.png new file mode 100755 index 0000000..efc0a00 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_120.png b/pkg/src/plymouth/monocleOS/loading2_120.png new file mode 100644 index 0000000..09cdf87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_121.png b/pkg/src/plymouth/monocleOS/loading2_121.png new file mode 100644 index 0000000..b13c10f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_122.png b/pkg/src/plymouth/monocleOS/loading2_122.png new file mode 100644 index 0000000..4923e81 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_123.png b/pkg/src/plymouth/monocleOS/loading2_123.png new file mode 100644 index 0000000..f58c680 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_124.png b/pkg/src/plymouth/monocleOS/loading2_124.png new file mode 100644 index 0000000..e34f906 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_125.png b/pkg/src/plymouth/monocleOS/loading2_125.png new file mode 100644 index 0000000..a42a94b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_126.png b/pkg/src/plymouth/monocleOS/loading2_126.png new file mode 100644 index 0000000..f1afccc Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_127.png b/pkg/src/plymouth/monocleOS/loading2_127.png new file mode 100644 index 0000000..f20ae1f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_128.png b/pkg/src/plymouth/monocleOS/loading2_128.png new file mode 100644 index 0000000..1f080d5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_129.png b/pkg/src/plymouth/monocleOS/loading2_129.png new file mode 100644 index 0000000..6a0ae8e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_13.png b/pkg/src/plymouth/monocleOS/loading2_13.png new file mode 100755 index 0000000..e5005fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_130.png b/pkg/src/plymouth/monocleOS/loading2_130.png new file mode 100644 index 0000000..69c55fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_131.png b/pkg/src/plymouth/monocleOS/loading2_131.png new file mode 100644 index 0000000..dd090ed Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_132.png b/pkg/src/plymouth/monocleOS/loading2_132.png new file mode 100644 index 0000000..363e30a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_133.png b/pkg/src/plymouth/monocleOS/loading2_133.png new file mode 100644 index 0000000..9744c5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_134.png b/pkg/src/plymouth/monocleOS/loading2_134.png new file mode 100644 index 0000000..0c8c651 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_135.png b/pkg/src/plymouth/monocleOS/loading2_135.png new file mode 100644 index 0000000..5fe0acd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_136.png b/pkg/src/plymouth/monocleOS/loading2_136.png new file mode 100644 index 0000000..72c64c2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_137.png b/pkg/src/plymouth/monocleOS/loading2_137.png new file mode 100644 index 0000000..dc04b6d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_138.png b/pkg/src/plymouth/monocleOS/loading2_138.png new file mode 100644 index 0000000..724e83d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_139.png b/pkg/src/plymouth/monocleOS/loading2_139.png new file mode 100644 index 0000000..3ff2170 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_14.png b/pkg/src/plymouth/monocleOS/loading2_14.png new file mode 100755 index 0000000..762504f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_140.png b/pkg/src/plymouth/monocleOS/loading2_140.png new file mode 100644 index 0000000..36728e5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_141.png b/pkg/src/plymouth/monocleOS/loading2_141.png new file mode 100644 index 0000000..b1d403b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_142.png b/pkg/src/plymouth/monocleOS/loading2_142.png new file mode 100644 index 0000000..e94a9b3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_143.png b/pkg/src/plymouth/monocleOS/loading2_143.png new file mode 100644 index 0000000..c0bb822 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_144.png b/pkg/src/plymouth/monocleOS/loading2_144.png new file mode 100644 index 0000000..0eaf7af Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_145.png b/pkg/src/plymouth/monocleOS/loading2_145.png new file mode 100644 index 0000000..bec0a71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_146.png b/pkg/src/plymouth/monocleOS/loading2_146.png new file mode 100644 index 0000000..1b4fea9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_147.png b/pkg/src/plymouth/monocleOS/loading2_147.png new file mode 100644 index 0000000..00516b4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_148.png b/pkg/src/plymouth/monocleOS/loading2_148.png new file mode 100644 index 0000000..cf75822 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_149.png b/pkg/src/plymouth/monocleOS/loading2_149.png new file mode 100644 index 0000000..2639131 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_15.png b/pkg/src/plymouth/monocleOS/loading2_15.png new file mode 100755 index 0000000..d919ed1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_150.png b/pkg/src/plymouth/monocleOS/loading2_150.png new file mode 100644 index 0000000..ba3cfad Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_151.png b/pkg/src/plymouth/monocleOS/loading2_151.png new file mode 100644 index 0000000..99df2b7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_152.png b/pkg/src/plymouth/monocleOS/loading2_152.png new file mode 100644 index 0000000..841148b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_153.png b/pkg/src/plymouth/monocleOS/loading2_153.png new file mode 100644 index 0000000..48dc8e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_154.png b/pkg/src/plymouth/monocleOS/loading2_154.png new file mode 100644 index 0000000..82e2fc5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_155.png b/pkg/src/plymouth/monocleOS/loading2_155.png new file mode 100644 index 0000000..72003ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_156.png b/pkg/src/plymouth/monocleOS/loading2_156.png new file mode 100644 index 0000000..8aa789e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_157.png b/pkg/src/plymouth/monocleOS/loading2_157.png new file mode 100644 index 0000000..ed10e13 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_158.png b/pkg/src/plymouth/monocleOS/loading2_158.png new file mode 100644 index 0000000..e4105ec Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_159.png b/pkg/src/plymouth/monocleOS/loading2_159.png new file mode 100644 index 0000000..ecb831c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_16.png b/pkg/src/plymouth/monocleOS/loading2_16.png new file mode 100755 index 0000000..713e805 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_160.png b/pkg/src/plymouth/monocleOS/loading2_160.png new file mode 100644 index 0000000..796ba71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_161.png b/pkg/src/plymouth/monocleOS/loading2_161.png new file mode 100644 index 0000000..796ba71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_162.png b/pkg/src/plymouth/monocleOS/loading2_162.png new file mode 100644 index 0000000..ab9223a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_163.png b/pkg/src/plymouth/monocleOS/loading2_163.png new file mode 100644 index 0000000..79b0e2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_164.png b/pkg/src/plymouth/monocleOS/loading2_164.png new file mode 100644 index 0000000..707da08 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_165.png b/pkg/src/plymouth/monocleOS/loading2_165.png new file mode 100644 index 0000000..1c07563 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_166.png b/pkg/src/plymouth/monocleOS/loading2_166.png new file mode 100644 index 0000000..2e3364d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_167.png b/pkg/src/plymouth/monocleOS/loading2_167.png new file mode 100644 index 0000000..9e271e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_168.png b/pkg/src/plymouth/monocleOS/loading2_168.png new file mode 100644 index 0000000..fb43ca4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_169.png b/pkg/src/plymouth/monocleOS/loading2_169.png new file mode 100644 index 0000000..f5923cc Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_17.png b/pkg/src/plymouth/monocleOS/loading2_17.png new file mode 100755 index 0000000..95ba2ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_170.png b/pkg/src/plymouth/monocleOS/loading2_170.png new file mode 100644 index 0000000..0d22fbe Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_171.png b/pkg/src/plymouth/monocleOS/loading2_171.png new file mode 100644 index 0000000..258291f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_172.png b/pkg/src/plymouth/monocleOS/loading2_172.png new file mode 100644 index 0000000..ca99451 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_173.png b/pkg/src/plymouth/monocleOS/loading2_173.png new file mode 100644 index 0000000..64e6527 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_174.png b/pkg/src/plymouth/monocleOS/loading2_174.png new file mode 100644 index 0000000..0c0e7f2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_175.png b/pkg/src/plymouth/monocleOS/loading2_175.png new file mode 100644 index 0000000..2ae8244 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_176.png b/pkg/src/plymouth/monocleOS/loading2_176.png new file mode 100644 index 0000000..14d7297 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_177.png b/pkg/src/plymouth/monocleOS/loading2_177.png new file mode 100644 index 0000000..5cd5f66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_178.png b/pkg/src/plymouth/monocleOS/loading2_178.png new file mode 100644 index 0000000..f196fa9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_179.png b/pkg/src/plymouth/monocleOS/loading2_179.png new file mode 100644 index 0000000..cc790a5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_18.png b/pkg/src/plymouth/monocleOS/loading2_18.png new file mode 100755 index 0000000..87fa19d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_180.png b/pkg/src/plymouth/monocleOS/loading2_180.png new file mode 100644 index 0000000..809104c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_181.png b/pkg/src/plymouth/monocleOS/loading2_181.png new file mode 100644 index 0000000..ad8ce17 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_182.png b/pkg/src/plymouth/monocleOS/loading2_182.png new file mode 100644 index 0000000..9f6293f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_183.png b/pkg/src/plymouth/monocleOS/loading2_183.png new file mode 100644 index 0000000..93e3286 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_184.png b/pkg/src/plymouth/monocleOS/loading2_184.png new file mode 100644 index 0000000..dcc7081 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_185.png b/pkg/src/plymouth/monocleOS/loading2_185.png new file mode 100644 index 0000000..a5486e0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_186.png b/pkg/src/plymouth/monocleOS/loading2_186.png new file mode 100644 index 0000000..05510b4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_187.png b/pkg/src/plymouth/monocleOS/loading2_187.png new file mode 100644 index 0000000..0a8bc4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_188.png b/pkg/src/plymouth/monocleOS/loading2_188.png new file mode 100644 index 0000000..04c7832 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_189.png b/pkg/src/plymouth/monocleOS/loading2_189.png new file mode 100644 index 0000000..ec23e64 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_19.png b/pkg/src/plymouth/monocleOS/loading2_19.png new file mode 100755 index 0000000..6e554e6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_190.png b/pkg/src/plymouth/monocleOS/loading2_190.png new file mode 100644 index 0000000..b1058b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_191.png b/pkg/src/plymouth/monocleOS/loading2_191.png new file mode 100644 index 0000000..5009586 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_192.png b/pkg/src/plymouth/monocleOS/loading2_192.png new file mode 100644 index 0000000..6865997 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_193.png b/pkg/src/plymouth/monocleOS/loading2_193.png new file mode 100644 index 0000000..34aa087 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_194.png b/pkg/src/plymouth/monocleOS/loading2_194.png new file mode 100644 index 0000000..496ef5e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_195.png b/pkg/src/plymouth/monocleOS/loading2_195.png new file mode 100644 index 0000000..496ef5e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_196.png b/pkg/src/plymouth/monocleOS/loading2_196.png new file mode 100644 index 0000000..c019042 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_197.png b/pkg/src/plymouth/monocleOS/loading2_197.png new file mode 100644 index 0000000..4f2d31b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_198.png b/pkg/src/plymouth/monocleOS/loading2_198.png new file mode 100644 index 0000000..345bc4b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_199.png b/pkg/src/plymouth/monocleOS/loading2_199.png new file mode 100644 index 0000000..8dd3c8e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_2.png b/pkg/src/plymouth/monocleOS/loading2_2.png new file mode 100755 index 0000000..92d0aff Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_20.png b/pkg/src/plymouth/monocleOS/loading2_20.png new file mode 100755 index 0000000..fda7ee6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_200.png b/pkg/src/plymouth/monocleOS/loading2_200.png new file mode 100644 index 0000000..2440dda Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_201.png b/pkg/src/plymouth/monocleOS/loading2_201.png new file mode 100644 index 0000000..93cd07b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_202.png b/pkg/src/plymouth/monocleOS/loading2_202.png new file mode 100644 index 0000000..a9bbe04 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_203.png b/pkg/src/plymouth/monocleOS/loading2_203.png new file mode 100644 index 0000000..5ea3c7a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_204.png b/pkg/src/plymouth/monocleOS/loading2_204.png new file mode 100644 index 0000000..2d0efeb Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_205.png b/pkg/src/plymouth/monocleOS/loading2_205.png new file mode 100644 index 0000000..1bd1357 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_206.png b/pkg/src/plymouth/monocleOS/loading2_206.png new file mode 100644 index 0000000..589ab74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_207.png b/pkg/src/plymouth/monocleOS/loading2_207.png new file mode 100644 index 0000000..ef24bc1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_208.png b/pkg/src/plymouth/monocleOS/loading2_208.png new file mode 100644 index 0000000..e31cd79 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_209.png b/pkg/src/plymouth/monocleOS/loading2_209.png new file mode 100644 index 0000000..db4617b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_21.png b/pkg/src/plymouth/monocleOS/loading2_21.png new file mode 100755 index 0000000..8778a34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_210.png b/pkg/src/plymouth/monocleOS/loading2_210.png new file mode 100644 index 0000000..b98bfc6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_211.png b/pkg/src/plymouth/monocleOS/loading2_211.png new file mode 100644 index 0000000..0116037 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_212.png b/pkg/src/plymouth/monocleOS/loading2_212.png new file mode 100644 index 0000000..099905f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_213.png b/pkg/src/plymouth/monocleOS/loading2_213.png new file mode 100644 index 0000000..d3f62ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_214.png b/pkg/src/plymouth/monocleOS/loading2_214.png new file mode 100644 index 0000000..8bf59ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_215.png b/pkg/src/plymouth/monocleOS/loading2_215.png new file mode 100644 index 0000000..3ca7edc Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_216.png b/pkg/src/plymouth/monocleOS/loading2_216.png new file mode 100644 index 0000000..cc4fb66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_217.png b/pkg/src/plymouth/monocleOS/loading2_217.png new file mode 100644 index 0000000..7487cf8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_218.png b/pkg/src/plymouth/monocleOS/loading2_218.png new file mode 100644 index 0000000..cb846af Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_219.png b/pkg/src/plymouth/monocleOS/loading2_219.png new file mode 100644 index 0000000..df70e45 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_22.png b/pkg/src/plymouth/monocleOS/loading2_22.png new file mode 100755 index 0000000..d8dc1c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_220.png b/pkg/src/plymouth/monocleOS/loading2_220.png new file mode 100644 index 0000000..508a10e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_221.png b/pkg/src/plymouth/monocleOS/loading2_221.png new file mode 100644 index 0000000..07317ae Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_23.png b/pkg/src/plymouth/monocleOS/loading2_23.png new file mode 100755 index 0000000..e9fe17e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_24.png b/pkg/src/plymouth/monocleOS/loading2_24.png new file mode 100755 index 0000000..734ad93 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_25.png b/pkg/src/plymouth/monocleOS/loading2_25.png new file mode 100755 index 0000000..85b20c2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_26.png b/pkg/src/plymouth/monocleOS/loading2_26.png new file mode 100755 index 0000000..06329d9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_27.png b/pkg/src/plymouth/monocleOS/loading2_27.png new file mode 100755 index 0000000..3895c02 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_28.png b/pkg/src/plymouth/monocleOS/loading2_28.png new file mode 100755 index 0000000..87ea74d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_29.png b/pkg/src/plymouth/monocleOS/loading2_29.png new file mode 100755 index 0000000..fc44796 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_3.png b/pkg/src/plymouth/monocleOS/loading2_3.png new file mode 100755 index 0000000..9c27f6e Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_30.png b/pkg/src/plymouth/monocleOS/loading2_30.png new file mode 100755 index 0000000..5d1b90a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_31.png b/pkg/src/plymouth/monocleOS/loading2_31.png new file mode 100755 index 0000000..06bed96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_32.png b/pkg/src/plymouth/monocleOS/loading2_32.png new file mode 100755 index 0000000..18bc39c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_33.png b/pkg/src/plymouth/monocleOS/loading2_33.png new file mode 100755 index 0000000..eaf6343 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_34.png b/pkg/src/plymouth/monocleOS/loading2_34.png new file mode 100755 index 0000000..2670162 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_35.png b/pkg/src/plymouth/monocleOS/loading2_35.png new file mode 100755 index 0000000..3f53fe0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_36.png b/pkg/src/plymouth/monocleOS/loading2_36.png new file mode 100755 index 0000000..7f4a9f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_37.png b/pkg/src/plymouth/monocleOS/loading2_37.png new file mode 100755 index 0000000..459e435 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_38.png b/pkg/src/plymouth/monocleOS/loading2_38.png new file mode 100755 index 0000000..36d9bee Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_39.png b/pkg/src/plymouth/monocleOS/loading2_39.png new file mode 100755 index 0000000..1af3e6c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_4.png b/pkg/src/plymouth/monocleOS/loading2_4.png new file mode 100755 index 0000000..c8b6adb Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_40.png b/pkg/src/plymouth/monocleOS/loading2_40.png new file mode 100755 index 0000000..e4f4cae Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_41.png b/pkg/src/plymouth/monocleOS/loading2_41.png new file mode 100755 index 0000000..d683329 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_42.png b/pkg/src/plymouth/monocleOS/loading2_42.png new file mode 100755 index 0000000..dadab31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_43.png b/pkg/src/plymouth/monocleOS/loading2_43.png new file mode 100755 index 0000000..a9b081d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_44.png b/pkg/src/plymouth/monocleOS/loading2_44.png new file mode 100755 index 0000000..bfb5291 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_45.png b/pkg/src/plymouth/monocleOS/loading2_45.png new file mode 100755 index 0000000..4cc3a6c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_46.png b/pkg/src/plymouth/monocleOS/loading2_46.png new file mode 100755 index 0000000..0cef6b0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_47.png b/pkg/src/plymouth/monocleOS/loading2_47.png new file mode 100755 index 0000000..4795c87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_48.png b/pkg/src/plymouth/monocleOS/loading2_48.png new file mode 100755 index 0000000..6c84251 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_49.png b/pkg/src/plymouth/monocleOS/loading2_49.png new file mode 100755 index 0000000..643abd2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_5.png b/pkg/src/plymouth/monocleOS/loading2_5.png new file mode 100755 index 0000000..7a7fe3b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_50.png b/pkg/src/plymouth/monocleOS/loading2_50.png new file mode 100755 index 0000000..d2cf8fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_51.png b/pkg/src/plymouth/monocleOS/loading2_51.png new file mode 100755 index 0000000..97cc14c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_52.png b/pkg/src/plymouth/monocleOS/loading2_52.png new file mode 100755 index 0000000..7f9fb25 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_53.png b/pkg/src/plymouth/monocleOS/loading2_53.png new file mode 100755 index 0000000..58b8a29 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_54.png b/pkg/src/plymouth/monocleOS/loading2_54.png new file mode 100755 index 0000000..8a3ebca Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_55.png b/pkg/src/plymouth/monocleOS/loading2_55.png new file mode 100755 index 0000000..368be4c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_56.png b/pkg/src/plymouth/monocleOS/loading2_56.png new file mode 100755 index 0000000..8a4369d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_57.png b/pkg/src/plymouth/monocleOS/loading2_57.png new file mode 100755 index 0000000..bf9c781 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_58.png b/pkg/src/plymouth/monocleOS/loading2_58.png new file mode 100755 index 0000000..21ae219 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_59.png b/pkg/src/plymouth/monocleOS/loading2_59.png new file mode 100755 index 0000000..f570b4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_6.png b/pkg/src/plymouth/monocleOS/loading2_6.png new file mode 100755 index 0000000..29c8a51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_60.png b/pkg/src/plymouth/monocleOS/loading2_60.png new file mode 100755 index 0000000..1b4aabd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_61.png b/pkg/src/plymouth/monocleOS/loading2_61.png new file mode 100755 index 0000000..be781e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_62.png b/pkg/src/plymouth/monocleOS/loading2_62.png new file mode 100755 index 0000000..440e624 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_63.png b/pkg/src/plymouth/monocleOS/loading2_63.png new file mode 100755 index 0000000..ed67c69 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_64.png b/pkg/src/plymouth/monocleOS/loading2_64.png new file mode 100755 index 0000000..3b42b39 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_65.png b/pkg/src/plymouth/monocleOS/loading2_65.png new file mode 100755 index 0000000..1d2a7a4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_66.png b/pkg/src/plymouth/monocleOS/loading2_66.png new file mode 100755 index 0000000..d95372f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_67.png b/pkg/src/plymouth/monocleOS/loading2_67.png new file mode 100755 index 0000000..39d5283 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_68.png b/pkg/src/plymouth/monocleOS/loading2_68.png new file mode 100755 index 0000000..892952d Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_69.png b/pkg/src/plymouth/monocleOS/loading2_69.png new file mode 100755 index 0000000..50088cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_7.png b/pkg/src/plymouth/monocleOS/loading2_7.png new file mode 100755 index 0000000..f3a5488 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_70.png b/pkg/src/plymouth/monocleOS/loading2_70.png new file mode 100755 index 0000000..861142a Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_71.png b/pkg/src/plymouth/monocleOS/loading2_71.png new file mode 100755 index 0000000..3544036 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_72.png b/pkg/src/plymouth/monocleOS/loading2_72.png new file mode 100755 index 0000000..3642db2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_73.png b/pkg/src/plymouth/monocleOS/loading2_73.png new file mode 100755 index 0000000..6b4de12 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_74.png b/pkg/src/plymouth/monocleOS/loading2_74.png new file mode 100755 index 0000000..a882a82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_75.png b/pkg/src/plymouth/monocleOS/loading2_75.png new file mode 100755 index 0000000..7627ffc Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_76.png b/pkg/src/plymouth/monocleOS/loading2_76.png new file mode 100755 index 0000000..7fd8f25 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_77.png b/pkg/src/plymouth/monocleOS/loading2_77.png new file mode 100755 index 0000000..1c5ec15 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_78.png b/pkg/src/plymouth/monocleOS/loading2_78.png new file mode 100644 index 0000000..7f3a81b Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_79.png b/pkg/src/plymouth/monocleOS/loading2_79.png new file mode 100644 index 0000000..290d9ef Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_8.png b/pkg/src/plymouth/monocleOS/loading2_8.png new file mode 100755 index 0000000..34b2450 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_80.png b/pkg/src/plymouth/monocleOS/loading2_80.png new file mode 100644 index 0000000..606ff78 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_81.png b/pkg/src/plymouth/monocleOS/loading2_81.png new file mode 100644 index 0000000..5df71c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_82.png b/pkg/src/plymouth/monocleOS/loading2_82.png new file mode 100644 index 0000000..5d77043 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_83.png b/pkg/src/plymouth/monocleOS/loading2_83.png new file mode 100644 index 0000000..bfa08a3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_84.png b/pkg/src/plymouth/monocleOS/loading2_84.png new file mode 100644 index 0000000..23e7351 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_85.png b/pkg/src/plymouth/monocleOS/loading2_85.png new file mode 100644 index 0000000..eaa8594 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_86.png b/pkg/src/plymouth/monocleOS/loading2_86.png new file mode 100644 index 0000000..5b3625f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_87.png b/pkg/src/plymouth/monocleOS/loading2_87.png new file mode 100644 index 0000000..7d3f1c1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_88.png b/pkg/src/plymouth/monocleOS/loading2_88.png new file mode 100644 index 0000000..3c27268 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_89.png b/pkg/src/plymouth/monocleOS/loading2_89.png new file mode 100644 index 0000000..6c96faf Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_9.png b/pkg/src/plymouth/monocleOS/loading2_9.png new file mode 100755 index 0000000..3887cea Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_90.png b/pkg/src/plymouth/monocleOS/loading2_90.png new file mode 100644 index 0000000..a246cfc Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_91.png b/pkg/src/plymouth/monocleOS/loading2_91.png new file mode 100644 index 0000000..3b810b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_92.png b/pkg/src/plymouth/monocleOS/loading2_92.png new file mode 100644 index 0000000..f3378cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_93.png b/pkg/src/plymouth/monocleOS/loading2_93.png new file mode 100644 index 0000000..c47341c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_94.png b/pkg/src/plymouth/monocleOS/loading2_94.png new file mode 100644 index 0000000..1a2f966 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_95.png b/pkg/src/plymouth/monocleOS/loading2_95.png new file mode 100644 index 0000000..95617e7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_96.png b/pkg/src/plymouth/monocleOS/loading2_96.png new file mode 100644 index 0000000..6a0649f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_97.png b/pkg/src/plymouth/monocleOS/loading2_97.png new file mode 100644 index 0000000..1837fdf Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_98.png b/pkg/src/plymouth/monocleOS/loading2_98.png new file mode 100644 index 0000000..5de0712 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS/loading2_99.png b/pkg/src/plymouth/monocleOS/loading2_99.png new file mode 100644 index 0000000..9e7ac96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS/lock.png b/pkg/src/plymouth/monocleOS/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS/lock.png differ diff --git a/pkg/src/plymouth/monocleOS/logo.png b/pkg/src/plymouth/monocleOS/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS/logo.png differ diff --git a/pkg/src/plymouth/monocleOS/monocleOS.plymouth b/pkg/src/plymouth/monocleOS/monocleOS.plymouth new file mode 100755 index 0000000..8937c44 --- /dev/null +++ b/pkg/src/plymouth/monocleOS/monocleOS.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS +Description=Default monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS +ScriptFile=/usr/share/plymouth/themes/monocleOS/monocleOS.script diff --git a/pkg/src/plymouth/monocleOS/monocleOS.script b/pkg/src/plymouth/monocleOS/monocleOS.script new file mode 100755 index 0000000..647231d --- /dev/null +++ b/pkg/src/plymouth/monocleOS/monocleOS.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.21568627, 0.55686274, 0.83921568); +Window.SetBackgroundBottomColor(0.21568627, 0.55686274, 0.83921568); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS/wallpaper.png b/pkg/src/plymouth/monocleOS/wallpaper.png new file mode 100755 index 0000000..9abd3f3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/box.png b/pkg/src/plymouth/monocleOS_blue/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/box.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/bullet.png b/pkg/src/plymouth/monocleOS_blue/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/entry.png b/pkg/src/plymouth/monocleOS_blue/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/entry_password.png b/pkg/src/plymouth/monocleOS_blue/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_1.png b/pkg/src/plymouth/monocleOS_blue/loading2_1.png new file mode 100755 index 0000000..fafc8ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_10.png b/pkg/src/plymouth/monocleOS_blue/loading2_10.png new file mode 100755 index 0000000..eb59554 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_100.png b/pkg/src/plymouth/monocleOS_blue/loading2_100.png new file mode 100644 index 0000000..cb67de1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_101.png b/pkg/src/plymouth/monocleOS_blue/loading2_101.png new file mode 100644 index 0000000..db81010 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_102.png b/pkg/src/plymouth/monocleOS_blue/loading2_102.png new file mode 100644 index 0000000..3b4f9e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_103.png b/pkg/src/plymouth/monocleOS_blue/loading2_103.png new file mode 100644 index 0000000..c3d2fcf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_104.png b/pkg/src/plymouth/monocleOS_blue/loading2_104.png new file mode 100644 index 0000000..e1a62e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_105.png b/pkg/src/plymouth/monocleOS_blue/loading2_105.png new file mode 100644 index 0000000..e6acef0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_106.png b/pkg/src/plymouth/monocleOS_blue/loading2_106.png new file mode 100644 index 0000000..22390b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_107.png b/pkg/src/plymouth/monocleOS_blue/loading2_107.png new file mode 100644 index 0000000..3f9c056 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_108.png b/pkg/src/plymouth/monocleOS_blue/loading2_108.png new file mode 100644 index 0000000..0c573e7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_109.png b/pkg/src/plymouth/monocleOS_blue/loading2_109.png new file mode 100644 index 0000000..c6b28c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_11.png b/pkg/src/plymouth/monocleOS_blue/loading2_11.png new file mode 100755 index 0000000..89fb611 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_110.png b/pkg/src/plymouth/monocleOS_blue/loading2_110.png new file mode 100644 index 0000000..53478a1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_111.png b/pkg/src/plymouth/monocleOS_blue/loading2_111.png new file mode 100644 index 0000000..fd5f9d0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_112.png b/pkg/src/plymouth/monocleOS_blue/loading2_112.png new file mode 100644 index 0000000..94bfc51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_113.png b/pkg/src/plymouth/monocleOS_blue/loading2_113.png new file mode 100644 index 0000000..19d3840 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_114.png b/pkg/src/plymouth/monocleOS_blue/loading2_114.png new file mode 100644 index 0000000..82f0f82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_115.png b/pkg/src/plymouth/monocleOS_blue/loading2_115.png new file mode 100644 index 0000000..4200709 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_116.png b/pkg/src/plymouth/monocleOS_blue/loading2_116.png new file mode 100644 index 0000000..fbafa88 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_117.png b/pkg/src/plymouth/monocleOS_blue/loading2_117.png new file mode 100644 index 0000000..6d73cba Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_118.png b/pkg/src/plymouth/monocleOS_blue/loading2_118.png new file mode 100644 index 0000000..1d6a068 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_119.png b/pkg/src/plymouth/monocleOS_blue/loading2_119.png new file mode 100644 index 0000000..563f1ac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_12.png b/pkg/src/plymouth/monocleOS_blue/loading2_12.png new file mode 100755 index 0000000..efc0a00 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_120.png b/pkg/src/plymouth/monocleOS_blue/loading2_120.png new file mode 100644 index 0000000..09cdf87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_121.png b/pkg/src/plymouth/monocleOS_blue/loading2_121.png new file mode 100644 index 0000000..b13c10f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_122.png b/pkg/src/plymouth/monocleOS_blue/loading2_122.png new file mode 100644 index 0000000..4923e81 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_123.png b/pkg/src/plymouth/monocleOS_blue/loading2_123.png new file mode 100644 index 0000000..f58c680 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_124.png b/pkg/src/plymouth/monocleOS_blue/loading2_124.png new file mode 100644 index 0000000..e34f906 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_125.png b/pkg/src/plymouth/monocleOS_blue/loading2_125.png new file mode 100644 index 0000000..a42a94b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_126.png b/pkg/src/plymouth/monocleOS_blue/loading2_126.png new file mode 100644 index 0000000..f1afccc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_127.png b/pkg/src/plymouth/monocleOS_blue/loading2_127.png new file mode 100644 index 0000000..f20ae1f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_128.png b/pkg/src/plymouth/monocleOS_blue/loading2_128.png new file mode 100644 index 0000000..1f080d5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_129.png b/pkg/src/plymouth/monocleOS_blue/loading2_129.png new file mode 100644 index 0000000..6a0ae8e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_13.png b/pkg/src/plymouth/monocleOS_blue/loading2_13.png new file mode 100755 index 0000000..e5005fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_130.png b/pkg/src/plymouth/monocleOS_blue/loading2_130.png new file mode 100644 index 0000000..69c55fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_131.png b/pkg/src/plymouth/monocleOS_blue/loading2_131.png new file mode 100644 index 0000000..dd090ed Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_132.png b/pkg/src/plymouth/monocleOS_blue/loading2_132.png new file mode 100644 index 0000000..363e30a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_133.png b/pkg/src/plymouth/monocleOS_blue/loading2_133.png new file mode 100644 index 0000000..9744c5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_134.png b/pkg/src/plymouth/monocleOS_blue/loading2_134.png new file mode 100644 index 0000000..0c8c651 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_135.png b/pkg/src/plymouth/monocleOS_blue/loading2_135.png new file mode 100644 index 0000000..5fe0acd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_136.png b/pkg/src/plymouth/monocleOS_blue/loading2_136.png new file mode 100644 index 0000000..72c64c2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_137.png b/pkg/src/plymouth/monocleOS_blue/loading2_137.png new file mode 100644 index 0000000..dc04b6d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_138.png b/pkg/src/plymouth/monocleOS_blue/loading2_138.png new file mode 100644 index 0000000..724e83d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_139.png b/pkg/src/plymouth/monocleOS_blue/loading2_139.png new file mode 100644 index 0000000..3ff2170 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_14.png b/pkg/src/plymouth/monocleOS_blue/loading2_14.png new file mode 100755 index 0000000..762504f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_140.png b/pkg/src/plymouth/monocleOS_blue/loading2_140.png new file mode 100644 index 0000000..36728e5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_141.png b/pkg/src/plymouth/monocleOS_blue/loading2_141.png new file mode 100644 index 0000000..b1d403b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_142.png b/pkg/src/plymouth/monocleOS_blue/loading2_142.png new file mode 100644 index 0000000..e94a9b3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_143.png b/pkg/src/plymouth/monocleOS_blue/loading2_143.png new file mode 100644 index 0000000..c0bb822 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_144.png b/pkg/src/plymouth/monocleOS_blue/loading2_144.png new file mode 100644 index 0000000..0eaf7af Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_145.png b/pkg/src/plymouth/monocleOS_blue/loading2_145.png new file mode 100644 index 0000000..bec0a71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_146.png b/pkg/src/plymouth/monocleOS_blue/loading2_146.png new file mode 100644 index 0000000..1b4fea9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_147.png b/pkg/src/plymouth/monocleOS_blue/loading2_147.png new file mode 100644 index 0000000..00516b4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_148.png b/pkg/src/plymouth/monocleOS_blue/loading2_148.png new file mode 100644 index 0000000..cf75822 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_149.png b/pkg/src/plymouth/monocleOS_blue/loading2_149.png new file mode 100644 index 0000000..2639131 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_15.png b/pkg/src/plymouth/monocleOS_blue/loading2_15.png new file mode 100755 index 0000000..d919ed1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_150.png b/pkg/src/plymouth/monocleOS_blue/loading2_150.png new file mode 100644 index 0000000..ba3cfad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_151.png b/pkg/src/plymouth/monocleOS_blue/loading2_151.png new file mode 100644 index 0000000..99df2b7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_152.png b/pkg/src/plymouth/monocleOS_blue/loading2_152.png new file mode 100644 index 0000000..841148b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_153.png b/pkg/src/plymouth/monocleOS_blue/loading2_153.png new file mode 100644 index 0000000..48dc8e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_154.png b/pkg/src/plymouth/monocleOS_blue/loading2_154.png new file mode 100644 index 0000000..82e2fc5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_155.png b/pkg/src/plymouth/monocleOS_blue/loading2_155.png new file mode 100644 index 0000000..72003ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_156.png b/pkg/src/plymouth/monocleOS_blue/loading2_156.png new file mode 100644 index 0000000..8aa789e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_157.png b/pkg/src/plymouth/monocleOS_blue/loading2_157.png new file mode 100644 index 0000000..ed10e13 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_158.png b/pkg/src/plymouth/monocleOS_blue/loading2_158.png new file mode 100644 index 0000000..e4105ec Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_159.png b/pkg/src/plymouth/monocleOS_blue/loading2_159.png new file mode 100644 index 0000000..ecb831c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_16.png b/pkg/src/plymouth/monocleOS_blue/loading2_16.png new file mode 100755 index 0000000..713e805 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_160.png b/pkg/src/plymouth/monocleOS_blue/loading2_160.png new file mode 100644 index 0000000..796ba71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_161.png b/pkg/src/plymouth/monocleOS_blue/loading2_161.png new file mode 100644 index 0000000..796ba71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_162.png b/pkg/src/plymouth/monocleOS_blue/loading2_162.png new file mode 100644 index 0000000..ab9223a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_163.png b/pkg/src/plymouth/monocleOS_blue/loading2_163.png new file mode 100644 index 0000000..79b0e2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_164.png b/pkg/src/plymouth/monocleOS_blue/loading2_164.png new file mode 100644 index 0000000..707da08 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_165.png b/pkg/src/plymouth/monocleOS_blue/loading2_165.png new file mode 100644 index 0000000..1c07563 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_166.png b/pkg/src/plymouth/monocleOS_blue/loading2_166.png new file mode 100644 index 0000000..2e3364d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_167.png b/pkg/src/plymouth/monocleOS_blue/loading2_167.png new file mode 100644 index 0000000..9e271e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_168.png b/pkg/src/plymouth/monocleOS_blue/loading2_168.png new file mode 100644 index 0000000..fb43ca4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_169.png b/pkg/src/plymouth/monocleOS_blue/loading2_169.png new file mode 100644 index 0000000..f5923cc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_17.png b/pkg/src/plymouth/monocleOS_blue/loading2_17.png new file mode 100755 index 0000000..95ba2ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_170.png b/pkg/src/plymouth/monocleOS_blue/loading2_170.png new file mode 100644 index 0000000..0d22fbe Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_171.png b/pkg/src/plymouth/monocleOS_blue/loading2_171.png new file mode 100644 index 0000000..258291f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_172.png b/pkg/src/plymouth/monocleOS_blue/loading2_172.png new file mode 100644 index 0000000..ca99451 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_173.png b/pkg/src/plymouth/monocleOS_blue/loading2_173.png new file mode 100644 index 0000000..64e6527 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_174.png b/pkg/src/plymouth/monocleOS_blue/loading2_174.png new file mode 100644 index 0000000..0c0e7f2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_175.png b/pkg/src/plymouth/monocleOS_blue/loading2_175.png new file mode 100644 index 0000000..2ae8244 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_176.png b/pkg/src/plymouth/monocleOS_blue/loading2_176.png new file mode 100644 index 0000000..14d7297 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_177.png b/pkg/src/plymouth/monocleOS_blue/loading2_177.png new file mode 100644 index 0000000..5cd5f66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_178.png b/pkg/src/plymouth/monocleOS_blue/loading2_178.png new file mode 100644 index 0000000..f196fa9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_179.png b/pkg/src/plymouth/monocleOS_blue/loading2_179.png new file mode 100644 index 0000000..cc790a5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_18.png b/pkg/src/plymouth/monocleOS_blue/loading2_18.png new file mode 100755 index 0000000..87fa19d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_180.png b/pkg/src/plymouth/monocleOS_blue/loading2_180.png new file mode 100644 index 0000000..809104c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_181.png b/pkg/src/plymouth/monocleOS_blue/loading2_181.png new file mode 100644 index 0000000..ad8ce17 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_182.png b/pkg/src/plymouth/monocleOS_blue/loading2_182.png new file mode 100644 index 0000000..9f6293f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_183.png b/pkg/src/plymouth/monocleOS_blue/loading2_183.png new file mode 100644 index 0000000..93e3286 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_184.png b/pkg/src/plymouth/monocleOS_blue/loading2_184.png new file mode 100644 index 0000000..dcc7081 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_185.png b/pkg/src/plymouth/monocleOS_blue/loading2_185.png new file mode 100644 index 0000000..a5486e0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_186.png b/pkg/src/plymouth/monocleOS_blue/loading2_186.png new file mode 100644 index 0000000..05510b4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_187.png b/pkg/src/plymouth/monocleOS_blue/loading2_187.png new file mode 100644 index 0000000..0a8bc4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_188.png b/pkg/src/plymouth/monocleOS_blue/loading2_188.png new file mode 100644 index 0000000..04c7832 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_189.png b/pkg/src/plymouth/monocleOS_blue/loading2_189.png new file mode 100644 index 0000000..ec23e64 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_19.png b/pkg/src/plymouth/monocleOS_blue/loading2_19.png new file mode 100755 index 0000000..6e554e6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_190.png b/pkg/src/plymouth/monocleOS_blue/loading2_190.png new file mode 100644 index 0000000..b1058b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_191.png b/pkg/src/plymouth/monocleOS_blue/loading2_191.png new file mode 100644 index 0000000..5009586 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_192.png b/pkg/src/plymouth/monocleOS_blue/loading2_192.png new file mode 100644 index 0000000..6865997 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_193.png b/pkg/src/plymouth/monocleOS_blue/loading2_193.png new file mode 100644 index 0000000..34aa087 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_194.png b/pkg/src/plymouth/monocleOS_blue/loading2_194.png new file mode 100644 index 0000000..496ef5e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_195.png b/pkg/src/plymouth/monocleOS_blue/loading2_195.png new file mode 100644 index 0000000..496ef5e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_196.png b/pkg/src/plymouth/monocleOS_blue/loading2_196.png new file mode 100644 index 0000000..c019042 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_197.png b/pkg/src/plymouth/monocleOS_blue/loading2_197.png new file mode 100644 index 0000000..4f2d31b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_198.png b/pkg/src/plymouth/monocleOS_blue/loading2_198.png new file mode 100644 index 0000000..345bc4b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_199.png b/pkg/src/plymouth/monocleOS_blue/loading2_199.png new file mode 100644 index 0000000..8dd3c8e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_2.png b/pkg/src/plymouth/monocleOS_blue/loading2_2.png new file mode 100755 index 0000000..92d0aff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_20.png b/pkg/src/plymouth/monocleOS_blue/loading2_20.png new file mode 100755 index 0000000..fda7ee6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_200.png b/pkg/src/plymouth/monocleOS_blue/loading2_200.png new file mode 100644 index 0000000..2440dda Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_201.png b/pkg/src/plymouth/monocleOS_blue/loading2_201.png new file mode 100644 index 0000000..93cd07b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_202.png b/pkg/src/plymouth/monocleOS_blue/loading2_202.png new file mode 100644 index 0000000..a9bbe04 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_203.png b/pkg/src/plymouth/monocleOS_blue/loading2_203.png new file mode 100644 index 0000000..5ea3c7a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_204.png b/pkg/src/plymouth/monocleOS_blue/loading2_204.png new file mode 100644 index 0000000..2d0efeb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_205.png b/pkg/src/plymouth/monocleOS_blue/loading2_205.png new file mode 100644 index 0000000..1bd1357 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_206.png b/pkg/src/plymouth/monocleOS_blue/loading2_206.png new file mode 100644 index 0000000..589ab74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_207.png b/pkg/src/plymouth/monocleOS_blue/loading2_207.png new file mode 100644 index 0000000..ef24bc1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_208.png b/pkg/src/plymouth/monocleOS_blue/loading2_208.png new file mode 100644 index 0000000..e31cd79 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_209.png b/pkg/src/plymouth/monocleOS_blue/loading2_209.png new file mode 100644 index 0000000..db4617b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_21.png b/pkg/src/plymouth/monocleOS_blue/loading2_21.png new file mode 100755 index 0000000..8778a34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_210.png b/pkg/src/plymouth/monocleOS_blue/loading2_210.png new file mode 100644 index 0000000..b98bfc6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_211.png b/pkg/src/plymouth/monocleOS_blue/loading2_211.png new file mode 100644 index 0000000..0116037 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_212.png b/pkg/src/plymouth/monocleOS_blue/loading2_212.png new file mode 100644 index 0000000..099905f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_213.png b/pkg/src/plymouth/monocleOS_blue/loading2_213.png new file mode 100644 index 0000000..d3f62ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_214.png b/pkg/src/plymouth/monocleOS_blue/loading2_214.png new file mode 100644 index 0000000..8bf59ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_215.png b/pkg/src/plymouth/monocleOS_blue/loading2_215.png new file mode 100644 index 0000000..3ca7edc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_216.png b/pkg/src/plymouth/monocleOS_blue/loading2_216.png new file mode 100644 index 0000000..cc4fb66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_217.png b/pkg/src/plymouth/monocleOS_blue/loading2_217.png new file mode 100644 index 0000000..7487cf8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_218.png b/pkg/src/plymouth/monocleOS_blue/loading2_218.png new file mode 100644 index 0000000..cb846af Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_219.png b/pkg/src/plymouth/monocleOS_blue/loading2_219.png new file mode 100644 index 0000000..df70e45 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_22.png b/pkg/src/plymouth/monocleOS_blue/loading2_22.png new file mode 100755 index 0000000..d8dc1c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_220.png b/pkg/src/plymouth/monocleOS_blue/loading2_220.png new file mode 100644 index 0000000..508a10e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_221.png b/pkg/src/plymouth/monocleOS_blue/loading2_221.png new file mode 100644 index 0000000..07317ae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_23.png b/pkg/src/plymouth/monocleOS_blue/loading2_23.png new file mode 100755 index 0000000..e9fe17e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_24.png b/pkg/src/plymouth/monocleOS_blue/loading2_24.png new file mode 100755 index 0000000..734ad93 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_25.png b/pkg/src/plymouth/monocleOS_blue/loading2_25.png new file mode 100755 index 0000000..85b20c2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_26.png b/pkg/src/plymouth/monocleOS_blue/loading2_26.png new file mode 100755 index 0000000..06329d9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_27.png b/pkg/src/plymouth/monocleOS_blue/loading2_27.png new file mode 100755 index 0000000..3895c02 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_28.png b/pkg/src/plymouth/monocleOS_blue/loading2_28.png new file mode 100755 index 0000000..87ea74d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_29.png b/pkg/src/plymouth/monocleOS_blue/loading2_29.png new file mode 100755 index 0000000..fc44796 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_3.png b/pkg/src/plymouth/monocleOS_blue/loading2_3.png new file mode 100755 index 0000000..9c27f6e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_30.png b/pkg/src/plymouth/monocleOS_blue/loading2_30.png new file mode 100755 index 0000000..5d1b90a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_31.png b/pkg/src/plymouth/monocleOS_blue/loading2_31.png new file mode 100755 index 0000000..06bed96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_32.png b/pkg/src/plymouth/monocleOS_blue/loading2_32.png new file mode 100755 index 0000000..18bc39c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_33.png b/pkg/src/plymouth/monocleOS_blue/loading2_33.png new file mode 100755 index 0000000..eaf6343 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_34.png b/pkg/src/plymouth/monocleOS_blue/loading2_34.png new file mode 100755 index 0000000..2670162 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_35.png b/pkg/src/plymouth/monocleOS_blue/loading2_35.png new file mode 100755 index 0000000..3f53fe0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_36.png b/pkg/src/plymouth/monocleOS_blue/loading2_36.png new file mode 100755 index 0000000..7f4a9f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_37.png b/pkg/src/plymouth/monocleOS_blue/loading2_37.png new file mode 100755 index 0000000..459e435 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_38.png b/pkg/src/plymouth/monocleOS_blue/loading2_38.png new file mode 100755 index 0000000..36d9bee Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_39.png b/pkg/src/plymouth/monocleOS_blue/loading2_39.png new file mode 100755 index 0000000..1af3e6c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_4.png b/pkg/src/plymouth/monocleOS_blue/loading2_4.png new file mode 100755 index 0000000..c8b6adb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_40.png b/pkg/src/plymouth/monocleOS_blue/loading2_40.png new file mode 100755 index 0000000..e4f4cae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_41.png b/pkg/src/plymouth/monocleOS_blue/loading2_41.png new file mode 100755 index 0000000..d683329 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_42.png b/pkg/src/plymouth/monocleOS_blue/loading2_42.png new file mode 100755 index 0000000..dadab31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_43.png b/pkg/src/plymouth/monocleOS_blue/loading2_43.png new file mode 100755 index 0000000..a9b081d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_44.png b/pkg/src/plymouth/monocleOS_blue/loading2_44.png new file mode 100755 index 0000000..bfb5291 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_45.png b/pkg/src/plymouth/monocleOS_blue/loading2_45.png new file mode 100755 index 0000000..4cc3a6c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_46.png b/pkg/src/plymouth/monocleOS_blue/loading2_46.png new file mode 100755 index 0000000..0cef6b0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_47.png b/pkg/src/plymouth/monocleOS_blue/loading2_47.png new file mode 100755 index 0000000..4795c87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_48.png b/pkg/src/plymouth/monocleOS_blue/loading2_48.png new file mode 100755 index 0000000..6c84251 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_49.png b/pkg/src/plymouth/monocleOS_blue/loading2_49.png new file mode 100755 index 0000000..643abd2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_5.png b/pkg/src/plymouth/monocleOS_blue/loading2_5.png new file mode 100755 index 0000000..7a7fe3b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_50.png b/pkg/src/plymouth/monocleOS_blue/loading2_50.png new file mode 100755 index 0000000..d2cf8fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_51.png b/pkg/src/plymouth/monocleOS_blue/loading2_51.png new file mode 100755 index 0000000..97cc14c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_52.png b/pkg/src/plymouth/monocleOS_blue/loading2_52.png new file mode 100755 index 0000000..7f9fb25 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_53.png b/pkg/src/plymouth/monocleOS_blue/loading2_53.png new file mode 100755 index 0000000..58b8a29 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_54.png b/pkg/src/plymouth/monocleOS_blue/loading2_54.png new file mode 100755 index 0000000..8a3ebca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_55.png b/pkg/src/plymouth/monocleOS_blue/loading2_55.png new file mode 100755 index 0000000..368be4c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_56.png b/pkg/src/plymouth/monocleOS_blue/loading2_56.png new file mode 100755 index 0000000..8a4369d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_57.png b/pkg/src/plymouth/monocleOS_blue/loading2_57.png new file mode 100755 index 0000000..bf9c781 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_58.png b/pkg/src/plymouth/monocleOS_blue/loading2_58.png new file mode 100755 index 0000000..21ae219 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_59.png b/pkg/src/plymouth/monocleOS_blue/loading2_59.png new file mode 100755 index 0000000..f570b4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_6.png b/pkg/src/plymouth/monocleOS_blue/loading2_6.png new file mode 100755 index 0000000..29c8a51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_60.png b/pkg/src/plymouth/monocleOS_blue/loading2_60.png new file mode 100755 index 0000000..1b4aabd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_61.png b/pkg/src/plymouth/monocleOS_blue/loading2_61.png new file mode 100755 index 0000000..be781e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_62.png b/pkg/src/plymouth/monocleOS_blue/loading2_62.png new file mode 100755 index 0000000..440e624 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_63.png b/pkg/src/plymouth/monocleOS_blue/loading2_63.png new file mode 100755 index 0000000..ed67c69 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_64.png b/pkg/src/plymouth/monocleOS_blue/loading2_64.png new file mode 100755 index 0000000..3b42b39 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_65.png b/pkg/src/plymouth/monocleOS_blue/loading2_65.png new file mode 100755 index 0000000..1d2a7a4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_66.png b/pkg/src/plymouth/monocleOS_blue/loading2_66.png new file mode 100755 index 0000000..d95372f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_67.png b/pkg/src/plymouth/monocleOS_blue/loading2_67.png new file mode 100755 index 0000000..39d5283 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_68.png b/pkg/src/plymouth/monocleOS_blue/loading2_68.png new file mode 100755 index 0000000..892952d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_69.png b/pkg/src/plymouth/monocleOS_blue/loading2_69.png new file mode 100755 index 0000000..50088cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_7.png b/pkg/src/plymouth/monocleOS_blue/loading2_7.png new file mode 100755 index 0000000..f3a5488 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_70.png b/pkg/src/plymouth/monocleOS_blue/loading2_70.png new file mode 100755 index 0000000..861142a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_71.png b/pkg/src/plymouth/monocleOS_blue/loading2_71.png new file mode 100755 index 0000000..3544036 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_72.png b/pkg/src/plymouth/monocleOS_blue/loading2_72.png new file mode 100755 index 0000000..3642db2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_73.png b/pkg/src/plymouth/monocleOS_blue/loading2_73.png new file mode 100755 index 0000000..6b4de12 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_74.png b/pkg/src/plymouth/monocleOS_blue/loading2_74.png new file mode 100755 index 0000000..a882a82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_75.png b/pkg/src/plymouth/monocleOS_blue/loading2_75.png new file mode 100755 index 0000000..7627ffc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_76.png b/pkg/src/plymouth/monocleOS_blue/loading2_76.png new file mode 100755 index 0000000..7fd8f25 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_77.png b/pkg/src/plymouth/monocleOS_blue/loading2_77.png new file mode 100755 index 0000000..1c5ec15 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_78.png b/pkg/src/plymouth/monocleOS_blue/loading2_78.png new file mode 100644 index 0000000..7f3a81b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_79.png b/pkg/src/plymouth/monocleOS_blue/loading2_79.png new file mode 100644 index 0000000..290d9ef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_8.png b/pkg/src/plymouth/monocleOS_blue/loading2_8.png new file mode 100755 index 0000000..34b2450 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_80.png b/pkg/src/plymouth/monocleOS_blue/loading2_80.png new file mode 100644 index 0000000..606ff78 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_81.png b/pkg/src/plymouth/monocleOS_blue/loading2_81.png new file mode 100644 index 0000000..5df71c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_82.png b/pkg/src/plymouth/monocleOS_blue/loading2_82.png new file mode 100644 index 0000000..5d77043 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_83.png b/pkg/src/plymouth/monocleOS_blue/loading2_83.png new file mode 100644 index 0000000..bfa08a3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_84.png b/pkg/src/plymouth/monocleOS_blue/loading2_84.png new file mode 100644 index 0000000..23e7351 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_85.png b/pkg/src/plymouth/monocleOS_blue/loading2_85.png new file mode 100644 index 0000000..eaa8594 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_86.png b/pkg/src/plymouth/monocleOS_blue/loading2_86.png new file mode 100644 index 0000000..5b3625f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_87.png b/pkg/src/plymouth/monocleOS_blue/loading2_87.png new file mode 100644 index 0000000..7d3f1c1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_88.png b/pkg/src/plymouth/monocleOS_blue/loading2_88.png new file mode 100644 index 0000000..3c27268 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_89.png b/pkg/src/plymouth/monocleOS_blue/loading2_89.png new file mode 100644 index 0000000..6c96faf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_9.png b/pkg/src/plymouth/monocleOS_blue/loading2_9.png new file mode 100755 index 0000000..3887cea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_90.png b/pkg/src/plymouth/monocleOS_blue/loading2_90.png new file mode 100644 index 0000000..a246cfc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_91.png b/pkg/src/plymouth/monocleOS_blue/loading2_91.png new file mode 100644 index 0000000..3b810b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_92.png b/pkg/src/plymouth/monocleOS_blue/loading2_92.png new file mode 100644 index 0000000..f3378cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_93.png b/pkg/src/plymouth/monocleOS_blue/loading2_93.png new file mode 100644 index 0000000..c47341c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_94.png b/pkg/src/plymouth/monocleOS_blue/loading2_94.png new file mode 100644 index 0000000..1a2f966 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_95.png b/pkg/src/plymouth/monocleOS_blue/loading2_95.png new file mode 100644 index 0000000..95617e7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_96.png b/pkg/src/plymouth/monocleOS_blue/loading2_96.png new file mode 100644 index 0000000..6a0649f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_97.png b/pkg/src/plymouth/monocleOS_blue/loading2_97.png new file mode 100644 index 0000000..1837fdf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_98.png b/pkg/src/plymouth/monocleOS_blue/loading2_98.png new file mode 100644 index 0000000..5de0712 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/loading2_99.png b/pkg/src/plymouth/monocleOS_blue/loading2_99.png new file mode 100644 index 0000000..9e7ac96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/lock.png b/pkg/src/plymouth/monocleOS_blue/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/logo.png b/pkg/src/plymouth/monocleOS_blue/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.plymouth b/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.plymouth new file mode 100755 index 0000000..26faa09 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS_blue +Description=Blue monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_blue +ScriptFile=/usr/share/plymouth/themes/monocleOS_blue/monocleOS_blue.script diff --git a/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.script b/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.script new file mode 100755 index 0000000..647231d --- /dev/null +++ b/pkg/src/plymouth/monocleOS_blue/monocleOS_blue.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.21568627, 0.55686274, 0.83921568); +Window.SetBackgroundBottomColor(0.21568627, 0.55686274, 0.83921568); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_blue/wallpaper.png b/pkg/src/plymouth/monocleOS_blue/wallpaper.png new file mode 100755 index 0000000..9abd3f3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_blue/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_green/box.png b/pkg/src/plymouth/monocleOS_green/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/box.png differ diff --git a/pkg/src/plymouth/monocleOS_green/bullet.png b/pkg/src/plymouth/monocleOS_green/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_green/entry.png b/pkg/src/plymouth/monocleOS_green/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_green/entry_password.png b/pkg/src/plymouth/monocleOS_green/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_1.png b/pkg/src/plymouth/monocleOS_green/loading2_1.png new file mode 100755 index 0000000..41b09c7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_10.png b/pkg/src/plymouth/monocleOS_green/loading2_10.png new file mode 100755 index 0000000..9c7d410 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_100.png b/pkg/src/plymouth/monocleOS_green/loading2_100.png new file mode 100644 index 0000000..29c5a14 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_101.png b/pkg/src/plymouth/monocleOS_green/loading2_101.png new file mode 100644 index 0000000..5c54bf8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_102.png b/pkg/src/plymouth/monocleOS_green/loading2_102.png new file mode 100644 index 0000000..b1a9981 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_103.png b/pkg/src/plymouth/monocleOS_green/loading2_103.png new file mode 100644 index 0000000..d5f43ff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_104.png b/pkg/src/plymouth/monocleOS_green/loading2_104.png new file mode 100644 index 0000000..be0eeb6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_105.png b/pkg/src/plymouth/monocleOS_green/loading2_105.png new file mode 100644 index 0000000..61209e3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_106.png b/pkg/src/plymouth/monocleOS_green/loading2_106.png new file mode 100644 index 0000000..def5228 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_107.png b/pkg/src/plymouth/monocleOS_green/loading2_107.png new file mode 100644 index 0000000..b72dcb8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_108.png b/pkg/src/plymouth/monocleOS_green/loading2_108.png new file mode 100644 index 0000000..a74ae73 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_109.png b/pkg/src/plymouth/monocleOS_green/loading2_109.png new file mode 100644 index 0000000..6a9b798 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_11.png b/pkg/src/plymouth/monocleOS_green/loading2_11.png new file mode 100755 index 0000000..269ce26 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_110.png b/pkg/src/plymouth/monocleOS_green/loading2_110.png new file mode 100644 index 0000000..9041bb6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_111.png b/pkg/src/plymouth/monocleOS_green/loading2_111.png new file mode 100644 index 0000000..85fd70c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_112.png b/pkg/src/plymouth/monocleOS_green/loading2_112.png new file mode 100644 index 0000000..8b9ba95 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_113.png b/pkg/src/plymouth/monocleOS_green/loading2_113.png new file mode 100644 index 0000000..74f09c6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_114.png b/pkg/src/plymouth/monocleOS_green/loading2_114.png new file mode 100644 index 0000000..052ee68 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_115.png b/pkg/src/plymouth/monocleOS_green/loading2_115.png new file mode 100644 index 0000000..f096d0a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_116.png b/pkg/src/plymouth/monocleOS_green/loading2_116.png new file mode 100644 index 0000000..949a960 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_117.png b/pkg/src/plymouth/monocleOS_green/loading2_117.png new file mode 100644 index 0000000..a3aa61a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_118.png b/pkg/src/plymouth/monocleOS_green/loading2_118.png new file mode 100644 index 0000000..27adeae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_119.png b/pkg/src/plymouth/monocleOS_green/loading2_119.png new file mode 100644 index 0000000..cbe1a3d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_12.png b/pkg/src/plymouth/monocleOS_green/loading2_12.png new file mode 100755 index 0000000..1c4c124 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_120.png b/pkg/src/plymouth/monocleOS_green/loading2_120.png new file mode 100644 index 0000000..42c4487 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_121.png b/pkg/src/plymouth/monocleOS_green/loading2_121.png new file mode 100644 index 0000000..e609bfb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_122.png b/pkg/src/plymouth/monocleOS_green/loading2_122.png new file mode 100644 index 0000000..d622dc7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_123.png b/pkg/src/plymouth/monocleOS_green/loading2_123.png new file mode 100644 index 0000000..f615c31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_124.png b/pkg/src/plymouth/monocleOS_green/loading2_124.png new file mode 100644 index 0000000..4e16508 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_125.png b/pkg/src/plymouth/monocleOS_green/loading2_125.png new file mode 100644 index 0000000..7ad2b3b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_126.png b/pkg/src/plymouth/monocleOS_green/loading2_126.png new file mode 100644 index 0000000..73a56d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_127.png b/pkg/src/plymouth/monocleOS_green/loading2_127.png new file mode 100644 index 0000000..576cb4f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_128.png b/pkg/src/plymouth/monocleOS_green/loading2_128.png new file mode 100644 index 0000000..44c5fb0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_129.png b/pkg/src/plymouth/monocleOS_green/loading2_129.png new file mode 100644 index 0000000..bc6429a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_13.png b/pkg/src/plymouth/monocleOS_green/loading2_13.png new file mode 100755 index 0000000..a78705d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_130.png b/pkg/src/plymouth/monocleOS_green/loading2_130.png new file mode 100644 index 0000000..f25079b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_131.png b/pkg/src/plymouth/monocleOS_green/loading2_131.png new file mode 100644 index 0000000..a0c68d6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_132.png b/pkg/src/plymouth/monocleOS_green/loading2_132.png new file mode 100644 index 0000000..376f271 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_133.png b/pkg/src/plymouth/monocleOS_green/loading2_133.png new file mode 100644 index 0000000..088da51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_134.png b/pkg/src/plymouth/monocleOS_green/loading2_134.png new file mode 100644 index 0000000..bb47edf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_135.png b/pkg/src/plymouth/monocleOS_green/loading2_135.png new file mode 100644 index 0000000..7d02fa2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_136.png b/pkg/src/plymouth/monocleOS_green/loading2_136.png new file mode 100644 index 0000000..349698b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_137.png b/pkg/src/plymouth/monocleOS_green/loading2_137.png new file mode 100644 index 0000000..529b478 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_138.png b/pkg/src/plymouth/monocleOS_green/loading2_138.png new file mode 100644 index 0000000..87528ef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_139.png b/pkg/src/plymouth/monocleOS_green/loading2_139.png new file mode 100644 index 0000000..866e108 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_14.png b/pkg/src/plymouth/monocleOS_green/loading2_14.png new file mode 100755 index 0000000..8a8f9d0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_140.png b/pkg/src/plymouth/monocleOS_green/loading2_140.png new file mode 100644 index 0000000..6bc2d2c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_141.png b/pkg/src/plymouth/monocleOS_green/loading2_141.png new file mode 100644 index 0000000..7c58d1a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_142.png b/pkg/src/plymouth/monocleOS_green/loading2_142.png new file mode 100644 index 0000000..053bbd4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_143.png b/pkg/src/plymouth/monocleOS_green/loading2_143.png new file mode 100644 index 0000000..f2e1213 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_144.png b/pkg/src/plymouth/monocleOS_green/loading2_144.png new file mode 100644 index 0000000..90cbe27 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_145.png b/pkg/src/plymouth/monocleOS_green/loading2_145.png new file mode 100644 index 0000000..04d1e44 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_146.png b/pkg/src/plymouth/monocleOS_green/loading2_146.png new file mode 100644 index 0000000..32d7687 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_147.png b/pkg/src/plymouth/monocleOS_green/loading2_147.png new file mode 100644 index 0000000..4518545 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_148.png b/pkg/src/plymouth/monocleOS_green/loading2_148.png new file mode 100644 index 0000000..b1355a6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_149.png b/pkg/src/plymouth/monocleOS_green/loading2_149.png new file mode 100644 index 0000000..be74d6a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_15.png b/pkg/src/plymouth/monocleOS_green/loading2_15.png new file mode 100755 index 0000000..0d3afa8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_150.png b/pkg/src/plymouth/monocleOS_green/loading2_150.png new file mode 100644 index 0000000..79a2039 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_151.png b/pkg/src/plymouth/monocleOS_green/loading2_151.png new file mode 100644 index 0000000..372db12 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_152.png b/pkg/src/plymouth/monocleOS_green/loading2_152.png new file mode 100644 index 0000000..9c64a00 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_153.png b/pkg/src/plymouth/monocleOS_green/loading2_153.png new file mode 100644 index 0000000..1bbf0f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_154.png b/pkg/src/plymouth/monocleOS_green/loading2_154.png new file mode 100644 index 0000000..47d11e5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_155.png b/pkg/src/plymouth/monocleOS_green/loading2_155.png new file mode 100644 index 0000000..c6fe68f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_156.png b/pkg/src/plymouth/monocleOS_green/loading2_156.png new file mode 100644 index 0000000..7793453 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_157.png b/pkg/src/plymouth/monocleOS_green/loading2_157.png new file mode 100644 index 0000000..328b0ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_158.png b/pkg/src/plymouth/monocleOS_green/loading2_158.png new file mode 100644 index 0000000..752eca8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_159.png b/pkg/src/plymouth/monocleOS_green/loading2_159.png new file mode 100644 index 0000000..7f67ed2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_16.png b/pkg/src/plymouth/monocleOS_green/loading2_16.png new file mode 100755 index 0000000..8be0fbd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_160.png b/pkg/src/plymouth/monocleOS_green/loading2_160.png new file mode 100644 index 0000000..f338c5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_161.png b/pkg/src/plymouth/monocleOS_green/loading2_161.png new file mode 100644 index 0000000..f338c5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_162.png b/pkg/src/plymouth/monocleOS_green/loading2_162.png new file mode 100644 index 0000000..6417162 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_163.png b/pkg/src/plymouth/monocleOS_green/loading2_163.png new file mode 100644 index 0000000..befc2b0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_164.png b/pkg/src/plymouth/monocleOS_green/loading2_164.png new file mode 100644 index 0000000..c586bd4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_165.png b/pkg/src/plymouth/monocleOS_green/loading2_165.png new file mode 100644 index 0000000..1fdaea6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_166.png b/pkg/src/plymouth/monocleOS_green/loading2_166.png new file mode 100644 index 0000000..d8d6ef0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_167.png b/pkg/src/plymouth/monocleOS_green/loading2_167.png new file mode 100644 index 0000000..fc8c277 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_168.png b/pkg/src/plymouth/monocleOS_green/loading2_168.png new file mode 100644 index 0000000..a81385f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_169.png b/pkg/src/plymouth/monocleOS_green/loading2_169.png new file mode 100644 index 0000000..2deac0d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_17.png b/pkg/src/plymouth/monocleOS_green/loading2_17.png new file mode 100755 index 0000000..3433747 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_170.png b/pkg/src/plymouth/monocleOS_green/loading2_170.png new file mode 100644 index 0000000..f0f279d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_171.png b/pkg/src/plymouth/monocleOS_green/loading2_171.png new file mode 100644 index 0000000..07b8ddb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_172.png b/pkg/src/plymouth/monocleOS_green/loading2_172.png new file mode 100644 index 0000000..5b8a660 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_173.png b/pkg/src/plymouth/monocleOS_green/loading2_173.png new file mode 100644 index 0000000..b1d0555 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_174.png b/pkg/src/plymouth/monocleOS_green/loading2_174.png new file mode 100644 index 0000000..19bdab3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_175.png b/pkg/src/plymouth/monocleOS_green/loading2_175.png new file mode 100644 index 0000000..2e993f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_176.png b/pkg/src/plymouth/monocleOS_green/loading2_176.png new file mode 100644 index 0000000..2cb2946 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_177.png b/pkg/src/plymouth/monocleOS_green/loading2_177.png new file mode 100644 index 0000000..1c03eba Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_178.png b/pkg/src/plymouth/monocleOS_green/loading2_178.png new file mode 100644 index 0000000..3485109 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_179.png b/pkg/src/plymouth/monocleOS_green/loading2_179.png new file mode 100644 index 0000000..df1b948 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_18.png b/pkg/src/plymouth/monocleOS_green/loading2_18.png new file mode 100755 index 0000000..f01f3a4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_180.png b/pkg/src/plymouth/monocleOS_green/loading2_180.png new file mode 100644 index 0000000..fc47a61 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_181.png b/pkg/src/plymouth/monocleOS_green/loading2_181.png new file mode 100644 index 0000000..88d7ff3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_182.png b/pkg/src/plymouth/monocleOS_green/loading2_182.png new file mode 100644 index 0000000..9fc259b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_183.png b/pkg/src/plymouth/monocleOS_green/loading2_183.png new file mode 100644 index 0000000..bb7f436 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_184.png b/pkg/src/plymouth/monocleOS_green/loading2_184.png new file mode 100644 index 0000000..aa854e8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_185.png b/pkg/src/plymouth/monocleOS_green/loading2_185.png new file mode 100644 index 0000000..f9ee708 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_186.png b/pkg/src/plymouth/monocleOS_green/loading2_186.png new file mode 100644 index 0000000..28ded33 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_187.png b/pkg/src/plymouth/monocleOS_green/loading2_187.png new file mode 100644 index 0000000..f2c336a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_188.png b/pkg/src/plymouth/monocleOS_green/loading2_188.png new file mode 100644 index 0000000..3a0da54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_189.png b/pkg/src/plymouth/monocleOS_green/loading2_189.png new file mode 100644 index 0000000..42f4770 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_19.png b/pkg/src/plymouth/monocleOS_green/loading2_19.png new file mode 100755 index 0000000..45eb8ec Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_190.png b/pkg/src/plymouth/monocleOS_green/loading2_190.png new file mode 100644 index 0000000..205bc20 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_191.png b/pkg/src/plymouth/monocleOS_green/loading2_191.png new file mode 100644 index 0000000..e782719 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_192.png b/pkg/src/plymouth/monocleOS_green/loading2_192.png new file mode 100644 index 0000000..9a22bf7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_193.png b/pkg/src/plymouth/monocleOS_green/loading2_193.png new file mode 100644 index 0000000..9a5000c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_194.png b/pkg/src/plymouth/monocleOS_green/loading2_194.png new file mode 100644 index 0000000..dbb9e6a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_195.png b/pkg/src/plymouth/monocleOS_green/loading2_195.png new file mode 100644 index 0000000..dbb9e6a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_196.png b/pkg/src/plymouth/monocleOS_green/loading2_196.png new file mode 100644 index 0000000..314e6d2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_197.png b/pkg/src/plymouth/monocleOS_green/loading2_197.png new file mode 100644 index 0000000..556ace6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_198.png b/pkg/src/plymouth/monocleOS_green/loading2_198.png new file mode 100644 index 0000000..3f60bcd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_199.png b/pkg/src/plymouth/monocleOS_green/loading2_199.png new file mode 100644 index 0000000..fbccb67 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_2.png b/pkg/src/plymouth/monocleOS_green/loading2_2.png new file mode 100755 index 0000000..7d76c16 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_20.png b/pkg/src/plymouth/monocleOS_green/loading2_20.png new file mode 100755 index 0000000..538d48b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_200.png b/pkg/src/plymouth/monocleOS_green/loading2_200.png new file mode 100644 index 0000000..90fadd0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_201.png b/pkg/src/plymouth/monocleOS_green/loading2_201.png new file mode 100644 index 0000000..f8c3448 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_202.png b/pkg/src/plymouth/monocleOS_green/loading2_202.png new file mode 100644 index 0000000..3d936d5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_203.png b/pkg/src/plymouth/monocleOS_green/loading2_203.png new file mode 100644 index 0000000..013700e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_204.png b/pkg/src/plymouth/monocleOS_green/loading2_204.png new file mode 100644 index 0000000..c800b74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_205.png b/pkg/src/plymouth/monocleOS_green/loading2_205.png new file mode 100644 index 0000000..837930f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_206.png b/pkg/src/plymouth/monocleOS_green/loading2_206.png new file mode 100644 index 0000000..3d36b62 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_207.png b/pkg/src/plymouth/monocleOS_green/loading2_207.png new file mode 100644 index 0000000..ec1bf8a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_208.png b/pkg/src/plymouth/monocleOS_green/loading2_208.png new file mode 100644 index 0000000..298a27f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_209.png b/pkg/src/plymouth/monocleOS_green/loading2_209.png new file mode 100644 index 0000000..a981150 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_21.png b/pkg/src/plymouth/monocleOS_green/loading2_21.png new file mode 100755 index 0000000..5a07604 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_210.png b/pkg/src/plymouth/monocleOS_green/loading2_210.png new file mode 100644 index 0000000..0560edb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_211.png b/pkg/src/plymouth/monocleOS_green/loading2_211.png new file mode 100644 index 0000000..ce777df Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_212.png b/pkg/src/plymouth/monocleOS_green/loading2_212.png new file mode 100644 index 0000000..7b0f710 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_213.png b/pkg/src/plymouth/monocleOS_green/loading2_213.png new file mode 100644 index 0000000..6cd4914 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_214.png b/pkg/src/plymouth/monocleOS_green/loading2_214.png new file mode 100644 index 0000000..53e2460 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_215.png b/pkg/src/plymouth/monocleOS_green/loading2_215.png new file mode 100644 index 0000000..2162473 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_216.png b/pkg/src/plymouth/monocleOS_green/loading2_216.png new file mode 100644 index 0000000..7bf710f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_217.png b/pkg/src/plymouth/monocleOS_green/loading2_217.png new file mode 100644 index 0000000..515f8dd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_218.png b/pkg/src/plymouth/monocleOS_green/loading2_218.png new file mode 100644 index 0000000..bb73d34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_219.png b/pkg/src/plymouth/monocleOS_green/loading2_219.png new file mode 100644 index 0000000..2403601 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_22.png b/pkg/src/plymouth/monocleOS_green/loading2_22.png new file mode 100755 index 0000000..7345194 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_220.png b/pkg/src/plymouth/monocleOS_green/loading2_220.png new file mode 100644 index 0000000..9d52643 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_221.png b/pkg/src/plymouth/monocleOS_green/loading2_221.png new file mode 100644 index 0000000..ea27705 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_23.png b/pkg/src/plymouth/monocleOS_green/loading2_23.png new file mode 100755 index 0000000..2f20c9b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_24.png b/pkg/src/plymouth/monocleOS_green/loading2_24.png new file mode 100755 index 0000000..7e4d969 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_25.png b/pkg/src/plymouth/monocleOS_green/loading2_25.png new file mode 100755 index 0000000..f5dcb51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_26.png b/pkg/src/plymouth/monocleOS_green/loading2_26.png new file mode 100755 index 0000000..94f125d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_27.png b/pkg/src/plymouth/monocleOS_green/loading2_27.png new file mode 100755 index 0000000..3190c45 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_28.png b/pkg/src/plymouth/monocleOS_green/loading2_28.png new file mode 100755 index 0000000..695a98e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_29.png b/pkg/src/plymouth/monocleOS_green/loading2_29.png new file mode 100755 index 0000000..3130119 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_3.png b/pkg/src/plymouth/monocleOS_green/loading2_3.png new file mode 100755 index 0000000..df900d6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_30.png b/pkg/src/plymouth/monocleOS_green/loading2_30.png new file mode 100755 index 0000000..0c85ac8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_31.png b/pkg/src/plymouth/monocleOS_green/loading2_31.png new file mode 100755 index 0000000..e414e82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_32.png b/pkg/src/plymouth/monocleOS_green/loading2_32.png new file mode 100755 index 0000000..a26d413 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_33.png b/pkg/src/plymouth/monocleOS_green/loading2_33.png new file mode 100755 index 0000000..4a05660 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_34.png b/pkg/src/plymouth/monocleOS_green/loading2_34.png new file mode 100755 index 0000000..f0b763e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_35.png b/pkg/src/plymouth/monocleOS_green/loading2_35.png new file mode 100755 index 0000000..563645f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_36.png b/pkg/src/plymouth/monocleOS_green/loading2_36.png new file mode 100755 index 0000000..bfabc49 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_37.png b/pkg/src/plymouth/monocleOS_green/loading2_37.png new file mode 100755 index 0000000..8eb6467 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_38.png b/pkg/src/plymouth/monocleOS_green/loading2_38.png new file mode 100755 index 0000000..768a184 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_39.png b/pkg/src/plymouth/monocleOS_green/loading2_39.png new file mode 100755 index 0000000..2819453 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_4.png b/pkg/src/plymouth/monocleOS_green/loading2_4.png new file mode 100755 index 0000000..60f3989 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_40.png b/pkg/src/plymouth/monocleOS_green/loading2_40.png new file mode 100755 index 0000000..9a322d0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_41.png b/pkg/src/plymouth/monocleOS_green/loading2_41.png new file mode 100755 index 0000000..15618ca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_42.png b/pkg/src/plymouth/monocleOS_green/loading2_42.png new file mode 100755 index 0000000..d2db008 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_43.png b/pkg/src/plymouth/monocleOS_green/loading2_43.png new file mode 100755 index 0000000..9bde771 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_44.png b/pkg/src/plymouth/monocleOS_green/loading2_44.png new file mode 100755 index 0000000..1c06f65 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_45.png b/pkg/src/plymouth/monocleOS_green/loading2_45.png new file mode 100755 index 0000000..8d8b79b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_46.png b/pkg/src/plymouth/monocleOS_green/loading2_46.png new file mode 100755 index 0000000..a711430 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_47.png b/pkg/src/plymouth/monocleOS_green/loading2_47.png new file mode 100755 index 0000000..a0647d6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_48.png b/pkg/src/plymouth/monocleOS_green/loading2_48.png new file mode 100755 index 0000000..de5ec9d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_49.png b/pkg/src/plymouth/monocleOS_green/loading2_49.png new file mode 100755 index 0000000..733f813 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_5.png b/pkg/src/plymouth/monocleOS_green/loading2_5.png new file mode 100755 index 0000000..42abc62 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_50.png b/pkg/src/plymouth/monocleOS_green/loading2_50.png new file mode 100755 index 0000000..8d80a53 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_51.png b/pkg/src/plymouth/monocleOS_green/loading2_51.png new file mode 100755 index 0000000..5bbb2c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_52.png b/pkg/src/plymouth/monocleOS_green/loading2_52.png new file mode 100755 index 0000000..e18b667 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_53.png b/pkg/src/plymouth/monocleOS_green/loading2_53.png new file mode 100755 index 0000000..6f5807f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_54.png b/pkg/src/plymouth/monocleOS_green/loading2_54.png new file mode 100755 index 0000000..26028dc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_55.png b/pkg/src/plymouth/monocleOS_green/loading2_55.png new file mode 100755 index 0000000..9594c02 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_56.png b/pkg/src/plymouth/monocleOS_green/loading2_56.png new file mode 100755 index 0000000..a229396 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_57.png b/pkg/src/plymouth/monocleOS_green/loading2_57.png new file mode 100755 index 0000000..9104bd6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_58.png b/pkg/src/plymouth/monocleOS_green/loading2_58.png new file mode 100755 index 0000000..d2f5029 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_59.png b/pkg/src/plymouth/monocleOS_green/loading2_59.png new file mode 100755 index 0000000..8142f33 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_6.png b/pkg/src/plymouth/monocleOS_green/loading2_6.png new file mode 100755 index 0000000..2c2ffaf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_60.png b/pkg/src/plymouth/monocleOS_green/loading2_60.png new file mode 100755 index 0000000..9d0eb24 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_61.png b/pkg/src/plymouth/monocleOS_green/loading2_61.png new file mode 100755 index 0000000..5c46e3f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_62.png b/pkg/src/plymouth/monocleOS_green/loading2_62.png new file mode 100755 index 0000000..5dfc867 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_63.png b/pkg/src/plymouth/monocleOS_green/loading2_63.png new file mode 100755 index 0000000..1fcae06 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_64.png b/pkg/src/plymouth/monocleOS_green/loading2_64.png new file mode 100755 index 0000000..77e165d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_65.png b/pkg/src/plymouth/monocleOS_green/loading2_65.png new file mode 100755 index 0000000..6d161cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_66.png b/pkg/src/plymouth/monocleOS_green/loading2_66.png new file mode 100755 index 0000000..5d042f8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_67.png b/pkg/src/plymouth/monocleOS_green/loading2_67.png new file mode 100755 index 0000000..34cb22b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_68.png b/pkg/src/plymouth/monocleOS_green/loading2_68.png new file mode 100755 index 0000000..f4bbb6a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_69.png b/pkg/src/plymouth/monocleOS_green/loading2_69.png new file mode 100755 index 0000000..729ab38 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_7.png b/pkg/src/plymouth/monocleOS_green/loading2_7.png new file mode 100755 index 0000000..4d50299 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_70.png b/pkg/src/plymouth/monocleOS_green/loading2_70.png new file mode 100755 index 0000000..651d866 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_71.png b/pkg/src/plymouth/monocleOS_green/loading2_71.png new file mode 100755 index 0000000..68e09e8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_72.png b/pkg/src/plymouth/monocleOS_green/loading2_72.png new file mode 100755 index 0000000..45f02ae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_73.png b/pkg/src/plymouth/monocleOS_green/loading2_73.png new file mode 100755 index 0000000..cd9f39d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_74.png b/pkg/src/plymouth/monocleOS_green/loading2_74.png new file mode 100755 index 0000000..7a86425 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_75.png b/pkg/src/plymouth/monocleOS_green/loading2_75.png new file mode 100755 index 0000000..a9f4aee Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_76.png b/pkg/src/plymouth/monocleOS_green/loading2_76.png new file mode 100755 index 0000000..a7c234b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_77.png b/pkg/src/plymouth/monocleOS_green/loading2_77.png new file mode 100755 index 0000000..01024e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_78.png b/pkg/src/plymouth/monocleOS_green/loading2_78.png new file mode 100644 index 0000000..d604e2c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_79.png b/pkg/src/plymouth/monocleOS_green/loading2_79.png new file mode 100644 index 0000000..d23b7cb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_8.png b/pkg/src/plymouth/monocleOS_green/loading2_8.png new file mode 100755 index 0000000..401b0b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_80.png b/pkg/src/plymouth/monocleOS_green/loading2_80.png new file mode 100644 index 0000000..9a2a1ca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_81.png b/pkg/src/plymouth/monocleOS_green/loading2_81.png new file mode 100644 index 0000000..4a7607e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_82.png b/pkg/src/plymouth/monocleOS_green/loading2_82.png new file mode 100644 index 0000000..054f362 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_83.png b/pkg/src/plymouth/monocleOS_green/loading2_83.png new file mode 100644 index 0000000..ee50d90 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_84.png b/pkg/src/plymouth/monocleOS_green/loading2_84.png new file mode 100644 index 0000000..9775132 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_85.png b/pkg/src/plymouth/monocleOS_green/loading2_85.png new file mode 100644 index 0000000..5978e32 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_86.png b/pkg/src/plymouth/monocleOS_green/loading2_86.png new file mode 100644 index 0000000..33ded31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_87.png b/pkg/src/plymouth/monocleOS_green/loading2_87.png new file mode 100644 index 0000000..5ebde88 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_88.png b/pkg/src/plymouth/monocleOS_green/loading2_88.png new file mode 100644 index 0000000..378b087 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_89.png b/pkg/src/plymouth/monocleOS_green/loading2_89.png new file mode 100644 index 0000000..222bf23 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_9.png b/pkg/src/plymouth/monocleOS_green/loading2_9.png new file mode 100755 index 0000000..5ad54a2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_90.png b/pkg/src/plymouth/monocleOS_green/loading2_90.png new file mode 100644 index 0000000..708822a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_91.png b/pkg/src/plymouth/monocleOS_green/loading2_91.png new file mode 100644 index 0000000..fe340ac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_92.png b/pkg/src/plymouth/monocleOS_green/loading2_92.png new file mode 100644 index 0000000..21f33ba Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_93.png b/pkg/src/plymouth/monocleOS_green/loading2_93.png new file mode 100644 index 0000000..5abee44 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_94.png b/pkg/src/plymouth/monocleOS_green/loading2_94.png new file mode 100644 index 0000000..1d37b79 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_95.png b/pkg/src/plymouth/monocleOS_green/loading2_95.png new file mode 100644 index 0000000..56fd076 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_96.png b/pkg/src/plymouth/monocleOS_green/loading2_96.png new file mode 100644 index 0000000..5a44ce1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_97.png b/pkg/src/plymouth/monocleOS_green/loading2_97.png new file mode 100644 index 0000000..c306f22 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_98.png b/pkg/src/plymouth/monocleOS_green/loading2_98.png new file mode 100644 index 0000000..002104e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_green/loading2_99.png b/pkg/src/plymouth/monocleOS_green/loading2_99.png new file mode 100644 index 0000000..a7b5952 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_green/lock.png b/pkg/src/plymouth/monocleOS_green/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_green/logo.png b/pkg/src/plymouth/monocleOS_green/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_green/monocleOS_green.plymouth b/pkg/src/plymouth/monocleOS_green/monocleOS_green.plymouth new file mode 100755 index 0000000..c389ef9 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_green/monocleOS_green.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS_green +Description=Green monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_green +ScriptFile=/usr/share/plymouth/themes/monocleOS_green/monocleOS_green.script diff --git a/pkg/src/plymouth/monocleOS_green/monocleOS_green.script b/pkg/src/plymouth/monocleOS_green/monocleOS_green.script new file mode 100755 index 0000000..7044d7e --- /dev/null +++ b/pkg/src/plymouth/monocleOS_green/monocleOS_green.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.52941176, 0.83921568, 0.21568627); +Window.SetBackgroundBottomColor(0.52941176, 0.83921568, 0.21568627); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_green/wallpaper.png b/pkg/src/plymouth/monocleOS_green/wallpaper.png new file mode 100755 index 0000000..cde1562 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_green/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/box.png b/pkg/src/plymouth/monocleOS_orange/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/box.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/bullet.png b/pkg/src/plymouth/monocleOS_orange/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/entry.png b/pkg/src/plymouth/monocleOS_orange/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/entry_password.png b/pkg/src/plymouth/monocleOS_orange/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_1.png b/pkg/src/plymouth/monocleOS_orange/loading2_1.png new file mode 100755 index 0000000..902bc19 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_10.png b/pkg/src/plymouth/monocleOS_orange/loading2_10.png new file mode 100755 index 0000000..97fd184 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_100.png b/pkg/src/plymouth/monocleOS_orange/loading2_100.png new file mode 100644 index 0000000..306b32b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_101.png b/pkg/src/plymouth/monocleOS_orange/loading2_101.png new file mode 100644 index 0000000..e04af52 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_102.png b/pkg/src/plymouth/monocleOS_orange/loading2_102.png new file mode 100644 index 0000000..11f3c9a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_103.png b/pkg/src/plymouth/monocleOS_orange/loading2_103.png new file mode 100644 index 0000000..de75e47 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_104.png b/pkg/src/plymouth/monocleOS_orange/loading2_104.png new file mode 100644 index 0000000..03d3f62 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_105.png b/pkg/src/plymouth/monocleOS_orange/loading2_105.png new file mode 100644 index 0000000..443a6c5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_106.png b/pkg/src/plymouth/monocleOS_orange/loading2_106.png new file mode 100644 index 0000000..298f3a2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_107.png b/pkg/src/plymouth/monocleOS_orange/loading2_107.png new file mode 100644 index 0000000..d8dd9de Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_108.png b/pkg/src/plymouth/monocleOS_orange/loading2_108.png new file mode 100644 index 0000000..375abbf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_109.png b/pkg/src/plymouth/monocleOS_orange/loading2_109.png new file mode 100644 index 0000000..d36af5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_11.png b/pkg/src/plymouth/monocleOS_orange/loading2_11.png new file mode 100755 index 0000000..5aebf6d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_110.png b/pkg/src/plymouth/monocleOS_orange/loading2_110.png new file mode 100644 index 0000000..212f1a1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_111.png b/pkg/src/plymouth/monocleOS_orange/loading2_111.png new file mode 100644 index 0000000..72c3359 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_112.png b/pkg/src/plymouth/monocleOS_orange/loading2_112.png new file mode 100644 index 0000000..d5d89f1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_113.png b/pkg/src/plymouth/monocleOS_orange/loading2_113.png new file mode 100644 index 0000000..009f5ba Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_114.png b/pkg/src/plymouth/monocleOS_orange/loading2_114.png new file mode 100644 index 0000000..f48a715 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_115.png b/pkg/src/plymouth/monocleOS_orange/loading2_115.png new file mode 100644 index 0000000..7953940 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_116.png b/pkg/src/plymouth/monocleOS_orange/loading2_116.png new file mode 100644 index 0000000..770e105 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_117.png b/pkg/src/plymouth/monocleOS_orange/loading2_117.png new file mode 100644 index 0000000..9d1c905 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_118.png b/pkg/src/plymouth/monocleOS_orange/loading2_118.png new file mode 100644 index 0000000..0980473 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_119.png b/pkg/src/plymouth/monocleOS_orange/loading2_119.png new file mode 100644 index 0000000..fa203b7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_12.png b/pkg/src/plymouth/monocleOS_orange/loading2_12.png new file mode 100755 index 0000000..ef7856a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_120.png b/pkg/src/plymouth/monocleOS_orange/loading2_120.png new file mode 100644 index 0000000..41bc5dc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_121.png b/pkg/src/plymouth/monocleOS_orange/loading2_121.png new file mode 100644 index 0000000..76cf246 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_122.png b/pkg/src/plymouth/monocleOS_orange/loading2_122.png new file mode 100644 index 0000000..bff8e36 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_123.png b/pkg/src/plymouth/monocleOS_orange/loading2_123.png new file mode 100644 index 0000000..b09ca43 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_124.png b/pkg/src/plymouth/monocleOS_orange/loading2_124.png new file mode 100644 index 0000000..5545d93 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_125.png b/pkg/src/plymouth/monocleOS_orange/loading2_125.png new file mode 100644 index 0000000..bcacd4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_126.png b/pkg/src/plymouth/monocleOS_orange/loading2_126.png new file mode 100644 index 0000000..2be8ad7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_127.png b/pkg/src/plymouth/monocleOS_orange/loading2_127.png new file mode 100644 index 0000000..07e2426 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_128.png b/pkg/src/plymouth/monocleOS_orange/loading2_128.png new file mode 100644 index 0000000..4c0ce95 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_129.png b/pkg/src/plymouth/monocleOS_orange/loading2_129.png new file mode 100644 index 0000000..c7d99c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_13.png b/pkg/src/plymouth/monocleOS_orange/loading2_13.png new file mode 100755 index 0000000..01f7bf7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_130.png b/pkg/src/plymouth/monocleOS_orange/loading2_130.png new file mode 100644 index 0000000..382e073 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_131.png b/pkg/src/plymouth/monocleOS_orange/loading2_131.png new file mode 100644 index 0000000..1fe1c1e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_132.png b/pkg/src/plymouth/monocleOS_orange/loading2_132.png new file mode 100644 index 0000000..6d1d7dc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_133.png b/pkg/src/plymouth/monocleOS_orange/loading2_133.png new file mode 100644 index 0000000..7183ebe Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_134.png b/pkg/src/plymouth/monocleOS_orange/loading2_134.png new file mode 100644 index 0000000..698fde3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_135.png b/pkg/src/plymouth/monocleOS_orange/loading2_135.png new file mode 100644 index 0000000..cd7ec20 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_136.png b/pkg/src/plymouth/monocleOS_orange/loading2_136.png new file mode 100644 index 0000000..b725737 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_137.png b/pkg/src/plymouth/monocleOS_orange/loading2_137.png new file mode 100644 index 0000000..e7c9c4e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_138.png b/pkg/src/plymouth/monocleOS_orange/loading2_138.png new file mode 100644 index 0000000..6f32d3c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_139.png b/pkg/src/plymouth/monocleOS_orange/loading2_139.png new file mode 100644 index 0000000..98aa076 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_14.png b/pkg/src/plymouth/monocleOS_orange/loading2_14.png new file mode 100755 index 0000000..e03c4c1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_140.png b/pkg/src/plymouth/monocleOS_orange/loading2_140.png new file mode 100644 index 0000000..5aaa936 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_141.png b/pkg/src/plymouth/monocleOS_orange/loading2_141.png new file mode 100644 index 0000000..902d2ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_142.png b/pkg/src/plymouth/monocleOS_orange/loading2_142.png new file mode 100644 index 0000000..c8abce2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_143.png b/pkg/src/plymouth/monocleOS_orange/loading2_143.png new file mode 100644 index 0000000..66ef327 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_144.png b/pkg/src/plymouth/monocleOS_orange/loading2_144.png new file mode 100644 index 0000000..67e83b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_145.png b/pkg/src/plymouth/monocleOS_orange/loading2_145.png new file mode 100644 index 0000000..237a7ff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_146.png b/pkg/src/plymouth/monocleOS_orange/loading2_146.png new file mode 100644 index 0000000..510d86b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_147.png b/pkg/src/plymouth/monocleOS_orange/loading2_147.png new file mode 100644 index 0000000..6e53647 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_148.png b/pkg/src/plymouth/monocleOS_orange/loading2_148.png new file mode 100644 index 0000000..84cd58c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_149.png b/pkg/src/plymouth/monocleOS_orange/loading2_149.png new file mode 100644 index 0000000..569647f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_15.png b/pkg/src/plymouth/monocleOS_orange/loading2_15.png new file mode 100755 index 0000000..8ccee57 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_150.png b/pkg/src/plymouth/monocleOS_orange/loading2_150.png new file mode 100644 index 0000000..acb34ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_151.png b/pkg/src/plymouth/monocleOS_orange/loading2_151.png new file mode 100644 index 0000000..15e81f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_152.png b/pkg/src/plymouth/monocleOS_orange/loading2_152.png new file mode 100644 index 0000000..339f035 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_153.png b/pkg/src/plymouth/monocleOS_orange/loading2_153.png new file mode 100644 index 0000000..bb7d7fc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_154.png b/pkg/src/plymouth/monocleOS_orange/loading2_154.png new file mode 100644 index 0000000..54472fe Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_155.png b/pkg/src/plymouth/monocleOS_orange/loading2_155.png new file mode 100644 index 0000000..1801228 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_156.png b/pkg/src/plymouth/monocleOS_orange/loading2_156.png new file mode 100644 index 0000000..02f9fe7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_157.png b/pkg/src/plymouth/monocleOS_orange/loading2_157.png new file mode 100644 index 0000000..b9a599f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_158.png b/pkg/src/plymouth/monocleOS_orange/loading2_158.png new file mode 100644 index 0000000..a362549 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_159.png b/pkg/src/plymouth/monocleOS_orange/loading2_159.png new file mode 100644 index 0000000..ffc55cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_16.png b/pkg/src/plymouth/monocleOS_orange/loading2_16.png new file mode 100755 index 0000000..08fdde6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_160.png b/pkg/src/plymouth/monocleOS_orange/loading2_160.png new file mode 100644 index 0000000..6c9da10 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_161.png b/pkg/src/plymouth/monocleOS_orange/loading2_161.png new file mode 100644 index 0000000..6c9da10 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_162.png b/pkg/src/plymouth/monocleOS_orange/loading2_162.png new file mode 100644 index 0000000..dd83966 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_163.png b/pkg/src/plymouth/monocleOS_orange/loading2_163.png new file mode 100644 index 0000000..56f9ab1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_164.png b/pkg/src/plymouth/monocleOS_orange/loading2_164.png new file mode 100644 index 0000000..6b70d00 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_165.png b/pkg/src/plymouth/monocleOS_orange/loading2_165.png new file mode 100644 index 0000000..8fbc01a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_166.png b/pkg/src/plymouth/monocleOS_orange/loading2_166.png new file mode 100644 index 0000000..de175f2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_167.png b/pkg/src/plymouth/monocleOS_orange/loading2_167.png new file mode 100644 index 0000000..1df866b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_168.png b/pkg/src/plymouth/monocleOS_orange/loading2_168.png new file mode 100644 index 0000000..d10a2e7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_169.png b/pkg/src/plymouth/monocleOS_orange/loading2_169.png new file mode 100644 index 0000000..c4a16f6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_17.png b/pkg/src/plymouth/monocleOS_orange/loading2_17.png new file mode 100755 index 0000000..4874dd4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_170.png b/pkg/src/plymouth/monocleOS_orange/loading2_170.png new file mode 100644 index 0000000..4e73fd8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_171.png b/pkg/src/plymouth/monocleOS_orange/loading2_171.png new file mode 100644 index 0000000..279934c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_172.png b/pkg/src/plymouth/monocleOS_orange/loading2_172.png new file mode 100644 index 0000000..a755d2f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_173.png b/pkg/src/plymouth/monocleOS_orange/loading2_173.png new file mode 100644 index 0000000..563d040 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_174.png b/pkg/src/plymouth/monocleOS_orange/loading2_174.png new file mode 100644 index 0000000..0ab9aac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_175.png b/pkg/src/plymouth/monocleOS_orange/loading2_175.png new file mode 100644 index 0000000..16c7b71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_176.png b/pkg/src/plymouth/monocleOS_orange/loading2_176.png new file mode 100644 index 0000000..e743540 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_177.png b/pkg/src/plymouth/monocleOS_orange/loading2_177.png new file mode 100644 index 0000000..ac8af60 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_178.png b/pkg/src/plymouth/monocleOS_orange/loading2_178.png new file mode 100644 index 0000000..6715acb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_179.png b/pkg/src/plymouth/monocleOS_orange/loading2_179.png new file mode 100644 index 0000000..868d1b7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_18.png b/pkg/src/plymouth/monocleOS_orange/loading2_18.png new file mode 100755 index 0000000..db9ab2c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_180.png b/pkg/src/plymouth/monocleOS_orange/loading2_180.png new file mode 100644 index 0000000..09900ee Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_181.png b/pkg/src/plymouth/monocleOS_orange/loading2_181.png new file mode 100644 index 0000000..be11576 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_182.png b/pkg/src/plymouth/monocleOS_orange/loading2_182.png new file mode 100644 index 0000000..6d02e28 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_183.png b/pkg/src/plymouth/monocleOS_orange/loading2_183.png new file mode 100644 index 0000000..84ceb28 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_184.png b/pkg/src/plymouth/monocleOS_orange/loading2_184.png new file mode 100644 index 0000000..f41c636 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_185.png b/pkg/src/plymouth/monocleOS_orange/loading2_185.png new file mode 100644 index 0000000..0c22087 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_186.png b/pkg/src/plymouth/monocleOS_orange/loading2_186.png new file mode 100644 index 0000000..e015c5d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_187.png b/pkg/src/plymouth/monocleOS_orange/loading2_187.png new file mode 100644 index 0000000..1a76236 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_188.png b/pkg/src/plymouth/monocleOS_orange/loading2_188.png new file mode 100644 index 0000000..1090d43 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_189.png b/pkg/src/plymouth/monocleOS_orange/loading2_189.png new file mode 100644 index 0000000..a0c240a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_19.png b/pkg/src/plymouth/monocleOS_orange/loading2_19.png new file mode 100755 index 0000000..70b9d98 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_190.png b/pkg/src/plymouth/monocleOS_orange/loading2_190.png new file mode 100644 index 0000000..47de986 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_191.png b/pkg/src/plymouth/monocleOS_orange/loading2_191.png new file mode 100644 index 0000000..3801559 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_192.png b/pkg/src/plymouth/monocleOS_orange/loading2_192.png new file mode 100644 index 0000000..fe35a23 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_193.png b/pkg/src/plymouth/monocleOS_orange/loading2_193.png new file mode 100644 index 0000000..16678aa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_194.png b/pkg/src/plymouth/monocleOS_orange/loading2_194.png new file mode 100644 index 0000000..46fe64c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_195.png b/pkg/src/plymouth/monocleOS_orange/loading2_195.png new file mode 100644 index 0000000..46fe64c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_196.png b/pkg/src/plymouth/monocleOS_orange/loading2_196.png new file mode 100644 index 0000000..13fd5df Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_197.png b/pkg/src/plymouth/monocleOS_orange/loading2_197.png new file mode 100644 index 0000000..3574379 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_198.png b/pkg/src/plymouth/monocleOS_orange/loading2_198.png new file mode 100644 index 0000000..0116a16 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_199.png b/pkg/src/plymouth/monocleOS_orange/loading2_199.png new file mode 100644 index 0000000..bca9ada Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_2.png b/pkg/src/plymouth/monocleOS_orange/loading2_2.png new file mode 100755 index 0000000..8784cb0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_20.png b/pkg/src/plymouth/monocleOS_orange/loading2_20.png new file mode 100755 index 0000000..5cca377 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_200.png b/pkg/src/plymouth/monocleOS_orange/loading2_200.png new file mode 100644 index 0000000..72883d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_201.png b/pkg/src/plymouth/monocleOS_orange/loading2_201.png new file mode 100644 index 0000000..12fbab2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_202.png b/pkg/src/plymouth/monocleOS_orange/loading2_202.png new file mode 100644 index 0000000..dbd74e3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_203.png b/pkg/src/plymouth/monocleOS_orange/loading2_203.png new file mode 100644 index 0000000..88e5b9c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_204.png b/pkg/src/plymouth/monocleOS_orange/loading2_204.png new file mode 100644 index 0000000..8776c32 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_205.png b/pkg/src/plymouth/monocleOS_orange/loading2_205.png new file mode 100644 index 0000000..162aed1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_206.png b/pkg/src/plymouth/monocleOS_orange/loading2_206.png new file mode 100644 index 0000000..377390b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_207.png b/pkg/src/plymouth/monocleOS_orange/loading2_207.png new file mode 100644 index 0000000..bf4826b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_208.png b/pkg/src/plymouth/monocleOS_orange/loading2_208.png new file mode 100644 index 0000000..f71058d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_209.png b/pkg/src/plymouth/monocleOS_orange/loading2_209.png new file mode 100644 index 0000000..a1c5494 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_21.png b/pkg/src/plymouth/monocleOS_orange/loading2_21.png new file mode 100755 index 0000000..b3f8c85 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_210.png b/pkg/src/plymouth/monocleOS_orange/loading2_210.png new file mode 100644 index 0000000..42f037a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_211.png b/pkg/src/plymouth/monocleOS_orange/loading2_211.png new file mode 100644 index 0000000..6659434 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_212.png b/pkg/src/plymouth/monocleOS_orange/loading2_212.png new file mode 100644 index 0000000..1cbd0c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_213.png b/pkg/src/plymouth/monocleOS_orange/loading2_213.png new file mode 100644 index 0000000..83a436f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_214.png b/pkg/src/plymouth/monocleOS_orange/loading2_214.png new file mode 100644 index 0000000..8663a63 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_215.png b/pkg/src/plymouth/monocleOS_orange/loading2_215.png new file mode 100644 index 0000000..67c2cc0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_216.png b/pkg/src/plymouth/monocleOS_orange/loading2_216.png new file mode 100644 index 0000000..a3cd693 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_217.png b/pkg/src/plymouth/monocleOS_orange/loading2_217.png new file mode 100644 index 0000000..6a4ee3f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_218.png b/pkg/src/plymouth/monocleOS_orange/loading2_218.png new file mode 100644 index 0000000..51e0204 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_219.png b/pkg/src/plymouth/monocleOS_orange/loading2_219.png new file mode 100644 index 0000000..25cbc55 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_22.png b/pkg/src/plymouth/monocleOS_orange/loading2_22.png new file mode 100755 index 0000000..108822e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_220.png b/pkg/src/plymouth/monocleOS_orange/loading2_220.png new file mode 100644 index 0000000..c40418b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_221.png b/pkg/src/plymouth/monocleOS_orange/loading2_221.png new file mode 100644 index 0000000..d6c2eda Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_23.png b/pkg/src/plymouth/monocleOS_orange/loading2_23.png new file mode 100755 index 0000000..b7270f9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_24.png b/pkg/src/plymouth/monocleOS_orange/loading2_24.png new file mode 100755 index 0000000..45dd424 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_25.png b/pkg/src/plymouth/monocleOS_orange/loading2_25.png new file mode 100755 index 0000000..f5c53b8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_26.png b/pkg/src/plymouth/monocleOS_orange/loading2_26.png new file mode 100755 index 0000000..8b34896 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_27.png b/pkg/src/plymouth/monocleOS_orange/loading2_27.png new file mode 100755 index 0000000..42ee615 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_28.png b/pkg/src/plymouth/monocleOS_orange/loading2_28.png new file mode 100755 index 0000000..90bcb99 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_29.png b/pkg/src/plymouth/monocleOS_orange/loading2_29.png new file mode 100755 index 0000000..6ef890e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_3.png b/pkg/src/plymouth/monocleOS_orange/loading2_3.png new file mode 100755 index 0000000..a4eaef4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_30.png b/pkg/src/plymouth/monocleOS_orange/loading2_30.png new file mode 100755 index 0000000..9004c0b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_31.png b/pkg/src/plymouth/monocleOS_orange/loading2_31.png new file mode 100755 index 0000000..932f6e3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_32.png b/pkg/src/plymouth/monocleOS_orange/loading2_32.png new file mode 100755 index 0000000..0271691 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_33.png b/pkg/src/plymouth/monocleOS_orange/loading2_33.png new file mode 100755 index 0000000..c036637 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_34.png b/pkg/src/plymouth/monocleOS_orange/loading2_34.png new file mode 100755 index 0000000..76f491a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_35.png b/pkg/src/plymouth/monocleOS_orange/loading2_35.png new file mode 100755 index 0000000..5979d10 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_36.png b/pkg/src/plymouth/monocleOS_orange/loading2_36.png new file mode 100755 index 0000000..5efa14a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_37.png b/pkg/src/plymouth/monocleOS_orange/loading2_37.png new file mode 100755 index 0000000..2fc6f12 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_38.png b/pkg/src/plymouth/monocleOS_orange/loading2_38.png new file mode 100755 index 0000000..87c78cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_39.png b/pkg/src/plymouth/monocleOS_orange/loading2_39.png new file mode 100755 index 0000000..2e4c80b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_4.png b/pkg/src/plymouth/monocleOS_orange/loading2_4.png new file mode 100755 index 0000000..90f3420 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_40.png b/pkg/src/plymouth/monocleOS_orange/loading2_40.png new file mode 100755 index 0000000..20848cb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_41.png b/pkg/src/plymouth/monocleOS_orange/loading2_41.png new file mode 100755 index 0000000..fa9fcf7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_42.png b/pkg/src/plymouth/monocleOS_orange/loading2_42.png new file mode 100755 index 0000000..31080d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_43.png b/pkg/src/plymouth/monocleOS_orange/loading2_43.png new file mode 100755 index 0000000..b48fc33 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_44.png b/pkg/src/plymouth/monocleOS_orange/loading2_44.png new file mode 100755 index 0000000..e052c9f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_45.png b/pkg/src/plymouth/monocleOS_orange/loading2_45.png new file mode 100755 index 0000000..016d8fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_46.png b/pkg/src/plymouth/monocleOS_orange/loading2_46.png new file mode 100755 index 0000000..3232783 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_47.png b/pkg/src/plymouth/monocleOS_orange/loading2_47.png new file mode 100755 index 0000000..8baaf40 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_48.png b/pkg/src/plymouth/monocleOS_orange/loading2_48.png new file mode 100755 index 0000000..abce438 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_49.png b/pkg/src/plymouth/monocleOS_orange/loading2_49.png new file mode 100755 index 0000000..4f71535 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_5.png b/pkg/src/plymouth/monocleOS_orange/loading2_5.png new file mode 100755 index 0000000..bd6a500 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_50.png b/pkg/src/plymouth/monocleOS_orange/loading2_50.png new file mode 100755 index 0000000..9b7bd96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_51.png b/pkg/src/plymouth/monocleOS_orange/loading2_51.png new file mode 100755 index 0000000..cda4406 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_52.png b/pkg/src/plymouth/monocleOS_orange/loading2_52.png new file mode 100755 index 0000000..c641b1e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_53.png b/pkg/src/plymouth/monocleOS_orange/loading2_53.png new file mode 100755 index 0000000..9fb91e9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_54.png b/pkg/src/plymouth/monocleOS_orange/loading2_54.png new file mode 100755 index 0000000..36c2f19 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_55.png b/pkg/src/plymouth/monocleOS_orange/loading2_55.png new file mode 100755 index 0000000..fbac4cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_56.png b/pkg/src/plymouth/monocleOS_orange/loading2_56.png new file mode 100755 index 0000000..ec53c3f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_57.png b/pkg/src/plymouth/monocleOS_orange/loading2_57.png new file mode 100755 index 0000000..cb133fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_58.png b/pkg/src/plymouth/monocleOS_orange/loading2_58.png new file mode 100755 index 0000000..ff138de Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_59.png b/pkg/src/plymouth/monocleOS_orange/loading2_59.png new file mode 100755 index 0000000..ceec819 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_6.png b/pkg/src/plymouth/monocleOS_orange/loading2_6.png new file mode 100755 index 0000000..a880d2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_60.png b/pkg/src/plymouth/monocleOS_orange/loading2_60.png new file mode 100755 index 0000000..5002bef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_61.png b/pkg/src/plymouth/monocleOS_orange/loading2_61.png new file mode 100755 index 0000000..0b3aedb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_62.png b/pkg/src/plymouth/monocleOS_orange/loading2_62.png new file mode 100755 index 0000000..9518e86 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_63.png b/pkg/src/plymouth/monocleOS_orange/loading2_63.png new file mode 100755 index 0000000..2f597d8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_64.png b/pkg/src/plymouth/monocleOS_orange/loading2_64.png new file mode 100755 index 0000000..e82d83b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_65.png b/pkg/src/plymouth/monocleOS_orange/loading2_65.png new file mode 100755 index 0000000..608624a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_66.png b/pkg/src/plymouth/monocleOS_orange/loading2_66.png new file mode 100755 index 0000000..d4b0c24 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_67.png b/pkg/src/plymouth/monocleOS_orange/loading2_67.png new file mode 100755 index 0000000..2e0db2f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_68.png b/pkg/src/plymouth/monocleOS_orange/loading2_68.png new file mode 100755 index 0000000..9ff9d19 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_69.png b/pkg/src/plymouth/monocleOS_orange/loading2_69.png new file mode 100755 index 0000000..f715c4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_7.png b/pkg/src/plymouth/monocleOS_orange/loading2_7.png new file mode 100755 index 0000000..e4ff2c5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_70.png b/pkg/src/plymouth/monocleOS_orange/loading2_70.png new file mode 100755 index 0000000..c10e305 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_71.png b/pkg/src/plymouth/monocleOS_orange/loading2_71.png new file mode 100755 index 0000000..69d9473 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_72.png b/pkg/src/plymouth/monocleOS_orange/loading2_72.png new file mode 100755 index 0000000..8e70924 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_73.png b/pkg/src/plymouth/monocleOS_orange/loading2_73.png new file mode 100755 index 0000000..a4e7a13 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_74.png b/pkg/src/plymouth/monocleOS_orange/loading2_74.png new file mode 100755 index 0000000..33a2e81 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_75.png b/pkg/src/plymouth/monocleOS_orange/loading2_75.png new file mode 100755 index 0000000..7c2c28f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_76.png b/pkg/src/plymouth/monocleOS_orange/loading2_76.png new file mode 100755 index 0000000..d0b22df Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_77.png b/pkg/src/plymouth/monocleOS_orange/loading2_77.png new file mode 100755 index 0000000..fbc9394 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_78.png b/pkg/src/plymouth/monocleOS_orange/loading2_78.png new file mode 100644 index 0000000..672db6f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_79.png b/pkg/src/plymouth/monocleOS_orange/loading2_79.png new file mode 100644 index 0000000..6026a71 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_8.png b/pkg/src/plymouth/monocleOS_orange/loading2_8.png new file mode 100755 index 0000000..1aef115 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_80.png b/pkg/src/plymouth/monocleOS_orange/loading2_80.png new file mode 100644 index 0000000..906938b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_81.png b/pkg/src/plymouth/monocleOS_orange/loading2_81.png new file mode 100644 index 0000000..9c63217 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_82.png b/pkg/src/plymouth/monocleOS_orange/loading2_82.png new file mode 100644 index 0000000..86b8d7f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_83.png b/pkg/src/plymouth/monocleOS_orange/loading2_83.png new file mode 100644 index 0000000..d835d9b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_84.png b/pkg/src/plymouth/monocleOS_orange/loading2_84.png new file mode 100644 index 0000000..18830fb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_85.png b/pkg/src/plymouth/monocleOS_orange/loading2_85.png new file mode 100644 index 0000000..6b04ed9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_86.png b/pkg/src/plymouth/monocleOS_orange/loading2_86.png new file mode 100644 index 0000000..ec6f9d5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_87.png b/pkg/src/plymouth/monocleOS_orange/loading2_87.png new file mode 100644 index 0000000..81f147c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_88.png b/pkg/src/plymouth/monocleOS_orange/loading2_88.png new file mode 100644 index 0000000..4f051df Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_89.png b/pkg/src/plymouth/monocleOS_orange/loading2_89.png new file mode 100644 index 0000000..915fadb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_9.png b/pkg/src/plymouth/monocleOS_orange/loading2_9.png new file mode 100755 index 0000000..e2b9c22 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_90.png b/pkg/src/plymouth/monocleOS_orange/loading2_90.png new file mode 100644 index 0000000..15856d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_91.png b/pkg/src/plymouth/monocleOS_orange/loading2_91.png new file mode 100644 index 0000000..c20ce65 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_92.png b/pkg/src/plymouth/monocleOS_orange/loading2_92.png new file mode 100644 index 0000000..d8bb48e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_93.png b/pkg/src/plymouth/monocleOS_orange/loading2_93.png new file mode 100644 index 0000000..c75db7b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_94.png b/pkg/src/plymouth/monocleOS_orange/loading2_94.png new file mode 100644 index 0000000..2cf34c7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_95.png b/pkg/src/plymouth/monocleOS_orange/loading2_95.png new file mode 100644 index 0000000..5ba19f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_96.png b/pkg/src/plymouth/monocleOS_orange/loading2_96.png new file mode 100644 index 0000000..56747e9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_97.png b/pkg/src/plymouth/monocleOS_orange/loading2_97.png new file mode 100644 index 0000000..36d535f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_98.png b/pkg/src/plymouth/monocleOS_orange/loading2_98.png new file mode 100644 index 0000000..3eeeadc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/loading2_99.png b/pkg/src/plymouth/monocleOS_orange/loading2_99.png new file mode 100644 index 0000000..c16304d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/lock.png b/pkg/src/plymouth/monocleOS_orange/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/logo.png b/pkg/src/plymouth/monocleOS_orange/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.plymouth b/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.plymouth new file mode 100755 index 0000000..e7caa23 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS +Description=Orange monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_orange +ScriptFile=/usr/share/plymouth/themes/monocleOS_orange/monocleOS_orange.script diff --git a/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.script b/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.script new file mode 100755 index 0000000..a9039d6 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_orange/monocleOS_orange.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.839215686, 0.28627451, 0.215686275); +Window.SetBackgroundBottomColor(0.839215686, 0.28627451, 0.215686275); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_orange/wallpaper.png b/pkg/src/plymouth/monocleOS_orange/wallpaper.png new file mode 100755 index 0000000..b53bfa8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_orange/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/box.png b/pkg/src/plymouth/monocleOS_pink/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/box.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/bullet.png b/pkg/src/plymouth/monocleOS_pink/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/entry.png b/pkg/src/plymouth/monocleOS_pink/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/entry_password.png b/pkg/src/plymouth/monocleOS_pink/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_1.png b/pkg/src/plymouth/monocleOS_pink/loading2_1.png new file mode 100755 index 0000000..e500224 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_10.png b/pkg/src/plymouth/monocleOS_pink/loading2_10.png new file mode 100755 index 0000000..f174548 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_100.png b/pkg/src/plymouth/monocleOS_pink/loading2_100.png new file mode 100644 index 0000000..f6da39b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_101.png b/pkg/src/plymouth/monocleOS_pink/loading2_101.png new file mode 100644 index 0000000..8179764 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_102.png b/pkg/src/plymouth/monocleOS_pink/loading2_102.png new file mode 100644 index 0000000..48a4602 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_103.png b/pkg/src/plymouth/monocleOS_pink/loading2_103.png new file mode 100644 index 0000000..fd19989 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_104.png b/pkg/src/plymouth/monocleOS_pink/loading2_104.png new file mode 100644 index 0000000..817e65c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_105.png b/pkg/src/plymouth/monocleOS_pink/loading2_105.png new file mode 100644 index 0000000..3bef8f5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_106.png b/pkg/src/plymouth/monocleOS_pink/loading2_106.png new file mode 100644 index 0000000..5a0283a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_107.png b/pkg/src/plymouth/monocleOS_pink/loading2_107.png new file mode 100644 index 0000000..0a661e0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_108.png b/pkg/src/plymouth/monocleOS_pink/loading2_108.png new file mode 100644 index 0000000..c339618 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_109.png b/pkg/src/plymouth/monocleOS_pink/loading2_109.png new file mode 100644 index 0000000..3d3a695 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_11.png b/pkg/src/plymouth/monocleOS_pink/loading2_11.png new file mode 100755 index 0000000..03c90fb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_110.png b/pkg/src/plymouth/monocleOS_pink/loading2_110.png new file mode 100644 index 0000000..82ccb90 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_111.png b/pkg/src/plymouth/monocleOS_pink/loading2_111.png new file mode 100644 index 0000000..a3b75f2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_112.png b/pkg/src/plymouth/monocleOS_pink/loading2_112.png new file mode 100644 index 0000000..b5ea8f8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_113.png b/pkg/src/plymouth/monocleOS_pink/loading2_113.png new file mode 100644 index 0000000..d566359 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_114.png b/pkg/src/plymouth/monocleOS_pink/loading2_114.png new file mode 100644 index 0000000..801366e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_115.png b/pkg/src/plymouth/monocleOS_pink/loading2_115.png new file mode 100644 index 0000000..7056254 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_116.png b/pkg/src/plymouth/monocleOS_pink/loading2_116.png new file mode 100644 index 0000000..b97a20a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_117.png b/pkg/src/plymouth/monocleOS_pink/loading2_117.png new file mode 100644 index 0000000..db88fa9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_118.png b/pkg/src/plymouth/monocleOS_pink/loading2_118.png new file mode 100644 index 0000000..ee583ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_119.png b/pkg/src/plymouth/monocleOS_pink/loading2_119.png new file mode 100644 index 0000000..eeec0d9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_12.png b/pkg/src/plymouth/monocleOS_pink/loading2_12.png new file mode 100755 index 0000000..c7e70fb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_120.png b/pkg/src/plymouth/monocleOS_pink/loading2_120.png new file mode 100644 index 0000000..addc154 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_121.png b/pkg/src/plymouth/monocleOS_pink/loading2_121.png new file mode 100644 index 0000000..b44c60b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_122.png b/pkg/src/plymouth/monocleOS_pink/loading2_122.png new file mode 100644 index 0000000..b021f68 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_123.png b/pkg/src/plymouth/monocleOS_pink/loading2_123.png new file mode 100644 index 0000000..bd15cb2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_124.png b/pkg/src/plymouth/monocleOS_pink/loading2_124.png new file mode 100644 index 0000000..34c9a4f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_125.png b/pkg/src/plymouth/monocleOS_pink/loading2_125.png new file mode 100644 index 0000000..3906364 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_126.png b/pkg/src/plymouth/monocleOS_pink/loading2_126.png new file mode 100644 index 0000000..e8e87c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_127.png b/pkg/src/plymouth/monocleOS_pink/loading2_127.png new file mode 100644 index 0000000..29a65f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_128.png b/pkg/src/plymouth/monocleOS_pink/loading2_128.png new file mode 100644 index 0000000..16e811e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_129.png b/pkg/src/plymouth/monocleOS_pink/loading2_129.png new file mode 100644 index 0000000..d6f8be4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_13.png b/pkg/src/plymouth/monocleOS_pink/loading2_13.png new file mode 100755 index 0000000..3897a44 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_130.png b/pkg/src/plymouth/monocleOS_pink/loading2_130.png new file mode 100644 index 0000000..8cb9928 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_131.png b/pkg/src/plymouth/monocleOS_pink/loading2_131.png new file mode 100644 index 0000000..dde1d77 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_132.png b/pkg/src/plymouth/monocleOS_pink/loading2_132.png new file mode 100644 index 0000000..7821c9d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_133.png b/pkg/src/plymouth/monocleOS_pink/loading2_133.png new file mode 100644 index 0000000..82b38b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_134.png b/pkg/src/plymouth/monocleOS_pink/loading2_134.png new file mode 100644 index 0000000..ba62936 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_135.png b/pkg/src/plymouth/monocleOS_pink/loading2_135.png new file mode 100644 index 0000000..75ce2bc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_136.png b/pkg/src/plymouth/monocleOS_pink/loading2_136.png new file mode 100644 index 0000000..248f22a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_137.png b/pkg/src/plymouth/monocleOS_pink/loading2_137.png new file mode 100644 index 0000000..6fa064c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_138.png b/pkg/src/plymouth/monocleOS_pink/loading2_138.png new file mode 100644 index 0000000..fc83e4f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_139.png b/pkg/src/plymouth/monocleOS_pink/loading2_139.png new file mode 100644 index 0000000..5b8c040 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_14.png b/pkg/src/plymouth/monocleOS_pink/loading2_14.png new file mode 100755 index 0000000..1739616 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_140.png b/pkg/src/plymouth/monocleOS_pink/loading2_140.png new file mode 100644 index 0000000..0ab8dca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_141.png b/pkg/src/plymouth/monocleOS_pink/loading2_141.png new file mode 100644 index 0000000..0d90429 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_142.png b/pkg/src/plymouth/monocleOS_pink/loading2_142.png new file mode 100644 index 0000000..4d5387f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_143.png b/pkg/src/plymouth/monocleOS_pink/loading2_143.png new file mode 100644 index 0000000..4e61730 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_144.png b/pkg/src/plymouth/monocleOS_pink/loading2_144.png new file mode 100644 index 0000000..c34eded Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_145.png b/pkg/src/plymouth/monocleOS_pink/loading2_145.png new file mode 100644 index 0000000..60e37c5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_146.png b/pkg/src/plymouth/monocleOS_pink/loading2_146.png new file mode 100644 index 0000000..11ac3f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_147.png b/pkg/src/plymouth/monocleOS_pink/loading2_147.png new file mode 100644 index 0000000..f033765 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_148.png b/pkg/src/plymouth/monocleOS_pink/loading2_148.png new file mode 100644 index 0000000..9198617 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_149.png b/pkg/src/plymouth/monocleOS_pink/loading2_149.png new file mode 100644 index 0000000..f5a0fae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_15.png b/pkg/src/plymouth/monocleOS_pink/loading2_15.png new file mode 100755 index 0000000..03d5304 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_150.png b/pkg/src/plymouth/monocleOS_pink/loading2_150.png new file mode 100644 index 0000000..7be6afa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_151.png b/pkg/src/plymouth/monocleOS_pink/loading2_151.png new file mode 100644 index 0000000..f856b5f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_152.png b/pkg/src/plymouth/monocleOS_pink/loading2_152.png new file mode 100644 index 0000000..02bb1d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_153.png b/pkg/src/plymouth/monocleOS_pink/loading2_153.png new file mode 100644 index 0000000..cd4db46 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_154.png b/pkg/src/plymouth/monocleOS_pink/loading2_154.png new file mode 100644 index 0000000..7032d87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_155.png b/pkg/src/plymouth/monocleOS_pink/loading2_155.png new file mode 100644 index 0000000..f576f97 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_156.png b/pkg/src/plymouth/monocleOS_pink/loading2_156.png new file mode 100644 index 0000000..a3c6f13 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_157.png b/pkg/src/plymouth/monocleOS_pink/loading2_157.png new file mode 100644 index 0000000..fb9c8a5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_158.png b/pkg/src/plymouth/monocleOS_pink/loading2_158.png new file mode 100644 index 0000000..dcb6f31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_159.png b/pkg/src/plymouth/monocleOS_pink/loading2_159.png new file mode 100644 index 0000000..4713da8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_16.png b/pkg/src/plymouth/monocleOS_pink/loading2_16.png new file mode 100755 index 0000000..5a7d3ce Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_160.png b/pkg/src/plymouth/monocleOS_pink/loading2_160.png new file mode 100644 index 0000000..0e25314 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_161.png b/pkg/src/plymouth/monocleOS_pink/loading2_161.png new file mode 100644 index 0000000..0e25314 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_162.png b/pkg/src/plymouth/monocleOS_pink/loading2_162.png new file mode 100644 index 0000000..30336c1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_163.png b/pkg/src/plymouth/monocleOS_pink/loading2_163.png new file mode 100644 index 0000000..ff917f9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_164.png b/pkg/src/plymouth/monocleOS_pink/loading2_164.png new file mode 100644 index 0000000..27f07f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_165.png b/pkg/src/plymouth/monocleOS_pink/loading2_165.png new file mode 100644 index 0000000..a521420 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_166.png b/pkg/src/plymouth/monocleOS_pink/loading2_166.png new file mode 100644 index 0000000..167c52f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_167.png b/pkg/src/plymouth/monocleOS_pink/loading2_167.png new file mode 100644 index 0000000..b37629e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_168.png b/pkg/src/plymouth/monocleOS_pink/loading2_168.png new file mode 100644 index 0000000..81903e6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_169.png b/pkg/src/plymouth/monocleOS_pink/loading2_169.png new file mode 100644 index 0000000..5169f2c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_17.png b/pkg/src/plymouth/monocleOS_pink/loading2_17.png new file mode 100755 index 0000000..93d61d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_170.png b/pkg/src/plymouth/monocleOS_pink/loading2_170.png new file mode 100644 index 0000000..89d915a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_171.png b/pkg/src/plymouth/monocleOS_pink/loading2_171.png new file mode 100644 index 0000000..4e22596 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_172.png b/pkg/src/plymouth/monocleOS_pink/loading2_172.png new file mode 100644 index 0000000..e5e2847 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_173.png b/pkg/src/plymouth/monocleOS_pink/loading2_173.png new file mode 100644 index 0000000..2396303 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_174.png b/pkg/src/plymouth/monocleOS_pink/loading2_174.png new file mode 100644 index 0000000..a840c55 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_175.png b/pkg/src/plymouth/monocleOS_pink/loading2_175.png new file mode 100644 index 0000000..8ca423c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_176.png b/pkg/src/plymouth/monocleOS_pink/loading2_176.png new file mode 100644 index 0000000..2e45b7c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_177.png b/pkg/src/plymouth/monocleOS_pink/loading2_177.png new file mode 100644 index 0000000..25a959b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_178.png b/pkg/src/plymouth/monocleOS_pink/loading2_178.png new file mode 100644 index 0000000..e374bf3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_179.png b/pkg/src/plymouth/monocleOS_pink/loading2_179.png new file mode 100644 index 0000000..0a80d59 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_18.png b/pkg/src/plymouth/monocleOS_pink/loading2_18.png new file mode 100755 index 0000000..2a025cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_180.png b/pkg/src/plymouth/monocleOS_pink/loading2_180.png new file mode 100644 index 0000000..6c0d6c6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_181.png b/pkg/src/plymouth/monocleOS_pink/loading2_181.png new file mode 100644 index 0000000..ad29d33 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_182.png b/pkg/src/plymouth/monocleOS_pink/loading2_182.png new file mode 100644 index 0000000..db38983 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_183.png b/pkg/src/plymouth/monocleOS_pink/loading2_183.png new file mode 100644 index 0000000..9837d9e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_184.png b/pkg/src/plymouth/monocleOS_pink/loading2_184.png new file mode 100644 index 0000000..c32894c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_185.png b/pkg/src/plymouth/monocleOS_pink/loading2_185.png new file mode 100644 index 0000000..832cc78 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_186.png b/pkg/src/plymouth/monocleOS_pink/loading2_186.png new file mode 100644 index 0000000..5a5fc4a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_187.png b/pkg/src/plymouth/monocleOS_pink/loading2_187.png new file mode 100644 index 0000000..fe9da4f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_188.png b/pkg/src/plymouth/monocleOS_pink/loading2_188.png new file mode 100644 index 0000000..0a6914a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_189.png b/pkg/src/plymouth/monocleOS_pink/loading2_189.png new file mode 100644 index 0000000..ce4a32d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_19.png b/pkg/src/plymouth/monocleOS_pink/loading2_19.png new file mode 100755 index 0000000..727d3d6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_190.png b/pkg/src/plymouth/monocleOS_pink/loading2_190.png new file mode 100644 index 0000000..f0e4bc1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_191.png b/pkg/src/plymouth/monocleOS_pink/loading2_191.png new file mode 100644 index 0000000..3fdaeac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_192.png b/pkg/src/plymouth/monocleOS_pink/loading2_192.png new file mode 100644 index 0000000..340293d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_193.png b/pkg/src/plymouth/monocleOS_pink/loading2_193.png new file mode 100644 index 0000000..a074749 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_194.png b/pkg/src/plymouth/monocleOS_pink/loading2_194.png new file mode 100644 index 0000000..dccdaed Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_195.png b/pkg/src/plymouth/monocleOS_pink/loading2_195.png new file mode 100644 index 0000000..dccdaed Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_196.png b/pkg/src/plymouth/monocleOS_pink/loading2_196.png new file mode 100644 index 0000000..d71ee56 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_197.png b/pkg/src/plymouth/monocleOS_pink/loading2_197.png new file mode 100644 index 0000000..ce68297 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_198.png b/pkg/src/plymouth/monocleOS_pink/loading2_198.png new file mode 100644 index 0000000..f1fe83a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_199.png b/pkg/src/plymouth/monocleOS_pink/loading2_199.png new file mode 100644 index 0000000..c161d0c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_2.png b/pkg/src/plymouth/monocleOS_pink/loading2_2.png new file mode 100755 index 0000000..5268b0d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_20.png b/pkg/src/plymouth/monocleOS_pink/loading2_20.png new file mode 100755 index 0000000..e560b3a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_200.png b/pkg/src/plymouth/monocleOS_pink/loading2_200.png new file mode 100644 index 0000000..76b55b1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_201.png b/pkg/src/plymouth/monocleOS_pink/loading2_201.png new file mode 100644 index 0000000..ada52aa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_202.png b/pkg/src/plymouth/monocleOS_pink/loading2_202.png new file mode 100644 index 0000000..e9e962c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_203.png b/pkg/src/plymouth/monocleOS_pink/loading2_203.png new file mode 100644 index 0000000..c04e59e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_204.png b/pkg/src/plymouth/monocleOS_pink/loading2_204.png new file mode 100644 index 0000000..b8f52ef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_205.png b/pkg/src/plymouth/monocleOS_pink/loading2_205.png new file mode 100644 index 0000000..52e373f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_206.png b/pkg/src/plymouth/monocleOS_pink/loading2_206.png new file mode 100644 index 0000000..72028f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_207.png b/pkg/src/plymouth/monocleOS_pink/loading2_207.png new file mode 100644 index 0000000..d99916e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_208.png b/pkg/src/plymouth/monocleOS_pink/loading2_208.png new file mode 100644 index 0000000..7874cc3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_209.png b/pkg/src/plymouth/monocleOS_pink/loading2_209.png new file mode 100644 index 0000000..c9b50ff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_21.png b/pkg/src/plymouth/monocleOS_pink/loading2_21.png new file mode 100755 index 0000000..08d3ed2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_210.png b/pkg/src/plymouth/monocleOS_pink/loading2_210.png new file mode 100644 index 0000000..acaceb9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_211.png b/pkg/src/plymouth/monocleOS_pink/loading2_211.png new file mode 100644 index 0000000..cfd1b34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_212.png b/pkg/src/plymouth/monocleOS_pink/loading2_212.png new file mode 100644 index 0000000..f1ca427 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_213.png b/pkg/src/plymouth/monocleOS_pink/loading2_213.png new file mode 100644 index 0000000..6dc1f73 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_214.png b/pkg/src/plymouth/monocleOS_pink/loading2_214.png new file mode 100644 index 0000000..84e7873 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_215.png b/pkg/src/plymouth/monocleOS_pink/loading2_215.png new file mode 100644 index 0000000..023270e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_216.png b/pkg/src/plymouth/monocleOS_pink/loading2_216.png new file mode 100644 index 0000000..3495afd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_217.png b/pkg/src/plymouth/monocleOS_pink/loading2_217.png new file mode 100644 index 0000000..1127a86 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_218.png b/pkg/src/plymouth/monocleOS_pink/loading2_218.png new file mode 100644 index 0000000..2cdee39 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_219.png b/pkg/src/plymouth/monocleOS_pink/loading2_219.png new file mode 100644 index 0000000..1d79639 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_22.png b/pkg/src/plymouth/monocleOS_pink/loading2_22.png new file mode 100755 index 0000000..5a01c6d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_220.png b/pkg/src/plymouth/monocleOS_pink/loading2_220.png new file mode 100644 index 0000000..da21726 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_221.png b/pkg/src/plymouth/monocleOS_pink/loading2_221.png new file mode 100644 index 0000000..d02031e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_23.png b/pkg/src/plymouth/monocleOS_pink/loading2_23.png new file mode 100755 index 0000000..91a6c9a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_24.png b/pkg/src/plymouth/monocleOS_pink/loading2_24.png new file mode 100755 index 0000000..1d6697c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_25.png b/pkg/src/plymouth/monocleOS_pink/loading2_25.png new file mode 100755 index 0000000..e7a8738 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_26.png b/pkg/src/plymouth/monocleOS_pink/loading2_26.png new file mode 100755 index 0000000..73d70c5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_27.png b/pkg/src/plymouth/monocleOS_pink/loading2_27.png new file mode 100755 index 0000000..f43523a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_28.png b/pkg/src/plymouth/monocleOS_pink/loading2_28.png new file mode 100755 index 0000000..8085c8a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_29.png b/pkg/src/plymouth/monocleOS_pink/loading2_29.png new file mode 100755 index 0000000..d58ee9a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_3.png b/pkg/src/plymouth/monocleOS_pink/loading2_3.png new file mode 100755 index 0000000..18c3f55 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_30.png b/pkg/src/plymouth/monocleOS_pink/loading2_30.png new file mode 100755 index 0000000..0c4d99f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_31.png b/pkg/src/plymouth/monocleOS_pink/loading2_31.png new file mode 100755 index 0000000..adb5ba1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_32.png b/pkg/src/plymouth/monocleOS_pink/loading2_32.png new file mode 100755 index 0000000..bff3235 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_33.png b/pkg/src/plymouth/monocleOS_pink/loading2_33.png new file mode 100755 index 0000000..c0b17a6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_34.png b/pkg/src/plymouth/monocleOS_pink/loading2_34.png new file mode 100755 index 0000000..fead0c9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_35.png b/pkg/src/plymouth/monocleOS_pink/loading2_35.png new file mode 100755 index 0000000..3f7294f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_36.png b/pkg/src/plymouth/monocleOS_pink/loading2_36.png new file mode 100755 index 0000000..2aa558a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_37.png b/pkg/src/plymouth/monocleOS_pink/loading2_37.png new file mode 100755 index 0000000..4e2450c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_38.png b/pkg/src/plymouth/monocleOS_pink/loading2_38.png new file mode 100755 index 0000000..241f638 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_39.png b/pkg/src/plymouth/monocleOS_pink/loading2_39.png new file mode 100755 index 0000000..9665cc3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_4.png b/pkg/src/plymouth/monocleOS_pink/loading2_4.png new file mode 100755 index 0000000..2d63a0e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_40.png b/pkg/src/plymouth/monocleOS_pink/loading2_40.png new file mode 100755 index 0000000..989c89f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_41.png b/pkg/src/plymouth/monocleOS_pink/loading2_41.png new file mode 100755 index 0000000..0745149 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_42.png b/pkg/src/plymouth/monocleOS_pink/loading2_42.png new file mode 100755 index 0000000..057c981 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_43.png b/pkg/src/plymouth/monocleOS_pink/loading2_43.png new file mode 100755 index 0000000..f09faad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_44.png b/pkg/src/plymouth/monocleOS_pink/loading2_44.png new file mode 100755 index 0000000..f65b90a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_45.png b/pkg/src/plymouth/monocleOS_pink/loading2_45.png new file mode 100755 index 0000000..81d0263 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_46.png b/pkg/src/plymouth/monocleOS_pink/loading2_46.png new file mode 100755 index 0000000..cf78072 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_47.png b/pkg/src/plymouth/monocleOS_pink/loading2_47.png new file mode 100755 index 0000000..e4acb4c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_48.png b/pkg/src/plymouth/monocleOS_pink/loading2_48.png new file mode 100755 index 0000000..8eb6133 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_49.png b/pkg/src/plymouth/monocleOS_pink/loading2_49.png new file mode 100755 index 0000000..327b2c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_5.png b/pkg/src/plymouth/monocleOS_pink/loading2_5.png new file mode 100755 index 0000000..bd4a567 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_50.png b/pkg/src/plymouth/monocleOS_pink/loading2_50.png new file mode 100755 index 0000000..c0fe61a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_51.png b/pkg/src/plymouth/monocleOS_pink/loading2_51.png new file mode 100755 index 0000000..ce78780 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_52.png b/pkg/src/plymouth/monocleOS_pink/loading2_52.png new file mode 100755 index 0000000..061ed54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_53.png b/pkg/src/plymouth/monocleOS_pink/loading2_53.png new file mode 100755 index 0000000..e1f2358 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_54.png b/pkg/src/plymouth/monocleOS_pink/loading2_54.png new file mode 100755 index 0000000..b8aab4d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_55.png b/pkg/src/plymouth/monocleOS_pink/loading2_55.png new file mode 100755 index 0000000..73c2f6b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_56.png b/pkg/src/plymouth/monocleOS_pink/loading2_56.png new file mode 100755 index 0000000..365f4bb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_57.png b/pkg/src/plymouth/monocleOS_pink/loading2_57.png new file mode 100755 index 0000000..2a3ad18 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_58.png b/pkg/src/plymouth/monocleOS_pink/loading2_58.png new file mode 100755 index 0000000..7f35c65 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_59.png b/pkg/src/plymouth/monocleOS_pink/loading2_59.png new file mode 100755 index 0000000..bb2c9b6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_6.png b/pkg/src/plymouth/monocleOS_pink/loading2_6.png new file mode 100755 index 0000000..e3f1f81 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_60.png b/pkg/src/plymouth/monocleOS_pink/loading2_60.png new file mode 100755 index 0000000..77dcd74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_61.png b/pkg/src/plymouth/monocleOS_pink/loading2_61.png new file mode 100755 index 0000000..72f6cb1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_62.png b/pkg/src/plymouth/monocleOS_pink/loading2_62.png new file mode 100755 index 0000000..556915e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_63.png b/pkg/src/plymouth/monocleOS_pink/loading2_63.png new file mode 100755 index 0000000..6ece76e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_64.png b/pkg/src/plymouth/monocleOS_pink/loading2_64.png new file mode 100755 index 0000000..ef4be65 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_65.png b/pkg/src/plymouth/monocleOS_pink/loading2_65.png new file mode 100755 index 0000000..f298bfd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_66.png b/pkg/src/plymouth/monocleOS_pink/loading2_66.png new file mode 100755 index 0000000..9e0e3f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_67.png b/pkg/src/plymouth/monocleOS_pink/loading2_67.png new file mode 100755 index 0000000..5ea494e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_68.png b/pkg/src/plymouth/monocleOS_pink/loading2_68.png new file mode 100755 index 0000000..b114464 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_69.png b/pkg/src/plymouth/monocleOS_pink/loading2_69.png new file mode 100755 index 0000000..ef7dd24 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_7.png b/pkg/src/plymouth/monocleOS_pink/loading2_7.png new file mode 100755 index 0000000..d391c27 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_70.png b/pkg/src/plymouth/monocleOS_pink/loading2_70.png new file mode 100755 index 0000000..df17dad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_71.png b/pkg/src/plymouth/monocleOS_pink/loading2_71.png new file mode 100755 index 0000000..687e9b8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_72.png b/pkg/src/plymouth/monocleOS_pink/loading2_72.png new file mode 100755 index 0000000..5e8c113 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_73.png b/pkg/src/plymouth/monocleOS_pink/loading2_73.png new file mode 100755 index 0000000..4186a97 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_74.png b/pkg/src/plymouth/monocleOS_pink/loading2_74.png new file mode 100755 index 0000000..b8dcb9b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_75.png b/pkg/src/plymouth/monocleOS_pink/loading2_75.png new file mode 100755 index 0000000..89fdc56 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_76.png b/pkg/src/plymouth/monocleOS_pink/loading2_76.png new file mode 100755 index 0000000..c51d95f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_77.png b/pkg/src/plymouth/monocleOS_pink/loading2_77.png new file mode 100755 index 0000000..5f89662 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_78.png b/pkg/src/plymouth/monocleOS_pink/loading2_78.png new file mode 100644 index 0000000..c9c9ff2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_79.png b/pkg/src/plymouth/monocleOS_pink/loading2_79.png new file mode 100644 index 0000000..92e6974 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_8.png b/pkg/src/plymouth/monocleOS_pink/loading2_8.png new file mode 100755 index 0000000..bd62653 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_80.png b/pkg/src/plymouth/monocleOS_pink/loading2_80.png new file mode 100644 index 0000000..d362926 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_81.png b/pkg/src/plymouth/monocleOS_pink/loading2_81.png new file mode 100644 index 0000000..ac83d6f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_82.png b/pkg/src/plymouth/monocleOS_pink/loading2_82.png new file mode 100644 index 0000000..106184a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_83.png b/pkg/src/plymouth/monocleOS_pink/loading2_83.png new file mode 100644 index 0000000..ee63cf9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_84.png b/pkg/src/plymouth/monocleOS_pink/loading2_84.png new file mode 100644 index 0000000..5cf955e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_85.png b/pkg/src/plymouth/monocleOS_pink/loading2_85.png new file mode 100644 index 0000000..9ee58a1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_86.png b/pkg/src/plymouth/monocleOS_pink/loading2_86.png new file mode 100644 index 0000000..9c34439 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_87.png b/pkg/src/plymouth/monocleOS_pink/loading2_87.png new file mode 100644 index 0000000..bc5f3c7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_88.png b/pkg/src/plymouth/monocleOS_pink/loading2_88.png new file mode 100644 index 0000000..64e31d8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_89.png b/pkg/src/plymouth/monocleOS_pink/loading2_89.png new file mode 100644 index 0000000..78b1ae4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_9.png b/pkg/src/plymouth/monocleOS_pink/loading2_9.png new file mode 100755 index 0000000..0978a2e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_90.png b/pkg/src/plymouth/monocleOS_pink/loading2_90.png new file mode 100644 index 0000000..c6c84c3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_91.png b/pkg/src/plymouth/monocleOS_pink/loading2_91.png new file mode 100644 index 0000000..5f5422f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_92.png b/pkg/src/plymouth/monocleOS_pink/loading2_92.png new file mode 100644 index 0000000..1d2f9ca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_93.png b/pkg/src/plymouth/monocleOS_pink/loading2_93.png new file mode 100644 index 0000000..55af98e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_94.png b/pkg/src/plymouth/monocleOS_pink/loading2_94.png new file mode 100644 index 0000000..3337c82 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_95.png b/pkg/src/plymouth/monocleOS_pink/loading2_95.png new file mode 100644 index 0000000..c95a5c4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_96.png b/pkg/src/plymouth/monocleOS_pink/loading2_96.png new file mode 100644 index 0000000..555285b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_97.png b/pkg/src/plymouth/monocleOS_pink/loading2_97.png new file mode 100644 index 0000000..548b7eb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_98.png b/pkg/src/plymouth/monocleOS_pink/loading2_98.png new file mode 100644 index 0000000..5a89205 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/loading2_99.png b/pkg/src/plymouth/monocleOS_pink/loading2_99.png new file mode 100644 index 0000000..ed8dffc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/lock.png b/pkg/src/plymouth/monocleOS_pink/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/logo.png b/pkg/src/plymouth/monocleOS_pink/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.plymouth b/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.plymouth new file mode 100755 index 0000000..ca0f441 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS_pink +Description=Pink monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_pink +ScriptFile=/usr/share/plymouth/themes/monocleOS_pink/monocleOS_pink.script diff --git a/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.script b/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.script new file mode 100755 index 0000000..55aa994 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_pink/monocleOS_pink.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.82745098, 0.21568627, 0.83921568); +Window.SetBackgroundBottomColor(0.82745098, 0.21568627, 0.83921568); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_pink/wallpaper.png b/pkg/src/plymouth/monocleOS_pink/wallpaper.png new file mode 100755 index 0000000..8f4d51f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_pink/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/box.png b/pkg/src/plymouth/monocleOS_purple/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/box.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/bullet.png b/pkg/src/plymouth/monocleOS_purple/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/entry.png b/pkg/src/plymouth/monocleOS_purple/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/entry_password.png b/pkg/src/plymouth/monocleOS_purple/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_1.png b/pkg/src/plymouth/monocleOS_purple/loading2_1.png new file mode 100755 index 0000000..ac41f09 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_10.png b/pkg/src/plymouth/monocleOS_purple/loading2_10.png new file mode 100755 index 0000000..41a9e30 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_100.png b/pkg/src/plymouth/monocleOS_purple/loading2_100.png new file mode 100644 index 0000000..064457a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_101.png b/pkg/src/plymouth/monocleOS_purple/loading2_101.png new file mode 100644 index 0000000..9eda7bb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_102.png b/pkg/src/plymouth/monocleOS_purple/loading2_102.png new file mode 100644 index 0000000..ae942b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_103.png b/pkg/src/plymouth/monocleOS_purple/loading2_103.png new file mode 100644 index 0000000..cffef32 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_104.png b/pkg/src/plymouth/monocleOS_purple/loading2_104.png new file mode 100644 index 0000000..9dd634f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_105.png b/pkg/src/plymouth/monocleOS_purple/loading2_105.png new file mode 100644 index 0000000..addb962 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_106.png b/pkg/src/plymouth/monocleOS_purple/loading2_106.png new file mode 100644 index 0000000..5695aad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_107.png b/pkg/src/plymouth/monocleOS_purple/loading2_107.png new file mode 100644 index 0000000..321628c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_108.png b/pkg/src/plymouth/monocleOS_purple/loading2_108.png new file mode 100644 index 0000000..6f7799c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_109.png b/pkg/src/plymouth/monocleOS_purple/loading2_109.png new file mode 100644 index 0000000..1c95717 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_11.png b/pkg/src/plymouth/monocleOS_purple/loading2_11.png new file mode 100755 index 0000000..62827d7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_110.png b/pkg/src/plymouth/monocleOS_purple/loading2_110.png new file mode 100644 index 0000000..6f26637 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_111.png b/pkg/src/plymouth/monocleOS_purple/loading2_111.png new file mode 100644 index 0000000..b724466 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_112.png b/pkg/src/plymouth/monocleOS_purple/loading2_112.png new file mode 100644 index 0000000..a58a1db Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_113.png b/pkg/src/plymouth/monocleOS_purple/loading2_113.png new file mode 100644 index 0000000..ebfe6f8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_114.png b/pkg/src/plymouth/monocleOS_purple/loading2_114.png new file mode 100644 index 0000000..c21ae7e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_115.png b/pkg/src/plymouth/monocleOS_purple/loading2_115.png new file mode 100644 index 0000000..e76fefc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_116.png b/pkg/src/plymouth/monocleOS_purple/loading2_116.png new file mode 100644 index 0000000..516766a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_117.png b/pkg/src/plymouth/monocleOS_purple/loading2_117.png new file mode 100644 index 0000000..6382970 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_118.png b/pkg/src/plymouth/monocleOS_purple/loading2_118.png new file mode 100644 index 0000000..22c4913 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_119.png b/pkg/src/plymouth/monocleOS_purple/loading2_119.png new file mode 100644 index 0000000..1cdd478 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_12.png b/pkg/src/plymouth/monocleOS_purple/loading2_12.png new file mode 100755 index 0000000..fce9d18 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_120.png b/pkg/src/plymouth/monocleOS_purple/loading2_120.png new file mode 100644 index 0000000..887cf0b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_121.png b/pkg/src/plymouth/monocleOS_purple/loading2_121.png new file mode 100644 index 0000000..1921c6e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_122.png b/pkg/src/plymouth/monocleOS_purple/loading2_122.png new file mode 100644 index 0000000..213689c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_123.png b/pkg/src/plymouth/monocleOS_purple/loading2_123.png new file mode 100644 index 0000000..c84e229 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_124.png b/pkg/src/plymouth/monocleOS_purple/loading2_124.png new file mode 100644 index 0000000..69c1d43 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_125.png b/pkg/src/plymouth/monocleOS_purple/loading2_125.png new file mode 100644 index 0000000..8cb085c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_126.png b/pkg/src/plymouth/monocleOS_purple/loading2_126.png new file mode 100644 index 0000000..45e16c8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_127.png b/pkg/src/plymouth/monocleOS_purple/loading2_127.png new file mode 100644 index 0000000..ab51d9f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_128.png b/pkg/src/plymouth/monocleOS_purple/loading2_128.png new file mode 100644 index 0000000..eded2ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_129.png b/pkg/src/plymouth/monocleOS_purple/loading2_129.png new file mode 100644 index 0000000..1e5e057 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_13.png b/pkg/src/plymouth/monocleOS_purple/loading2_13.png new file mode 100755 index 0000000..66f0e1c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_130.png b/pkg/src/plymouth/monocleOS_purple/loading2_130.png new file mode 100644 index 0000000..e630764 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_131.png b/pkg/src/plymouth/monocleOS_purple/loading2_131.png new file mode 100644 index 0000000..b12d14a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_132.png b/pkg/src/plymouth/monocleOS_purple/loading2_132.png new file mode 100644 index 0000000..b30a78e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_133.png b/pkg/src/plymouth/monocleOS_purple/loading2_133.png new file mode 100644 index 0000000..2c1d2dc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_134.png b/pkg/src/plymouth/monocleOS_purple/loading2_134.png new file mode 100644 index 0000000..0052d2d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_135.png b/pkg/src/plymouth/monocleOS_purple/loading2_135.png new file mode 100644 index 0000000..e4909aa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_136.png b/pkg/src/plymouth/monocleOS_purple/loading2_136.png new file mode 100644 index 0000000..fa8d588 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_137.png b/pkg/src/plymouth/monocleOS_purple/loading2_137.png new file mode 100644 index 0000000..afb8c94 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_138.png b/pkg/src/plymouth/monocleOS_purple/loading2_138.png new file mode 100644 index 0000000..5f38d09 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_139.png b/pkg/src/plymouth/monocleOS_purple/loading2_139.png new file mode 100644 index 0000000..bc69b3b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_14.png b/pkg/src/plymouth/monocleOS_purple/loading2_14.png new file mode 100755 index 0000000..79c4794 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_140.png b/pkg/src/plymouth/monocleOS_purple/loading2_140.png new file mode 100644 index 0000000..31a3e64 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_141.png b/pkg/src/plymouth/monocleOS_purple/loading2_141.png new file mode 100644 index 0000000..7ed5657 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_142.png b/pkg/src/plymouth/monocleOS_purple/loading2_142.png new file mode 100644 index 0000000..5e809fb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_143.png b/pkg/src/plymouth/monocleOS_purple/loading2_143.png new file mode 100644 index 0000000..ce49cca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_144.png b/pkg/src/plymouth/monocleOS_purple/loading2_144.png new file mode 100644 index 0000000..8882a14 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_145.png b/pkg/src/plymouth/monocleOS_purple/loading2_145.png new file mode 100644 index 0000000..4effdd7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_146.png b/pkg/src/plymouth/monocleOS_purple/loading2_146.png new file mode 100644 index 0000000..8c59c34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_147.png b/pkg/src/plymouth/monocleOS_purple/loading2_147.png new file mode 100644 index 0000000..564a5fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_148.png b/pkg/src/plymouth/monocleOS_purple/loading2_148.png new file mode 100644 index 0000000..db93228 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_149.png b/pkg/src/plymouth/monocleOS_purple/loading2_149.png new file mode 100644 index 0000000..711c825 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_15.png b/pkg/src/plymouth/monocleOS_purple/loading2_15.png new file mode 100755 index 0000000..9c82cde Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_150.png b/pkg/src/plymouth/monocleOS_purple/loading2_150.png new file mode 100644 index 0000000..1d46a7d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_151.png b/pkg/src/plymouth/monocleOS_purple/loading2_151.png new file mode 100644 index 0000000..922b903 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_152.png b/pkg/src/plymouth/monocleOS_purple/loading2_152.png new file mode 100644 index 0000000..de472f9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_153.png b/pkg/src/plymouth/monocleOS_purple/loading2_153.png new file mode 100644 index 0000000..7c10e76 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_154.png b/pkg/src/plymouth/monocleOS_purple/loading2_154.png new file mode 100644 index 0000000..a6d745b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_155.png b/pkg/src/plymouth/monocleOS_purple/loading2_155.png new file mode 100644 index 0000000..fe3bf94 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_156.png b/pkg/src/plymouth/monocleOS_purple/loading2_156.png new file mode 100644 index 0000000..ede9ed5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_157.png b/pkg/src/plymouth/monocleOS_purple/loading2_157.png new file mode 100644 index 0000000..e8f7d53 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_158.png b/pkg/src/plymouth/monocleOS_purple/loading2_158.png new file mode 100644 index 0000000..11c8374 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_159.png b/pkg/src/plymouth/monocleOS_purple/loading2_159.png new file mode 100644 index 0000000..1d70058 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_16.png b/pkg/src/plymouth/monocleOS_purple/loading2_16.png new file mode 100755 index 0000000..74362bf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_160.png b/pkg/src/plymouth/monocleOS_purple/loading2_160.png new file mode 100644 index 0000000..b8d0231 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_161.png b/pkg/src/plymouth/monocleOS_purple/loading2_161.png new file mode 100644 index 0000000..b8d0231 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_162.png b/pkg/src/plymouth/monocleOS_purple/loading2_162.png new file mode 100644 index 0000000..440e53f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_163.png b/pkg/src/plymouth/monocleOS_purple/loading2_163.png new file mode 100644 index 0000000..8e722dd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_164.png b/pkg/src/plymouth/monocleOS_purple/loading2_164.png new file mode 100644 index 0000000..89be9ec Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_165.png b/pkg/src/plymouth/monocleOS_purple/loading2_165.png new file mode 100644 index 0000000..bad2b31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_166.png b/pkg/src/plymouth/monocleOS_purple/loading2_166.png new file mode 100644 index 0000000..a257a00 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_167.png b/pkg/src/plymouth/monocleOS_purple/loading2_167.png new file mode 100644 index 0000000..9bddba5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_168.png b/pkg/src/plymouth/monocleOS_purple/loading2_168.png new file mode 100644 index 0000000..0fa9c43 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_169.png b/pkg/src/plymouth/monocleOS_purple/loading2_169.png new file mode 100644 index 0000000..4951490 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_17.png b/pkg/src/plymouth/monocleOS_purple/loading2_17.png new file mode 100755 index 0000000..199c3d7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_170.png b/pkg/src/plymouth/monocleOS_purple/loading2_170.png new file mode 100644 index 0000000..b1f6d63 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_171.png b/pkg/src/plymouth/monocleOS_purple/loading2_171.png new file mode 100644 index 0000000..a3ec805 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_172.png b/pkg/src/plymouth/monocleOS_purple/loading2_172.png new file mode 100644 index 0000000..ca2375d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_173.png b/pkg/src/plymouth/monocleOS_purple/loading2_173.png new file mode 100644 index 0000000..2ef05ac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_174.png b/pkg/src/plymouth/monocleOS_purple/loading2_174.png new file mode 100644 index 0000000..257c510 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_175.png b/pkg/src/plymouth/monocleOS_purple/loading2_175.png new file mode 100644 index 0000000..b963572 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_176.png b/pkg/src/plymouth/monocleOS_purple/loading2_176.png new file mode 100644 index 0000000..c77b7ee Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_177.png b/pkg/src/plymouth/monocleOS_purple/loading2_177.png new file mode 100644 index 0000000..09cedac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_178.png b/pkg/src/plymouth/monocleOS_purple/loading2_178.png new file mode 100644 index 0000000..7e6ce5e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_179.png b/pkg/src/plymouth/monocleOS_purple/loading2_179.png new file mode 100644 index 0000000..556c354 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_18.png b/pkg/src/plymouth/monocleOS_purple/loading2_18.png new file mode 100755 index 0000000..2e7c264 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_180.png b/pkg/src/plymouth/monocleOS_purple/loading2_180.png new file mode 100644 index 0000000..f916cac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_181.png b/pkg/src/plymouth/monocleOS_purple/loading2_181.png new file mode 100644 index 0000000..de0090d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_182.png b/pkg/src/plymouth/monocleOS_purple/loading2_182.png new file mode 100644 index 0000000..d44bdd6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_183.png b/pkg/src/plymouth/monocleOS_purple/loading2_183.png new file mode 100644 index 0000000..d2b3991 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_184.png b/pkg/src/plymouth/monocleOS_purple/loading2_184.png new file mode 100644 index 0000000..202a6ed Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_185.png b/pkg/src/plymouth/monocleOS_purple/loading2_185.png new file mode 100644 index 0000000..c4f68f6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_186.png b/pkg/src/plymouth/monocleOS_purple/loading2_186.png new file mode 100644 index 0000000..63065b0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_187.png b/pkg/src/plymouth/monocleOS_purple/loading2_187.png new file mode 100644 index 0000000..3ba5f18 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_188.png b/pkg/src/plymouth/monocleOS_purple/loading2_188.png new file mode 100644 index 0000000..8442b16 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_189.png b/pkg/src/plymouth/monocleOS_purple/loading2_189.png new file mode 100644 index 0000000..5ff69ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_19.png b/pkg/src/plymouth/monocleOS_purple/loading2_19.png new file mode 100755 index 0000000..1630621 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_190.png b/pkg/src/plymouth/monocleOS_purple/loading2_190.png new file mode 100644 index 0000000..14f2607 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_191.png b/pkg/src/plymouth/monocleOS_purple/loading2_191.png new file mode 100644 index 0000000..d782385 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_192.png b/pkg/src/plymouth/monocleOS_purple/loading2_192.png new file mode 100644 index 0000000..1962c2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_193.png b/pkg/src/plymouth/monocleOS_purple/loading2_193.png new file mode 100644 index 0000000..2c5e125 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_194.png b/pkg/src/plymouth/monocleOS_purple/loading2_194.png new file mode 100644 index 0000000..3ea7164 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_195.png b/pkg/src/plymouth/monocleOS_purple/loading2_195.png new file mode 100644 index 0000000..3ea7164 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_196.png b/pkg/src/plymouth/monocleOS_purple/loading2_196.png new file mode 100644 index 0000000..d07e764 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_197.png b/pkg/src/plymouth/monocleOS_purple/loading2_197.png new file mode 100644 index 0000000..52ccb87 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_198.png b/pkg/src/plymouth/monocleOS_purple/loading2_198.png new file mode 100644 index 0000000..c455e59 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_199.png b/pkg/src/plymouth/monocleOS_purple/loading2_199.png new file mode 100644 index 0000000..5bebfd3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_2.png b/pkg/src/plymouth/monocleOS_purple/loading2_2.png new file mode 100755 index 0000000..174c813 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_20.png b/pkg/src/plymouth/monocleOS_purple/loading2_20.png new file mode 100755 index 0000000..e98539a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_200.png b/pkg/src/plymouth/monocleOS_purple/loading2_200.png new file mode 100644 index 0000000..38ad9b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_201.png b/pkg/src/plymouth/monocleOS_purple/loading2_201.png new file mode 100644 index 0000000..b34a9db Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_202.png b/pkg/src/plymouth/monocleOS_purple/loading2_202.png new file mode 100644 index 0000000..3978874 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_203.png b/pkg/src/plymouth/monocleOS_purple/loading2_203.png new file mode 100644 index 0000000..4d4fcfa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_204.png b/pkg/src/plymouth/monocleOS_purple/loading2_204.png new file mode 100644 index 0000000..71d03c8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_205.png b/pkg/src/plymouth/monocleOS_purple/loading2_205.png new file mode 100644 index 0000000..d0f865b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_206.png b/pkg/src/plymouth/monocleOS_purple/loading2_206.png new file mode 100644 index 0000000..87f64ed Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_207.png b/pkg/src/plymouth/monocleOS_purple/loading2_207.png new file mode 100644 index 0000000..47ffe74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_208.png b/pkg/src/plymouth/monocleOS_purple/loading2_208.png new file mode 100644 index 0000000..ea76eb0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_209.png b/pkg/src/plymouth/monocleOS_purple/loading2_209.png new file mode 100644 index 0000000..1d95d4e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_21.png b/pkg/src/plymouth/monocleOS_purple/loading2_21.png new file mode 100755 index 0000000..0571637 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_210.png b/pkg/src/plymouth/monocleOS_purple/loading2_210.png new file mode 100644 index 0000000..6f6ea52 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_211.png b/pkg/src/plymouth/monocleOS_purple/loading2_211.png new file mode 100644 index 0000000..8b62eef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_212.png b/pkg/src/plymouth/monocleOS_purple/loading2_212.png new file mode 100644 index 0000000..0f340f1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_213.png b/pkg/src/plymouth/monocleOS_purple/loading2_213.png new file mode 100644 index 0000000..7d67db2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_214.png b/pkg/src/plymouth/monocleOS_purple/loading2_214.png new file mode 100644 index 0000000..6777067 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_215.png b/pkg/src/plymouth/monocleOS_purple/loading2_215.png new file mode 100644 index 0000000..4fc8c66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_216.png b/pkg/src/plymouth/monocleOS_purple/loading2_216.png new file mode 100644 index 0000000..dca2e34 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_217.png b/pkg/src/plymouth/monocleOS_purple/loading2_217.png new file mode 100644 index 0000000..c2bad8c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_218.png b/pkg/src/plymouth/monocleOS_purple/loading2_218.png new file mode 100644 index 0000000..ca82d83 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_219.png b/pkg/src/plymouth/monocleOS_purple/loading2_219.png new file mode 100644 index 0000000..44dad7e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_22.png b/pkg/src/plymouth/monocleOS_purple/loading2_22.png new file mode 100755 index 0000000..493f62a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_220.png b/pkg/src/plymouth/monocleOS_purple/loading2_220.png new file mode 100644 index 0000000..e2c4827 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_221.png b/pkg/src/plymouth/monocleOS_purple/loading2_221.png new file mode 100644 index 0000000..bff7736 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_23.png b/pkg/src/plymouth/monocleOS_purple/loading2_23.png new file mode 100755 index 0000000..5c3aeaa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_24.png b/pkg/src/plymouth/monocleOS_purple/loading2_24.png new file mode 100755 index 0000000..c909f56 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_25.png b/pkg/src/plymouth/monocleOS_purple/loading2_25.png new file mode 100755 index 0000000..9c630ae Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_26.png b/pkg/src/plymouth/monocleOS_purple/loading2_26.png new file mode 100755 index 0000000..d7d941e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_27.png b/pkg/src/plymouth/monocleOS_purple/loading2_27.png new file mode 100755 index 0000000..98b701a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_28.png b/pkg/src/plymouth/monocleOS_purple/loading2_28.png new file mode 100755 index 0000000..1728e2c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_29.png b/pkg/src/plymouth/monocleOS_purple/loading2_29.png new file mode 100755 index 0000000..89488d8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_3.png b/pkg/src/plymouth/monocleOS_purple/loading2_3.png new file mode 100755 index 0000000..87ab129 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_30.png b/pkg/src/plymouth/monocleOS_purple/loading2_30.png new file mode 100755 index 0000000..1641077 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_31.png b/pkg/src/plymouth/monocleOS_purple/loading2_31.png new file mode 100755 index 0000000..8564d02 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_32.png b/pkg/src/plymouth/monocleOS_purple/loading2_32.png new file mode 100755 index 0000000..165fa37 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_33.png b/pkg/src/plymouth/monocleOS_purple/loading2_33.png new file mode 100755 index 0000000..6dd5ecc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_34.png b/pkg/src/plymouth/monocleOS_purple/loading2_34.png new file mode 100755 index 0000000..35eb3e0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_35.png b/pkg/src/plymouth/monocleOS_purple/loading2_35.png new file mode 100755 index 0000000..2c35fcc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_36.png b/pkg/src/plymouth/monocleOS_purple/loading2_36.png new file mode 100755 index 0000000..0d189ec Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_37.png b/pkg/src/plymouth/monocleOS_purple/loading2_37.png new file mode 100755 index 0000000..9ab1c44 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_38.png b/pkg/src/plymouth/monocleOS_purple/loading2_38.png new file mode 100755 index 0000000..7e002be Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_39.png b/pkg/src/plymouth/monocleOS_purple/loading2_39.png new file mode 100755 index 0000000..db69c67 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_4.png b/pkg/src/plymouth/monocleOS_purple/loading2_4.png new file mode 100755 index 0000000..0d511fd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_40.png b/pkg/src/plymouth/monocleOS_purple/loading2_40.png new file mode 100755 index 0000000..6aedf91 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_41.png b/pkg/src/plymouth/monocleOS_purple/loading2_41.png new file mode 100755 index 0000000..2b42cc4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_42.png b/pkg/src/plymouth/monocleOS_purple/loading2_42.png new file mode 100755 index 0000000..a7647f8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_43.png b/pkg/src/plymouth/monocleOS_purple/loading2_43.png new file mode 100755 index 0000000..2e35614 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_44.png b/pkg/src/plymouth/monocleOS_purple/loading2_44.png new file mode 100755 index 0000000..58d7305 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_45.png b/pkg/src/plymouth/monocleOS_purple/loading2_45.png new file mode 100755 index 0000000..1d99a9f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_46.png b/pkg/src/plymouth/monocleOS_purple/loading2_46.png new file mode 100755 index 0000000..069bb4a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_47.png b/pkg/src/plymouth/monocleOS_purple/loading2_47.png new file mode 100755 index 0000000..80e26e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_48.png b/pkg/src/plymouth/monocleOS_purple/loading2_48.png new file mode 100755 index 0000000..0fcd536 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_49.png b/pkg/src/plymouth/monocleOS_purple/loading2_49.png new file mode 100755 index 0000000..dac345e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_5.png b/pkg/src/plymouth/monocleOS_purple/loading2_5.png new file mode 100755 index 0000000..8ab8ca2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_50.png b/pkg/src/plymouth/monocleOS_purple/loading2_50.png new file mode 100755 index 0000000..e8bea66 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_51.png b/pkg/src/plymouth/monocleOS_purple/loading2_51.png new file mode 100755 index 0000000..25e4e61 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_52.png b/pkg/src/plymouth/monocleOS_purple/loading2_52.png new file mode 100755 index 0000000..3af334f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_53.png b/pkg/src/plymouth/monocleOS_purple/loading2_53.png new file mode 100755 index 0000000..41af3a9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_54.png b/pkg/src/plymouth/monocleOS_purple/loading2_54.png new file mode 100755 index 0000000..b98b5b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_55.png b/pkg/src/plymouth/monocleOS_purple/loading2_55.png new file mode 100755 index 0000000..3a5eef6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_56.png b/pkg/src/plymouth/monocleOS_purple/loading2_56.png new file mode 100755 index 0000000..91caa9d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_57.png b/pkg/src/plymouth/monocleOS_purple/loading2_57.png new file mode 100755 index 0000000..3e817bb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_58.png b/pkg/src/plymouth/monocleOS_purple/loading2_58.png new file mode 100755 index 0000000..dae520f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_59.png b/pkg/src/plymouth/monocleOS_purple/loading2_59.png new file mode 100755 index 0000000..7c809b8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_6.png b/pkg/src/plymouth/monocleOS_purple/loading2_6.png new file mode 100755 index 0000000..dfd1806 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_60.png b/pkg/src/plymouth/monocleOS_purple/loading2_60.png new file mode 100755 index 0000000..f80d807 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_61.png b/pkg/src/plymouth/monocleOS_purple/loading2_61.png new file mode 100755 index 0000000..f22c3a5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_62.png b/pkg/src/plymouth/monocleOS_purple/loading2_62.png new file mode 100755 index 0000000..9d3037d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_63.png b/pkg/src/plymouth/monocleOS_purple/loading2_63.png new file mode 100755 index 0000000..99eb45a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_64.png b/pkg/src/plymouth/monocleOS_purple/loading2_64.png new file mode 100755 index 0000000..a8cf9a2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_65.png b/pkg/src/plymouth/monocleOS_purple/loading2_65.png new file mode 100755 index 0000000..3f57a98 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_66.png b/pkg/src/plymouth/monocleOS_purple/loading2_66.png new file mode 100755 index 0000000..8c07035 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_67.png b/pkg/src/plymouth/monocleOS_purple/loading2_67.png new file mode 100755 index 0000000..bcc48f4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_68.png b/pkg/src/plymouth/monocleOS_purple/loading2_68.png new file mode 100755 index 0000000..ec2982b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_69.png b/pkg/src/plymouth/monocleOS_purple/loading2_69.png new file mode 100755 index 0000000..ddb9771 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_7.png b/pkg/src/plymouth/monocleOS_purple/loading2_7.png new file mode 100755 index 0000000..bd22bf5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_70.png b/pkg/src/plymouth/monocleOS_purple/loading2_70.png new file mode 100755 index 0000000..24b1340 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_71.png b/pkg/src/plymouth/monocleOS_purple/loading2_71.png new file mode 100755 index 0000000..588bb64 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_72.png b/pkg/src/plymouth/monocleOS_purple/loading2_72.png new file mode 100755 index 0000000..2a88b77 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_73.png b/pkg/src/plymouth/monocleOS_purple/loading2_73.png new file mode 100755 index 0000000..765a93a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_74.png b/pkg/src/plymouth/monocleOS_purple/loading2_74.png new file mode 100755 index 0000000..2301924 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_75.png b/pkg/src/plymouth/monocleOS_purple/loading2_75.png new file mode 100755 index 0000000..8a52024 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_76.png b/pkg/src/plymouth/monocleOS_purple/loading2_76.png new file mode 100755 index 0000000..a1bb201 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_77.png b/pkg/src/plymouth/monocleOS_purple/loading2_77.png new file mode 100755 index 0000000..3a474f6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_78.png b/pkg/src/plymouth/monocleOS_purple/loading2_78.png new file mode 100644 index 0000000..7289cc4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_79.png b/pkg/src/plymouth/monocleOS_purple/loading2_79.png new file mode 100644 index 0000000..c494c44 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_8.png b/pkg/src/plymouth/monocleOS_purple/loading2_8.png new file mode 100755 index 0000000..6feb2d4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_80.png b/pkg/src/plymouth/monocleOS_purple/loading2_80.png new file mode 100644 index 0000000..35d37cc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_81.png b/pkg/src/plymouth/monocleOS_purple/loading2_81.png new file mode 100644 index 0000000..95afe39 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_82.png b/pkg/src/plymouth/monocleOS_purple/loading2_82.png new file mode 100644 index 0000000..1f2d903 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_83.png b/pkg/src/plymouth/monocleOS_purple/loading2_83.png new file mode 100644 index 0000000..de44c63 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_84.png b/pkg/src/plymouth/monocleOS_purple/loading2_84.png new file mode 100644 index 0000000..58f1be3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_85.png b/pkg/src/plymouth/monocleOS_purple/loading2_85.png new file mode 100644 index 0000000..ece7ec1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_86.png b/pkg/src/plymouth/monocleOS_purple/loading2_86.png new file mode 100644 index 0000000..3d1e7d9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_87.png b/pkg/src/plymouth/monocleOS_purple/loading2_87.png new file mode 100644 index 0000000..6c43fc7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_88.png b/pkg/src/plymouth/monocleOS_purple/loading2_88.png new file mode 100644 index 0000000..82cba03 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_89.png b/pkg/src/plymouth/monocleOS_purple/loading2_89.png new file mode 100644 index 0000000..1c0df90 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_9.png b/pkg/src/plymouth/monocleOS_purple/loading2_9.png new file mode 100755 index 0000000..3bda338 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_90.png b/pkg/src/plymouth/monocleOS_purple/loading2_90.png new file mode 100644 index 0000000..5f5ad16 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_91.png b/pkg/src/plymouth/monocleOS_purple/loading2_91.png new file mode 100644 index 0000000..97921ca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_92.png b/pkg/src/plymouth/monocleOS_purple/loading2_92.png new file mode 100644 index 0000000..d6658f0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_93.png b/pkg/src/plymouth/monocleOS_purple/loading2_93.png new file mode 100644 index 0000000..9e1ca43 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_94.png b/pkg/src/plymouth/monocleOS_purple/loading2_94.png new file mode 100644 index 0000000..24aa232 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_95.png b/pkg/src/plymouth/monocleOS_purple/loading2_95.png new file mode 100644 index 0000000..e165a96 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_96.png b/pkg/src/plymouth/monocleOS_purple/loading2_96.png new file mode 100644 index 0000000..1b2b50c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_97.png b/pkg/src/plymouth/monocleOS_purple/loading2_97.png new file mode 100644 index 0000000..b457092 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_98.png b/pkg/src/plymouth/monocleOS_purple/loading2_98.png new file mode 100644 index 0000000..749d492 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/loading2_99.png b/pkg/src/plymouth/monocleOS_purple/loading2_99.png new file mode 100644 index 0000000..8ed9f0e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/lock.png b/pkg/src/plymouth/monocleOS_purple/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/logo.png b/pkg/src/plymouth/monocleOS_purple/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.plymouth b/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.plymouth new file mode 100755 index 0000000..0bc2e56 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS_purple +Description=Purple monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_purple +ScriptFile=/usr/share/plymouth/themes/monocleOS_purple/monocleOS_purple.script diff --git a/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.script b/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.script new file mode 100755 index 0000000..faef167 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_purple/monocleOS_purple.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.50980392, 0.21568627, 0.83921568); +Window.SetBackgroundBottomColor(0.50980392, 0.21568627, 0.83921568); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_purple/wallpaper.png b/pkg/src/plymouth/monocleOS_purple/wallpaper.png new file mode 100755 index 0000000..d7f0168 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_purple/wallpaper.png differ diff --git a/pkg/src/plymouth/monocleOS_red/box.png b/pkg/src/plymouth/monocleOS_red/box.png new file mode 100755 index 0000000..43b4743 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/box.png differ diff --git a/pkg/src/plymouth/monocleOS_red/bullet.png b/pkg/src/plymouth/monocleOS_red/bullet.png new file mode 100644 index 0000000..29c4d54 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/bullet.png differ diff --git a/pkg/src/plymouth/monocleOS_red/entry.png b/pkg/src/plymouth/monocleOS_red/entry.png new file mode 100755 index 0000000..f56b3da Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/entry.png differ diff --git a/pkg/src/plymouth/monocleOS_red/entry_password.png b/pkg/src/plymouth/monocleOS_red/entry_password.png new file mode 100755 index 0000000..fc03ca5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/entry_password.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_1.png b/pkg/src/plymouth/monocleOS_red/loading2_1.png new file mode 100755 index 0000000..ea4aa04 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_1.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_10.png b/pkg/src/plymouth/monocleOS_red/loading2_10.png new file mode 100755 index 0000000..6eddc49 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_10.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_100.png b/pkg/src/plymouth/monocleOS_red/loading2_100.png new file mode 100644 index 0000000..1edc767 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_100.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_101.png b/pkg/src/plymouth/monocleOS_red/loading2_101.png new file mode 100644 index 0000000..39be9cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_101.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_102.png b/pkg/src/plymouth/monocleOS_red/loading2_102.png new file mode 100644 index 0000000..fac8eb0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_102.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_103.png b/pkg/src/plymouth/monocleOS_red/loading2_103.png new file mode 100644 index 0000000..e859429 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_103.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_104.png b/pkg/src/plymouth/monocleOS_red/loading2_104.png new file mode 100644 index 0000000..e11b2dd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_104.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_105.png b/pkg/src/plymouth/monocleOS_red/loading2_105.png new file mode 100644 index 0000000..d68d36d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_105.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_106.png b/pkg/src/plymouth/monocleOS_red/loading2_106.png new file mode 100644 index 0000000..fc4513e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_106.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_107.png b/pkg/src/plymouth/monocleOS_red/loading2_107.png new file mode 100644 index 0000000..78050de Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_107.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_108.png b/pkg/src/plymouth/monocleOS_red/loading2_108.png new file mode 100644 index 0000000..1aae4ad Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_108.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_109.png b/pkg/src/plymouth/monocleOS_red/loading2_109.png new file mode 100644 index 0000000..0eb03e8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_109.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_11.png b/pkg/src/plymouth/monocleOS_red/loading2_11.png new file mode 100755 index 0000000..aab5688 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_11.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_110.png b/pkg/src/plymouth/monocleOS_red/loading2_110.png new file mode 100644 index 0000000..80bd7ac Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_110.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_111.png b/pkg/src/plymouth/monocleOS_red/loading2_111.png new file mode 100644 index 0000000..e632cd1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_111.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_112.png b/pkg/src/plymouth/monocleOS_red/loading2_112.png new file mode 100644 index 0000000..6e81052 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_112.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_113.png b/pkg/src/plymouth/monocleOS_red/loading2_113.png new file mode 100644 index 0000000..28c205f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_113.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_114.png b/pkg/src/plymouth/monocleOS_red/loading2_114.png new file mode 100644 index 0000000..0ddd5af Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_114.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_115.png b/pkg/src/plymouth/monocleOS_red/loading2_115.png new file mode 100644 index 0000000..867daaf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_115.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_116.png b/pkg/src/plymouth/monocleOS_red/loading2_116.png new file mode 100644 index 0000000..756089a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_116.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_117.png b/pkg/src/plymouth/monocleOS_red/loading2_117.png new file mode 100644 index 0000000..b40779b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_117.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_118.png b/pkg/src/plymouth/monocleOS_red/loading2_118.png new file mode 100644 index 0000000..5f38288 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_118.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_119.png b/pkg/src/plymouth/monocleOS_red/loading2_119.png new file mode 100644 index 0000000..887e6cb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_119.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_12.png b/pkg/src/plymouth/monocleOS_red/loading2_12.png new file mode 100755 index 0000000..f83738f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_12.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_120.png b/pkg/src/plymouth/monocleOS_red/loading2_120.png new file mode 100644 index 0000000..1b99f94 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_120.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_121.png b/pkg/src/plymouth/monocleOS_red/loading2_121.png new file mode 100644 index 0000000..f404aba Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_121.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_122.png b/pkg/src/plymouth/monocleOS_red/loading2_122.png new file mode 100644 index 0000000..b4ef45a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_122.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_123.png b/pkg/src/plymouth/monocleOS_red/loading2_123.png new file mode 100644 index 0000000..c518245 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_123.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_124.png b/pkg/src/plymouth/monocleOS_red/loading2_124.png new file mode 100644 index 0000000..70d3f4b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_124.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_125.png b/pkg/src/plymouth/monocleOS_red/loading2_125.png new file mode 100644 index 0000000..fc5700c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_125.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_126.png b/pkg/src/plymouth/monocleOS_red/loading2_126.png new file mode 100644 index 0000000..a0d2f19 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_126.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_127.png b/pkg/src/plymouth/monocleOS_red/loading2_127.png new file mode 100644 index 0000000..4497075 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_127.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_128.png b/pkg/src/plymouth/monocleOS_red/loading2_128.png new file mode 100644 index 0000000..787b9a9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_128.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_129.png b/pkg/src/plymouth/monocleOS_red/loading2_129.png new file mode 100644 index 0000000..0f4944e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_129.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_13.png b/pkg/src/plymouth/monocleOS_red/loading2_13.png new file mode 100755 index 0000000..24abdfa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_13.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_130.png b/pkg/src/plymouth/monocleOS_red/loading2_130.png new file mode 100644 index 0000000..b08c51c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_130.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_131.png b/pkg/src/plymouth/monocleOS_red/loading2_131.png new file mode 100644 index 0000000..6c93ad5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_131.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_132.png b/pkg/src/plymouth/monocleOS_red/loading2_132.png new file mode 100644 index 0000000..e5ef105 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_132.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_133.png b/pkg/src/plymouth/monocleOS_red/loading2_133.png new file mode 100644 index 0000000..b6adad6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_133.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_134.png b/pkg/src/plymouth/monocleOS_red/loading2_134.png new file mode 100644 index 0000000..ae668a6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_134.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_135.png b/pkg/src/plymouth/monocleOS_red/loading2_135.png new file mode 100644 index 0000000..340bce2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_135.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_136.png b/pkg/src/plymouth/monocleOS_red/loading2_136.png new file mode 100644 index 0000000..96ceec2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_136.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_137.png b/pkg/src/plymouth/monocleOS_red/loading2_137.png new file mode 100644 index 0000000..8f19eda Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_137.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_138.png b/pkg/src/plymouth/monocleOS_red/loading2_138.png new file mode 100644 index 0000000..0af8a63 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_138.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_139.png b/pkg/src/plymouth/monocleOS_red/loading2_139.png new file mode 100644 index 0000000..054dc76 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_139.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_14.png b/pkg/src/plymouth/monocleOS_red/loading2_14.png new file mode 100755 index 0000000..7a5c22a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_14.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_140.png b/pkg/src/plymouth/monocleOS_red/loading2_140.png new file mode 100644 index 0000000..10cf968 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_140.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_141.png b/pkg/src/plymouth/monocleOS_red/loading2_141.png new file mode 100644 index 0000000..aa68292 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_141.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_142.png b/pkg/src/plymouth/monocleOS_red/loading2_142.png new file mode 100644 index 0000000..b2e86f8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_142.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_143.png b/pkg/src/plymouth/monocleOS_red/loading2_143.png new file mode 100644 index 0000000..94e4b4e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_143.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_144.png b/pkg/src/plymouth/monocleOS_red/loading2_144.png new file mode 100644 index 0000000..fc94327 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_144.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_145.png b/pkg/src/plymouth/monocleOS_red/loading2_145.png new file mode 100644 index 0000000..dacfdaa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_145.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_146.png b/pkg/src/plymouth/monocleOS_red/loading2_146.png new file mode 100644 index 0000000..f83cc04 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_146.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_147.png b/pkg/src/plymouth/monocleOS_red/loading2_147.png new file mode 100644 index 0000000..894611e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_147.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_148.png b/pkg/src/plymouth/monocleOS_red/loading2_148.png new file mode 100644 index 0000000..f3b838b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_148.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_149.png b/pkg/src/plymouth/monocleOS_red/loading2_149.png new file mode 100644 index 0000000..f010662 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_149.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_15.png b/pkg/src/plymouth/monocleOS_red/loading2_15.png new file mode 100755 index 0000000..fb1c25e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_15.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_150.png b/pkg/src/plymouth/monocleOS_red/loading2_150.png new file mode 100644 index 0000000..d5f63fa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_150.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_151.png b/pkg/src/plymouth/monocleOS_red/loading2_151.png new file mode 100644 index 0000000..3d89b74 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_151.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_152.png b/pkg/src/plymouth/monocleOS_red/loading2_152.png new file mode 100644 index 0000000..949012b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_152.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_153.png b/pkg/src/plymouth/monocleOS_red/loading2_153.png new file mode 100644 index 0000000..77d3c83 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_153.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_154.png b/pkg/src/plymouth/monocleOS_red/loading2_154.png new file mode 100644 index 0000000..c6bdeea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_154.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_155.png b/pkg/src/plymouth/monocleOS_red/loading2_155.png new file mode 100644 index 0000000..6ff0e6e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_155.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_156.png b/pkg/src/plymouth/monocleOS_red/loading2_156.png new file mode 100644 index 0000000..32c81f0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_156.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_157.png b/pkg/src/plymouth/monocleOS_red/loading2_157.png new file mode 100644 index 0000000..c4b566a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_157.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_158.png b/pkg/src/plymouth/monocleOS_red/loading2_158.png new file mode 100644 index 0000000..a423699 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_158.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_159.png b/pkg/src/plymouth/monocleOS_red/loading2_159.png new file mode 100644 index 0000000..ba91215 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_159.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_16.png b/pkg/src/plymouth/monocleOS_red/loading2_16.png new file mode 100755 index 0000000..c7378c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_16.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_160.png b/pkg/src/plymouth/monocleOS_red/loading2_160.png new file mode 100644 index 0000000..2aa4af3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_160.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_161.png b/pkg/src/plymouth/monocleOS_red/loading2_161.png new file mode 100644 index 0000000..2aa4af3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_161.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_162.png b/pkg/src/plymouth/monocleOS_red/loading2_162.png new file mode 100644 index 0000000..a09249d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_162.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_163.png b/pkg/src/plymouth/monocleOS_red/loading2_163.png new file mode 100644 index 0000000..c1908c0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_163.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_164.png b/pkg/src/plymouth/monocleOS_red/loading2_164.png new file mode 100644 index 0000000..49d5a8d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_164.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_165.png b/pkg/src/plymouth/monocleOS_red/loading2_165.png new file mode 100644 index 0000000..12ab36b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_165.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_166.png b/pkg/src/plymouth/monocleOS_red/loading2_166.png new file mode 100644 index 0000000..8c94972 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_166.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_167.png b/pkg/src/plymouth/monocleOS_red/loading2_167.png new file mode 100644 index 0000000..acd98e6 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_167.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_168.png b/pkg/src/plymouth/monocleOS_red/loading2_168.png new file mode 100644 index 0000000..b352ae4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_168.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_169.png b/pkg/src/plymouth/monocleOS_red/loading2_169.png new file mode 100644 index 0000000..8022611 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_169.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_17.png b/pkg/src/plymouth/monocleOS_red/loading2_17.png new file mode 100755 index 0000000..5b7d6b4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_17.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_170.png b/pkg/src/plymouth/monocleOS_red/loading2_170.png new file mode 100644 index 0000000..62adcaa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_170.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_171.png b/pkg/src/plymouth/monocleOS_red/loading2_171.png new file mode 100644 index 0000000..74b0d5d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_171.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_172.png b/pkg/src/plymouth/monocleOS_red/loading2_172.png new file mode 100644 index 0000000..6ef088f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_172.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_173.png b/pkg/src/plymouth/monocleOS_red/loading2_173.png new file mode 100644 index 0000000..7f4768f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_173.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_174.png b/pkg/src/plymouth/monocleOS_red/loading2_174.png new file mode 100644 index 0000000..48c8c99 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_174.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_175.png b/pkg/src/plymouth/monocleOS_red/loading2_175.png new file mode 100644 index 0000000..f642dfb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_175.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_176.png b/pkg/src/plymouth/monocleOS_red/loading2_176.png new file mode 100644 index 0000000..308ebdd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_176.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_177.png b/pkg/src/plymouth/monocleOS_red/loading2_177.png new file mode 100644 index 0000000..9044995 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_177.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_178.png b/pkg/src/plymouth/monocleOS_red/loading2_178.png new file mode 100644 index 0000000..5958582 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_178.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_179.png b/pkg/src/plymouth/monocleOS_red/loading2_179.png new file mode 100644 index 0000000..7458247 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_179.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_18.png b/pkg/src/plymouth/monocleOS_red/loading2_18.png new file mode 100755 index 0000000..dd7cfb5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_18.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_180.png b/pkg/src/plymouth/monocleOS_red/loading2_180.png new file mode 100644 index 0000000..8f939ff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_180.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_181.png b/pkg/src/plymouth/monocleOS_red/loading2_181.png new file mode 100644 index 0000000..f8098b8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_181.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_182.png b/pkg/src/plymouth/monocleOS_red/loading2_182.png new file mode 100644 index 0000000..e4d1d2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_182.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_183.png b/pkg/src/plymouth/monocleOS_red/loading2_183.png new file mode 100644 index 0000000..695a473 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_183.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_184.png b/pkg/src/plymouth/monocleOS_red/loading2_184.png new file mode 100644 index 0000000..d07d9f7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_184.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_185.png b/pkg/src/plymouth/monocleOS_red/loading2_185.png new file mode 100644 index 0000000..0aaa7ef Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_185.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_186.png b/pkg/src/plymouth/monocleOS_red/loading2_186.png new file mode 100644 index 0000000..2a2264e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_186.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_187.png b/pkg/src/plymouth/monocleOS_red/loading2_187.png new file mode 100644 index 0000000..97a3dc8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_187.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_188.png b/pkg/src/plymouth/monocleOS_red/loading2_188.png new file mode 100644 index 0000000..4ccc6b5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_188.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_189.png b/pkg/src/plymouth/monocleOS_red/loading2_189.png new file mode 100644 index 0000000..b7c309a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_189.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_19.png b/pkg/src/plymouth/monocleOS_red/loading2_19.png new file mode 100755 index 0000000..717e778 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_19.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_190.png b/pkg/src/plymouth/monocleOS_red/loading2_190.png new file mode 100644 index 0000000..e6aad1b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_190.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_191.png b/pkg/src/plymouth/monocleOS_red/loading2_191.png new file mode 100644 index 0000000..e743b65 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_191.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_192.png b/pkg/src/plymouth/monocleOS_red/loading2_192.png new file mode 100644 index 0000000..3af9869 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_192.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_193.png b/pkg/src/plymouth/monocleOS_red/loading2_193.png new file mode 100644 index 0000000..16f5916 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_193.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_194.png b/pkg/src/plymouth/monocleOS_red/loading2_194.png new file mode 100644 index 0000000..c62664d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_194.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_195.png b/pkg/src/plymouth/monocleOS_red/loading2_195.png new file mode 100644 index 0000000..c62664d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_195.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_196.png b/pkg/src/plymouth/monocleOS_red/loading2_196.png new file mode 100644 index 0000000..dfcce2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_196.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_197.png b/pkg/src/plymouth/monocleOS_red/loading2_197.png new file mode 100644 index 0000000..b5daa64 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_197.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_198.png b/pkg/src/plymouth/monocleOS_red/loading2_198.png new file mode 100644 index 0000000..f0ccc2a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_198.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_199.png b/pkg/src/plymouth/monocleOS_red/loading2_199.png new file mode 100644 index 0000000..90ac21b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_199.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_2.png b/pkg/src/plymouth/monocleOS_red/loading2_2.png new file mode 100755 index 0000000..9b61e81 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_2.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_20.png b/pkg/src/plymouth/monocleOS_red/loading2_20.png new file mode 100755 index 0000000..9d66d38 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_20.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_200.png b/pkg/src/plymouth/monocleOS_red/loading2_200.png new file mode 100644 index 0000000..1906b90 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_200.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_201.png b/pkg/src/plymouth/monocleOS_red/loading2_201.png new file mode 100644 index 0000000..1792379 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_201.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_202.png b/pkg/src/plymouth/monocleOS_red/loading2_202.png new file mode 100644 index 0000000..eaa9a28 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_202.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_203.png b/pkg/src/plymouth/monocleOS_red/loading2_203.png new file mode 100644 index 0000000..7e34731 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_203.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_204.png b/pkg/src/plymouth/monocleOS_red/loading2_204.png new file mode 100644 index 0000000..5c171cf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_204.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_205.png b/pkg/src/plymouth/monocleOS_red/loading2_205.png new file mode 100644 index 0000000..35877d8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_205.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_206.png b/pkg/src/plymouth/monocleOS_red/loading2_206.png new file mode 100644 index 0000000..f0f510a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_206.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_207.png b/pkg/src/plymouth/monocleOS_red/loading2_207.png new file mode 100644 index 0000000..9e2bbaf Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_207.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_208.png b/pkg/src/plymouth/monocleOS_red/loading2_208.png new file mode 100644 index 0000000..51b6400 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_208.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_209.png b/pkg/src/plymouth/monocleOS_red/loading2_209.png new file mode 100644 index 0000000..85fca4b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_209.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_21.png b/pkg/src/plymouth/monocleOS_red/loading2_21.png new file mode 100755 index 0000000..b0330e4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_21.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_210.png b/pkg/src/plymouth/monocleOS_red/loading2_210.png new file mode 100644 index 0000000..ac6a915 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_210.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_211.png b/pkg/src/plymouth/monocleOS_red/loading2_211.png new file mode 100644 index 0000000..701f939 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_211.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_212.png b/pkg/src/plymouth/monocleOS_red/loading2_212.png new file mode 100644 index 0000000..af109ea Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_212.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_213.png b/pkg/src/plymouth/monocleOS_red/loading2_213.png new file mode 100644 index 0000000..c34a3bc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_213.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_214.png b/pkg/src/plymouth/monocleOS_red/loading2_214.png new file mode 100644 index 0000000..e146133 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_214.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_215.png b/pkg/src/plymouth/monocleOS_red/loading2_215.png new file mode 100644 index 0000000..503fb08 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_215.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_216.png b/pkg/src/plymouth/monocleOS_red/loading2_216.png new file mode 100644 index 0000000..3fc3b2d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_216.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_217.png b/pkg/src/plymouth/monocleOS_red/loading2_217.png new file mode 100644 index 0000000..f55126d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_217.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_218.png b/pkg/src/plymouth/monocleOS_red/loading2_218.png new file mode 100644 index 0000000..206187a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_218.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_219.png b/pkg/src/plymouth/monocleOS_red/loading2_219.png new file mode 100644 index 0000000..311dacc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_219.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_22.png b/pkg/src/plymouth/monocleOS_red/loading2_22.png new file mode 100755 index 0000000..8e031cd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_22.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_220.png b/pkg/src/plymouth/monocleOS_red/loading2_220.png new file mode 100644 index 0000000..eebbedb Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_220.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_221.png b/pkg/src/plymouth/monocleOS_red/loading2_221.png new file mode 100644 index 0000000..c646b7a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_221.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_23.png b/pkg/src/plymouth/monocleOS_red/loading2_23.png new file mode 100755 index 0000000..88dd7e1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_23.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_24.png b/pkg/src/plymouth/monocleOS_red/loading2_24.png new file mode 100755 index 0000000..9810b2b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_24.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_25.png b/pkg/src/plymouth/monocleOS_red/loading2_25.png new file mode 100755 index 0000000..d08ad31 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_25.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_26.png b/pkg/src/plymouth/monocleOS_red/loading2_26.png new file mode 100755 index 0000000..355ae4f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_26.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_27.png b/pkg/src/plymouth/monocleOS_red/loading2_27.png new file mode 100755 index 0000000..7896c95 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_27.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_28.png b/pkg/src/plymouth/monocleOS_red/loading2_28.png new file mode 100755 index 0000000..b8b05f1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_28.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_29.png b/pkg/src/plymouth/monocleOS_red/loading2_29.png new file mode 100755 index 0000000..c8c4339 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_29.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_3.png b/pkg/src/plymouth/monocleOS_red/loading2_3.png new file mode 100755 index 0000000..fc3a656 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_3.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_30.png b/pkg/src/plymouth/monocleOS_red/loading2_30.png new file mode 100755 index 0000000..3a449bd Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_30.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_31.png b/pkg/src/plymouth/monocleOS_red/loading2_31.png new file mode 100755 index 0000000..e374378 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_31.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_32.png b/pkg/src/plymouth/monocleOS_red/loading2_32.png new file mode 100755 index 0000000..8af7eff Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_32.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_33.png b/pkg/src/plymouth/monocleOS_red/loading2_33.png new file mode 100755 index 0000000..98d8a3c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_33.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_34.png b/pkg/src/plymouth/monocleOS_red/loading2_34.png new file mode 100755 index 0000000..cd38277 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_34.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_35.png b/pkg/src/plymouth/monocleOS_red/loading2_35.png new file mode 100755 index 0000000..286d255 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_35.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_36.png b/pkg/src/plymouth/monocleOS_red/loading2_36.png new file mode 100755 index 0000000..9596d76 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_36.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_37.png b/pkg/src/plymouth/monocleOS_red/loading2_37.png new file mode 100755 index 0000000..5682767 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_37.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_38.png b/pkg/src/plymouth/monocleOS_red/loading2_38.png new file mode 100755 index 0000000..bb88b5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_38.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_39.png b/pkg/src/plymouth/monocleOS_red/loading2_39.png new file mode 100755 index 0000000..d0db65b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_39.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_4.png b/pkg/src/plymouth/monocleOS_red/loading2_4.png new file mode 100755 index 0000000..bf715e3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_4.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_40.png b/pkg/src/plymouth/monocleOS_red/loading2_40.png new file mode 100755 index 0000000..af79665 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_40.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_41.png b/pkg/src/plymouth/monocleOS_red/loading2_41.png new file mode 100755 index 0000000..15b80fa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_41.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_42.png b/pkg/src/plymouth/monocleOS_red/loading2_42.png new file mode 100755 index 0000000..eedd5ca Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_42.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_43.png b/pkg/src/plymouth/monocleOS_red/loading2_43.png new file mode 100755 index 0000000..2e16ba8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_43.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_44.png b/pkg/src/plymouth/monocleOS_red/loading2_44.png new file mode 100755 index 0000000..ad048b9 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_44.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_45.png b/pkg/src/plymouth/monocleOS_red/loading2_45.png new file mode 100755 index 0000000..6c8aa6e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_45.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_46.png b/pkg/src/plymouth/monocleOS_red/loading2_46.png new file mode 100755 index 0000000..f8abc16 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_46.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_47.png b/pkg/src/plymouth/monocleOS_red/loading2_47.png new file mode 100755 index 0000000..2ede75a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_47.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_48.png b/pkg/src/plymouth/monocleOS_red/loading2_48.png new file mode 100755 index 0000000..1c7066f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_48.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_49.png b/pkg/src/plymouth/monocleOS_red/loading2_49.png new file mode 100755 index 0000000..6f1f617 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_49.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_5.png b/pkg/src/plymouth/monocleOS_red/loading2_5.png new file mode 100755 index 0000000..ee6aa3e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_5.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_50.png b/pkg/src/plymouth/monocleOS_red/loading2_50.png new file mode 100755 index 0000000..1fa6461 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_50.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_51.png b/pkg/src/plymouth/monocleOS_red/loading2_51.png new file mode 100755 index 0000000..ce61f29 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_51.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_52.png b/pkg/src/plymouth/monocleOS_red/loading2_52.png new file mode 100755 index 0000000..bd4735b Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_52.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_53.png b/pkg/src/plymouth/monocleOS_red/loading2_53.png new file mode 100755 index 0000000..88e29e8 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_53.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_54.png b/pkg/src/plymouth/monocleOS_red/loading2_54.png new file mode 100755 index 0000000..60efe0a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_54.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_55.png b/pkg/src/plymouth/monocleOS_red/loading2_55.png new file mode 100755 index 0000000..6a9efc7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_55.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_56.png b/pkg/src/plymouth/monocleOS_red/loading2_56.png new file mode 100755 index 0000000..4176442 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_56.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_57.png b/pkg/src/plymouth/monocleOS_red/loading2_57.png new file mode 100755 index 0000000..17fe05f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_57.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_58.png b/pkg/src/plymouth/monocleOS_red/loading2_58.png new file mode 100755 index 0000000..cb1397e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_58.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_59.png b/pkg/src/plymouth/monocleOS_red/loading2_59.png new file mode 100755 index 0000000..6fb4527 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_59.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_6.png b/pkg/src/plymouth/monocleOS_red/loading2_6.png new file mode 100755 index 0000000..4818183 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_6.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_60.png b/pkg/src/plymouth/monocleOS_red/loading2_60.png new file mode 100755 index 0000000..e817875 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_60.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_61.png b/pkg/src/plymouth/monocleOS_red/loading2_61.png new file mode 100755 index 0000000..0c78987 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_61.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_62.png b/pkg/src/plymouth/monocleOS_red/loading2_62.png new file mode 100755 index 0000000..1a335cc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_62.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_63.png b/pkg/src/plymouth/monocleOS_red/loading2_63.png new file mode 100755 index 0000000..2dc8e70 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_63.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_64.png b/pkg/src/plymouth/monocleOS_red/loading2_64.png new file mode 100755 index 0000000..2a17fa4 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_64.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_65.png b/pkg/src/plymouth/monocleOS_red/loading2_65.png new file mode 100755 index 0000000..79fd9cc Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_65.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_66.png b/pkg/src/plymouth/monocleOS_red/loading2_66.png new file mode 100755 index 0000000..a243a0a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_66.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_67.png b/pkg/src/plymouth/monocleOS_red/loading2_67.png new file mode 100755 index 0000000..0892f2e Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_67.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_68.png b/pkg/src/plymouth/monocleOS_red/loading2_68.png new file mode 100755 index 0000000..2363258 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_68.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_69.png b/pkg/src/plymouth/monocleOS_red/loading2_69.png new file mode 100755 index 0000000..9e81d40 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_69.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_7.png b/pkg/src/plymouth/monocleOS_red/loading2_7.png new file mode 100755 index 0000000..7bffb8f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_7.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_70.png b/pkg/src/plymouth/monocleOS_red/loading2_70.png new file mode 100755 index 0000000..bd30fa7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_70.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_71.png b/pkg/src/plymouth/monocleOS_red/loading2_71.png new file mode 100755 index 0000000..f5fa239 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_71.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_72.png b/pkg/src/plymouth/monocleOS_red/loading2_72.png new file mode 100755 index 0000000..4d654f2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_72.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_73.png b/pkg/src/plymouth/monocleOS_red/loading2_73.png new file mode 100755 index 0000000..875077c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_73.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_74.png b/pkg/src/plymouth/monocleOS_red/loading2_74.png new file mode 100755 index 0000000..bc520e0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_74.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_75.png b/pkg/src/plymouth/monocleOS_red/loading2_75.png new file mode 100755 index 0000000..9061bda Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_75.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_76.png b/pkg/src/plymouth/monocleOS_red/loading2_76.png new file mode 100755 index 0000000..34885a1 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_76.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_77.png b/pkg/src/plymouth/monocleOS_red/loading2_77.png new file mode 100755 index 0000000..6d28048 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_77.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_78.png b/pkg/src/plymouth/monocleOS_red/loading2_78.png new file mode 100644 index 0000000..cefb884 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_78.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_79.png b/pkg/src/plymouth/monocleOS_red/loading2_79.png new file mode 100644 index 0000000..8690273 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_79.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_8.png b/pkg/src/plymouth/monocleOS_red/loading2_8.png new file mode 100755 index 0000000..e6df028 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_8.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_80.png b/pkg/src/plymouth/monocleOS_red/loading2_80.png new file mode 100644 index 0000000..e777b50 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_80.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_81.png b/pkg/src/plymouth/monocleOS_red/loading2_81.png new file mode 100644 index 0000000..12e373f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_81.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_82.png b/pkg/src/plymouth/monocleOS_red/loading2_82.png new file mode 100644 index 0000000..47e2135 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_82.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_83.png b/pkg/src/plymouth/monocleOS_red/loading2_83.png new file mode 100644 index 0000000..4c95ce2 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_83.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_84.png b/pkg/src/plymouth/monocleOS_red/loading2_84.png new file mode 100644 index 0000000..7c86886 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_84.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_85.png b/pkg/src/plymouth/monocleOS_red/loading2_85.png new file mode 100644 index 0000000..98d2fa0 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_85.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_86.png b/pkg/src/plymouth/monocleOS_red/loading2_86.png new file mode 100644 index 0000000..c93d595 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_86.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_87.png b/pkg/src/plymouth/monocleOS_red/loading2_87.png new file mode 100644 index 0000000..c60fd51 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_87.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_88.png b/pkg/src/plymouth/monocleOS_red/loading2_88.png new file mode 100644 index 0000000..4a8aa01 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_88.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_89.png b/pkg/src/plymouth/monocleOS_red/loading2_89.png new file mode 100644 index 0000000..c3749fa Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_89.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_9.png b/pkg/src/plymouth/monocleOS_red/loading2_9.png new file mode 100755 index 0000000..f7404d7 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_9.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_90.png b/pkg/src/plymouth/monocleOS_red/loading2_90.png new file mode 100644 index 0000000..45d22a5 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_90.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_91.png b/pkg/src/plymouth/monocleOS_red/loading2_91.png new file mode 100644 index 0000000..87971d3 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_91.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_92.png b/pkg/src/plymouth/monocleOS_red/loading2_92.png new file mode 100644 index 0000000..3588a5c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_92.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_93.png b/pkg/src/plymouth/monocleOS_red/loading2_93.png new file mode 100644 index 0000000..fdbc81c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_93.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_94.png b/pkg/src/plymouth/monocleOS_red/loading2_94.png new file mode 100644 index 0000000..c8f456a Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_94.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_95.png b/pkg/src/plymouth/monocleOS_red/loading2_95.png new file mode 100644 index 0000000..6ecc40d Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_95.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_96.png b/pkg/src/plymouth/monocleOS_red/loading2_96.png new file mode 100644 index 0000000..1ce1c85 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_96.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_97.png b/pkg/src/plymouth/monocleOS_red/loading2_97.png new file mode 100644 index 0000000..992b525 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_97.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_98.png b/pkg/src/plymouth/monocleOS_red/loading2_98.png new file mode 100644 index 0000000..18f881c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_98.png differ diff --git a/pkg/src/plymouth/monocleOS_red/loading2_99.png b/pkg/src/plymouth/monocleOS_red/loading2_99.png new file mode 100644 index 0000000..3a9163f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/loading2_99.png differ diff --git a/pkg/src/plymouth/monocleOS_red/lock.png b/pkg/src/plymouth/monocleOS_red/lock.png new file mode 100644 index 0000000..9f7066c Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/lock.png differ diff --git a/pkg/src/plymouth/monocleOS_red/logo.png b/pkg/src/plymouth/monocleOS_red/logo.png new file mode 100644 index 0000000..e2fa66f Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/logo.png differ diff --git a/pkg/src/plymouth/monocleOS_red/monocleOS_red.plymouth b/pkg/src/plymouth/monocleOS_red/monocleOS_red.plymouth new file mode 100755 index 0000000..c8985a1 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_red/monocleOS_red.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=monocleOS_red +Description=Red monocleOS boot animation for Plymouth based on Numix. +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/monocleOS_red +ScriptFile=/usr/share/plymouth/themes/monocleOS_red/monocleOS_red.script diff --git a/pkg/src/plymouth/monocleOS_red/monocleOS_red.script b/pkg/src/plymouth/monocleOS_red/monocleOS_red.script new file mode 100755 index 0000000..65ad391 --- /dev/null +++ b/pkg/src/plymouth/monocleOS_red/monocleOS_red.script @@ -0,0 +1,230 @@ +# 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 +# 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 . + +# Set Background Color +Window.SetBackgroundTopColor(0.83921568, 0.21568627, 0.21568627); +Window.SetBackgroundBottomColor(0.83921568, 0.21568627, 0.21568627); + +# Tinted text #ffffff +Window.Secolour.red = 1.0; +tinted_text_colour.green = 1.0; +tinted_text_colour.blue = 1.0; + +# Greeting +greeting_font = "DejaVu Sans Light 42"; +poweroff_text = "Goodbye"; + +if (Plymouth.GetMode() == "shutdown") + { + text_end.image = Image.Text(poweroff_text,255,255,255,1, greeting_font); + text_end.sprite = Sprite(text_end.image); + text_end.x = Window.GetX() + Window.GetWidth() / 2 - text_end.image.GetWidth() / 2; + text_end.y = Window.GetY() + Window.GetHeight() * 0.75 - text_end.image.GetHeight() / 2; + text_end.sprite.SetPosition(text_end.x, text_end.y, 2); + } + +# Logo +new_logo.image = Image("logo.png"); +new_logo.sprite = Sprite(); +new_logo.x = Window.GetWidth() / 2 - new_logo.image.GetWidth() / 2; +new_logo.y = Window.GetHeight() * 0.25 - new_logo.image.GetHeight() / 2; +new_logo.sprite.SetPosition(new_logo.x, new_logo.y, 10); +new_logo.sprite.SetImage(new_logo.image); + +# Loading +for (i = 1; i <= 221; i++) +{ + loading[i].image = Image("loading2_" + i + ".png"); + loading[i].sprite = Sprite(loading[i].image); + loading[i].sprite.SetOpacity(0); + loading[i].offset_y = 1; + loading[i].x = Window.GetX() + Window.GetWidth() / 2 - loading[i].image.GetWidth() / 2; + loading[i].y = Window.GetX() + Window.GetHeight() * 0.75 - loading[i].image.GetHeight() / 2; + loading[i].sprite.SetPosition(loading[i].x, loading[i].y, 0); +} + +index = 1; +is_forward = 1; +fun boot_callback() +{ + # 50 frames per second + if (index <= 1) + { + is_forward = 1; + } + if (index >= 221) + { + is_forward = 0; + } + for (i = 1; i <= 221; i++) + { + if (index != i) + { + loading[i].sprite.SetOpacity(0); + } + else + { + loading[i].sprite.SetOpacity(1); + } + } + if (is_forward) + { + index++; + } + else + { + index--; + } +} + +reboot_opacity = 1.0; +fun reboot_callback() +{ + if (reboot_opacity > 0.2) { + reboot_opacity -= 0.005; + logo.sprite.SetOpacity(reboot_opacity); + } +} + +if (Plymouth.GetMode() == "boot") +{ + Plymouth.SetRefreshFunction(boot_callback); +} +else +{ + Plymouth.SetRefreshFunction(reboot_callback); +} + +fun quit_callback() +{ + for (i = 1; i <= 221; i++) + { + loading[i].sprite.SetOpacity(0); + } + logo.sprite.SetOpacity(0); +} + +Plymouth.SetQuitFunction(quit_callback); + +#----------------------------------------- Dialogue -------------------------------- + +status = "normal"; + +fun dialog_setup() + { + local.box; + local.lock; + local.entry; + local.instruction; + + box.image = Image("box.png"); + lock.image = Image("lock.png"); + entry.image = Image("entry.png"); + instruction.image = Image("entry_password.png"); + + box.sprite = Sprite(box.image); + box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2; + box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2; + box.z = 10000; + box.sprite.SetPosition(box.x, box.y, box.z); + + lock.sprite = Sprite(lock.image); + lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth() + 12) / 2; + lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2; + lock.z = box.z + 1; + lock.sprite.SetPosition(lock.x, lock.y, lock.z); + + entry.sprite = Sprite(entry.image); + entry.x = lock.x + lock.image.GetWidth() + 6; + entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2; + entry.z = box.z + 1; + entry.sprite.SetPosition(entry.x, entry.y, entry.z); + + instruction.sprite = Sprite(instruction.image); + instruction.x = lock.x + lock.image.GetWidth() + 6; + instruction.y = box.y + box.image.GetHeight()/2 - instruction.image.GetHeight()/2; + instruction.z = box.z + 2; + instruction.sprite.SetPosition(instruction.x, instruction.y, instruction.z); + + global.dialog.box = box; + global.dialog.lock = lock; + global.dialog.entry = entry; + global.dialog.instruction = instruction; + global.dialog.bullet_image = Image("bullet.png"); + dialog_opacity (1); + } + +fun dialog_opacity(opacity) + { + dialog.box.sprite.SetOpacity (opacity); + dialog.lock.sprite.SetOpacity (opacity); + dialog.entry.sprite.SetOpacity (opacity); + dialog.instruction.sprite.SetOpacity (opacity); + for (index = 0; dialog.bullet[index]; index++) + { + dialog.bullet[index].sprite.SetOpacity(opacity); + } + } + +fun display_normal_callback () + { + global.status = "normal"; + if (global.dialog) + dialog_opacity (0); + } + +fun display_password_callback (prompt, bullets) + { + max_bullets = dialog.entry.image.GetWidth() / dialog.bullet_image.GetWidth(); + global.status = "password"; + if (!global.dialog) + dialog_setup(); + else + dialog_opacity(1); + for (index = 0; dialog.bullet[index] || index < bullets; index++) + { + if (!dialog.bullet[index] && index < max_bullets) + { + dialog.bullet[index].sprite = Sprite(dialog.bullet_image); + dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth(); + dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2; + dialog.bullet[index].z = dialog.entry.z + 1; + dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z); + } + if (index < bullets) + dialog.bullet[index].sprite.SetOpacity(1); + else + dialog.bullet[index].sprite.SetOpacity(0); + if (bullets > 0) + dialog.instruction.sprite.SetOpacity(0); + else + dialog.instruction.sprite.SetOpacity(1); + } + } + +Plymouth.SetDisplayNormalFunction(display_normal_callback); +Plymouth.SetDisplayPasswordFunction(display_password_callback); + + +#----------------------------------------- Message -------------------------------- + +message_sprite = Sprite(); +message_sprite.SetPosition(Window.GetX() + 10, Window.GetY() + 10, 10000); + +fun message_callback (text) +{ + my_image = Image.Text(text, 1, 1, 1); + message_sprite.SetImage(my_image); +} + +Plymouth.SetMessageFunction(message_callback); diff --git a/pkg/src/plymouth/monocleOS_red/wallpaper.png b/pkg/src/plymouth/monocleOS_red/wallpaper.png new file mode 100755 index 0000000..d68f751 Binary files /dev/null and b/pkg/src/plymouth/monocleOS_red/wallpaper.png differ diff --git a/pkg/src/xlunch_data/fonts/NotoMono-Regular.ttf b/pkg/src/xlunch_data/fonts/NotoMono-Regular.ttf new file mode 100644 index 0000000..3560a3a Binary files /dev/null and b/pkg/src/xlunch_data/fonts/NotoMono-Regular.ttf differ diff --git a/pkg/src/xlunch_data/fonts/NotoSans-Regular.ttf b/pkg/src/xlunch_data/fonts/NotoSans-Regular.ttf new file mode 100644 index 0000000..04be6f5 Binary files /dev/null and b/pkg/src/xlunch_data/fonts/NotoSans-Regular.ttf differ diff --git a/pkg/src/xlunch_data/icons/base/xlunch_ghost.png b/pkg/src/xlunch_data/icons/base/xlunch_ghost.png new file mode 100644 index 0000000..4df714c Binary files /dev/null and b/pkg/src/xlunch_data/icons/base/xlunch_ghost.png differ diff --git a/pkg/src/xlunch_data/icons/base/xlunch_highlight.png b/pkg/src/xlunch_data/icons/base/xlunch_highlight.png new file mode 100644 index 0000000..bb45fe5 Binary files /dev/null and b/pkg/src/xlunch_data/icons/base/xlunch_highlight.png differ diff --git a/pkg/src/xlunch_data/icons/base/xlunch_highlight_button.png b/pkg/src/xlunch_data/icons/base/xlunch_highlight_button.png new file mode 100644 index 0000000..9dcdf18 Binary files /dev/null and b/pkg/src/xlunch_data/icons/base/xlunch_highlight_button.png differ diff --git a/pkg/src/xlunch_data/icons/base/xlunchr_settings.png b/pkg/src/xlunch_data/icons/base/xlunchr_settings.png new file mode 100644 index 0000000..5bfe659 Binary files /dev/null and b/pkg/src/xlunch_data/icons/base/xlunchr_settings.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/all.png b/pkg/src/xlunch_data/icons/categories/20x20/all.png new file mode 100644 index 0000000..bfea7f2 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/all.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/favorites.png b/pkg/src/xlunch_data/icons/categories/20x20/favorites.png new file mode 100644 index 0000000..5620d8a Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/favorites.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/graphics.png b/pkg/src/xlunch_data/icons/categories/20x20/graphics.png new file mode 100644 index 0000000..761124f Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/graphics.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/multimedia.png b/pkg/src/xlunch_data/icons/categories/20x20/multimedia.png new file mode 100644 index 0000000..02f768f Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/multimedia.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/network.png b/pkg/src/xlunch_data/icons/categories/20x20/network.png new file mode 100644 index 0000000..36a64e6 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/network.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/office.png b/pkg/src/xlunch_data/icons/categories/20x20/office.png new file mode 100644 index 0000000..86867c9 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/office.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/others.png b/pkg/src/xlunch_data/icons/categories/20x20/others.png new file mode 100644 index 0000000..a55e934 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/others.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/recent.png b/pkg/src/xlunch_data/icons/categories/20x20/recent.png new file mode 100644 index 0000000..22a2be7 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/recent.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/settings.png b/pkg/src/xlunch_data/icons/categories/20x20/settings.png new file mode 100644 index 0000000..b98fb3a Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/settings.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/system.png b/pkg/src/xlunch_data/icons/categories/20x20/system.png new file mode 100644 index 0000000..3cbc5e2 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/system.png differ diff --git a/pkg/src/xlunch_data/icons/categories/20x20/utility.png b/pkg/src/xlunch_data/icons/categories/20x20/utility.png new file mode 100644 index 0000000..f6eb237 Binary files /dev/null and b/pkg/src/xlunch_data/icons/categories/20x20/utility.png differ diff --git a/pkg/src/xlunch_data/icons/numix/accessories-camera.png b/pkg/src/xlunch_data/icons/numix/accessories-camera.png new file mode 100644 index 0000000..a06ad60 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/accessories-camera.png differ diff --git a/pkg/src/xlunch_data/icons/numix/accessories-screenshot.png b/pkg/src/xlunch_data/icons/numix/accessories-screenshot.png new file mode 100644 index 0000000..ee43074 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/accessories-screenshot.png differ diff --git a/pkg/src/xlunch_data/icons/numix/calc.png b/pkg/src/xlunch_data/icons/numix/calc.png new file mode 100644 index 0000000..b6796b0 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/calc.png differ diff --git a/pkg/src/xlunch_data/icons/numix/calendar-black-31.png b/pkg/src/xlunch_data/icons/numix/calendar-black-31.png new file mode 100644 index 0000000..4c7df57 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/calendar-black-31.png differ diff --git a/pkg/src/xlunch_data/icons/numix/distributor-logo-windows.png b/pkg/src/xlunch_data/icons/numix/distributor-logo-windows.png new file mode 100644 index 0000000..0b3c3a2 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/distributor-logo-windows.png differ diff --git a/pkg/src/xlunch_data/icons/numix/file-manager.png b/pkg/src/xlunch_data/icons/numix/file-manager.png new file mode 100644 index 0000000..7d1a97e Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/file-manager.png differ diff --git a/pkg/src/xlunch_data/icons/numix/gnome-arcade.png b/pkg/src/xlunch_data/icons/numix/gnome-arcade.png new file mode 100644 index 0000000..b7f4ad1 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/gnome-arcade.png differ diff --git a/pkg/src/xlunch_data/icons/numix/internet-mail.png b/pkg/src/xlunch_data/icons/numix/internet-mail.png new file mode 100644 index 0000000..0f668a9 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/internet-mail.png differ diff --git a/pkg/src/xlunch_data/icons/numix/keyring-manager.png b/pkg/src/xlunch_data/icons/numix/keyring-manager.png new file mode 100644 index 0000000..e470b79 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/keyring-manager.png differ diff --git a/pkg/src/xlunch_data/icons/numix/libreoffice-writer.png b/pkg/src/xlunch_data/icons/numix/libreoffice-writer.png new file mode 100644 index 0000000..aed1d76 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/libreoffice-writer.png differ diff --git a/pkg/src/xlunch_data/icons/numix/preferences-desktop-wallpaper.png b/pkg/src/xlunch_data/icons/numix/preferences-desktop-wallpaper.png new file mode 100644 index 0000000..7b8e35b Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/preferences-desktop-wallpaper.png differ diff --git a/pkg/src/xlunch_data/icons/numix/preferences-system.png b/pkg/src/xlunch_data/icons/numix/preferences-system.png new file mode 100644 index 0000000..d07a8dd Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/preferences-system.png differ diff --git a/pkg/src/xlunch_data/icons/numix/printer.png b/pkg/src/xlunch_data/icons/numix/printer.png new file mode 100644 index 0000000..70b985e Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/printer.png differ diff --git a/pkg/src/xlunch_data/icons/numix/radio.png b/pkg/src/xlunch_data/icons/numix/radio.png new file mode 100644 index 0000000..37357c1 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/radio.png differ diff --git a/pkg/src/xlunch_data/icons/numix/search.png b/pkg/src/xlunch_data/icons/numix/search.png new file mode 100644 index 0000000..a896b68 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/search.png differ diff --git a/pkg/src/xlunch_data/icons/numix/setroubleshoot_icon.png b/pkg/src/xlunch_data/icons/numix/setroubleshoot_icon.png new file mode 100644 index 0000000..6ea304e Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/setroubleshoot_icon.png differ diff --git a/pkg/src/xlunch_data/icons/numix/vlc.png b/pkg/src/xlunch_data/icons/numix/vlc.png new file mode 100644 index 0000000..9200672 Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/vlc.png differ diff --git a/pkg/src/xlunch_data/icons/numix/web-browser.png b/pkg/src/xlunch_data/icons/numix/web-browser.png new file mode 100644 index 0000000..0463d7c Binary files /dev/null and b/pkg/src/xlunch_data/icons/numix/web-browser.png differ diff --git a/pkg/src/xlunch_data/sounds/shutdown.wav b/pkg/src/xlunch_data/sounds/shutdown.wav new file mode 100644 index 0000000..cba904d Binary files /dev/null and b/pkg/src/xlunch_data/sounds/shutdown.wav differ diff --git a/pkg/src/xlunch_data/sounds/startup.wav b/pkg/src/xlunch_data/sounds/startup.wav new file mode 100644 index 0000000..278e8e8 Binary files /dev/null and b/pkg/src/xlunch_data/sounds/startup.wav differ diff --git a/pkg/src/xlunch_data/src/AUTHORS b/pkg/src/xlunch_data/src/AUTHORS new file mode 100644 index 0000000..98264c8 --- /dev/null +++ b/pkg/src/xlunch_data/src/AUTHORS @@ -0,0 +1,2 @@ +Tomas Matejicek +Peter Munch-Ellingsen diff --git a/pkg/src/xlunch_data/src/LICENSE b/pkg/src/xlunch_data/src/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/pkg/src/xlunch_data/src/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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/pkg/src/xlunch_data/src/Makefile b/pkg/src/xlunch_data/src/Makefile new file mode 100644 index 0000000..d049e20 --- /dev/null +++ b/pkg/src/xlunch_data/src/Makefile @@ -0,0 +1,53 @@ +CC = gcc +LDFLAGS = -lImlib2 -lX11 +CFLAGS ?= -O2 -s +#CFLAGS ?= -ggdb -g3 # For debugging + +all: xlunch + +install: xlunch + mkdir -p $(DESTDIR)/etc/xlunch/ + mkdir -p $(DESTDIR)/usr/share/xlunch/svgicons/ + mkdir -p $(DESTDIR)/usr/bin/ + mkdir -p $(DESTDIR)/usr/share/icons/hicolor/48x48/apps + mkdir -p $(DESTDIR)/usr/share/applications + cp extra/ghost.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/xlunch_ghost.png + cp docs/logo.png $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/xlunch.png + cp xlunch $(DESTDIR)/usr/bin/ + cp extra/genentries $(DESTDIR)/usr/bin + cp extra/updateentries $(DESTDIR)/usr/bin + cp extra/genentries.desktop $(DESTDIR)/usr/share/applications/ + cp default.conf $(DESTDIR)/etc/xlunch/default.conf + #bash extra/genentries --path $(DESTDIR)/usr/share/xlunch/svgicons/ > $(DESTDIR)/etc/xlunch/entries.dsv + cp -r svgicons/ $(DESTDIR)/usr/share/xlunch/ 2>/dev/null || : + +remove: + rm -r $(DESTDIR)/etc/xlunch + rm -r $(DESTDIR)/usr/share/xlunch + rm $(DESTDIR)/usr/bin/xlunch + rm $(DESTDIR)/usr/bin/genentries + rm $(DESTDIR)/usr/bin/updateentries + rm $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/xlunch_ghost.png + rm $(DESTDIR)/usr/share/icons/hicolor/48x48/apps/xlunch.png + rm $(DESTDIR)/usr/share/applications/genentries.desktop + +livetest: xlunch + ./extra/gentriesquick > /tmp/xlunch-tmp.dsv + ./xlunch -g extra/wp.jpg -f "extra/OpenSans-Regular.ttf/10" -i /tmp/xlunch-tmp.dsv -b 140 --iconpadding 20 --textpadding 10 --paddingswap --leastmargin 10 --scroll || true + rm -f /tmp/xlunch-tmp.dsv + +test: xlunch + ./xlunch -g extra/wp.jpg -f "extra/OpenSans-Regular.ttf/10" -i extra/sample_entries.dsv -b 140 --outputonly --iconpadding 20 --textpadding 10 --paddingswap --leastmargin 10 --highlight extra/highlight.png + +xlunch: xlunch.c + $(CC) xlunch.c -o xlunch $(LDFLAGS) $(CFLAGS) + +entries.dsv: + bash extra/genentries > entries.dsv + +clean: + rm -f xlunch + rm -f entries.dsv + +release: + bash extra/makerelease diff --git a/pkg/src/xlunch_data/src/PKGBUILD b/pkg/src/xlunch_data/src/PKGBUILD new file mode 100644 index 0000000..dc31a2b --- /dev/null +++ b/pkg/src/xlunch_data/src/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: Peter Munch-Ellingsen + +_pkgname=xlunch +pkgname=xlunch-git +pkgver=4.4.1.r0.gc3f3845 +pkgrel=1 +pkgdesc="Graphical app launcher for X with few dependencies" +arch=('i686' 'x86_64') +url="http://xlunch.org/" +license=('GPL3') +depends=('sh' 'libx11' 'imlib2') +makedepends=('git' 'gcc' 'make' 'sed' 'grep') +provides=('xlunch') +conflicts=('xlunch') +source=('git+https://github.com/Tomas-M/xlunch.git' + 'xlunch-conf-gen.hook' + 'xlunch-conf-install.hook' + 'xlunch-conf-remove.hook') +md5sums=('SKIP' + '309c9c1b92ed8ffd48b93d8f9f8270a8' + '3986350c123f26415684cb1cabe33cb0' + '7bc2cc30625750d62739d028c3b439b4') + +pkgver() { + cd "$_pkgname" + git describe --long | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' +} + +build() { + cd "$_pkgname" + make xlunch +} + +package() { + cd "$srcdir/$_pkgname" + make DESTDIR="$pkgdir/" install + + install -Dm644 ../xlunch-conf-gen.hook "$pkgdir"/usr/share/libalpm/hooks/xlunch-conf-gen.hook + install -Dm644 ../xlunch-conf-install.hook "$pkgdir"/usr/share/libalpm/hooks/xlunch-conf-install.hook + install -Dm644 ../xlunch-conf-remove.hook "$pkgdir"/usr/share/libalpm/hooks/xlunch-conf-remove.hook +} diff --git a/pkg/src/xlunch_data/src/README.md b/pkg/src/xlunch_data/src/README.md new file mode 100644 index 0000000..de58fbc --- /dev/null +++ b/pkg/src/xlunch_data/src/README.md @@ -0,0 +1,33 @@ +# xlunch +Graphical app launcher for X, using pure Xlib and Imlib2. + +# website + +detailed info at: http://www.xlunch.org/ + +# compile and test with: + + make test + +on some distros `libimlib2-dev` and `libx11` are needed for compilation. + +For Ubuntu and other Debian-based distros, do: + +``` sh +sudo apt install libimlib2-dev libx11-dev +``` + +For Fedora: + +```sh +sudo dnf install imlib2-devel libX11-devel +``` + +# screenshots + +![Screenshot](/../Screenshot/screenshot.png?raw=true "Screenshot") + +![Screenshot](/../Screenshot/screenshot2.png?raw=true "Screenshot") + +Version 3 of xlunch added a lot of customization options, here are some of them in use: +![Screenshot](/../Screenshot/screenshot3.png?raw=true "Screenshot") diff --git a/pkg/src/xlunch_data/src/default.conf b/pkg/src/xlunch_data/src/default.conf new file mode 100644 index 0000000..ba4b115 --- /dev/null +++ b/pkg/src/xlunch_data/src/default.conf @@ -0,0 +1,60 @@ +## This file is read if you don't specify a config file with `--config` and +## there is no file in ~/.config/xlunch/xlunch.conf. You shuldn't edit this +## file directly but copy this file to e.g. ~/.config/xlunch/xlunch.conf and +## make your own changes. Options that are commented out are either switches +## that are turned on by the presence of an option, or options that takes a +## value but defaults to empty or has special meaning when no option is given. +## Simply uncomment the options you want and set them to the required value. +## Note that strings are not delimited by quotes, all values are read until the +## end of the line but whitespace is trunkcated from the front. To see what the +## options do, refer to `xlunch --help` or see http://xlunch.org + +# desktop +# noprompt +# outputonly +# selectonly +# multiple +# voidclickterminate +# focuslostterminate +# dontquit +# reverse +# windowed +# clearmemory +# shortcuts: +# button: +# scroll + +# xposition: 0 +# yposition: 0 +# width: 0 +# height: 0 +prompt: Run: +# font: OpenSans-Regular/10 +# promptfont: OpenSans-Regular/10 +# rootwindowbackground +# background: file.png/jpg +# bgfill +# highlight: file.png/jpg +iconpadding: 10 +# iconvpadding: 10 +textpadding: 10 +# columns: 1 +# rows: 1 +# border: 0 +# sideborder: 0 +borderratio: 50 +# sideborderratio: 50 +# center +promptspacing: 48 +iconsize: 48 +# textafter +# textotherside +# upsidedown +# paddingswap +# leastmargin: 0 +# leastvmargin: 0 +# hidemissing +textcolor: ffffffff +promptcolor: ffffffff +backgroundcolor: 2e3440ff +highlightcolor: ffffff32 diff --git a/pkg/src/xlunch_data/src/docs/CNAME b/pkg/src/xlunch_data/src/docs/CNAME new file mode 100644 index 0000000..5f1e49e --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/CNAME @@ -0,0 +1 @@ +xlunch.org \ No newline at end of file diff --git a/pkg/src/xlunch_data/src/docs/README.md b/pkg/src/xlunch_data/src/docs/README.md new file mode 100644 index 0000000..599c00e --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/README.md @@ -0,0 +1 @@ +Branch for www pages hosted on github diff --git a/pkg/src/xlunch_data/src/docs/favicon.ico b/pkg/src/xlunch_data/src/docs/favicon.ico new file mode 100644 index 0000000..9cbccf8 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/favicon.ico differ diff --git a/pkg/src/xlunch_data/src/docs/images/body-bg.png b/pkg/src/xlunch_data/src/docs/images/body-bg.png new file mode 100644 index 0000000..5e8c4c2 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/body-bg.png differ diff --git a/pkg/src/xlunch_data/src/docs/images/highlight-bg.jpg b/pkg/src/xlunch_data/src/docs/images/highlight-bg.jpg new file mode 100644 index 0000000..355e089 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/highlight-bg.jpg differ diff --git a/pkg/src/xlunch_data/src/docs/images/hr.png b/pkg/src/xlunch_data/src/docs/images/hr.png new file mode 100644 index 0000000..d32f689 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/hr.png differ diff --git a/pkg/src/xlunch_data/src/docs/images/octocat-icon.png b/pkg/src/xlunch_data/src/docs/images/octocat-icon.png new file mode 100644 index 0000000..2406608 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/octocat-icon.png differ diff --git a/pkg/src/xlunch_data/src/docs/images/tar-gz-icon.png b/pkg/src/xlunch_data/src/docs/images/tar-gz-icon.png new file mode 100644 index 0000000..502e67d Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/tar-gz-icon.png differ diff --git a/pkg/src/xlunch_data/src/docs/images/zip-icon.png b/pkg/src/xlunch_data/src/docs/images/zip-icon.png new file mode 100644 index 0000000..732aced Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/images/zip-icon.png differ diff --git a/pkg/src/xlunch_data/src/docs/index.html b/pkg/src/xlunch_data/src/docs/index.html new file mode 100644 index 0000000..67f5898 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/index.html @@ -0,0 +1,458 @@ + + + + + + + + + + + xlunch - application launcher for X + + + +
+
+ +
+

xlunch

+

Graphical app launcher for X with few dependencies

+
+ + +
+ +
+ +
+ +

Welcome! This is xlunch, the coolest graphical app launcher for Xorg/X11. +It requires only pure Xlib and Imlib2. It allows you to run programs, commands, +or simply select something out of a list using your mouse, keyboard, or both! +UTF8 is fully supported meaning you can have text of all kinds. The prompt +allows you to run arbitrary commands, and it works to filter your entries as +well. xlunch is also highly configurable, both in functionality and style, it +can even be used as a desktop! See below for more

+ +

Screenshot

+

Screenshot

+ +

Available Modes

+ +
    +
  • One time launcher mode - this is default mode. There +is no need to specify any commandline parameter for this mode. In this mode, xlunch +opens as a fullscreen application, and offers a screen with icons to select +applications to run, plus commandline which serves as a filter for the icons at +the same time. Running any app or command ends the launcher. You can also cancel +the launcher (by default) with the Esc key, or click with right mouse button.
  • +
  • Desktop mode - this mode is activated with -d. In this mode, +xlunch sends itself to the lowest position in the window stack, so all other windows +are above it. Your window manager will not have any control over it, so xlunch +does not receive any input or focus and it cannot be raised to front. This emulates +desktop with icons. In Desktop mode, applications start using fork (as another process) +and don't terminate the launcher. xlunch in this mode cannot be terminated (except by +killing it with SIGTERM). +
  • +
+ +

Keep in mind that if you use desktop mode while you are running some other desktop already, +you may end up with launcher running under your other desktop, thus it may be inaccessible. +The desktop mode is intended only for users without another desktop (such as WM-only systems +like i3). There are also some other flags that could be of interest in this mode, see below.

+ +

Screenshot

+

Screenshot

+ +

Commandline options:

+ +Functional options (these changes what xlunch does, or how it does it): +
 -d, --desktop                      Desktop mode, always keep the launcher at
+                                   background(behind other windows), and ignore ESC
+                                   and right mouse click. Combined with --dontquit
+                                   xlunch never exits (behaviour of --desktop from
+                                   previous versions).
+--config [file]                    Reads configuration options from a file. The
+                                   options are the same as the long options
+                                   specified here. Options that take a value must
+                                   have a colon (':') before it's option. It is
+                                   also possible to pass the entries along with the
+                                   configuration file by using "entries:"
+                                   followed by a newline and the regular contents
+                                   of an input file
+-v, --version                      Returns the version of xlunch
+-H, --help                         Shows this help message
+--name                             POSIX-esque way to specify the first part of
+                                   WM_CLASS (default: environment variable 
+                                   RESOURCE_NAME or argv[0])
+-n, --noprompt                     Hides the prompt, only allowing selection
+                                   by icon
+-o, --outputonly                   Do not run the selected entry, only output it
+                                   to stdout
+-S, --selectonly                   Only allow an actual entry and not free-typed
+                                   commands. Nice for scripting.
+-i, --input [file]                 File to read entries from, defaults to stdin
+                                   if data is available otherwise it reads from
+                                   $HOME/.config/xlunch/entries.dsv or
+                                   /etc/xlunch/entries.dsv
+-m, --multiple                     Allow multiple instances running
+-t, --voidclickterminate           Clicking anywhere that's not an entry terminates
+                                   xlunch, practical for touch screens.
+--focuslostterminate               When the window loses focus xlunch will quit,
+                                   practical for menus
+-q, --dontquit                     When an option is selected, don't close xlunch.
+                                   Combined with --desktop xlunch
+                                   never exits (behaviour of --desktop from
+                                   previous versions).
+-R, --reverse                      All entries in xlunch as reversly ordered.
+-W, --windowed                     Start in windowed mode
+-M, --clearmemory                  Set the memory of each entry to null before
+                                   exiting. Used for passing sensitive information
+                                   through xlunch.
+-U, --shortcuts [shortcuts]        Sets shortcuts for the entries, 'shortcuts' is a
+                                   string of UTF-8 characters to use sequentially
+                                   for the entries provided.
+-A, --button [button]              Adds a button to the window. The argument
+                                    "button" is a semicolon-separated list on the
+                                   form ";;,;"
+                                   If x or y is negative positioning is relative
+                                   to the other side of the screen.
+--noscroll                         Disable scroll in xlunch. Ignore entries
+                                   that can't fit the screen.
+
+ +Style options (these changes how xlunch looks): +
-p, --prompt [text]                The prompt asking for input (default: "Run: ")
+-f, --font [name]                  Font name including size after slash (default:
+                                   "OpenSans-Regular/10" and  "DejaVuSans/10")
+-F, --promptfont [name]            Font to use for the prompt
+                                   (default: same as --font)
+-G, --rootwindowbackground         Use root windows background image
+-g, --background [file]            Image to set as background (jpg/png)
+--bgfill                           Makes the background keep aspect ratio
+                                   while stretching
+-L, --highlight [file]             Image set as highlighting under selected icon
+                                   (jpg/png)
+-I, --iconpadding [i]              Padding around icons (default: 10)
+    --iconvpadding [i]             Padding around icons (default: Same as --iconpadding)
+-T, --textpadding [i]              Padding around entry titles (default: 10)
+-c, --columns [i]                  Number of columns to show (without this the max
+                                   amount possible is used)
+-r, --rows [i]                     Numbers of rows to show (without this the max
+                                   amount possible is used)
+-b, --border [i]                   Size of the border around the icons and prompt
+                                   (default: 1/10th of screen width)
+                                   This can also be set to 'auto' in order to
+                                   automatically calculate a border taking into
+                                   account the margin settings and the
+                                   configured columns and rows. You can also specify
+                                   border in terms of percentage of screen width by
+                                   appending a % sign to the value
+-B, --sideborder [i]               Size of the border on the sides, if this is used
+                                   --border will be only top and bottom. Similarily
+                                   this can be set to 'auto' or a percentage but
+                                   then only side borders are calculated
+--borderratio [i]                  The ratio of the border to apply above the
+                                   content. 0 is no top border, only bottom. 100 is
+                                   only top border, no bottom
+--sideborderratio [i]              The ratio of the side border to apply to the
+                                   left of the content. 0 is no left border, only
+                                   right. 100 is only left border, no right
+-C, --center                       Center entries when there are fewer entries on a
+                                   row than the maximum
+-P, --promptspacing [i]            Distance between the prompt and the icons
+                                   (default: 48)
+-s, --iconsize [i]                 Size of the icons (default: 48)
+-a, --textafter                    Draw the title to the right of the icon instead
+                                   of below, this option automatically sets
+                                   --columns to 1 but this can be overridden.
+-O, --textotherside                Draw the text on the other side of the icon from
+                                   where it is normally drawn.
+-u, --upsidedown                   Draw the prompt on the bottom and have icons
+                                   sort from bottom to top.
+-X, --paddingswap                  Icon padding and text padding swaps order
+                                   around text.
+-l, --leastmargin [i]              Adds a margin to the calculation of
+                                   application sizes.
+-V, --leastvmargin [i]             Adds a vertical margin to the calculation of
+                                   application sizes.
+-e, --hidemissing                  Hide entries with missing or broken icon images
+--tc, --textcolor [color]          Color to use for the text on the format rrggbbaa
+                                   (default: ffffffff)
+--pc, --promptcolor [color]        Color to use for the prompt text
+                                   (default: ffffffff)
+--bc, --backgroundcolor [color]    Color to use for the background
+                                   (default: 2e3440ff) NOTE: transparent background
+                                   color requires a compositor
+--hc, --highlightcolor [color]     Color to use for the highlight box
+                                   (default: ffffff32)
+
+ +

This list of options might seem a bit daunting at first. But you don't have to pass them +all on the command-line. If you specify a configuration file with --config +xlunch will read these options from a configuration file instead. The options have the same +name as their long versions do, but when passed through a configuration file options with +an argument must be split by a colon. If you only have a few entries to pass to xlunch (in +case of a menu for example) they can be passed through the configuration file as well. An +example showing configuration file usage with entries can be seen here: +

textafter
+columns: 3
+rows: 5
+iconsize: 64
+outputonly
+entries:
+  Pidgin;extra/pidgin.png;pidgin
+  Xterm;extra/terminal.png;xterm
+  Firefox;extra/firefox.png;firefox
+In this example there are three entries passed to xlunch, note that the whitespace +following each entry is not required, nor is the space between the colon and the arguments +above. Anything after "entries:" will be parsed as an entry, so you can't have more options +below the entries option. Note also that this can be used in conjuction with regular +options. If the options precede the --config option the ones in the file will +override them, and conversely any option following the --config option will +override those in the file. Where the above file to be used like so xlunch --rows 10 + --config file.cfg --columns 2 it would lead to xlunch using 5 rows and 2 columns. +Since all the options are the same you can also use the config option in a configuration +file. This means that you can have one config file with your system style of colors and +fonts, and multiple other files loading that file before setting other options like buttons +and entries. Just make sure not to load the same configuration file within that file as it +would lead to an infinite loop.

+ +

If you want to completely hide icons (to eg. use xlunch to only select between text entries like +dmenu) you should set --iconsize to 0 and turn on --textafter mode. +This will cause xlunch to remove the extra margin that would normally be around an icon and instead +show only the text. Since the entries in xlunch are normally based on icon size and their padding +this would make each entry super small, but the --textafter mode makes the size of each +entry dependent on the size of the text instead. Note however that this by default sets +--columns to 1, so override it with how many columns of text you would like. When +--textafter mode is enabled --iconpadding is used on all sides of the +entry box except the right.

+ +

There are two different border settings. If you set only --border it will be applied +to all four sides. By setting --sideborder you override the border setting and this new +border size will be used for the right and left border, while the regular border is used for top and +bottom.

+ +

For transparent background colors you need to have a compositor installed. This will make the +background of xlunch transparent. Note that the transparency is not additive, meaning that if you set +background to 50% transparency and highlight to 70% transparency the highlighted areas will be 70% +total transparency and not 70% of the 50%, ie. 35%. When a background image is supplied, or the +--rootwindowbackground switch is used xlunch will apply a slight black tint to the image +to make text more readable. By setting the background color manually this color will be used instead, +including transparency, so to disable the tint simply pass a fully transparent color (this does not +require a compositor). + +

In previous version desktop mode would by default fork of processes instead of terminating. This +is now a separate option (--dontquit) so you can keep xlunch running no matter the +mode.

+ +

When using xlunch to create menus of a set of options it might be practical to have shortcuts for +the options. With the --shortcuts option this is achievable. Since this captures +keypresses it might not be very useful without --noprompt but it is all the same +possible (perhaps using the number keys to hotkey the first 10 entries while being able to search +for the rest). As an example usage passing --shortcuts "atf" will apply 'a' as a shortcut +to the first entry, 't' as a shortcut to the second, and 'f' as a shortcut to the third.

+ +

To extend the possibilities of xlunch you can also add buttons anywhere in the window with the +--button option. It takes an argument that's a semicolon-separated list on the form: +icon;highlight icon (optional);x,y;command. Note that the highlight icon is optional +and will be used instead of the main icon when you hover over it. If no highlight icon is specified it +will just show the regular icon on hover. So for example the command +--button "./extra/firefox.png;;100,100;firefox" would put the Firefox icon from the extras +folder at the position 100,100 without a highlight icon and run "firefox" when it's pressed (note that +these buttons also adheres to switches like --outputonly). If you use a negative x or y +value the icon will be placed relative to the other side of the screen. So the command +--button "./extra/firefox.png;;-100,-100;firefox" will put the same icon in the bottom +right corner.

+ +

If you want to use xlunch to for example choose a password you can use the --clearmemory +mode. This will set all the data for the entries to NULL when they are destroyed (ie. xlunch closes +or a new set of data is passed over stdin, see below). This is not bulletproof, all the data will still +be stored in plaintext in memory while xlunch is running, but it's better than nothing.

+ +

When loading fonts xlunch will look for them in the folders: ~/.local/share/fonts, +~/.fonts, /usr/local/share/fonts, /usr/local/share/truetype, +and /usr/local/share/TTF. Imlib however does not search recursively, so to load a font +in for example ~/.local/share/fonts/FontFamily/FontName.ttf in size 10 we would have to +pass -f "FontFamily/FontName/10".

+ + +

Multi monitor setup

+ +

xlunch does not know how to detect your output monitors, it sees your monitors +as a big single screen. If you run it, your window manager positions the window and makes +it fullscreen, so it is up to your window manager to decide what monitor xlunch runs on. +If you, however configure your WM to make xlunch floating, start xlunch in Desktop mode +(which bypasses your window manager) or if you do not have any WM at all, you can customize +the size and position of the window manually by providing the top/left coordinates and +width/height of your monitor screen, which effectively positions xlunch on the desired +place/monitor. Use the following options:

+ +
-x, --xposition [i]               The x coordinate of the launcher window
+-y, --yposition [i]               The y coordinate of the launcher window
+-w, --width [i]                   The width of the launcher window
+-h, --height [i]                  The height of the launcher window
+
+ +

For example, if you have two 800x600 monitors side by side, xlunch sees it as 1600x800. +You can put it to first monitor by: -x 0 -y 0 -w 800 -h 600, or to second monitor by +using -x 800 -y 0 -w 800 -h 600. Remember that all these settings might be overridden +by your window manager unless you start xlunch in Desktop mode. Another thing that is helpful +is that xlunch sets three distinct WM_CLASS values, "xlunch-fullscreen" for it's +default mode, "xlunch-desktop" for the desktop mode, and "xlunch-windowed" for it's windowed mode. +This makes it easy to tell your window manager to treat each of the different kinds properly. +Alternatively you can use the --name option or the environment variable +RESOURCE_NAME to set the first part of WM_CLASS, note however that this +value is also the program called by :recur.

+ +

Compile:

+ +
make
+make test
+make install
+
+ +Uninstall with make remove + +

Entries file:

+ +xlunch can accept entries to show either over stdin or through a file. The format used in both cases are:

+ +
title;icon_path;cmd
+title;icon_path;cmd
+title;icon_path;cmd
+title;icon_path;cmd
+
+ +

title is the name of the program which will be shown, icon_path is a +path to an icon to show for the entry (png or jpg), and cmd is the command to be run +or returned when this entry is selected. To allow complex bash commands using semi-colons xlunch +simply parses the cmd field until a new-line is encountered. By default xlunch will +show a ghost icon if the icon you specified couldn't be found, if you want to not have an icon you +can simply leave the icon field empty (ie. title;;cmd). If you want to run xlunch from +within xlunch, for example to create a menu hierarchy, you should use a special syntax. This syntax +allows xlunch to replace its old process with the new one so you only have a single instance of +xlunch running and don't get any overhead from running it through bash. In order to do this simply +use the internal recur command by putting :recur [options] as the cmd +field. This will reuse the program name you originally used to call xlunch with but replace the +options with anything you add after recur. If you want to run a program by the name recur, simply +add a space in front of it. NOTE: recur relies on splitting the list of arguments, this is currently +only done on spaces, even those inside quotes, so it's not possible to pass arguments with spaces in +them when using recur (this is how previous versions of xlunch did all launching). +

+ +

+The :recur command shown above is a special class of commands called an "internal +command". All exec fields, both in entries, buttons, and otherwise that starts with a colon is +treated as an internal command (if you wish to avoid this simply add a space in front of the colon). +Apart from :recur the internal commands are: +


+:scroll          Scroll to the given position. pos can be "top", "bottom", the row number,
+                      or a number starting with + or - which is parsed as a relative scroll.
+:hover         Set the entry as hovered and scroll to it. entry cas be "start", "end",
+                      the entry number (1 indexed, 0 for no entry), or +/- like scroll.
+:exec        Runs the given command, even when outputonly is enabled
+:print        Prints a string to stdout
+:quit                 Quits out of xlunch
+
+Internal commands can be chained, so one can do :scroll +3 :print "Scrolled!". For +print and exec the argument needs to be enclosed in double-quotes if you want to +chain them, otherwise they will exec/print everything that follows. Because of this quit +can be put in front of a statement and wont quit until after all commands are run. So +:quit :exec myProgram --help will run myProgram with it's help flag, then quit. The same +can also be achieved with double quotes :exec "myProgram --help" :quit. +NOTE: Scroll is not completely implemented yet, bottom doesn't do anything and you are +able to scroll past the top and bottom of the list. This will not be possible in the future. +

+ +

If a completely empty line is encountered (ie. two sequential newlines), then all entries read +up until that point will be removed and only entries after this empty line will appear. This is a +feature that is intended for interfacing with xlunch from other scripts. There are many programs +that create this kind of output, like for example Conky, which can be piped directly to xlunch. +Sometimes you want new output to appear on the top of the list instead of at the bottom, to achieve +this you can use the --reverse switch. To add entries yourself you can create a named +pipe and keep it open while starting xlunch. xlunch will then read from this pipe and update the +entries on the fly. So you can write a script that passes entries to this pipe and they will appear +in xlunch, and all entries can be removed by passing two newlines in a row. Example:

+ +
mkfifo /tmp/xlunch-input # Create a named pipe
+cat > /tmp/xlunch-input & # Ensure that the pipe stays open
+cat entries.dsv > /tmp/xlunch-input & # Write some initial data to the pipe
+# This is neccesarry to avoid xlunch seeing the pipe as empty
+cat /tmp/xlunch-input | xlunch & # Start xlunch in the background, reading from the pipe
+echo "Hello;;notify-send 'Hello from xlunch'" > /tmp/xlunch-input
+# This last line will add the entry "Hello" to the already running xlunch menu
+echo "Xlunch is great;;notify-send 'quite great indeed'" > /tmp/xlunch-input
+# This adds yet another entry
+echo -e "\nAll alone;;notify-send 'where did the others go?'" > /tmp/xlunch-input
+# Because of the first character being a newline xlunch will clear the other
+# entries and add this one as the only entry.
+
+ +

During compilation, a sample entries file is created for you. By default, this entries file is +installed into /etc/xlunch/entries.dsv. The file is created by reading the freedesktop +"Desktop Entry Specification" files (.desktop) found in +$HOME/.local/share/applications and /usr/share/applications these files +are read in priority so you can override the versions installed by your package manager by putting a +file with the same name in the user local directory. The file generated is static, so if you want to +add new programs to the list that xlunch sees then you could run the extras/genentries script again. +The output of this script is in the format expected from entries.dsv files and can be +customized to your needs and to create custom menus. When xlunch starts without the +--input flag, it first checks stdin to see if you have piped it any entries. If nothing +is found there it tries to load your entries file from ~/.xlunch/entries.dsv. If this +fails, system-wide entries is loaded from /etc/xlunch/entries.dsv. By passing +--input the file specified is used instead and all other entries (including stdin) are +ignored.

+ +

Example usage:

+ +
# launcher mode:
+xlunch --background wp.jpg --font "OpenSans-Regular.ttf/10" --input sample_entries.dsv
+
+# desktop mode:
+xlunch --background wp.jpg --font "OpenSans-Regular.ttf/10" --input sample_entries.dsv
+    --desktop --multiple --noprompt --dontquit
+
+ +

Tips and tricks:

+ +

If you wish to run xlunch as app launcher, best practice is to +set up a keyboard shortcut to start xlunch, such as Alt+F2. +Or you can put a button in a taskbar to run it.

+ +

For example, to start xlunch on Alt+F2 in i3wm, add this line to ~/.i3/config:

+ +
bindsym $mod+F2 exec /usr/bin/xlunch
+
+ +

To have xlunch running as a desktop with icons in i3wm, add this to ~/.i3/config:

+ +
exec /usr/bin/xlunch --desktop --multiple --noprompt --dontquit
+
+ +

Note that you can also use the position flags from the multi-monitor section to display multiple +menus on your desktop.

+ +

xlunch is a perfect dmenu replacement, or rofi replacement.

+ + +
+ +

© 2016, 2017, Tomas Matejicek - tomas [at] slax [dot] org & Peter Munch-Ellingsen - peterme [at] peterme [dot] net +

+ Business vector designed by Freepik +

+ +

+ +
+
+ + diff --git a/pkg/src/xlunch_data/src/docs/javascripts/main.js b/pkg/src/xlunch_data/src/docs/javascripts/main.js new file mode 100644 index 0000000..d8135d3 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/javascripts/main.js @@ -0,0 +1 @@ +console.log('This would be the main JS file.'); diff --git a/pkg/src/xlunch_data/src/docs/logo.png b/pkg/src/xlunch_data/src/docs/logo.png new file mode 100644 index 0000000..fdafbf9 Binary files /dev/null and b/pkg/src/xlunch_data/src/docs/logo.png differ diff --git a/pkg/src/xlunch_data/src/docs/params.json b/pkg/src/xlunch_data/src/docs/params.json new file mode 100644 index 0000000..514ff39 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/params.json @@ -0,0 +1,6 @@ +{ + "name": "Xlunch", + "tagline": "Graphical app launcher for X with little dependencies", + "body": "# xlunch\r\nGraphical app launcher for X, using pure Xlib and Imlib2. It allows you to run a program by clicking its icon. Alternatively\r\nyou can just type any command using your keyboard. UTF8 is supported.\r\nThe Run commandline also works as a filter for the icons, as long as the title or command matches, icon is visible.\r\n\r\n![Screenshot](https://raw.githubusercontent.com/Tomas-M/xlunch/Screenshot/screenshot.png \"Screenshot\")\r\n\r\n**Available Modes**\r\n\r\n- One time launcher mode - this is default mode. In this mode, the launcher\r\n opens as a fullscreen application, and offers screen with icons to select\r\n application to run, plus commandline which serves as a filter for\r\n the icons at the same time. Running any app or command ends the launcher.\r\n- Kiosk mode - in this mode, the Run comand is disabled, thus user cannot\r\n type any command and the command line is not displayed in the launcher.\r\n User can only select icons to run with arrow keys (if launcher has focus).\r\n Input focus is not affected by this mode at all.\r\n- Fork mode - in this mode, the commands or apps are started as new process\r\n and the launcher keeps running. Input focus is not affected by this mode at all.\r\n Note that unless you combine fork mode with desktop mode (see below),\r\n your forked application window will most likely end up behind the launcher\r\n so it will look like nothing was started.\r\n- Desktop mode - in this mode, the launcher sends itself to lowest position,\r\n so all other windows are above it. This emulates desktop with icons.\r\n Input focus is affected in the way that the launcher never gets focus,\r\n so even if kiosk mode is disabled, user cannot use keyboard to use the launcher.\r\n Only mouse will work.\r\n\r\nIt is possible to combine all modes together. Keep in mind that if you use\r\ndesktop mode while you are running some other desktop already, you may\r\nend up with launcher even under your other desktop, thus it may be inaccessible.\r\nThe desktop mode is intended only for users without other desktop.\r\n\r\n![Screenshot](https://raw.githubusercontent.com/Tomas-M/xlunch/Screenshot/screenshot2.png \"Screenshot\")\r\n\r\n\r\n**Commandline options:**\r\n\r\n -k kiosk mode, disable Run prompt, allow user to only run by icon\r\n -d desktop mode, keep the launcher lowest (behind other windows)\r\n -v fork mode, keep running after executing a program\r\n \r\n -r use root window's background image\r\n Fails if your root window has no image set\r\n -g [file] Image to set as background (jpg/png)\r\n -m [i] margin (integer) specifies margin in pixels between icons\r\n -p [i] padding (integer) specifies padding inside icons in pixels\r\n -b [i] border (integer) specifies spacing border size in pixels\r\n -i [i] icon size (integer) in pixels\r\n -c [file] path to config file which describes titles, icons and commands\r\n -n Disable fullscreen\r\n -t [i] Top position (integer) in pixels for the Run commandline\r\n -x [text] string to display instead of 'Run: '\r\n -f [name] font name including size after slash, for example: DejaVuSans/10\r\n\r\n\r\n\r\n**Format of config file (default is /etc/xlunch/icons.conf) is:**\r\n\r\n title;icon_path;cmd\r\n title;icon_path;cmd\r\n title;icon_path;cmd\r\n title;icon_path;cmd\r\n\r\n\r\n**Compile:**\r\n\r\n gcc xlunch.c -o xlunch -lImlib2 -lX11 -lXcursor\r\n\r\n\r\nConfig file can be generated by ./genconf > /etc/xlunch/icons.conf\r\n\r\nBest practice is when you have a keyboard shortcut to start xlunch, such as Alt+F2\r\nOr have a button in taskbar to run it.\r\n\r\nTo start xlunch on i3wm for example, add this line to ~/.i3/config:\r\n\r\n bindsym $mod+F2 exec /usr/bin/xlunch\r\n ", + "note": "Don't delete this file! It's used internally to help with page regeneration." +} \ No newline at end of file diff --git a/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/README b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/README new file mode 100644 index 0000000..6209996 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/README @@ -0,0 +1,9 @@ +xlunch (graphical launcher for xorg/x11) + +Xlunch is a small and simple graphical launcher for Xorg/X11. It +requires only pure Xlib and Imlib2. It allows you to run a program by +clicking its icon; alternatively, you can also just type any arbitrary +command using your keyboard. It is possible to run xlunch in two +different modes: Desktop mode and Quick launch mode. + +Author: Tomas Matejicek diff --git a/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/doinst.sh b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/doinst.sh new file mode 100644 index 0000000..1ef9a17 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/doinst.sh @@ -0,0 +1,14 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/xlunch/icons.conf.new diff --git a/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/slack-desc b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/slack-desc new file mode 100644 index 0000000..f9ae34c --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +xlunch: xlunch (graphical launcher for xorg/x11) +xlunch: +xlunch: Xlunch is a small and simple graphical launcher for Xorg/X11. +xlunch: It requires only pure Xlib and Imlib2. It allows you to run +xlunch: a program by clicking its icon; alternatively, you can also +xlunch: just type any arbitrary command using your keyboard. +xlunch: It is possible to run xlunch in two different modes: +xlunch: Desktop mode and Quick launch mode. +xlunch: +xlunch: Author: Tomas Matejicek, www.xlunch.org, www.slax.org +xlunch: diff --git a/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.SlackBuild b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.SlackBuild new file mode 100755 index 0000000..5b0530d --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.SlackBuild @@ -0,0 +1,92 @@ +#!/bin/sh + +# Slackware build script for xlunch + +# Copyright 2016 Tomas Matejicek +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=xlunch +VERSION=${VERSION:-2.4.1} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +make + +mkdir -p $PKG/usr/bin +make install DESTDIR=$PKG + +mv $PKG/etc/xlunch/icons.conf $PKG/etc/xlunch/icons.conf.new + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cat LICENSE > $PKG/usr/doc/$PRGNAM-$VERSION/LICENSE +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.info b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.info new file mode 100644 index 0000000..8e09640 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/slackbuild/xlunch/xlunch.info @@ -0,0 +1,10 @@ +PRGNAM="xlunch" +VERSION="2.4.1" +HOMEPAGE="http://www.xlunch.org/" +DOWNLOAD="https://github.com/Tomas-M/xlunch/archive/v2.4.1/xlunch-2.4.1.tar.gz" +MD5SUM="a8c046f117ce65d327e3e2fe5ec45c38" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="imlib2" +MAINTAINER="Tomas Matejicek" +EMAIL="tomas@slax.org" diff --git a/pkg/src/xlunch_data/src/docs/spacings.svg b/pkg/src/xlunch_data/src/docs/spacings.svg new file mode 100644 index 0000000..0d43831 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/spacings.svg @@ -0,0 +1,494 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + Prompt + + + + Title + + + Title + + + + + + Title + + + + + + + + + + + + -B, --sideborder + -b, --border + <prompt font height> + <text font height> + -P, --promptspacing + -I, --iconpadding + -s, --iconsize + -T, --textpadding + -a, --textafter + } + These are the same if --sideborder is not set + NOTE: The space between rows and columns are auto-calculatedWith the exception of --textafter. + + diff --git a/pkg/src/xlunch_data/src/docs/stylesheets/github-dark.css b/pkg/src/xlunch_data/src/docs/stylesheets/github-dark.css new file mode 100644 index 0000000..f8dbbdf --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/stylesheets/github-dark.css @@ -0,0 +1,124 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 GitHub, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +.pl-c /* comment */ { + color: #969896; +} + +.pl-c1 /* constant, variable.other.constant, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header */, +.pl-s .pl-v /* string variable */ { + color: #0099cd; +} + +.pl-e /* entity */, +.pl-en /* entity.name */ { + color: #9774cb; +} + +.pl-smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */, +.pl-s .pl-s1 /* string source */ { + color: #ddd; +} + +.pl-ent /* entity.name.tag */ { + color: #7bcc72; +} + +.pl-k /* keyword, storage, storage.type */ { + color: #cc2372; +} + +.pl-s /* string */, +.pl-pds /* punctuation.definition.string, string.regexp.character-class */, +.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */, +.pl-sr /* string.regexp */, +.pl-sr .pl-cce /* string.regexp constant.character.escape */, +.pl-sr .pl-sre /* string.regexp source.ruby.embedded */, +.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */ { + color: #3c66e2; +} + +.pl-v /* variable */ { + color: #fb8764; +} + +.pl-id /* invalid.deprecated */ { + color: #e63525; +} + +.pl-ii /* invalid.illegal */ { + color: #f8f8f8; + background-color: #e63525; +} + +.pl-sr .pl-cce /* string.regexp constant.character.escape */ { + font-weight: bold; + color: #7bcc72; +} + +.pl-ml /* markup.list */ { + color: #c26b2b; +} + +.pl-mh /* markup.heading */, +.pl-mh .pl-en /* markup.heading entity.name */, +.pl-ms /* meta.separator */ { + font-weight: bold; + color: #264ec5; +} + +.pl-mq /* markup.quote */ { + color: #00acac; +} + +.pl-mi /* markup.italic */ { + font-style: italic; + color: #ddd; +} + +.pl-mb /* markup.bold */ { + font-weight: bold; + color: #ddd; +} + +.pl-md /* markup.deleted, meta.diff.header.from-file */ { + color: #bd2c00; + background-color: #ffecec; +} + +.pl-mi1 /* markup.inserted, meta.diff.header.to-file */ { + color: #55a532; + background-color: #eaffea; +} + +.pl-mdr /* meta.diff.range */ { + font-weight: bold; + color: #9774cb; +} + +.pl-mo /* meta.output */ { + color: #264ec5; +} + diff --git a/pkg/src/xlunch_data/src/docs/stylesheets/print.css b/pkg/src/xlunch_data/src/docs/stylesheets/print.css new file mode 100644 index 0000000..4b19b67 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/stylesheets/print.css @@ -0,0 +1,228 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + padding: 0; + margin: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; + border: 0; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +body { + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 13px; + line-height: 1.5; + color: #000; +} + +a { + font-weight: bold; + color: #d5000d; +} + +header { + padding-top: 35px; + padding-bottom: 10px; +} + +header h1 { + font-size: 48px; + font-weight: bold; + line-height: 1.2; + color: #303030; + letter-spacing: -1px; +} + +header h2 { + font-size: 24px; + font-weight: normal; + line-height: 1.3; + color: #aaa; + letter-spacing: -1px; +} +#downloads { + display: none; +} +#main_content { + padding-top: 20px; +} + +code, pre { + margin-bottom: 30px; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal; + font-size: 12px; + color: #222; +} + +code { + padding: 0 3px; +} + +pre { + padding: 20px; + overflow: auto; + border: solid 1px #ddd; +} +pre code { + padding: 0; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + font-weight: 300; + text-align: center; + border: 1px solid #ebebeb; +} + +form { + padding: 20px; + background: #f2f2f2; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 2.8em; +} + +h2 { + margin-bottom: 8px; + font-size: 22px; + font-weight: bold; + color: #303030; +} + +h3 { + margin-bottom: 8px; + font-size: 18px; + font-weight: bold; + color: #d5000d; +} + +h4 { + font-size: 16px; + font-weight: bold; + color: #303030; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + margin-bottom: 20px; + font-weight: 300; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + padding: 0 0 0 30px; + margin-bottom: 20px; + font-size: 1.6em; + border-left: 10px solid #e9e9e9; +} + +ul li { + list-style-position: inside; + list-style: disc; + padding-left: 20px; +} + +ol li { + list-style-position: inside; + list-style: decimal; + padding-left: 3px; +} + +dl dd { + font-style: italic; + font-weight: 100; +} + +footer { + padding-top: 20px; + padding-bottom: 30px; + margin-top: 40px; + font-size: 13px; + color: #aaa; +} + +footer a { + color: #666; +} + +/* MISC */ +.clearfix:after { + display: block; + height: 0; + clear: both; + visibility: hidden; + content: '.'; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} diff --git a/pkg/src/xlunch_data/src/docs/stylesheets/stylesheet.css b/pkg/src/xlunch_data/src/docs/stylesheets/stylesheet.css new file mode 100644 index 0000000..15ca6dc --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/stylesheets/stylesheet.css @@ -0,0 +1,373 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + padding: 0; + margin: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; + border: 0; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-spacing: 0; + border-collapse: collapse; +} + +/* LAYOUT STYLES */ +body { + font-family: 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 1em; + line-height: 1.5; + color: #6d6d6d; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); + background: #e7e7e7 url(../images/body-bg.png) 0 0 repeat; +} + +a { + color: #d5000d; +} +a:hover { + color: #c5000c; +} + +header { + padding-top: 35px; + padding-bottom: 5px; +} + +header h1 { + font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif; + font-size: 48px; font-weight: 900; + line-height: 1.2; + color: #303030; + letter-spacing: -1px; +} + +header h2 { + font-size: 24px; + font-weight: normal; + line-height: 1.3; + color: #aaa; + letter-spacing: -1px; +} + +#container { + min-height: 595px; + background: transparent url(../images/highlight-bg.jpg) 50% 0 no-repeat; +} + +.inner { + width: 780px; + margin: 0 auto; +} + +li,p { text-align: justify; } + +#container .inner img { + max-width: 100%; +} + +#downloads { + margin-bottom: 40px; +} + +a.button { + display: block; + float: left; + width: initial; + padding: 10px 6px 10px 6px; + margin-right: 12px; + font-size: 14px; + font-weight: bold; + line-height: 25px; + color: #303030; + background: #fdfdfd; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f2f2f2 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f2f2f2)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f2f2f2 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f2f2f2',GradientType=0 ); /* IE6-9 */ + border-top: solid 1px #cbcbcb; + border-right: solid 1px #b7b7b7; + border-bottom: solid 1px #b3b3b3; + border-left: solid 1px #b7b7b7; + -webkit-box-shadow: 10px 10px 5px #888; + -moz-box-shadow: 10px 10px 5px #888; + box-shadow: 0px 1px 5px #e8e8e8; +} +a.button:hover { + background: #fafafa; /* Old browsers */ + background: -moz-linear-gradient(top, #fdfdfd 0%, #f6f6f6 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdfdfd), color-stop(100%,#f6f6f6)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #fdfdfd 0%,#f6f6f6 100%); /* IE10+ */ + background: linear-gradient(top, #fdfdfd 0%,#f6f6f6, 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdfdfd', endColorstr='#f6f6f6',GradientType=0 ); /* IE6-9 */ + border-top: solid 1px #b7b7b7; + border-right: solid 1px #b3b3b3; + border-bottom: solid 1px #b3b3b3; + border-left: solid 1px #b3b3b3; +} + +a.button span { + display: block; + height: 23px; + padding-left: 50px; +} + +#download-zip span { + background: transparent url(../images/zip-icon.png) 12px 50% no-repeat; +} +#download-tar-gz span { + background: transparent url(../images/tar-gz-icon.png) 12px 50% no-repeat; +} +#view-on-github span { + background: transparent url(../images/octocat-icon.png) 12px 50% no-repeat; +} +#view-on-github { + margin-right: 0; +} + +code, pre { + margin-bottom: 30px; + font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, "DejaVuSansMono", monospace; + font-size: 14px; + color: #222; +} + +code { + padding: 0 3px; + background-color: #f2f2f2; + border: solid 1px #ddd; +} + +pre { + padding: 20px; + overflow: auto; + color: #f2f2f2; + text-shadow: none; + background: #303030; + overflow-x: hidden; +} +pre code { + padding: 0; + color: #f2f2f2; + background-color: #303030; + border: none; +} + +ul, ol, dl { + margin-bottom: 20px; +} + + +/* COMMON STYLES */ + +hr { + height: 1px; + padding-bottom: 1em; + margin-top: 1em; + line-height: 1px; + background: transparent url('../images/hr.png') 50% 0 no-repeat; + border: none; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +table { + width: 100%; + border: 1px solid #ebebeb; +} + +th { + font-weight: 500; +} + +td { + font-weight: 300; + text-align: center; + border: 1px solid #ebebeb; +} + +form { + padding: 20px; + background: #f2f2f2; + +} + + +/* GENERAL ELEMENT TYPE STYLES */ + +h1 { + font-size: 32px; +} + +h2 { + margin-bottom: 8px; + font-size: 22px; + font-weight: bold; + color: #303030; +} + +h3 { + margin-bottom: 8px; + font-size: 18px; + font-weight: bold; + color: #d5000d; +} + +h4 { + font-size: 16px; + font-weight: bold; + color: #303030; +} + +h5 { + font-size: 1em; + color: #303030; +} + +h6 { + font-size: .8em; + color: #303030; +} + +p { + margin-bottom: 20px; + font-weight: 300; +} + +a { + text-decoration: none; +} + +p a { + font-weight: 400; +} + +blockquote { + padding: 0 0 0 30px; + margin-bottom: 20px; + font-size: 1.6em; + border-left: 10px solid #e9e9e9; +} + +ul li { + list-style-position: inside; + list-style: disc; + padding-left: 20px; +} + +ol li { + list-style-position: inside; + list-style: decimal; + padding-left: 3px; +} + +dl dt { + color: #303030; +} + +footer { + padding-top: 20px; + padding-bottom: 30px; + margin-top: 40px; + font-size: 13px; + color: #aaa; + background: transparent url('../images/hr.png') 0 0 no-repeat; +} + +footer a { + color: #666; +} +footer a:hover { + color: #444; +} + +/* MISC */ +.clearfix:after { + display: block; + height: 0; + clear: both; + visibility: hidden; + content: '.'; +} + +.clearfix {display: inline-block;} +* html .clearfix {height: 1%;} +.clearfix {display: block;} + +/* #Media Queries +================================================== */ + +/* Smaller than standard 960 (devices and browsers) */ +@media only screen and (max-width: 959px) { } + +/* Tablet Portrait size to standard 960 (devices and browsers) */ +@media only screen and (min-width: 768px) and (max-width: 959px) { } + +/* All Mobile Sizes (devices and browser) */ +@media only screen and (max-width: 767px) { + header { + padding-top: 10px; + padding-bottom: 10px; + } + #downloads { + margin-bottom: 25px; + } + #download-zip, #download-tar-gz { + display: none; + } + .inner { + width: 94%; + margin: 0 auto; + } +} + +/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ +@media only screen and (min-width: 480px) and (max-width: 767px) { } + +/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ +@media only screen and (max-width: 479px) { } diff --git a/pkg/src/xlunch_data/src/docs/usage.txt b/pkg/src/xlunch_data/src/docs/usage.txt new file mode 100644 index 0000000..236c660 --- /dev/null +++ b/pkg/src/xlunch_data/src/docs/usage.txt @@ -0,0 +1,135 @@ +usage: xlunch [options] + xlunch is a program launcher/option selector similar to dmenu or rofi. + By default it launches in full-screen mode and terminates after a selection is made, + it is also possible to close xlunch by pressing Esc or the right mouse button. + Some options changes this behaviour, the most notable being the desktop mode switch: + -d, --desktop Desktop mode, always keep the launcher at + background(behind other windows), and ignore ESC + and right mouse click. Combined with --dontquit + xlunch never exits (behaviour of --desktop from + previous versions). + Functional options: + --config [file] Reads configuration options from a file. The + options are the same as the long options + specified here. Options that take a value must + have a colon (':') before it's option. It is + also possible to pass the entries along with the + configuration file by using "entries:" + followed by a newline and the regular contents + of an input file + -v, --version Returns the version of xlunch + -H, --help Shows this help message + --name POSIX-esque way to specify the first part of + WM_CLASS (default: environment variable + RESOURCE_NAME or argv[0]) + -n, --noprompt Hides the prompt, only allowing selection + by icon + -o, --outputonly Do not run the selected entry, only output it + to stdout + -S, --selectonly Only allow an actual entry and not free-typed + commands. Nice for scripting. + -i, --input [file] File to read entries from, defaults to stdin + if data is available otherwise it reads from + $HOME/.config/xlunch/entries.dsv or + /etc/xlunch/entries.dsv + -m, --multiple Allow multiple instances running + -t, --voidclickterminate Clicking anywhere that's not an entry terminates + xlunch, practical for touch screens. + --focuslostterminate When the window loses focus xlunch will quit, + practical for menus + -q, --dontquit When an option is selected, don't close xlunch. + Combined with --desktop xlunch + never exits (behaviour of --desktop from + previous versions). + -R, --reverse All entries in xlunch as reversly ordered. + -W, --windowed Start in windowed mode + -M, --clearmemory Set the memory of each entry to null before + exiting. Used for passing sensitive information + through xlunch. + -U, --shortcuts [shortcuts] Sets shortcuts for the entries, 'shortcuts' is a + string of UTF-8 characters to use sequentially + for the entries provided. + -A, --button [button] Adds a button to the window. The argument + "button" is a semicolon-separated list on the + form ";;,;" + If x or y is negative positioning is relative + to the other side of the screen. + --noscroll Disable scroll in xlunch. Ignore entries + that can't fit the screen. + + Multi monitor setup: xlunch cannot detect your output monitors, it sees your monitors + as a big single screen. You can customize this manually by setting windowed mode and + providing the top/left coordinates and width/height of your monitor screen which + effectively positions xlunch on the desired monitor. Use the following options: + -x, --xposition [i] The x coordinate of the launcher window + -y, --yposition [i] The y coordinate of the launcher window + -w, --width [i] The width of the launcher window + -h, --height [i] The height of the launcher window + + Style options: + -p, --prompt [text] The prompt asking for input (default: "Run: ") + -f, --font [name] Font name including size after slash (default: + "OpenSans-Regular/10" and "DejaVuSans/10") + -F, --promptfont [name] Font to use for the prompt + (default: same as --font) + -G, --rootwindowbackground Use root windows background image + -g, --background [file] Image to set as background (jpg/png) + --bgfill Makes the background keep aspect ratio + while stretching + -L, --highlight [file] Image set as highlighting under selected icon + (jpg/png) + -I, --iconpadding [i] Padding around icons (default: 10) + --iconvpadding [i] Vertical padding around icons (default: same as + iconpadding) + -T, --textpadding [i] Padding around entry titles (default: 10) + -c, --columns [i] Number of columns to show (without this the max + amount possible is used) + -r, --rows [i] Numbers of rows to show (without this the max + amount possible is used) + -b, --border [i] Size of the border around the icons and prompt + (default: 1/10th of screen width) + This can also be set to 'auto' in order to + automatically calculate a border taking into + account the margin settings and the + configured columns and rows. You can also specify + border in terms of percentage of screen width by + appending a % sign to the value + -B, --sideborder [i] Size of the border on the sides, if this is used + --border will be only top and bottom. Similarily + this can be set to 'auto' or a percentage but + then only side borders are calculated + --borderratio [i] The ratio of the border to apply above the + content. 0 is no top border, only bottom. 100 is + only top border, no bottom + --sideborderratio [i] The ratio of the side border to apply to the + left of the content. 0 is no left border, only + right. 100 is only left border, no right + -C, --center Center entries when there are fewer entries on a + row than the maximum + -P, --promptspacing [i] Distance between the prompt and the icons + (default: 48) + -s, --iconsize [i] Size of the icons (default: 48) + -a, --textafter Draw the title to the right of the icon instead + of below, this option automatically sets + --columns to 1 but this can be overridden. + -O, --textotherside Draw the text on the other side of the icon from + where it is normally drawn. + -u, --upsidedown Draw the prompt on the bottom and have icons + sort from bottom to top. + -X, --paddingswap Icon padding and text padding swaps order + around text. + -l, --leastmargin [i] Adds a margin to the calculation of + application sizes. + -V, --leastvmargin [i] Adds a vertical margin to the calculation of + application sizes. + -e, --hidemissing Hide entries with missing or broken icon images + --tc, --textcolor [color] Color to use for the text on the format rrggbbaa + (default: ffffffff) + --pc, --promptcolor [color] Color to use for the prompt text + (default: ffffffff) + --bc, --backgroundcolor [color] Color to use for the background + (default: 2e3440ff) NOTE: transparent background + color requires a compositor + --hc, --highlightcolor [color] Color to use for the highlight box + (default: ffffff32) + diff --git a/pkg/src/xlunch_data/src/extra/OpenSans-Regular.ttf b/pkg/src/xlunch_data/src/extra/OpenSans-Regular.ttf new file mode 100644 index 0000000..db43334 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/OpenSans-Regular.ttf differ diff --git a/pkg/src/xlunch_data/src/extra/firefox.png b/pkg/src/xlunch_data/src/extra/firefox.png new file mode 100644 index 0000000..10de891 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/firefox.png differ diff --git a/pkg/src/xlunch_data/src/extra/genentries b/pkg/src/xlunch_data/src/extra/genentries new file mode 100755 index 0000000..681cfd1 --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/genentries @@ -0,0 +1,269 @@ +#!/bin/bash + +svgpath="svgicons" +iconsize=$XLUNCHICONSIZE +if [ -z "$iconsize" ]; then + iconsize=48 +fi + +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -s|--size) + iconsize="$2" + shift # past argument + ;; + -p|--path) + svgpath="$2" + shift # past argument + ;; + -f|--file) + desktopfile="$2" + shift # past argument + ;; + -t|--theme) + icontheme="$2" + shift + ;; + -c|--category) + forcecategory="$2" + shift + ;; + -d|--debug) + debug="true" + ;; + -h|--help) + echo "Usage: genentries [-s|--size ] [-p|--path ] [-f|--file ] [-t|--theme ] [-d|--debug] [-c|--category ]" + exit 0 + ;; + *) + echo "Unknown option $key" + exit 1 + ;; +esac +shift # past argument or value +done + +# Get the users actual home directory in case we're running this with sudo +user_home=$(eval echo ~${SUDO_USER}) + +globalappfolder=/usr/share/applications +localappfolder=$user_home/.local/share/applications +pixmaps=/usr/share/pixmaps + +if [ -z "$icontheme" ]; then + icontheme=$(cat $user_home/.gtkrc-2.0 2>/dev/null| sed -n 's/^gtk-icon-theme-name="\([^"]*\)"$/\1/p') + if [ -z "$icontheme" ]; then + icontheme=$(cat $user_home/.config/gtk-3.0/settings.ini 2>/dev/null| sed -n 's/^gtk-icon-theme-name="\([^"]*\)"$/\1/p') + fi + if [ -z "$icontheme" ]; then + icontheme=$(cat $user_home/.kde4/share/config/kdeglobals 2>/dev/null| grep -A 1 "\[Icons\]" | tail -n1 | sed -n 's/^Theme=//p') + fi + if [ -z "$icontheme" ] && [ $(type xfconf-query >/dev/null 2>&1) ]; then + icontheme=$(xfconf-query -c xsettings -p /Net/ThemeName) + fi + if [ -z "$icontheme" ] && [ $(type gsettings >/dev/null 2>&1) ]; then + icontheme=$(gsettings get org.gnome.desktop.interface gtk-theme) + fi +fi +cansvg=$(type convert >/dev/null 2>&1 && echo "true" || echo "false") +# File formats supported by most imlib2 installations. +declare -a formats +formats=("png" "jpg" "jpeg" "tif" "tiff" "xpm" "bmp" "gif" "pnm" "tga") +if $cansvg; then + formats+=("svg") +fi + +# Debug statements +if [ "$debug" == "true" ]; then + echo $(bash --version | head -n1) >&2 + echo $user_home >&2 + echo $icontheme >&2 + echo $cansvg >&2 + for t in "${formats[@]}"; do + echo -n "$t " >&2 + done + echo "" >&2 + echo $svgpath >&2 + echo $iconsize >&2 +fi + +echo "Generating entries file..." >&2 +if [ -z "$icontheme" ]; then + echo "Unable to auto-detect icon theme, defaulting to 'hicolor'. Use --theme '' to manually override theme." >&2 + icontheme="hicolor" + inherits="hicolor" +else + if [ -z "$indexfile" ]; then + indexfile=$(find -L "$user_home/.local/share/icons/$icontheme" -name "index.theme" -print -quit 2>/dev/null) + fi + if [ -z "$indexfile" ]; then + indexfile=$(find -L "$user_home/.icons/$icontheme" -name "index.theme" -print quit 2>/dev/null) + fi + if [ -z "$indexfile" ]; then + indexfile=$(find -L "/usr/share/icons/$icontheme" -name "index.theme" -print -quit 2>/dev/null) + fi + if [ -z "$indexfile" ]; then + echo "Could not find index.theme for theme $icontheme" + exit 1 + fi + inherits=$(cat "$indexfile" | sed -n "s|^Inherits=\(.*\)$|\1|p" | sed "s|,|\n|g" | grep -v "^hicolor$") + inherits=$(echo -e "$icontheme\n$inherits\nhicolor" | sed "/^$/d") +fi +if [ "$debug" == "true" ]; then + echo $indexfile >&2 + echo $inherits >&2 +fi + +function elementIn { + local e match="$1" + shift + for e; do [[ "$e" == "$match" ]] && return 0; done + return 1 +} + +function readdesktopfile { + fdata=$(cat "$1") + if ! [[ -z $(echo "$fdata" | grep -i "^NoDisplay=true$") ]]; then + # Add a placeholder so the global app folder won't override it + echo ";;" + else + name="$(echo "$fdata" | grep -i "^Name=" | head -n 1 | cut -d "=" -f 2-)" + # Remove % arguments from the .desktop files as they are not supported by xlunch (WARNING: this might cause programs to misbehave) + cmd="$(echo "$fdata" | grep -i "^Exec=" | head -n 1 | cut -d "=" -f 2- | sed 's/ %[UuFfDdNnickvm]//g')" + iconname="$(echo "$fdata" | grep -i "^Icon=" | head -n 1 | cut -d "=" -f 2-)" + useterm="$(echo "$fdata" | grep -i "^Terminal=" | head -n 1 | cut -d "=" -f 2-)" + categories="$(echo "$fdata" | grep -i "^Categories=" | head -n 1 | cut -d "=" -f 2-)" + if ! [[ "$categories" = *"$forcecategory"* ]]; then + return + fi + if [ "$useterm" = "true" ]; then + cmd="$TERM -e ""$cmd" + fi + + if [ "$iconname" != "" ]; then + # Look for icons in the correct size + #>&2 echo "$1" + #>&2 echo "$iconname" + if [ -f "$iconname" ] && elementIn "${iconname##*.}" "${formats[@]}"; then + icon="$iconname" + iconname=$(basename "$iconname") + iconname="${iconname%.*}" + else + if elementIn "${iconname##*.}" "${formats[@]}"; then + iconname=${iconname%.*} + fi + # Create arguments for the find call to get all supported file formats + declare -a findargs + findargs=() + for t in "${formats[@]}"; do + findargs+=(-name "$iconname.$t" -o) + done + icon="" + for theme in $inherits; do + paths=() + if [ -d "$user_home/.local/share/icons/$theme" ]; then + paths+=("$user_home/.local/share/icons/$theme") + fi + if [ -d "$user_home/.icons/$theme" ]; then + paths+=("$user_home/.icons/$theme") + fi + if [ -d "/usr/share/icons/$theme" ]; then + paths+=("/usr/share/icons/$theme") + fi + for themepath in ${paths[@]}; do + if [ ! -d "$themepath" ] && [ ! -L "$themepath" ]; then + continue + fi + sizes=$(find -L "$themepath/" -type d | sed -n "s|^"$themepath"/\([^/]*/\)\{0,1\}\([0-9]*\)[^/]*$|\2|p" | sort -u | awk -v iconsize="$iconsize" '{if($0 > iconsize) print "g "$0}{if($0 == iconsize) print "e "$0}{if ($0 < iconsize) print "l "$0}') + sizes=$(echo -e "$(echo "$sizes" | grep "^e.*")\n$(echo "$sizes" | grep "^g.*" | sort -k 2.1n)\nscalable\n$(echo "$sizes" | grep "^l.*" | sort -k 2.1nr)") + sizes=$(echo "$sizes" | sed "s|^. ||") + for size in $sizes; do + while read path; do + if ! [ -z "$path" ]; then + icon=$(find -L "$path" -type f \( "${findargs[@]}" -false \) -print -quit ) + if ! [ -z "$icon" ]; then + break 4 + fi + fi + done <<< $(find -L "$themepath/" -type d | grep "^$themepath/\([^/]*/\)\?$size\(x$size\)\?$") + done + done + done + + # If we can't find anything that matches the theme, just search anywhere + if [ -z "$icon" ]; then + icon="$(find -L "$pixmaps" -type f \( "${findargs[@]}" -false \) -print -quit)" + fi + if [ -z "$icon" ] && [ -d "$user_home/.local/share/icons" ]; then + icon=$(find -L "$user_home/.local/share/icons" -type f \( "${findargs[@]}" -false \) -print -quit) + fi + if [ -z "$icon" ] && [ -d "$user_home/.icons" ]; then + icon=$(find -L "$user_home/.icons" -type f \( "${findargs[@]}" -false \) -print -quit) + fi + if [ -z "$icon" ] && [ -d "/usr/share/icons" ]; then + icon=$(find -L "/usr/share/icons" -type f \( "${findargs[@]}" -false \) -print -quit) + fi + fi + + if [ "${icon: -4}" == ".svg" ]; then + if ! [ -f "$svgpath/"$iconname".png" ]; then + >&2 echo "Converting $icon to png" + mkdir -p "$svgpath" + convert -density 500 -resize "$iconsize"x"$iconsize" -background none "$icon" "$svgpath/"$iconname".png" + fi + icon="$svgpath/"$iconname".png" + fi + + # If we have all the data we need, output an entry. Empty icon is fine + if [ "$cmd" != "" -a "$name" != "" ]; then + echo "$name;$icon;$cmd" + else + >&2 echo "Couldn't find all required data for $1" + fi + fi + fi +} + +if [ ! -z "$desktopfile" ]; then +readdesktopfile "$desktopfile" +else +if ! [ -z "$icontheme" ]; then + # Create an assoc array (ie. hashmap, ie. table, ie. you get the point) + declare -A applications + + # Set for in separator to newline + IFS=$'\n' + + # Iterate over files in localappfolder and add them to the array + files=$(find -L "$localappfolder" -name "*.desktop" 2>/dev/null) + for desktopfile in $files + do + bname=$(basename "$desktopfile") + entry=$(readdesktopfile "$desktopfile") + if ! [ -z "$entry" ]; then + applications["$bname"]="$entry" + fi + done + + # Iterate over files in globalappfolder and add them to the array if they don't already exists + files=$(find -L "$globalappfolder" -name "*.desktop" 2>/dev/null) + for desktopfile in $files + do + bname=$(basename "$desktopfile") + if ! [[ ${applications[$bname]} ]]; then + entry=$(readdesktopfile "$desktopfile") + if ! [ -z "$entry" ]; then + applications["$bname"]="$entry" + fi + fi + done + + # Get all the entries and write them out sorted and unique while removing the placeholder + for key in "${!applications[@]}"; do + echo "${applications[$key]}" + done | sort | uniq | grep -v "^;;$" + fi +fi diff --git a/pkg/src/xlunch_data/src/extra/genentries.desktop b/pkg/src/xlunch_data/src/extra/genentries.desktop new file mode 100644 index 0000000..7be3181 --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/genentries.desktop @@ -0,0 +1,4 @@ +[Desktop Entry] +Name=Regenerate entries for xlunch +Exec=xcp=$HOME/.config/xlunch/;xsp=$HOME/.local/share/xlunch;ni=/usr/share/icons/hicolor/48x48/apps/xlunch.png;mkdir -p $xcp && mkdir -p $xsp/svgicons && sh /usr/bin/genentries > $xcp/entries.dsv && ( notify-send -a xlunch -i $ni "Done generating new entries" && mv -f svgicons/* $xsp/svgicons && rm -r svgicons/ && ( cat $xcp/entries.dsv | sed 's|;svgicons\/|;.local/share/xlunch/svgicons/|' > entries2.dsv && mv entries2.dsv $xcp/entries.dsv ) ) || notify-send -a xlunch -i $ni "Error generating new entries" +Icon=xlunch diff --git a/pkg/src/xlunch_data/src/extra/gentriesquick b/pkg/src/xlunch_data/src/extra/gentriesquick new file mode 100755 index 0000000..aa8337f --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/gentriesquick @@ -0,0 +1,61 @@ +#!/bin/bash + +ICONSIZES="$1 128 64 48 32" # icon search in given order +ICONPATHS="/usr/share/icons/hicolor /usr/share/pixmaps" + +if [ "$1" = "--desktop" -o "$2" = "--desktop" ]; then + DESKTOPCMD="yes" +else + DESKTOPCMD="" +fi + + +# $1..$n = dir path with .desktop files +process_directories() +{ + while [ "$1" != "" ]; do + + for desktop in "$1"/*.desktop; do + + Name= + Icon= + Exec= + Hidden= + Terminal= + + while read LINE; do + eval $LINE + done <<< $(cat "$desktop" | egrep '^(Name|Icon|Exec|Hidden|Terminal)=' | sed -r "s/ *%.*//" | sed -r "s/=(.*)/='\\1'/") #' + + if [ "$Hidden" = "true" ]; then + continue + fi + + for size in $ICONSIZES; do + for ICONPATH in $ICONPATHS; do + icon=$ICONPATH/$size"x"$size/apps/$Icon + if [ -f "$icon".png ]; then Icon="$icon".png; break; fi + if [ -f "$icon" ]; then Icon=$icon; break 2; fi + icon=$ICONPATH/apps/$size"x"$size/$Icon + if [ -f "$icon".png ]; then Icon="$icon".png; break; fi + if [ -f "$icon" ]; then Icon=$icon; break 2; fi + icon=$ICONPATH/$Icon + if [ -f "$icon".png ]; then Icon="$icon".png; break; fi + if [ -f "$icon" ]; then Icon=$icon; break 2; fi + done + done + + if [ "$DESKTOPCMD" != "" ]; then + Exec="$desktop" + fi + + if [ -e "$Icon" ]; then + echo "$Name;$Icon;$Exec" + fi + + done + shift + done +} + +process_directories /usr/share/applications diff --git a/pkg/src/xlunch_data/src/extra/ghost.png b/pkg/src/xlunch_data/src/extra/ghost.png new file mode 100644 index 0000000..5a37990 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/ghost.png differ diff --git a/pkg/src/xlunch_data/src/extra/highlight.png b/pkg/src/xlunch_data/src/extra/highlight.png new file mode 100644 index 0000000..fe929a4 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/highlight.png differ diff --git a/pkg/src/xlunch_data/src/extra/makerelease b/pkg/src/xlunch_data/src/extra/makerelease new file mode 100644 index 0000000..7a2e55b --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/makerelease @@ -0,0 +1,29 @@ +#!/bin/bash + +OLDMAJOR=$(cat xlunch.c | grep 'int VERSION_MAJOR' | sed -r 's/.*= *|;.*//g') +OLDMINOR=$(cat xlunch.c | grep 'int VERSION_MINOR' | sed -r 's/.*= *|;.*//g') +OLDPATCH=$(cat xlunch.c | grep 'int VERSION_PATCH' | sed -r 's/.*= *|;.*//g') + +echo -ne "New MAJOR VERSION ($OLDMAJOR): " +read MAJOR +if [ "$MAJOR" = "" ]; then MAJOR=$OLDMAJOR; fi + +echo -ne "New MINOR VERSION ($OLDMINOR): " +read MINOR +if [ "$MINOR" = "" ]; then MINOR=$OLDMINOR; fi + +echo -ne "New PATCH VERSION ($OLDPATCH): " +read PATCH +if [ "$PATCH" = "" ]; then PATCH=$OLDPATCH; fi + + +sed -r -i "s/(int VERSION_MAJOR *= *)[0-9]+/\\1$MAJOR/" xlunch.c +sed -r -i "s/(int VERSION_MINOR *= *)[0-9]+/\\1$MINOR/" xlunch.c +sed -r -i "s/(int VERSION_PATCH *= *)[0-9]+/\\1$PATCH/" xlunch.c + +sed -r -i "s:v[0-9]+.[0-9]+.[0-9]+:v$MAJOR.$MINOR.$PATCH:g" docs/index.html + +git commit -a -m "Version update v$MAJOR.$MINOR.$PATCH" +git tag -m "Version release v$MAJOR.$MINOR.$PATCH" v$MAJOR.$MINOR.$PATCH +git push +git push --tags diff --git a/pkg/src/xlunch_data/src/extra/pidgin.png b/pkg/src/xlunch_data/src/extra/pidgin.png new file mode 100644 index 0000000..473c1af Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/pidgin.png differ diff --git a/pkg/src/xlunch_data/src/extra/sample_entries.dsv b/pkg/src/xlunch_data/src/extra/sample_entries.dsv new file mode 100644 index 0000000..b174aa4 --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/sample_entries.dsv @@ -0,0 +1,3 @@ +Firefox;./extra/firefox.png;firefox +Pidgin;./extra/pidgin.png;pidgin +Terminal;./extra/terminal.png;xterm diff --git a/pkg/src/xlunch_data/src/extra/terminal.png b/pkg/src/xlunch_data/src/extra/terminal.png new file mode 100644 index 0000000..06110d2 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/terminal.png differ diff --git a/pkg/src/xlunch_data/src/extra/updateentries b/pkg/src/xlunch_data/src/extra/updateentries new file mode 100755 index 0000000..04db2b4 --- /dev/null +++ b/pkg/src/xlunch_data/src/extra/updateentries @@ -0,0 +1,51 @@ +#!/bin/bash +# updateentries is intended to be run before xlunch in order to update the +# entries file with the most recent desktop files. This works by comparing the +# timestamps of the files in the folders containing desktop-files with the +# entries file. +# +# Usage: updateentries [ []] +# +# "Entries file" is the file to update, it defaults to: +# ~/.config/xlunch/entries.dsv +# "Options to genentries" are passed directly to the genentries script, this is +# used to control that script. Note that -f is used to indicate the desktop +# file to update and shouldn't be passed here. +user_home=$(eval echo ~${SUDO_USER}) + +if [[ -z "$1" ]]; then + entriesfile="$user_home/.config/xlunch/entries.dsv" +else + entriesfile="$1" +fi +entriestimestamp=$(stat -c "%Y" "$entriesfile") + +localappfolder=$user_home/.local/share/applications +globalappfolder=/usr/share/applications + +genentries=$(which genentries 2>/dev/null) +if [[ -z "$genentries" ]]; then + genentries="./genentries" +fi + +updated=false + +for appfolder in "$localappfolder" "$globalappfolder" +do + while IFS= read -r timestampfile + do + timestamp=${timestampfile:0:10} + desktopfile=${timestampfile:22} + if [ "$timestamp" -gt "$entriestimestamp" ]; then + $genentries ${@:2} -f "$desktopfile" >> "$entriesfile" + updated=true + else + break + fi + done <<< $(find -L "$appfolder" -name "*.desktop" -printf "%T@ %p\n" 2>/dev/null | sort -nr) +done + +if [ "$updated" = true ]; then + cat "$entriesfile" | sort | uniq > "$entriesfile.tmp" + mv "$entriesfile.tmp" "$entriesfile" +fi diff --git a/pkg/src/xlunch_data/src/extra/wp.jpg b/pkg/src/xlunch_data/src/extra/wp.jpg new file mode 100644 index 0000000..7391484 Binary files /dev/null and b/pkg/src/xlunch_data/src/extra/wp.jpg differ diff --git a/pkg/src/xlunch_data/src/xlunch.c b/pkg/src/xlunch_data/src/xlunch.c new file mode 100644 index 0000000..d8dce77 --- /dev/null +++ b/pkg/src/xlunch_data/src/xlunch.c @@ -0,0 +1,2720 @@ +// this code is not optimal in many ways, but works just nicely. +// Licence: GNU GPL v3 +// Authors: Tomas Matejicek +// Peter Munch-Ellingsen +const int VERSION_MAJOR = 4; // Major version, changes when breaking backwards compatability +const int VERSION_MINOR = 1; // Minor version, changes when new functionality is added +const int VERSION_PATCH = 1; // Patch version, changes when something is changed without changing deliberate functionality (eg. a bugfix or an optimisation) + +#define _GNU_SOURCE +/* open and O_RDWR,O_CREAT */ +#include +/* include X11 stuff */ +#include +/* include Imlib2 stuff */ +#include +/* sprintf include */ +#include +/* strcpy include */ +#include +/* exit include */ +#include +/* exec include */ +#include +/* long options include*/ +#include +/* cursor */ +#include +/* X utils */ +#include +#include +/* parse commandline arguments */ +#include +/* one instance */ +#include +#include +/* check stdin */ +#include +#include + +/* some globals for our window & X display */ +Display *disp; +Window win; +XVisualInfo vinfo; +XSetWindowAttributes attr; +int x11_fd; +struct pollfd eventfds[2]; + +XIM im; +XIC ic; + +int screen; +int screen_width; +int screen_height; + +// Let's define a linked list node: + +typedef struct node +{ + char title[256]; + char icon[256]; + char cmd[512]; + int hovered; + int clicked; + int hidden; + int x; + int y; + struct node * next; +} node_t; + +typedef struct button +{ + char icon_normal[256]; + char icon_highlight[256]; + char cmd[512]; + int hovered; + int clicked; + int x; + int y; + int w; + int h; + struct button * next; +} button_t; +typedef struct shortcut +{ + char *key; + node_t *entry; + struct shortcut *next; +} shortcut_t; + +typedef struct keynode { + char key[255]; + struct keynode * next; +} keynode_t; + +typedef struct color { + int r, g, b, a; +} color_t; + +typedef struct percentable { + int percent; + int value; +} percentable_t; + +int entries_count = 0; +node_t * entries = NULL; +button_t * buttons = NULL; +shortcut_t * shortcuts = NULL; +keynode_t * cmdline = NULL; + +enum exit_code { + OKAY, + ESCAPE = 0x20, + RIGHTCLICK, + VOIDCLICK, + FOCUSLOST, + INTERNALCMD, + LOCKERROR = 0x40, + ALLOCERROR, + FONTERROR, + CONFIGERROR, + WINERROR, + LOCALEERROR, + INPUTMERROR, + INPUTCERROR, + POLLERROR +}; + +static struct option long_options[] = + { + {"tc", required_argument, 0, 1009}, + {"textcolor", required_argument, 0, 1009}, + {"pc", required_argument, 0, 1010}, + {"promptcolor", required_argument, 0, 1010}, + {"backgroundcolor", required_argument, 0, 1011}, + {"bc", required_argument, 0, 1011}, + {"hc", required_argument, 0, 1012}, + {"highlightcolor", required_argument, 0, 1012}, + {"name", required_argument, 0, 1013}, + {"config", required_argument, 0, 1014}, + {"bgfill", no_argument, 0, 1015}, + {"focuslostterminate", no_argument, 0, 1016}, + {"borderratio", required_argument, 0, 1017}, + {"sideborderratio", required_argument, 0, 1018}, + {"noscroll", no_argument, 0, 1019}, + {"iconvpadding", required_argument, 0, 1020}, + {"button", required_argument, 0, 'A'}, + {"textafter", no_argument, 0, 'a'}, + {"border", required_argument, 0, 'b'}, + {"sideborder", required_argument, 0, 'B'}, + {"center", no_argument, 0, 'C'}, + {"columns", required_argument, 0, 'c'}, + {"desktop", no_argument, 0, 'd'}, + {"hidemissing", no_argument, 0, 'e'}, + {"font", required_argument, 0, 'f'}, + {"promptfont", required_argument, 0, 'F'}, + {"background", required_argument, 0, 'g'}, + {"rootwindowbackground", no_argument, 0, 'G'}, + {"height", required_argument, 0, 'h'}, + {"help", no_argument, 0, 'H'}, + {"iconpadding", required_argument, 0, 'I'}, + {"input", required_argument, 0, 'i'}, + {"highlight", required_argument, 0, 'L'}, + {"leastmargin", required_argument, 0, 'l'}, + {"clearmemory", no_argument, 0, 'M'}, + {"multiple", no_argument, 0, 'm'}, + {"noprompt", no_argument, 0, 'n'}, + {"outputonly", no_argument, 0, 'o'}, + {"textotherside", no_argument, 0, 'O'}, + {"prompt", required_argument, 0, 'p'}, + {"promptspacing", required_argument, 0, 'P'}, + {"dontquit", no_argument, 0, 'q'}, + {"reverse", no_argument, 0, 'R'}, + {"rows", required_argument, 0, 'r'}, + {"iconsize", required_argument, 0, 's'}, + {"selectonly", no_argument, 0, 'S'}, + {"textpadding", required_argument, 0, 'T'}, + {"voidclickterminate", no_argument, 0, 't'}, + {"shortcuts", required_argument, 0, 'U'}, + {"upsidedown", no_argument, 0, 'u'}, + {"leastvmargin", required_argument, 0, 'V'}, + {"version", no_argument, 0, 'v'}, + {"width", required_argument, 0, 'w'}, + {"windowed", no_argument, 0, 'W'}, + {"paddingswap", no_argument, 0, 'X'}, + {"xposition", required_argument, 0, 'x'}, + {"yposition", required_argument, 0, 'y'}, + {0, 0, 0, 0} + }; +int icon_size = 48; +int ucolumns = 0; +int columns; +int urows = 0; +int rows; +int column_margin = 0; +int row_margin = 0; +int icon_padding = 40; +int icon_v_padding = -1; +int text_padding = 10; +int border; +int side_border = 0; +int border_ratio = 50; +int side_border_ratio = 50; +int cell_width; +int cell_height; +int font_height; +int prompt_font_height; +int use_root_img = 0; +char commandline[10024]; +char commandlinetext[10024]; +int prompt_x; +int prompt_y; +int mouse_moves=0; +char * background_file = ""; +char * highlight_file = ""; +char * input_file = ""; +int read_config = 0; +FILE * input_source = NULL; +char * prompt = ""; +char * font_name = ""; +char * prompt_font_name = ""; +char * program_name; +int bg_fill = 0; +int no_prompt = 0; +int prompt_spacing = 48; +int windowed = 0; +int multiple_instances = 0; +int uposx = -1; +int uposy = -1; +int uwidth = 0; +int uheight = 0; +percentable_t uborder = { .percent = -1, .value = 0 }; +percentable_t uside_border = { .percent = -1, .value = 0 }; +int void_click_terminate = 0; +int focus_lost_terminate = 0; +int dont_quit = 0; +int reverse = 0; +int output_only = 0; +int select_only = 0; +int text_after = 0; +int text_other_side = 0; +int clear_memory = 0; +int upside_down = 0; +int padding_swap = 0; +int least_margin = 0; +int least_v_margin = -1; +int hide_missing = 0; +int center_icons = 0; +int noscroll = 0; +int scrolled_past= 0; +int hovered_entry = 0; +color_t text_color = {.r = 255, .g = 255, .b = 255, .a = 255}; +color_t prompt_color = {.r = 255, .g = 255, .b = 255, .a = 255}; +color_t background_color = {.r = 46, .g = 52, .b = 64, .a = 255}; +int background_color_set = 0; +color_t highlight_color = {.r = 255, .g = 255, .b = 255, .a = 50}; + +#define MOUSE 1 +#define KEYBOARD 2 +int hoverset=MOUSE; +int desktop_mode=0; +int lock; + +/* areas to update */ +Imlib_Updates updates, current_update; +/* our background image, rendered only once */ +Imlib_Image background = NULL; +/* highlighting image (placed under icon on hover) */ +Imlib_Image highlight = NULL; +/* image variable */ +Imlib_Image image = NULL; + +void calculate_percentage(int maxvalue, percentable_t* percentable) +{ + if(percentable->percent != -1) { + percentable->value = (maxvalue * percentable->percent) / 100; + } +} + +void recalc_cells() +{ + int margined_cell_width, margined_cell_height; + + if (text_after){ + cell_width=icon_size+icon_padding*2; + cell_height=icon_size+icon_v_padding*2; + margined_cell_width=icon_size+icon_padding*2+least_margin; + margined_cell_height=icon_size+icon_v_padding*2+least_v_margin; + if(ucolumns == 0) + ucolumns = 1; + } else { + cell_width=icon_size+icon_padding*2; + cell_height=icon_size+icon_v_padding*2+font_height+text_padding; + margined_cell_width=icon_size+icon_padding*2+least_margin; + margined_cell_height=icon_size+icon_v_padding*2+font_height+text_padding+least_v_margin; + } + + border = screen_width/10; + if (uborder.value > 0) border = uborder.value; + if (uborder.value == -1 && uborder.percent == -1){ + if (ucolumns == 0){ + border = 0; + } else { + side_border = (screen_width - (ucolumns * cell_width + (ucolumns - 1) * least_margin))/2; + border = (screen_height - (no_prompt ? 0 : prompt_font_height + prompt_spacing) - (urows * cell_height + (urows - 1) * least_v_margin))/2; + } + } + if (uside_border.value == 0 && uside_border.percent == -1) side_border = border; + if (uside_border.value > 0) side_border = uside_border.value; + if (uside_border.value == -1 && uside_border.percent == -1){ + if (ucolumns == 0){ + side_border = 0; + } else { + side_border = (screen_width - (ucolumns * cell_width + (ucolumns - 1) * least_margin))/2; + } + } + + int usable_width; + int usable_height; + // These do while loops should run at most three times, it's just to avoid copying code + do { + usable_width = screen_width-side_border*2; + if (no_prompt) { + usable_height = screen_height-border*2; + } else { + usable_height = screen_height-border*2-prompt_spacing-prompt_font_height; + } + + // If the usable_width is too small, take some space away from the border + if (usable_width < cell_width) { + side_border = (screen_width - cell_width - 1)/2; + } else if (usable_height < cell_height) { + border = (screen_height - cell_height - prompt_spacing - prompt_font_height - 1)/2; + } + } while ((usable_width < cell_width && screen_width > cell_width) || (usable_height < cell_height && screen_height > cell_height)); + // If columns were not manually overriden, calculate the most it can possibly contain + if (ucolumns == 0){ + columns = usable_width/margined_cell_width; + } else{ + columns = ucolumns; + } + if (urows == 0){ + rows = usable_height/margined_cell_height; + } else{ + rows = urows; + } + + // If we don't have space for a single column or row, force it. + if (columns == 0) { + columns = 1; + } + if (rows == 0) { + rows = 1; + } + + if (text_after){ + cell_width = (usable_width - least_margin*(columns - 1))/columns; + } + + // The space between the icon tiles to fill all the space + if (columns == 1){ + column_margin = (usable_width - cell_width*columns); + } else { + column_margin = (usable_width - cell_width*columns)/(columns - 1); + } + if (rows == 1){ + row_margin = (usable_height - cell_height*rows); + } else { + row_margin = (usable_height - cell_height*rows)/(rows - 1); + } + + // These are kept in case manual positioning is reintroduced + prompt_x = (side_border * side_border_ratio) / 50; + prompt_y = (border * border_ratio) / 50; + /* + if(uside_border == 0){ + side_border = border; + }*/ +} + + +void restack() +{ + if (desktop_mode) XLowerWindow(disp,win); + else if (!windowed) XRaiseWindow(disp,win); +} + + +char* strncpyutf8(char* dst, const char* src, size_t num) +{ + if(num) + { + size_t sizeSrc = strlen(src); // number of bytes not including null + while(sizeSrc>num) + { + const char* lastByte = src + sizeSrc; // initially \0 at end + + while(lastByte-- > src) // test previous chars + if((*lastByte & 0xC0) != 0x80) // utf8 start byte found + break; + + sizeSrc = lastByte-src; + } + memcpy(dst, src, sizeSrc); + dst[sizeSrc] = '\0'; + } + return dst; +} + + +void arrange_positions() +{ + node_t * current = entries; + int i = 0; + int j = 0; + + while (current != NULL) + { + if (current->hidden) + { + current->x = 0; + current->y = 0; + } + else + { + int entries_last_line = entries_count - j * columns; + if (center_icons && entries_last_line < columns) { + int width = entries_last_line * cell_width + (entries_last_line - 1) * column_margin; + int usable_width = screen_width - side_border * 2; + int margin = usable_width - width; + current->x = (side_border * side_border_ratio) / 50 + margin / 2 + i * (cell_width + column_margin); + } else { + current->x = (side_border * side_border_ratio) / 50 + i * (cell_width+column_margin); + } + if (no_prompt) { + current->y = (border * border_ratio) / 50 + (j - scrolled_past) * (cell_height+row_margin); + } else { + current->y = (border * border_ratio) / 50 + prompt_font_height + prompt_spacing + (j - scrolled_past) * (cell_height+row_margin); + } + if (upside_down) { + current->y=screen_height - cell_height - current->y; + } + if (i == columns-1) { + i = 0; + j++; + } else { + i++; + } + } + current = current->next; + } +} + + +void push_key(char * key) +{ + keynode_t * current = cmdline; + + if (current==NULL) + { + cmdline = malloc(sizeof(keynode_t)); + strcpy(cmdline->key,key); + cmdline->next = NULL; + return; + } + + while (current->next != NULL) { + current = current->next; + } + + /* now we can add a new item */ + current->next = malloc(sizeof(keynode_t)); + strcpy(current->next->key,key); + current->next->next = NULL; +} + + +void pop_key() +{ + if (cmdline==NULL) return; + + // if there is only one item, remove it + if (cmdline->next==NULL) + { + free(cmdline); + cmdline=NULL; + return; + } + + keynode_t * current = cmdline; + + while (current->next->next != NULL) { + current = current->next; + } + + /* now we can remove last item */ + free(current->next); + current->next=NULL; +} + + +void clear_entries(){ + node_t * current = entries; + while (current != NULL) { + node_t * last = current; + if (clear_memory) { + memset(last->title, 0, 256); + memset(last->icon, 0, 256); + memset(last->cmd, 0, 512); + // Free the entire struct, except for it's next pointer + memset(last, 0, sizeof(node_t) - sizeof(node_t *)); + } + free(last); + current = current->next; + } + entries = NULL; +} + + +void cleanup() +{ + flock(lock, LOCK_UN | LOCK_NB); + // destroy window, disconnect display, and exit + XDestroyWindow(disp,win); + XFlush(disp); + XCloseDisplay(disp); + + if(input_source == stdin){ + int fd = fileno(stdin); + int flags = fcntl(fd, F_GETFL, 0); + flags &= ~O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + fclose(input_source); + } + + clear_entries(); + button_t * button = buttons; + buttons = NULL; + while (button != NULL) { + button_t *last = button; + button = button->next; + free(last); + } + shortcut_t * shortcut = shortcuts; + shortcuts = NULL; + while (shortcut != NULL) { + shortcut_t *last = shortcut; + shortcut = shortcut->next; + free(last->key); + free(last); + } +} + + +Imlib_Image load_image(char * icon) { + Imlib_Load_Error load_error; + Imlib_Image image = imlib_load_image_with_error_return(icon, &load_error); + if(image) { + imlib_context_set_image(image); + imlib_free_image(); + } else { + fprintf(stderr, "Could not load icon %s, Imlib failed with: ", icon); + switch(load_error) { + case IMLIB_LOAD_ERROR_NONE: + fprintf(stderr, "IMLIB_LOAD_ERROR_NONE"); + break; + case IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST: + fprintf(stderr, "IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST"); + break; + case IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY"); + break; + case IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ: + fprintf(stderr, "IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ"); + break; + case IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT: + fprintf(stderr, "IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT"); + break; + case IMLIB_LOAD_ERROR_PATH_TOO_LONG: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_TOO_LONG"); + break; + case IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT"); + break; + case IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY"); + break; + case IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE"); + break; + case IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS: + fprintf(stderr, "IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_MEMORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_MEMORY"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS"); + break; + case IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE: + fprintf(stderr, "IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE"); + break; + case IMLIB_LOAD_ERROR_UNKNOWN: + fprintf(stderr, "IMLIB_LOAD_ERROR_UNKNOWN"); + break; + } + fprintf(stderr, "\n"); + /* + cleanup(); + exit(1);*/ + } + return image; +} + + +void push_entry(node_t * new_entry)//(char * title, char * icon, char * cmd, int x, int y) +{ + node_t * current = entries; + int hasicon = (strlen(new_entry->icon) != 0); + /* Pre-load the image into the cache, this is done to check for error messages + * If a user has more images then can be shown this might incur a performance hit */ + if (hasicon) { + Imlib_Image image = load_image(new_entry->icon); + if (image == NULL) { + if (hide_missing) return; + strcpy(new_entry->icon, "/usr/share/icons/hicolor/48x48/apps/xlunch_ghost.png"); + } + } + + // Set default values for internal state + new_entry->x=0; + new_entry->y=0; + new_entry->hidden=0; + new_entry->hovered=0; + new_entry->clicked=0; + new_entry->next = NULL; + + shortcut_t *shortcut = shortcuts; + while (shortcut != NULL) { + if (shortcut->entry == NULL) { + shortcut->entry = new_entry; + break; + } + shortcut = shortcut->next; + } + + // empty list, add first directly + if (current==NULL) + { + entries = new_entry; + entries->next = NULL; + return; + } + + // Otherwise determine position + if(!reverse){ + // Go to end of list and add there + while (current->next != NULL) { + current = current->next; + } + current->next = new_entry; + current->next->next = NULL; + } else { + // Add at head of list + new_entry->next = entries; + entries = new_entry; + } + entries_count++; +} + + +char *strtok_new(char * string, char const * delimiter){ + static char *source = NULL; + char *p, *riturn = 0; + if(string != NULL) source = string; + if(source == NULL) return NULL; + + if((p = strpbrk (source, delimiter)) != NULL) { + *p = 0; + riturn = source; + source = ++p; + } + return riturn; +} + + +char* concat(const char *s1, const char *s2) +{ + char *result = malloc(strlen(s1)+strlen(s2)+1);//+1 for the zero-terminator + if(result != 0) { + strcpy(result, s1); + strcat(result, s2); + return result; + } + exit(ALLOCERROR); +} + + +FILE * determine_input_source(){ + FILE * fp; + if(input_source == NULL) { + char * homeconf = NULL; + + char * home = getenv("HOME"); + if (home!=NULL) + { + homeconf = concat(home,"/.config/xlunch/entries.dsv"); + } + + if (strlen(input_file)==0){ + fp = stdin; + int flags; + int fd = fileno(fp); + flags = fcntl(fd, F_GETFL, 0); + flags |= O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + struct pollfd fds; + fds.fd = 0; /* this is STDIN */ + fds.events = POLLIN; + // Give poll a little timeout to make give the piping program some time + if (poll(&fds, 1, 10) == 0){ + int flags = fcntl(fd, F_GETFL, 0); + flags &= ~O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + fclose(stdin); + fp = fopen(homeconf, "rb"); + } + } else { + fp = fopen(input_file, "rb"); + } + if (fp == NULL) + { + fprintf(stderr, "Error getting entries from %s.\nReverting back to system entries list.\n", strlen(input_file) == 0 ? "stdin" : input_file); + input_file = "/etc/xlunch/entries.dsv"; + fp = fopen(input_file, "rb"); + + if (fp == NULL) + { + fprintf(stderr, "Error opening entries file %s\n", input_file); + fprintf(stderr, "You may need to create it. Icon file format is following:\n"); + fprintf(stderr, "title;icon_path;command\n"); + fprintf(stderr, "title;icon_path;command\n"); + fprintf(stderr, "title;icon_path;command\n"); + } + } + free(homeconf); + } else { + fp = input_source; + } + return fp; +} + +int mouse_over_cell(node_t * cell, int index, int mouse_x, int mouse_y) +{ + if (cell->hidden) return 0; + + if (index > scrolled_past*columns && index < scrolled_past*columns + rows*columns +1 + && mouse_x >= cell->x + && mouse_x < cell->x+cell_width + && mouse_y >= cell->y + && mouse_y < cell->y+cell_height) return 1; + else return 0; +} + +int mouse_over_button(button_t * button, int mouse_x, int mouse_y) +{ + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if ( mouse_x >= x + && mouse_x < x+button->w + && mouse_y >= y + && mouse_y < y+button->h) return 1; + else return 0; +} + +Pixmap GetRootPixmap(Display* display, Window *root) +{ + Pixmap currentRootPixmap; + Atom act_type; + int act_format; + unsigned long nitems, bytes_after; + unsigned char *data = NULL; + Atom _XROOTPMAP_ID; + + _XROOTPMAP_ID = XInternAtom(display, "_XROOTPMAP_ID", False); + + if (XGetWindowProperty(display, *root, _XROOTPMAP_ID, 0, 1, False, + XA_PIXMAP, &act_type, &act_format, &nitems, &bytes_after, + &data) == Success) { + + if (data) { + currentRootPixmap = *((Pixmap *) data); + XFree(data); + } + } + + return currentRootPixmap; +} + +int get_root_image_to_imlib_data(DATA32 * direct) +{ + int screen; + Window root; + Display* display; + XWindowAttributes attrs; + Pixmap bg; + XImage* img; + + display = XOpenDisplay(NULL); + if (display == NULL) return 0; + + screen = DefaultScreen(display); + root = RootWindow(display, screen); + XGetWindowAttributes(display, root, &attrs); + + bg = GetRootPixmap(display, &root); + img = XGetImage(display, bg, 0, 0, attrs.width, attrs.height, ~0, ZPixmap); + XFreePixmap(display, bg); + + if (!img) { + XCloseDisplay(display); + return 0; + } + + unsigned long pixel; + int x, y; + + for (y = 0; y < img->height; y++) + { + for (x = 0; x < img->width; x++) + { + pixel = XGetPixel(img,x,y); + direct[y*img->width+x+0] = 0xffffffff&pixel; + } + } + + XDestroyImage(img); + return 1; +} + + +void joincmdline() +{ + strcpy(commandline,""); + + keynode_t * current = cmdline; + + while (current != NULL) { + strcat(commandline,current->key); + current = current->next; + } +} + +void joincmdlinetext() +{ + if (no_prompt) return; + if (strlen(prompt)==0) prompt="Run: "; + strcpy(commandlinetext,prompt); + + keynode_t * current = cmdline; + + while (current != NULL) { + strcat(commandlinetext,current->key); + current = current->next; + } + + strcat(commandlinetext,"_"); +} + +void set_scroll_level(int new_scroll) { + if (!noscroll){ + if (new_scroll != scrolled_past) { + scrolled_past = new_scroll; + if (scrolled_past > (entries_count - 1)/columns - rows + 1) { + scrolled_past = (entries_count - 1)/columns - rows + 1; + } + if (scrolled_past < 0) { + scrolled_past = 0; + } + arrange_positions(); + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + } +} + +void set_hover(int hovered, node_t * cell, int hover) +{ + if (hover) hovered_entry = hovered; + if (cell==NULL) return; + if (cell->hidden) return; + if (cell->hovered!=hover) updates = imlib_update_append_rect(updates, cell->x, cell->y, cell_width, cell_height); + cell->hovered=hover; +} + +void hover_entry(int entry){ + hoverset = KEYBOARD; + int to_row = (entry+columns-1)/columns; + int display_row = (hovered_entry-(scrolled_past*columns)+columns-1)/columns; + if (entry>(columns*rows)+scrolled_past*columns || entry<=scrolled_past*columns) { + set_scroll_level(to_row - display_row); + } + int j = 1; + int max = scrolled_past*columns + columns*rows; + max = (max > entries_count ? entries_count : max); + int i = (entry < scrolled_past*columns + 1 + ? scrolled_past*columns + 1 + : (entry > max + ? max + : entry)); + node_t * current = entries; + while (current != NULL) { + if (j == i) set_hover(i, current, 1); + else set_hover(i, current, 0); + if (!current->hidden) j++; + current = current->next; + } +} + +void filter_entries() +{ + node_t * current = entries; + entries_count = 0; + + while (current != NULL) + { + if (strlen(commandline)==0 || strcasestr(current->title,commandline)!=NULL || strcasestr(current->cmd,commandline)!=NULL){ + current->hidden=0; + entries_count ++; + } else { + current->hidden=1; + current->clicked=0; + set_hover(0, current, 1); + } + current=current->next; + } + set_scroll_level(0); +} + + +int starts_with(const char *pre, const char *str) +{ + size_t lenpre = strlen(pre), + lenstr = strlen(str); + return lenstr < lenpre ? 0 : strncmp(pre, str, lenpre) == 0; +} + +void run_command(char * cmd_orig); +void run_internal_command(char * cmd_orig) { + int will_quit = 0; + char * cmd = malloc(strlen(cmd_orig)+1); + memcpy(cmd, cmd_orig, strlen(cmd_orig)+1); + char *p = strtok( cmd, " "); + if (strcmp(p, "scroll") == 0) { + p = strtok( NULL, " "); + if (strcmp(p, "top") == 0){ + set_scroll_level(0); + } else if (strcmp(p, "bottom") == 0){ + set_scroll_level(entries_count); + } else { + if (p[0] == '+' || p[0] == '-') + set_scroll_level(scrolled_past + atoi(p)); + else + set_scroll_level(atoi(p)); + } + } else if (strcmp(p, "hover") == 0) { + if (hoverset != KEYBOARD) hovered_entry = 0; + p = strtok( NULL, " "); + int new_hover; + if (strcmp(p, "start") == 0){ + new_hover = 1; + } else if (strcmp(p, "end") == 0){ + new_hover = entries_count; + } else { + if (p[0] == '+' || p[0] == '-') + new_hover = hovered_entry + atoi(p); + else + new_hover = atoi(p); + } + hover_entry(new_hover); + } else if (strcmp(p, "exec") == 0) { + int old_oo = output_only; + output_only = 0; + run_command(strtok(NULL, "\"")); + output_only = old_oo; + } else if (strcmp(p, "print") == 0){ + printf("%s\n", strtok(NULL, "\"")); + } else if (strcmp(p, "quit") == 0) { + will_quit = 1; + } + if (p != NULL) { + p = strtok(NULL, ""); + if (p != NULL) { + if (p[0] == ':') { + run_internal_command(&p[1]); + } else { + fprintf(stderr, "Internal command \"%s\" supplied with extraneous parameters \"%s\"\n", cmd_orig, p); + } + } + } + free(cmd); + if (will_quit) { + cleanup(); + exit(INTERNALCMD); + } +} + +void reset_prompt() +{ + while (cmdline != NULL) pop_key(); + joincmdline(); + joincmdlinetext(); + filter_entries(); + arrange_positions(); + node_t * current = entries; + while (current != NULL) { + set_hover(0, current, 0); + current = current->next; + } + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); +} + +void run_command(char * cmd_orig) +{ + + char cmd[512]; + char *array[100] = {0}; + strcpy(cmd,cmd_orig); + + int isrecur = starts_with(":recur ", cmd_orig) || (strcmp(":recur", cmd_orig) == 0); + if(isrecur) { + // split arguments into pieces + int i = 0; + // If we recur (ie. start xlunch again) run the command that was used to run xlunch + array[0] = program_name; + + // Blindly consume the first token which should be "recur" + char *p = strtok (cmd, " "); + p = strtok (NULL, " "); + while (p != NULL) + { + array[++i]=p; + p = strtok (NULL, " "); + if (i>=99) break; + } + } else { + if (cmd_orig[0] == ':') { + run_internal_command((char *)(cmd_orig + sizeof(char))); + return; + } + if(output_only){ + fprintf(stdout, "%s\n", cmd_orig); + if(!dont_quit){ + cleanup(); + exit(OKAY); + } else { + reset_prompt(); + return; + } + } + array[0] = "/bin/bash"; + array[1] = "-c"; + array[2] = cmd_orig; + array[3] = NULL; + } + + restack(); + + if (dont_quit) + { + pid_t pid=fork(); + if (pid==0) // child process + { + if (!multiple_instances) close(lock); + printf("Forking command: %s\n",cmd); + int err; + err = execvp(array[0],array); + fprintf(stderr,"Error forking %s : %d\n",cmd,err); + exit(OKAY); + } + else if (pid<0) // error forking + { + fprintf(stderr,"Error running %s\n",cmd); + } + else // parent process + { + reset_prompt(); + } + } + else + { + cleanup(); + printf("Running command: %s\n",cmd); + int err; + err = execvp(array[0],array); + fprintf(stderr,"Error running %s : %d\n",cmd, err); + exit(OKAY); + } +} + +int parse_entries() +{ + int changed = 0; // if the list of elements have changed or not + int parsing = 0; // section currently being read + int position = 0; // position in the current entry + int leading_space = 0; + int line = 1; // line count for error messages + int readstatus; + + struct pollfd fds; + fds.fd = fileno(input_source); + fds.events = POLLIN; + node_t * current_entry = NULL; + char internal_command[128]; + while(poll(&fds, 1, 0)) { + char b; + readstatus = read(fds.fd, &b, 1); + if(readstatus <= 0){ + break; + } + if(parsing == 0 && position == leading_space){ + if(b != ':' && b != '#') { + current_entry = malloc(sizeof(node_t)); + } else { + current_entry = NULL; + if(b == '#'){ + parsing = -1; + } + } + } + if (current_entry == NULL) { + if (b == '\n') b = '\0'; + if (position > leading_space && parsing != -1) + internal_command[position-leading_space-1] = b; + } else { + if(b == '\0') { + fprintf(stderr, "Null-byte encountered while reading entries at line %d. Aborting.\n", line); + } + // Check for semi-colons only for the first two elements to support bash commands with semi-colons in them + if(b == ';' && parsing != 2) { + b = '\0'; + } else if (b == '\n') { + line++; + b = '\0'; + if(parsing == 0){ + clear_entries(); + changed = 1; + continue; + } + } + if(b == ' ' && position <= leading_space) leading_space++; + if(b != ' ' && leading_space > 0) leading_space = -leading_space; + switch(parsing){ + case 0: + if (leading_space <= 0) + current_entry->title[position+leading_space] = b; + break; + case 1: + current_entry->icon[position] = b; + break; + case 2: + current_entry->cmd[position] = b; + break; + } + } + position++; + if(b == '\0') { + position = 0; + leading_space = 0; + if(parsing == 2 || current_entry == NULL) { + if(current_entry != NULL) { + push_entry(current_entry); + changed = 1; + } else { + if (parsing != -1) + run_internal_command(internal_command); + } + parsing = 0; + } else { + parsing++; + } + } + if(current_entry != NULL) { + int maxlen = (parsing == 2 ? 511 : 255); + if(position == maxlen){ + fprintf(stderr, "Entry too long on line %d, maximum length is %d characters!\n", line, maxlen); + break; + } + } + } + if(readstatus == 0){ + if(parsing == 2){ + current_entry->cmd[position]='\0'; + push_entry(current_entry); + changed = 1; + } + close(fds.fd); + input_source = NULL; + } + if(changed) { + filter_entries(); + arrange_positions(); + } + return changed; +} + +void parse_button(char *button_spec) { + int parsing = 0; // section currently being read + int position = 0; // position in the current entry + int i = 0; + button_t *new_button = malloc(sizeof(button_t)); + char b = button_spec[0]; + char x[256]; + char y[256]; + while (b != '\0') { + if ((b == ';' && parsing != 4) || (parsing == 2 && b == ',') ) { + b = '\0'; + } + switch(parsing){ + case 0: + new_button->icon_normal[position] = b; + break; + case 1: + new_button->icon_highlight[position] = b; + break; + case 2: + x[position] = b; + break; + case 3: + y[position] = b; + break; + case 4: + new_button->cmd[position] = b; + break; + } + position ++; + if(b == '\0') { + position = 0; + parsing++; + } + int maxlen = (parsing == 4 ? 511 : 255); + if(position == maxlen){ + fprintf(stderr, "Entry too long, maximum length is %d characters!\n", maxlen); + break; + } + i++; + b = button_spec[i]; + } + if (x[0] == '-') { + new_button->x = atoi(x)-1; + } else { + new_button->x = atoi(x); + } + if (y[0] == '-') { + new_button->y = atoi(y)-1; + } else { + new_button->y = atoi(y); + } + imlib_context_set_image(imlib_load_image(new_button->icon_normal)); + new_button->w = imlib_image_get_width(); + new_button->h = imlib_image_get_height(); + imlib_free_image(); + new_button->cmd[position] = '\0'; + new_button->next = buttons; + buttons = new_button; +} + +void set_clicked(node_t * cell, int clicked) +{ + if (cell==NULL) return; + if (cell->hidden) return; + if (cell->clicked!=clicked) updates = imlib_update_append_rect(updates, cell->x, cell->y, cell_width, cell_height); + cell->clicked=clicked; +} + +Imlib_Font load_default_font(){ + // No font was specified, try to load some default options as a fallback + Imlib_Font font; + font = imlib_load_font("OpenSans-Regular/10"); + if (!font) font = imlib_load_font("DejaVuSans/10"); + return font; +} + +int get_font_height(Imlib_Font font){ + imlib_context_set_font(font); + // maximum font descent is relative to baseline (ie. negative) + int height = imlib_get_maximum_font_ascent() - imlib_get_maximum_font_descent(); + imlib_free_font(); + return height; +} + +Imlib_Font load_font() +{ + Imlib_Font font; + if (strlen(font_name) == 0){ + font = load_default_font(); + } else { + font = imlib_load_font(font_name); + } + if (font == NULL) { + fprintf(stderr, "Font %s could not be loaded! Please specify one with -f parameter\n", font_name); + exit(FONTERROR); + } + font_height = get_font_height(font); + return font; +} + +Imlib_Font load_prompt_font() +{ + Imlib_Font font; + if (strlen(prompt_font_name) == 0){ + if (strlen(font_name) == 0){ + font = load_default_font(); + } else { + font = imlib_load_font(font_name); + } + } else { + font = imlib_load_font(prompt_font_name); + } + if (font == NULL) { + fprintf(stderr, "Prompt font %s could not be loaded! Please specify one with -F parameter\n", prompt_font_name); + exit(FONTERROR); + } + prompt_font_height = get_font_height(font); + return font; +} + + +// set background image for desktop, optionally copy it from root window, +// and set background for highlighting items +// +void update_background_images() +{ + /* reset images if exist */ + if (background) + { + imlib_context_set_image(background); + imlib_free_image(); + } + + if (highlight) + { + imlib_context_set_image(highlight); + imlib_free_image(); + } + + // load highlighting image from a file + if (strlen(highlight_file)>0) + highlight=imlib_load_image(highlight_file); + + /* fill the window background */ + background = imlib_create_image(screen_width, screen_height); + // When xlunch is launched and there is another full screen window 'background' was NULL + if(background) { + imlib_context_set_image(background); + imlib_image_set_has_alpha(1); + imlib_image_clear(); + + if (use_root_img) { + DATA32 * direct = imlib_image_get_data(); + int ok = get_root_image_to_imlib_data(direct); + if (ok) { + imlib_image_put_back_data(direct); + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_context_set_blend(1); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + imlib_context_set_blend(0); + } + } else{ // load background from file + if (strlen(background_file)>0) { + image = imlib_load_image(background_file); + if (image) { + imlib_context_set_image(image); + int w = imlib_image_get_width(); + int h = imlib_image_get_height(); + imlib_context_set_image(background); + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_context_set_blend(1); + + // Those are our source coordinates if we use just scale + // this would give the same result as feh --bg-scale + int imx=0, imy=0, imw=w, imh=h; + + // But we do not want to use scale, rather we use fill to keep aspect ratio + // It gives the same result as feh --bg-fill + if (bg_fill) { + if ( (double) (w/h) < (double) (screen_width/screen_height) ) + { + imw = (int) w; + imh = (int) (screen_height * w / screen_width); + imx = 0; + imy = (int) ((h - imh) / 2); + } + else + { + imw = (int) (screen_width * h / screen_height); + imh = (int) h; + imx = (int) ((w - imw) / 2); + imy = 0; + } + } + + imlib_blend_image_onto_image(image, 1, imx, imy, imw, imh, 0, 0, screen_width, screen_height); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + imlib_context_set_blend(0); + imlib_context_set_image(image); + imlib_free_image(); + } + } else { + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + } + } + } +} + +void draw_text_with_shadow(int posx, int posy, char * text, color_t color) { + imlib_context_set_color(0, 0, 0, 30); + imlib_text_draw(posx +1, posy +1, text); + imlib_text_draw(posx +1, posy +2, text); + imlib_text_draw(posx +2, posy +2, text); + + imlib_context_set_color(color.r, color.g, color.b, color.a); + imlib_text_draw(posx, posy, text); +} + +void handle_option(int c, char *optarg); + +void parse_config(FILE *input) { + int readstatus; + int position = 0; + int size = 0; + int eol = 0; + int fileline = 1; + char *optarg = NULL; + char matching[(sizeof(long_options)/sizeof(struct option)) - 1]; + char *entries_word = "entries"; + int matching_entries = 1; + int matched = '?'; + int comment = 0; + memset(matching, 1, sizeof(long_options)/sizeof(struct option) - 1); + + struct pollfd fds; + fds.fd = fileno(input); + fds.events = POLLIN; + node_t * current_entry; + while(poll(&fds, 1, 0)) { + char b; + readstatus = read(fds.fd, &b, 1); + if(readstatus <= 0){ + break; + } + if((b == ':' && optarg == NULL) || b == '\n') { + if (b == '\n') eol = 1; + b = '\0'; + } + if(b == '#' && optarg == NULL && position == 0) comment = 1; + if(comment == 1 && eol != 1) continue; + if(b == ' ' && position == 0) continue; + if(optarg == NULL) { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (long_options[i].name[position] != b){ + matching[i] = 0; + } + } + if (entries_word[position] != b && eol != 1) { + matching_entries = 0; + } + if(b == '\0') { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (matching[i] == 1) { + optarg = malloc(1); + position = -1; + matched = long_options[i].val; + } + } + } + } else { + optarg = realloc(optarg, ++size); + optarg[position] = b; + } + position++; + if(eol == 1) { + if(position != 1) { + if(matching_entries){ + input_source = input; + break; + } else { + if(matched == '?') { + fprintf(stderr, "Got unknown option in config file on line %d\n", fileline); + } + handle_option(matched, optarg); + } + } + position = 0; + size = 0; + eol = 0; + comment = 0; + matching_entries = 1; + memset(matching, 1, sizeof(long_options)/sizeof(struct option) - 1); + if(optarg != NULL){ + //free(optarg); + optarg = NULL; + } + matched = '?'; + fileline++; + } + } + if(position > 1) { + if(matching_entries){ + input_source = input; + } else { + if (matched == '?') { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (matching[i] == 1) { + matched = long_options[i].val; + break; + } + } + } + if(matched == '?') { + fprintf(stderr, "Got unknown option in config file on line %d\n", fileline); + } + handle_option(matched, optarg); + } + } + if(input_source != input) + close(fds.fd); +} + +void handle_option(int c, char *optarg) { + switch (c) { + case 'v': + fprintf(stderr, "xlunch graphical program launcher, version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); + exit(OKAY); + + case 'd': + desktop_mode = 1; + break; + + case 'G': + use_root_img = 1; + if(background_color_set == 0){ + background_color.r = 0; + background_color.g = 0; + background_color.b = 0; + background_color.a = 100; + } + break; + + case 'n': + no_prompt = 1; + break; + + case 'g': + background_file = optarg; + if(background_color_set == 0){ + background_color.r = 0; + background_color.g = 0; + background_color.b = 0; + background_color.a = 100; + } + break; + + case 'L': + highlight_file = optarg; + break; + + case 'I': + icon_padding = atoi(optarg); + break; + + case 1020: + icon_v_padding = atoi(optarg); + break; + + case 'T': + text_padding = atoi(optarg); + break; + + case 'c': + ucolumns = atoi(optarg); + break; + + case 'r': + urows = atoi(optarg); + break; + + case 'b': + if(strcmp(optarg, "auto") == 0){ + uborder.value = -1; + } else { + if (optarg[strlen(optarg)-1] == '%') { + uborder.percent = atoi(optarg); + } else { + uborder.value = atoi(optarg); + } + } + break; + + case 'B': + if(strcmp(optarg, "auto") == 0){ + uside_border.value = -1; + } else { + if (optarg[strlen(optarg)-1] == '%') { + uside_border.percent = atoi(optarg); + } else { + uside_border.value = atoi(optarg); + } + } + break; + + case 'P': + prompt_spacing = atoi(optarg); + break; + + case 's': + icon_size = atoi(optarg); + break; + + case 'i': + input_file = optarg; + break; + + case 'W': + windowed = 1; + break; + + case 'p': + prompt = optarg; + break; + + case 'f': + font_name = optarg; + break; + + case 'F': + prompt_font_name = optarg; + break; + + case 'm': + multiple_instances = 1; + break; + + case 't': + void_click_terminate = 1; + break; + + case 'x': + uposx = atoi(optarg); + break; + + case 'y': + uposy = atoi(optarg); + break; + + case 'w': + uwidth = atoi(optarg); + break; + + case 'h': + uheight = atoi(optarg); + break; + + case 'o': + output_only = 1; + break; + + case 'S': + select_only = 1; + break; + + case 1009: + sscanf(optarg, "%02x%02x%02x%02x", &text_color.r, &text_color.g, &text_color.b, &text_color.a); + break; + + case 1010: + sscanf(optarg, "%02x%02x%02x%02x", &prompt_color.r, &prompt_color.g, &prompt_color.b, &prompt_color.a); + break; + + case 1011: + sscanf(optarg, "%02x%02x%02x%02x", &background_color.r, &background_color.g, &background_color.b, &background_color.a); + background_color_set = 1; + break; + + case 1012: + sscanf(optarg, "%02x%02x%02x%02x", &highlight_color.r, &highlight_color.g, &highlight_color.b, &highlight_color.a); + break; + + case 'a': + text_after = 1; + break; + + case 1013: + program_name = optarg; + break; + + case 'q': + dont_quit = 1; + break; + + case 'R': + reverse = 1; + break; + + case 'O': + text_other_side = 1; + break; + + case 'M': + clear_memory = 1; + break; + + case 'u': + upside_down = 1; + break; + + case 'X': + padding_swap = 1; + break; + + case 'l': + least_margin = atoi(optarg); + break; + + case 'V': + least_v_margin = atoi(optarg); + break; + + case 'C': + center_icons = 1; + break; + + case 'e': + hide_missing = 1; + break; + + case 'A': + parse_button(optarg); + break; + + case 'U': ; + unsigned char lb = optarg[0]; + int i = 0; + shortcut_t *current_shortcut = NULL; + while (lb != '\0') { + if ( current_shortcut == NULL ) { + current_shortcut = malloc(sizeof(shortcut_t)); + } else { + current_shortcut->next = malloc(sizeof(shortcut_t)); + current_shortcut = current_shortcut->next; + } + if ( shortcuts == NULL) + shortcuts = current_shortcut; + current_shortcut->entry = NULL; + current_shortcut->next = NULL; + if (( lb & 0x80 ) == 0 ) { // lead bit is zero, must be a single ascii + current_shortcut->key = malloc(sizeof(char)); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)); + i+=1; + } else if (( lb & 0xE0 ) == 0xC0 ) { // 110x xxxx + current_shortcut->key = malloc(sizeof(char)*2); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*2); + i+=2; + } else if (( lb & 0xF0 ) == 0xE0 ) { // 1110 xxxx + current_shortcut->key = malloc(sizeof(char)*3); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*3); + i+=3; + } else if (( lb & 0xF8 ) == 0xF0 ) { // 1111 0xxx + current_shortcut->key = malloc(sizeof(char)*4); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*4); + i+=4; + } else { + printf( "Unrecognized lead byte in shortcut (%02x)\n", lb ); + } + lb = optarg[i]; + } + break; + + case 1014: + parse_config(fopen(optarg, "rb")); + read_config = 1; + break; + + case 1015: + bg_fill = 1; + break; + + case 1016: + focus_lost_terminate = 1; + break; + + case 1017: + border_ratio = atoi(optarg); + break; + + case 1018: + side_border_ratio = atoi(optarg); + break; + + case 1019: + noscroll = 1; + break; + + case '?': + fprintf(stderr, "See --help for usage documentation\n"); + exit(CONFIGERROR); + break; + + case 'H': + fprintf (stderr,"usage: xlunch [options]\n" + " xlunch is a program launcher/option selector similar to dmenu or rofi.\n" + " By default it launches in full-screen mode and terminates after a selection is made,\n" + " it is also possible to close xlunch by pressing Esc or the right mouse button.\n" + " Some options changes this behaviour, the most notable being the desktop mode switch:\n" + " -d, --desktop Desktop mode, always keep the launcher at\n" + " background(behind other windows), and ignore ESC\n" + " and right mouse click. Combined with --dontquit\n" + " xlunch never exits (behaviour of --desktop from\n" + " previous versions).\n" + " Functional options:\n" + " --config [file] Reads configuration options from a file. The\n" + " options are the same as the long options\n" + " specified here. Options that take a value must\n" + " have a colon (':') before it's option. It is\n" + " also possible to pass the entries along with the\n" + " configuration file by using \"entries:\"\n" + " followed by a newline and the regular contents\n" + " of an input file\n" + " -v, --version Returns the version of xlunch\n" + " -H, --help Shows this help message\n" + " --name POSIX-esque way to specify the first part of\n" + " WM_CLASS (default: environment variable \n" + " RESOURCE_NAME or argv[0])\n" + " -n, --noprompt Hides the prompt, only allowing selection\n" + " by icon\n" + " -o, --outputonly Do not run the selected entry, only output it\n" + " to stdout\n" + " -S, --selectonly Only allow an actual entry and not free-typed\n" + " commands. Nice for scripting.\n" + " -i, --input [file] File to read entries from, defaults to stdin\n" + " if data is available otherwise it reads from\n" + " $HOME/.config/xlunch/entries.dsv or\n" + " /etc/xlunch/entries.dsv\n" + " -m, --multiple Allow multiple instances running\n" + " -t, --voidclickterminate Clicking anywhere that's not an entry terminates\n" + " xlunch, practical for touch screens.\n" + " --focuslostterminate When the window loses focus xlunch will quit,\n" + " practical for menus\n" + " -q, --dontquit When an option is selected, don't close xlunch.\n" + " Combined with --desktop xlunch\n" + " never exits (behaviour of --desktop from\n" + " previous versions).\n" + " -R, --reverse All entries in xlunch as reversly ordered.\n" + " -W, --windowed Start in windowed mode\n" + " -M, --clearmemory Set the memory of each entry to null before\n" + " exiting. Used for passing sensitive information\n" + " through xlunch.\n" + " -U, --shortcuts [shortcuts] Sets shortcuts for the entries, 'shortcuts' is a\n" + " string of UTF-8 characters to use sequentially\n" + " for the entries provided.\n" + " -A, --button [button] Adds a button to the window. The argument\n" + " \"button\" is a semicolon-separated list on the\n" + " form \";;,;\"\n" + " If x or y is negative positioning is relative\n" + " to the other side of the screen.\n" + " --noscroll Disable scroll in xlunch. Ignore entries\n" + " that can't fit the screen.\n\n" + " Multi monitor setup: xlunch cannot detect your output monitors, it sees your monitors\n" + " as a big single screen. You can customize this manually by setting windowed mode and\n" + " providing the top/left coordinates and width/height of your monitor screen which\n" + " effectively positions xlunch on the desired monitor. Use the following options:\n" + " -x, --xposition [i] The x coordinate of the launcher window\n" + " -y, --yposition [i] The y coordinate of the launcher window\n" + " -w, --width [i] The width of the launcher window\n" + " -h, --height [i] The height of the launcher window\n\n" + " Style options:\n" + " -p, --prompt [text] The prompt asking for input (default: \"Run: \")\n" + " -f, --font [name] Font name including size after slash (default:\n" + " \"OpenSans-Regular/10\" and \"DejaVuSans/10\")\n" + " -F, --promptfont [name] Font to use for the prompt\n" + " (default: same as --font)\n" + " -G, --rootwindowbackground Use root windows background image\n" + " -g, --background [file] Image to set as background (jpg/png)\n" + " --bgfill Makes the background keep aspect ratio\n" + " while stretching\n" + " -L, --highlight [file] Image set as highlighting under selected icon\n" + " (jpg/png)\n" + " -I, --iconpadding [i] Padding around icons (default: 10)\n" + " --iconvpadding [i] Vertical padding around icons (default: same as\n" + " iconpadding)\n" + " -T, --textpadding [i] Padding around entry titles (default: 10)\n" + " -c, --columns [i] Number of columns to show (without this the max\n" + " amount possible is used)\n" + " -r, --rows [i] Numbers of rows to show (without this the max\n" + " amount possible is used)\n" + " -b, --border [i] Size of the border around the icons and prompt\n" + " (default: 1/10th of screen width)\n" + " This can also be set to 'auto' in order to\n" + " automatically calculate a border taking into\n" + " account the margin settings and the\n" + " configured columns and rows. You can also specify\n" + " border in terms of percentage of screen width by\n" + " appending a %% sign to the value\n" + " -B, --sideborder [i] Size of the border on the sides, if this is used\n" + " --border will be only top and bottom. Similarily\n" + " this can be set to 'auto' or a percentage but\n" + " then only side borders are calculated\n" + " --borderratio [i] The ratio of the border to apply above the\n" + " content. 0 is no top border, only bottom. 100 is\n" + " only top border, no bottom\n" + " --sideborderratio [i] The ratio of the side border to apply to the\n" + " left of the content. 0 is no left border, only\n" + " right. 100 is only left border, no right\n" + " -C, --center Center entries when there are fewer entries on a\n" + " row than the maximum\n" + " -P, --promptspacing [i] Distance between the prompt and the icons\n" + " (default: 48)\n" + " -s, --iconsize [i] Size of the icons (default: 48)\n" + " -a, --textafter Draw the title to the right of the icon instead\n" + " of below, this option automatically sets\n" + " --columns to 1 but this can be overridden.\n" + " -O, --textotherside Draw the text on the other side of the icon from\n" + " where it is normally drawn.\n" + " -u, --upsidedown Draw the prompt on the bottom and have icons\n" + " sort from bottom to top.\n" + " -X, --paddingswap Icon padding and text padding swaps order\n" + " around text.\n" + " -l, --leastmargin [i] Adds a margin to the calculation of\n" + " application sizes.\n" + " -V, --leastvmargin [i] Adds a vertical margin to the calculation of\n" + " application sizes.\n" + " -e, --hidemissing Hide entries with missing or broken icon images\n" + " --tc, --textcolor [color] Color to use for the text on the format rrggbbaa\n" + " (default: ffffffff)\n" + " --pc, --promptcolor [color] Color to use for the prompt text\n" + " (default: ffffffff)\n" + " --bc, --backgroundcolor [color] Color to use for the background\n" + " (default: 2e3440ff) NOTE: transparent background\n" + " color requires a compositor\n" + " --hc, --highlightcolor [color] Color to use for the highlight box\n" + " (default: ffffff32)\n\n"); + // Check if we came from the error block above or if this was a call with --help + if(c == '?'){ + exit(CONFIGERROR); + } else { + exit(OKAY); + } + break; + } +} + +void init(int argc, char **argv) +{ + + int c, option_index; + while ((c = getopt_long(argc, argv, "vdr:ng:L:b:B:s:i:p:f:mc:x:y:w:h:oatGHI:T:P:WF:SqROMuXeCl:V:U:A:", long_options, &option_index)) != -1) { + handle_option(c, optarg); + } + + // If no configuration file was explicitly given, try to read a default one + if (read_config == 0) { + FILE *config_source; + char * homeconf = NULL; + + char * home = getenv("HOME"); + if (home!=NULL) + { + homeconf = concat(home,"/.config/xlunch/xlunch.conf"); + } + config_source = fopen(homeconf, "rb"); + if(config_source == NULL) { + config_source = fopen("/etc/xlunch/default.conf", "rb"); + } + free(homeconf); + if(config_source != NULL){ + parse_config(config_source); + fclose(config_source); + } + } + + + if (least_v_margin == -1) least_v_margin = least_margin; + if (icon_v_padding == -1) icon_v_padding = icon_padding; + + /* connect to X */ + disp = XOpenDisplay(NULL); + if (!disp) + { + fprintf(stderr,"Cannot connect to DISPLAY\n"); + exit(WINERROR); + } + + if (!XMatchVisualInfo(disp, DefaultScreen(disp), 32, TrueColor, &vinfo)) { + XMatchVisualInfo(disp, DefaultScreen(disp), 24, TrueColor, &vinfo); + } + + attr.colormap = XCreateColormap(disp, DefaultRootWindow(disp), vinfo.visual, AllocNone); + attr.border_pixel = 0; + attr.background_pixel = 0; + + /* get default visual , colormap etc. you could ask imlib2 for what it */ + /* thinks is the best, but this example is intended to be simple */ + screen = DefaultScreen(disp); + + /* get/set screen size */ + if (uwidth==0) screen_width=DisplayWidth(disp,screen); + else screen_width=uwidth; + + if (uheight==0) screen_height=DisplayHeight(disp,screen); + else screen_height=uheight; + + calculate_percentage(screen_height, &uborder); + calculate_percentage(screen_width, &uside_border); +} + +void recheckHover(XEvent ev) { + node_t * current = entries; + int i = 1; + int j = 1; + int any_hovered = 0; + + while (current != NULL) + { + if (mouse_moves>3 && mouse_over_cell(current, j, ev.xmotion.x, ev.xmotion.y)) { + set_hover(i, current, 1); + any_hovered = 1; + hoverset=MOUSE; + } + else { + set_hover(i, current,0); + set_clicked(current,0); + } + if(!current->hidden) + j++; + i++; + current = current->next; + } + if (any_hovered == 0) hovered_entry = 0; + + button_t * button = buttons; + while (button != NULL) { + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y)) { + if (button->hovered != 1) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->hovered = 1; + } else { + if (button->hovered != 0) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->hovered = 0; + button->clicked = 0; + } + button = button->next; + } +} + +void handleButtonPress(XEvent ev) { + switch (ev.xbutton.button) { + case 3: // right click + if (!desktop_mode) { + cleanup(); + exit(RIGHTCLICK); + } + break; + case 4: // scroll up + set_scroll_level(scrolled_past - 1); + recheckHover(ev); + break; + case 5: // scroll down + set_scroll_level(scrolled_past + 1); + recheckHover(ev); + break; + case 1:; // left click + node_t * current = entries; + int voidclicked = 1; + int index = 1; + mouse_moves += 4; + recheckHover(ev); + while (current != NULL) + { + if (mouse_over_cell(current, index, ev.xmotion.x, ev.xmotion.y)) { + set_clicked(current,1); + voidclicked = 0; + } + else set_clicked(current,0); + if(!current->hidden) + index++; + current = current->next; + } + + button_t * button = buttons; + while (button != NULL) { + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y)) { + if (button->clicked != 1) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->clicked = 1; + voidclicked = 0; + } else { + if (button->clicked != 0) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->clicked = 0; + } + button = button->next; + } + + if (voidclicked && void_click_terminate) { + cleanup(); + exit(VOIDCLICK); + } + break; + } +} + +void handleButtonRelease(XEvent ev) { + node_t * current = entries; + int index = 1; + + while (current != NULL) + { + if (mouse_over_cell(current, index, ev.xmotion.x, ev.xmotion.y)) if (current->clicked==1) run_command(current->cmd); + set_clicked(current, 0); // button release means all cells are not clicked + updates = imlib_update_append_rect(updates, current->x, current->y, icon_size, icon_size); + if(!current->hidden) + index++; + current = current->next; + } + + button_t * button = buttons; + + while (button != NULL) + { + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y) && button->clicked == 1) run_command(button->cmd); + button->clicked = 0; + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button = button->next; + } +} + +void handleKeyPress(XEvent ev) { + // keyboard events + int count = 0; + KeySym keycode = 0; + Status status = 0; + char kbdbuf[20]= {0}; + count = Xutf8LookupString(ic, (XKeyPressedEvent*)&ev, kbdbuf, 20, &keycode, &status); + + if (keycode==XK_Escape && !desktop_mode) + { + cleanup(); + exit(ESCAPE); + } + + if (keycode==XK_Return || keycode==XK_KP_Enter) + { + // if we have an icon hovered, and the hover was caused by keyboard arrows, run the hovered icon + node_t * current = entries; + node_t * selected = NULL; + node_t * selected_one = NULL; + node_t * first = NULL; + int nb=0; + while (current != NULL) + { + if (!current->hidden) + { + nb++; + selected_one=current; + if (first == NULL) first = current; + if (current->hovered) selected = current; + } + current=current->next; + } + /* if only 1 app was filtered, consider it selected */ + if (nb==1 && selected_one!=NULL) run_command(selected_one->cmd); + else if (hoverset==KEYBOARD && selected!=NULL) run_command(selected->cmd); + // else run the command entered by commandline, if the command prompt is used + else if (!no_prompt && !select_only) run_command(commandline); + // or if --selectonly is specified, run first program regardless of selected state + else if (select_only && first!=NULL) run_command(first->cmd); + } + + if (keycode==XK_Tab || keycode==XK_Up || keycode==XK_Down || keycode==XK_Left || keycode==XK_Right + || keycode==XK_KP_Up || keycode==XK_KP_Down || keycode==XK_KP_Left || keycode==XK_KP_Right + || keycode==XK_Page_Down || keycode==XK_Page_Up || keycode==XK_Home || keycode==XK_End) + { + int i=0; + if (keycode==XK_KP_Left || keycode==XK_Left) i=-1; + if (keycode==XK_Up || keycode==XK_KP_Up) i=-columns; + if (keycode==XK_Down || keycode==XK_KP_Down) i=columns; + if (keycode==XK_Tab || keycode==XK_Right || keycode==XK_KP_Right) i=1; + if (keycode==XK_Page_Up) i=-columns*rows; + if (keycode==XK_Page_Down) i=columns*rows; + if (keycode==XK_End) i = entries_count;//(scroll ? scrolled_past*columns+n : n); + if (keycode==XK_Home) i = -entries_count;//(scroll ? scrolled_past*columns+1 : 1); + if (hovered_entry == 0) { + if (keycode != XK_End && keycode != XK_Page_Down) { + hovered_entry = 1-i; + } else { + hovered_entry = 1; + } + } + i = hovered_entry + i; + hover_entry(i); + return; + } + + if (keycode==XK_Delete || keycode==XK_BackSpace) + pop_key(); + else if (count>1 || (count==1 && kbdbuf[0]>=32)){ // ignore unprintable characterrs + if (!no_prompt) push_key(kbdbuf); + shortcut_t *shortcut = shortcuts; + while(shortcut != NULL) { + for(int i = 0; i < count; i++){ + if (kbdbuf[i] != shortcut->key[i]) { + break; + } else if (i == count-1) { + run_command(shortcut->entry->cmd); + } + } + shortcut = shortcut->next; + } + } + + joincmdline(); + joincmdlinetext(); + filter_entries(); + arrange_positions(); + + // we used keyboard to type command. So unselect all icons. + node_t * current = entries; + int i = 1; + while (current != NULL) + { + set_hover(i, current,0); + set_clicked(current,0); + current = current->next; + i++; + } + + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); +} + +void renderEntry(Imlib_Image buffer, char title[256], node_t * current, Cursor * c, int up_x, int up_y) { + int h = 0; + int w = 0; + if (current->hovered) + { + if (hoverset == MOUSE) *c = XCreateFontCursor(disp,XC_hand1); + + if (highlight) + { + imlib_context_set_image(highlight); + w = imlib_image_get_width(); + h = imlib_image_get_height(); + imlib_context_set_image(buffer); + imlib_blend_image_onto_image(highlight, 1, 0, 0, w, h, current->x-up_x, current->y-up_y, cell_width, cell_height); + } + else + { + imlib_context_set_image(buffer); + imlib_context_set_color(highlight_color.r, highlight_color.g, highlight_color.b, highlight_color.a); + imlib_image_fill_rectangle(current->x-up_x, current->y-up_y, cell_width, cell_height); + } + } + if (strlen(current->icon) != 0) { + image=imlib_load_image(current->icon); + if (image) + { + imlib_context_set_image(image); + w = imlib_image_get_width(); + h = imlib_image_get_height(); + imlib_context_set_image(buffer); + int d; + if (current->clicked) d=2; + else d=0; + int x = current->x - up_x + + (text_other_side && text_after ? cell_width - icon_padding - icon_size : icon_padding)+d; + int y = current->y - up_y +(text_other_side && !text_after ? cell_height - icon_v_padding - icon_size : icon_v_padding)+d; + + imlib_blend_image_onto_image(image, 1, 0, 0, w, h, x, y, icon_size-d*2, icon_size-d*2); + + imlib_context_set_image(image); + imlib_free_image(); + } + } + /* draw text under icon */ + Imlib_Font font = load_font(); + if (font) + { + imlib_context_set_image(buffer); + int text_w; + int text_h; + + const size_t osz = strlen(current->title); + size_t sz = osz; + imlib_context_set_font(font); + do + { + strncpyutf8(title,current->title,sz); + if(sz != osz) + strcat(title,".."); + imlib_get_text_size(title, &text_w, &text_h); + sz--; + } while(text_w > cell_width-(text_after ? (icon_size != 0 ? icon_padding*2 : icon_padding) + icon_size + text_padding : 2*text_padding) && sz>0); + + int d; + if (current->clicked==1) d=4; + else d=0; + + if (text_after) { + draw_text_with_shadow(current->x - up_x + (text_other_side ? text_padding : (icon_size != 0 ? (padding_swap ? icon_padding*2 : icon_padding + text_padding) : icon_padding) + icon_size), current->y - up_y + cell_height/2 - font_height/2, title, text_color); + } else { + draw_text_with_shadow(current->x - up_x + cell_width/2 - text_w/2, current->y - up_y + (text_other_side ? text_padding : (padding_swap ? icon_v_padding*2 : icon_v_padding + text_padding) + icon_size), title, text_color); + } + + /* free the font */ + imlib_free_font(); + } +} + +/* the program... */ +int main(int argc, char **argv){ + /* events we get from X */ + XEvent ev; + /* our virtual framebuffer image we draw into */ + Imlib_Image buffer; + char title[255]; + + /* width and height values */ + int w, h, x, y; + + // set initial variables now + init(argc, argv); + + if(program_name == NULL) { + program_name = getenv("RESOURCE_NAME"); + if(program_name == NULL) { + program_name = argv[0]; + } + } + joincmdlinetext(); + + // If an instance is already running, quit + if (!multiple_instances) + { + int oldmask = umask(0); + lock = open("/tmp/xlunch.lock", O_CREAT | O_RDWR, 0666); + umask(oldmask); + int rc = flock(lock, LOCK_EX | LOCK_NB); + if (rc) { + if (errno == EWOULDBLOCK) fprintf(stderr,"xlunch already running. You may want to consider --multiple\nIf this is an error, you may remove /tmp/xlunch.lock\n"); + exit(LOCKERROR); + } + } + + //win = XCreateSimpleWindow(disp, DefaultRootWindow(disp), uposx, uposy, screen_width, screen_height, 0, 0, 0); + win = XCreateWindow(disp, DefaultRootWindow(disp), (uposx == -1 ? 0 : uposx), (uposy == -1 ? 0 : uposy), screen_width, screen_height, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr); + + // absolute fullscreen mode by overide redirect + if (!windowed && desktop_mode) + { + unsigned long valuemask = CWOverrideRedirect; + XSetWindowAttributes attributes; + attributes.override_redirect=True; + XChangeWindowAttributes(disp,win,valuemask,&attributes); + } + + /* add the ttf fonts dir to our font path */ + char* homedir; + if((homedir = getenv("HOME")) != NULL) { + imlib_add_path_to_font_path(concat(homedir,"/.local/share/fonts")); + imlib_add_path_to_font_path(concat(homedir,"/.fonts")); + } + imlib_add_path_to_font_path("/usr/local/share/fonts"); + imlib_add_path_to_font_path("/usr/share/fonts/truetype"); + imlib_add_path_to_font_path("/usr/share/fonts/truetype/dejavu"); + imlib_add_path_to_font_path("/usr/share/fonts/TTF"); + /* set our cache to 2 Mb so it doesn't have to go hit the disk as long as */ + /* the images we use use less than 2Mb of RAM (that is uncompressed) */ + imlib_set_cache_size(2048 * screen_width); + /* set the font cache to 512Kb - again to avoid re-loading */ + imlib_set_font_cache_size(512 * screen_width); + /* Preload fonts so that recalc can know their sizes */ + load_font(); + load_prompt_font(); + recalc_cells(); + /* set the maximum number of colors to allocate for 8bpp and less to 128 */ + imlib_set_color_usage(128); + /* dither for depths < 24bpp */ + imlib_context_set_dither(1); + /* set the display , visual, colormap and drawable we are using */ + imlib_context_set_display(disp); + imlib_context_set_visual(vinfo.visual); + imlib_context_set_colormap(attr.colormap); + imlib_context_set_drawable(win); + + update_background_images(); + + /* tell X what events we are interested in */ + XSelectInput(disp, win, StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | ExposureMask | KeyPressMask | KeyReleaseMask | KeymapStateMask | FocusChangeMask ); + GC gc = XCreateGC(disp, win, 0, 0); + /* set our name */ + XClassHint* classHint; + + /* set the titlebar name */ + XStoreName(disp, win, "monocleOS Launcher"); + + /* set the name and class hints for the window manager to use */ + classHint = XAllocClassHint(); + if (classHint) { + classHint->res_name = basename(program_name); + classHint->res_class = (windowed ? "monocleOS Launcher" : (desktop_mode ? "monocleOS Launcher" : "monocleOS Launcher")); + } + XSetClassHint(disp, win, classHint); + XFree(classHint); + /* show the window */ + XMapRaised(disp, win); + /* Force window reposition, can make effect only when windowed is enabled, depending on WM */ + if (uposx != -1 || uposy != -1) + XMoveWindow(disp,win,uposx,uposy); + + // prepare for keyboard UTF8 input + if (XSetLocaleModifiers("@im=none") == NULL) { + cleanup(); + exit(LOCALEERROR); + } + im = XOpenIM(disp, NULL, NULL, NULL); + if (im == NULL) { + fputs("Could not open input method\n", stdout); + cleanup(); + exit(INPUTMERROR); + } + + ic = XCreateIC(im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, win, NULL); + if (ic == NULL) { + fprintf(stderr,"Could not open input context, without it we can't properly handle UTF8\n"); + cleanup(); + exit(INPUTCERROR); + } + XSetICFocus(ic); + + // send to back or front, depending on settings + restack(); + + // parse entries file + input_source = determine_input_source(); + if(input_source != NULL){ + parse_entries(); + } + + + // prepare message for window manager that we are requesting fullscreen + XClientMessageEvent msg = { + .type = ClientMessage, + .display = disp, + .window = win, + .message_type = XInternAtom(disp, "_NET_WM_STATE", True), + .format = 32, + .data = { + .l = { + 1 /* _NET_WM_STATE_ADD */, + XInternAtom(disp, "_NET_WM_STATE_FULLSCREEN", True), + None, + 0, + 1 + } + } + }; + + // send the message + if (!windowed && !desktop_mode) + XSendEvent(disp, DefaultRootWindow(disp), False, SubstructureRedirectMask | SubstructureNotifyMask, (XEvent*)&msg); + + // Get the FD of the X11 display + x11_fd = ConnectionNumber(disp); + eventfds[0].fd = x11_fd; + eventfds[0].events = POLLIN || POLLPRI || POLLOUT || POLLRDHUP; + if(input_source == stdin) { + eventfds[1].fd = 0; /* this is STDIN */ + eventfds[1].events = POLLIN; + } + + /* infinite event loop */ + for (;;) + { + /* init our updates to empty */ + updates = imlib_updates_init(); + + // Poll for events, while blocking until one becomes available + int poll_result; + if(!XPending(disp)){ + poll_result = poll(eventfds, (input_source == stdin ? 2 : 1), -1); + } else { + poll_result = 1; + eventfds[0].revents = 1; + } + + if(poll_result < 0){ + // An error occured, abort + cleanup(); + exit(POLLERROR); + } else { + if(input_source == stdin && eventfds[1].revents != 0){ + int changed = parse_entries(input_source); + if(changed){ + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + } + if(eventfds[0].revents != 0) { + /* while there are events form X - handle them */ + while (XPending(disp)) + { + XNextEvent(disp, &ev); + + // allow through only UTF8 events + if (XFilterEvent(&ev, win)) continue; + + switch (ev.type) + { + + case Expose: + /* window rectangle was exposed - add it to the list of */ + /* rectangles we need to re-render */ + updates = imlib_update_append_rect(updates, ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height); + break; + + case FocusIn: + restack(); + break; + + case FocusOut: + restack(); + if (focus_lost_terminate) { + cleanup(); + exit(FOCUSLOST); + } + break; + + + case ConfigureNotify: + if (screen_width!=ev.xconfigure.width || screen_height!=ev.xconfigure.height) + { + screen_width=ev.xconfigure.width; + screen_height=ev.xconfigure.height; + calculate_percentage(screen_height, &uborder); + calculate_percentage(screen_width, &uside_border); + if (!use_root_img) update_background_images(); + recalc_cells(); + arrange_positions(); + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + break; + + case ButtonPress: + handleButtonPress(ev); + break; + + case ButtonRelease: + handleButtonRelease(ev); + break; + + // refresh keyboard layout if changed + case KeymapNotify: + XRefreshKeyboardMapping(&ev.xmapping); + break; + + case KeyPress: + handleKeyPress(ev); + break; + + case KeyRelease: + break; + + case EnterNotify: + case MotionNotify: + mouse_moves++; + recheckHover(ev); + break; + + default: + /* any other events - do nothing */ + break; + } + } + } + /* no more events for now ? ok - idle time so lets draw stuff */ + + /* take all the little rectangles to redraw and merge them into */ + /* something sane for rendering */ + updates = imlib_updates_merge_for_rendering(updates, screen_width, screen_height); + + for (current_update = updates; current_update; current_update = imlib_updates_get_next(current_update)) + { + int up_x, up_y, up_w, up_h; + + /* find out where the first update is */ + imlib_updates_get_coordinates(current_update, &up_x, &up_y, &up_w, &up_h); + + /* create our buffer image for rendering this update */ + buffer = imlib_create_image(up_w, up_h); + + /* we can blend stuff now */ + imlib_context_set_blend(1); + + imlib_context_set_image(buffer); + + imlib_image_set_has_alpha(1); + imlib_image_clear(); + /* blend background image onto the buffer */ + imlib_blend_image_onto_image(background, 1, 0, 0, screen_width, screen_height, - up_x, - up_y, screen_width, screen_height); + + node_t * current = entries; + int drawn = 0; + int seen = 0; + Cursor c = XCreateFontCursor(disp,XC_top_left_arrow); + + while (current != NULL) + { + if (!current->hidden) + { + if (seen++ < scrolled_past * columns) { + current = current->next; + continue; + } + renderEntry(buffer, title, current, &c, up_x, up_y); + if (++drawn == columns*rows) + break; + } + current = current->next; + } + + button_t *button = buttons; + while (button != NULL) { + if(button->hovered) c = XCreateFontCursor(disp,XC_hand1); + image = imlib_load_image(button->hovered ? (button->icon_highlight[0] == '\0' ? button->icon_normal : button->icon_highlight) : button->icon_normal); + if (image) + { + imlib_context_set_image(buffer); + int d; + if (button->clicked) d=2; + else d=0; + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + imlib_blend_image_onto_image(image, 1, 0, 0, button->w, button->h, x - up_x + d, y - up_y + d, button->w-d*2, button->h-d*2); + + imlib_context_set_image(image); + imlib_free_image(); + } + + button = button->next; + } + + XDefineCursor(disp,win,c); + + /* set the buffer image as our current image */ + imlib_context_set_image(buffer); + + /* draw prompt */ + if (!no_prompt) { + Imlib_Font font = load_prompt_font(); + if (font) + { + imlib_context_set_font(font); + if(upside_down) { + draw_text_with_shadow(prompt_x - up_x, (screen_height - prompt_font_height) - (prompt_y - up_y), commandlinetext, prompt_color); + } else { + draw_text_with_shadow(prompt_x - up_x, prompt_y - up_y, commandlinetext, prompt_color); + } + /* free the font */ + imlib_free_font(); + } + } + + + /* draw scrollbar, currently not draggable, only indication of scroll */ + if (!noscroll) + { + int scrollbar_width=15; // width of entire scrollbar + int scrollbar_height=screen_height-2*border; // height of entire scrollbar + int scrollbar_screen_margin=50; // distance from screen edge + int pages = (entries_count - 1) / rows / columns + 1; // total pages to scroll, round up, min 1 + + // show scrollbar only if there are more pages + if (pages > 1) + { + int scrollbar_draggable_height = scrollbar_height * rows * columns / (entries_count+columns - ((entries_count+columns-1)%columns)); // height of scrollbar page (draggable), round to whole rows + float p = (entries_count - 1) / columns + 1 - rows; // current scrolled percentage + int scrollbar_draggable_shift = p ? (scrollbar_height - scrollbar_draggable_height) * scrolled_past / p : 0; + + imlib_context_set_blend(1); + + // draw scrollbar background on full height + imlib_context_set_color(255,255,255,60); + imlib_image_fill_rectangle(screen_width - scrollbar_screen_margin, border, scrollbar_width, scrollbar_height); + + // draw current scroll position + imlib_context_set_color(255,255,255,112); + imlib_image_fill_rectangle(screen_width - scrollbar_screen_margin, border + scrollbar_draggable_shift, scrollbar_width, scrollbar_draggable_height); + imlib_context_set_blend(0); + } + } + + /* don't blend the image onto the drawable - slower */ + imlib_context_set_blend(0); + /* render the image at 0, 0 */ + imlib_render_image_on_drawable(up_x, up_y); + /* don't need that temporary buffer image anymore */ + imlib_free_image(); + } + } + /* if we had updates - free them */ + if (updates) + imlib_updates_free(updates); + /* loop again waiting for events */ + } + return 0; +} + diff --git a/pkg/src/xlunch_data/src/xlunch_menu.c b/pkg/src/xlunch_data/src/xlunch_menu.c new file mode 100644 index 0000000..a72fdf5 --- /dev/null +++ b/pkg/src/xlunch_data/src/xlunch_menu.c @@ -0,0 +1,2720 @@ +// this code is not optimal in many ways, but works just nicely. +// Licence: GNU GPL v3 +// Authors: Tomas Matejicek +// Peter Munch-Ellingsen +const int VERSION_MAJOR = 4; // Major version, changes when breaking backwards compatability +const int VERSION_MINOR = 1; // Minor version, changes when new functionality is added +const int VERSION_PATCH = 1; // Patch version, changes when something is changed without changing deliberate functionality (eg. a bugfix or an optimisation) + +#define _GNU_SOURCE +/* open and O_RDWR,O_CREAT */ +#include +/* include X11 stuff */ +#include +/* include Imlib2 stuff */ +#include +/* sprintf include */ +#include +/* strcpy include */ +#include +/* exit include */ +#include +/* exec include */ +#include +/* long options include*/ +#include +/* cursor */ +#include +/* X utils */ +#include +#include +/* parse commandline arguments */ +#include +/* one instance */ +#include +#include +/* check stdin */ +#include +#include + +/* some globals for our window & X display */ +Display *disp; +Window win; +XVisualInfo vinfo; +XSetWindowAttributes attr; +int x11_fd; +struct pollfd eventfds[2]; + +XIM im; +XIC ic; + +int screen; +int screen_width; +int screen_height; + +// Let's define a linked list node: + +typedef struct node +{ + char title[256]; + char icon[256]; + char cmd[512]; + int hovered; + int clicked; + int hidden; + int x; + int y; + struct node * next; +} node_t; + +typedef struct button +{ + char icon_normal[256]; + char icon_highlight[256]; + char cmd[512]; + int hovered; + int clicked; + int x; + int y; + int w; + int h; + struct button * next; +} button_t; +typedef struct shortcut +{ + char *key; + node_t *entry; + struct shortcut *next; +} shortcut_t; + +typedef struct keynode { + char key[255]; + struct keynode * next; +} keynode_t; + +typedef struct color { + int r, g, b, a; +} color_t; + +typedef struct percentable { + int percent; + int value; +} percentable_t; + +int entries_count = 0; +node_t * entries = NULL; +button_t * buttons = NULL; +shortcut_t * shortcuts = NULL; +keynode_t * cmdline = NULL; + +enum exit_code { + OKAY, + ESCAPE = 0x20, + RIGHTCLICK, + VOIDCLICK, + FOCUSLOST, + INTERNALCMD, + LOCKERROR = 0x40, + ALLOCERROR, + FONTERROR, + CONFIGERROR, + WINERROR, + LOCALEERROR, + INPUTMERROR, + INPUTCERROR, + POLLERROR +}; + +static struct option long_options[] = + { + {"tc", required_argument, 0, 1009}, + {"textcolor", required_argument, 0, 1009}, + {"pc", required_argument, 0, 1010}, + {"promptcolor", required_argument, 0, 1010}, + {"backgroundcolor", required_argument, 0, 1011}, + {"bc", required_argument, 0, 1011}, + {"hc", required_argument, 0, 1012}, + {"highlightcolor", required_argument, 0, 1012}, + {"name", required_argument, 0, 1013}, + {"config", required_argument, 0, 1014}, + {"bgfill", no_argument, 0, 1015}, + {"focuslostterminate", no_argument, 0, 1016}, + {"borderratio", required_argument, 0, 1017}, + {"sideborderratio", required_argument, 0, 1018}, + {"noscroll", no_argument, 0, 1019}, + {"iconvpadding", required_argument, 0, 1020}, + {"button", required_argument, 0, 'A'}, + {"textafter", no_argument, 0, 'a'}, + {"border", required_argument, 0, 'b'}, + {"sideborder", required_argument, 0, 'B'}, + {"center", no_argument, 0, 'C'}, + {"columns", required_argument, 0, 'c'}, + {"desktop", no_argument, 0, 'd'}, + {"hidemissing", no_argument, 0, 'e'}, + {"font", required_argument, 0, 'f'}, + {"promptfont", required_argument, 0, 'F'}, + {"background", required_argument, 0, 'g'}, + {"rootwindowbackground", no_argument, 0, 'G'}, + {"height", required_argument, 0, 'h'}, + {"help", no_argument, 0, 'H'}, + {"iconpadding", required_argument, 0, 'I'}, + {"input", required_argument, 0, 'i'}, + {"highlight", required_argument, 0, 'L'}, + {"leastmargin", required_argument, 0, 'l'}, + {"clearmemory", no_argument, 0, 'M'}, + {"multiple", no_argument, 0, 'm'}, + {"noprompt", no_argument, 0, 'n'}, + {"outputonly", no_argument, 0, 'o'}, + {"textotherside", no_argument, 0, 'O'}, + {"prompt", required_argument, 0, 'p'}, + {"promptspacing", required_argument, 0, 'P'}, + {"dontquit", no_argument, 0, 'q'}, + {"reverse", no_argument, 0, 'R'}, + {"rows", required_argument, 0, 'r'}, + {"iconsize", required_argument, 0, 's'}, + {"selectonly", no_argument, 0, 'S'}, + {"textpadding", required_argument, 0, 'T'}, + {"voidclickterminate", no_argument, 0, 't'}, + {"shortcuts", required_argument, 0, 'U'}, + {"upsidedown", no_argument, 0, 'u'}, + {"leastvmargin", required_argument, 0, 'V'}, + {"version", no_argument, 0, 'v'}, + {"width", required_argument, 0, 'w'}, + {"windowed", no_argument, 0, 'W'}, + {"paddingswap", no_argument, 0, 'X'}, + {"xposition", required_argument, 0, 'x'}, + {"yposition", required_argument, 0, 'y'}, + {0, 0, 0, 0} + }; +int icon_size = 48; +int ucolumns = 0; +int columns; +int urows = 0; +int rows; +int column_margin = 0; +int row_margin = 0; +int icon_padding = 40; +int icon_v_padding = -1; +int text_padding = 10; +int border; +int side_border = 0; +int border_ratio = 50; +int side_border_ratio = 50; +int cell_width; +int cell_height; +int font_height; +int prompt_font_height; +int use_root_img = 0; +char commandline[10024]; +char commandlinetext[10024]; +int prompt_x; +int prompt_y; +int mouse_moves=0; +char * background_file = ""; +char * highlight_file = ""; +char * input_file = ""; +int read_config = 0; +FILE * input_source = NULL; +char * prompt = ""; +char * font_name = ""; +char * prompt_font_name = ""; +char * program_name; +int bg_fill = 0; +int no_prompt = 0; +int prompt_spacing = 48; +int windowed = 0; +int multiple_instances = 0; +int uposx = -1; +int uposy = -1; +int uwidth = 0; +int uheight = 0; +percentable_t uborder = { .percent = -1, .value = 0 }; +percentable_t uside_border = { .percent = -1, .value = 0 }; +int void_click_terminate = 0; +int focus_lost_terminate = 0; +int dont_quit = 0; +int reverse = 0; +int output_only = 0; +int select_only = 0; +int text_after = 0; +int text_other_side = 0; +int clear_memory = 0; +int upside_down = 0; +int padding_swap = 0; +int least_margin = 0; +int least_v_margin = -1; +int hide_missing = 0; +int center_icons = 0; +int noscroll = 0; +int scrolled_past= 0; +int hovered_entry = 0; +color_t text_color = {.r = 255, .g = 255, .b = 255, .a = 255}; +color_t prompt_color = {.r = 255, .g = 255, .b = 255, .a = 255}; +color_t background_color = {.r = 46, .g = 52, .b = 64, .a = 255}; +int background_color_set = 0; +color_t highlight_color = {.r = 255, .g = 255, .b = 255, .a = 50}; + +#define MOUSE 1 +#define KEYBOARD 2 +int hoverset=MOUSE; +int desktop_mode=0; +int lock; + +/* areas to update */ +Imlib_Updates updates, current_update; +/* our background image, rendered only once */ +Imlib_Image background = NULL; +/* highlighting image (placed under icon on hover) */ +Imlib_Image highlight = NULL; +/* image variable */ +Imlib_Image image = NULL; + +void calculate_percentage(int maxvalue, percentable_t* percentable) +{ + if(percentable->percent != -1) { + percentable->value = (maxvalue * percentable->percent) / 100; + } +} + +void recalc_cells() +{ + int margined_cell_width, margined_cell_height; + + if (text_after){ + cell_width=icon_size+icon_padding*2; + cell_height=icon_size+icon_v_padding*2; + margined_cell_width=icon_size+icon_padding*2+least_margin; + margined_cell_height=icon_size+icon_v_padding*2+least_v_margin; + if(ucolumns == 0) + ucolumns = 1; + } else { + cell_width=icon_size+icon_padding*2; + cell_height=icon_size+icon_v_padding*2+font_height+text_padding; + margined_cell_width=icon_size+icon_padding*2+least_margin; + margined_cell_height=icon_size+icon_v_padding*2+font_height+text_padding+least_v_margin; + } + + border = screen_width/10; + if (uborder.value > 0) border = uborder.value; + if (uborder.value == -1 && uborder.percent == -1){ + if (ucolumns == 0){ + border = 0; + } else { + side_border = (screen_width - (ucolumns * cell_width + (ucolumns - 1) * least_margin))/2; + border = (screen_height - (no_prompt ? 0 : prompt_font_height + prompt_spacing) - (urows * cell_height + (urows - 1) * least_v_margin))/2; + } + } + if (uside_border.value == 0 && uside_border.percent == -1) side_border = border; + if (uside_border.value > 0) side_border = uside_border.value; + if (uside_border.value == -1 && uside_border.percent == -1){ + if (ucolumns == 0){ + side_border = 0; + } else { + side_border = (screen_width - (ucolumns * cell_width + (ucolumns - 1) * least_margin))/2; + } + } + + int usable_width; + int usable_height; + // These do while loops should run at most three times, it's just to avoid copying code + do { + usable_width = screen_width-side_border*2; + if (no_prompt) { + usable_height = screen_height-border*2; + } else { + usable_height = screen_height-border*2-prompt_spacing-prompt_font_height; + } + + // If the usable_width is too small, take some space away from the border + if (usable_width < cell_width) { + side_border = (screen_width - cell_width - 1)/2; + } else if (usable_height < cell_height) { + border = (screen_height - cell_height - prompt_spacing - prompt_font_height - 1)/2; + } + } while ((usable_width < cell_width && screen_width > cell_width) || (usable_height < cell_height && screen_height > cell_height)); + // If columns were not manually overriden, calculate the most it can possibly contain + if (ucolumns == 0){ + columns = usable_width/margined_cell_width; + } else{ + columns = ucolumns; + } + if (urows == 0){ + rows = usable_height/margined_cell_height; + } else{ + rows = urows; + } + + // If we don't have space for a single column or row, force it. + if (columns == 0) { + columns = 1; + } + if (rows == 0) { + rows = 1; + } + + if (text_after){ + cell_width = (usable_width - least_margin*(columns - 1))/columns; + } + + // The space between the icon tiles to fill all the space + if (columns == 1){ + column_margin = (usable_width - cell_width*columns); + } else { + column_margin = (usable_width - cell_width*columns)/(columns - 1); + } + if (rows == 1){ + row_margin = (usable_height - cell_height*rows); + } else { + row_margin = (usable_height - cell_height*rows)/(rows - 1); + } + + // These are kept in case manual positioning is reintroduced + prompt_x = (side_border * side_border_ratio) / 50; + prompt_y = (border * border_ratio) / 50; + /* + if(uside_border == 0){ + side_border = border; + }*/ +} + + +void restack() +{ + if (desktop_mode) XLowerWindow(disp,win); + else if (!windowed) XRaiseWindow(disp,win); +} + + +char* strncpyutf8(char* dst, const char* src, size_t num) +{ + if(num) + { + size_t sizeSrc = strlen(src); // number of bytes not including null + while(sizeSrc>num) + { + const char* lastByte = src + sizeSrc; // initially \0 at end + + while(lastByte-- > src) // test previous chars + if((*lastByte & 0xC0) != 0x80) // utf8 start byte found + break; + + sizeSrc = lastByte-src; + } + memcpy(dst, src, sizeSrc); + dst[sizeSrc] = '\0'; + } + return dst; +} + + +void arrange_positions() +{ + node_t * current = entries; + int i = 0; + int j = 0; + + while (current != NULL) + { + if (current->hidden) + { + current->x = 0; + current->y = 0; + } + else + { + int entries_last_line = entries_count - j * columns; + if (center_icons && entries_last_line < columns) { + int width = entries_last_line * cell_width + (entries_last_line - 1) * column_margin; + int usable_width = screen_width - side_border * 2; + int margin = usable_width - width; + current->x = (side_border * side_border_ratio) / 50 + margin / 2 + i * (cell_width + column_margin); + } else { + current->x = (side_border * side_border_ratio) / 50 + i * (cell_width+column_margin); + } + if (no_prompt) { + current->y = (border * border_ratio) / 50 + (j - scrolled_past) * (cell_height+row_margin); + } else { + current->y = (border * border_ratio) / 50 + prompt_font_height + prompt_spacing + (j - scrolled_past) * (cell_height+row_margin); + } + if (upside_down) { + current->y=screen_height - cell_height - current->y; + } + if (i == columns-1) { + i = 0; + j++; + } else { + i++; + } + } + current = current->next; + } +} + + +void push_key(char * key) +{ + keynode_t * current = cmdline; + + if (current==NULL) + { + cmdline = malloc(sizeof(keynode_t)); + strcpy(cmdline->key,key); + cmdline->next = NULL; + return; + } + + while (current->next != NULL) { + current = current->next; + } + + /* now we can add a new item */ + current->next = malloc(sizeof(keynode_t)); + strcpy(current->next->key,key); + current->next->next = NULL; +} + + +void pop_key() +{ + if (cmdline==NULL) return; + + // if there is only one item, remove it + if (cmdline->next==NULL) + { + free(cmdline); + cmdline=NULL; + return; + } + + keynode_t * current = cmdline; + + while (current->next->next != NULL) { + current = current->next; + } + + /* now we can remove last item */ + free(current->next); + current->next=NULL; +} + + +void clear_entries(){ + node_t * current = entries; + while (current != NULL) { + node_t * last = current; + if (clear_memory) { + memset(last->title, 0, 256); + memset(last->icon, 0, 256); + memset(last->cmd, 0, 512); + // Free the entire struct, except for it's next pointer + memset(last, 0, sizeof(node_t) - sizeof(node_t *)); + } + free(last); + current = current->next; + } + entries = NULL; +} + + +void cleanup() +{ + flock(lock, LOCK_UN | LOCK_NB); + // destroy window, disconnect display, and exit + XDestroyWindow(disp,win); + XFlush(disp); + XCloseDisplay(disp); + + if(input_source == stdin){ + int fd = fileno(stdin); + int flags = fcntl(fd, F_GETFL, 0); + flags &= ~O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + fclose(input_source); + } + + clear_entries(); + button_t * button = buttons; + buttons = NULL; + while (button != NULL) { + button_t *last = button; + button = button->next; + free(last); + } + shortcut_t * shortcut = shortcuts; + shortcuts = NULL; + while (shortcut != NULL) { + shortcut_t *last = shortcut; + shortcut = shortcut->next; + free(last->key); + free(last); + } +} + + +Imlib_Image load_image(char * icon) { + Imlib_Load_Error load_error; + Imlib_Image image = imlib_load_image_with_error_return(icon, &load_error); + if(image) { + imlib_context_set_image(image); + imlib_free_image(); + } else { + fprintf(stderr, "Could not load icon %s, Imlib failed with: ", icon); + switch(load_error) { + case IMLIB_LOAD_ERROR_NONE: + fprintf(stderr, "IMLIB_LOAD_ERROR_NONE"); + break; + case IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST: + fprintf(stderr, "IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST"); + break; + case IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY"); + break; + case IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ: + fprintf(stderr, "IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_READ"); + break; + case IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT: + fprintf(stderr, "IMLIB_LOAD_ERROR_NO_LOADER_FOR_FILE_FORMAT"); + break; + case IMLIB_LOAD_ERROR_PATH_TOO_LONG: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_TOO_LONG"); + break; + case IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT"); + break; + case IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY"); + break; + case IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE: + fprintf(stderr, "IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE"); + break; + case IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS: + fprintf(stderr, "IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_MEMORY: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_MEMORY"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS"); + break; + case IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE: + fprintf(stderr, "IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE"); + break; + case IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE: + fprintf(stderr, "IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE"); + break; + case IMLIB_LOAD_ERROR_UNKNOWN: + fprintf(stderr, "IMLIB_LOAD_ERROR_UNKNOWN"); + break; + } + fprintf(stderr, "\n"); + /* + cleanup(); + exit(1);*/ + } + return image; +} + + +void push_entry(node_t * new_entry)//(char * title, char * icon, char * cmd, int x, int y) +{ + node_t * current = entries; + int hasicon = (strlen(new_entry->icon) != 0); + /* Pre-load the image into the cache, this is done to check for error messages + * If a user has more images then can be shown this might incur a performance hit */ + if (hasicon) { + Imlib_Image image = load_image(new_entry->icon); + if (image == NULL) { + if (hide_missing) return; + strcpy(new_entry->icon, "/usr/share/icons/hicolor/48x48/apps/xlunch_ghost.png"); + } + } + + // Set default values for internal state + new_entry->x=0; + new_entry->y=0; + new_entry->hidden=0; + new_entry->hovered=0; + new_entry->clicked=0; + new_entry->next = NULL; + + shortcut_t *shortcut = shortcuts; + while (shortcut != NULL) { + if (shortcut->entry == NULL) { + shortcut->entry = new_entry; + break; + } + shortcut = shortcut->next; + } + + // empty list, add first directly + if (current==NULL) + { + entries = new_entry; + entries->next = NULL; + return; + } + + // Otherwise determine position + if(!reverse){ + // Go to end of list and add there + while (current->next != NULL) { + current = current->next; + } + current->next = new_entry; + current->next->next = NULL; + } else { + // Add at head of list + new_entry->next = entries; + entries = new_entry; + } + entries_count++; +} + + +char *strtok_new(char * string, char const * delimiter){ + static char *source = NULL; + char *p, *riturn = 0; + if(string != NULL) source = string; + if(source == NULL) return NULL; + + if((p = strpbrk (source, delimiter)) != NULL) { + *p = 0; + riturn = source; + source = ++p; + } + return riturn; +} + + +char* concat(const char *s1, const char *s2) +{ + char *result = malloc(strlen(s1)+strlen(s2)+1);//+1 for the zero-terminator + if(result != 0) { + strcpy(result, s1); + strcat(result, s2); + return result; + } + exit(ALLOCERROR); +} + + +FILE * determine_input_source(){ + FILE * fp; + if(input_source == NULL) { + char * homeconf = NULL; + + char * home = getenv("HOME"); + if (home!=NULL) + { + homeconf = concat(home,"/.config/xlunch/entries.dsv"); + } + + if (strlen(input_file)==0){ + fp = stdin; + int flags; + int fd = fileno(fp); + flags = fcntl(fd, F_GETFL, 0); + flags |= O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + struct pollfd fds; + fds.fd = 0; /* this is STDIN */ + fds.events = POLLIN; + // Give poll a little timeout to make give the piping program some time + if (poll(&fds, 1, 10) == 0){ + int flags = fcntl(fd, F_GETFL, 0); + flags &= ~O_NONBLOCK; + fcntl(fd, F_SETFL, flags); + fclose(stdin); + fp = fopen(homeconf, "rb"); + } + } else { + fp = fopen(input_file, "rb"); + } + if (fp == NULL) + { + fprintf(stderr, "Error getting entries from %s.\nReverting back to system entries list.\n", strlen(input_file) == 0 ? "stdin" : input_file); + input_file = "/etc/xlunch/entries.dsv"; + fp = fopen(input_file, "rb"); + + if (fp == NULL) + { + fprintf(stderr, "Error opening entries file %s\n", input_file); + fprintf(stderr, "You may need to create it. Icon file format is following:\n"); + fprintf(stderr, "title;icon_path;command\n"); + fprintf(stderr, "title;icon_path;command\n"); + fprintf(stderr, "title;icon_path;command\n"); + } + } + free(homeconf); + } else { + fp = input_source; + } + return fp; +} + +int mouse_over_cell(node_t * cell, int index, int mouse_x, int mouse_y) +{ + if (cell->hidden) return 0; + + if (index > scrolled_past*columns && index < scrolled_past*columns + rows*columns +1 + && mouse_x >= cell->x + && mouse_x < cell->x+cell_width + && mouse_y >= cell->y + && mouse_y < cell->y+cell_height) return 1; + else return 0; +} + +int mouse_over_button(button_t * button, int mouse_x, int mouse_y) +{ + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if ( mouse_x >= x + && mouse_x < x+button->w + && mouse_y >= y + && mouse_y < y+button->h) return 1; + else return 0; +} + +Pixmap GetRootPixmap(Display* display, Window *root) +{ + Pixmap currentRootPixmap; + Atom act_type; + int act_format; + unsigned long nitems, bytes_after; + unsigned char *data = NULL; + Atom _XROOTPMAP_ID; + + _XROOTPMAP_ID = XInternAtom(display, "_XROOTPMAP_ID", False); + + if (XGetWindowProperty(display, *root, _XROOTPMAP_ID, 0, 1, False, + XA_PIXMAP, &act_type, &act_format, &nitems, &bytes_after, + &data) == Success) { + + if (data) { + currentRootPixmap = *((Pixmap *) data); + XFree(data); + } + } + + return currentRootPixmap; +} + +int get_root_image_to_imlib_data(DATA32 * direct) +{ + int screen; + Window root; + Display* display; + XWindowAttributes attrs; + Pixmap bg; + XImage* img; + + display = XOpenDisplay(NULL); + if (display == NULL) return 0; + + screen = DefaultScreen(display); + root = RootWindow(display, screen); + XGetWindowAttributes(display, root, &attrs); + + bg = GetRootPixmap(display, &root); + img = XGetImage(display, bg, 0, 0, attrs.width, attrs.height, ~0, ZPixmap); + XFreePixmap(display, bg); + + if (!img) { + XCloseDisplay(display); + return 0; + } + + unsigned long pixel; + int x, y; + + for (y = 0; y < img->height; y++) + { + for (x = 0; x < img->width; x++) + { + pixel = XGetPixel(img,x,y); + direct[y*img->width+x+0] = 0xffffffff&pixel; + } + } + + XDestroyImage(img); + return 1; +} + + +void joincmdline() +{ + strcpy(commandline,""); + + keynode_t * current = cmdline; + + while (current != NULL) { + strcat(commandline,current->key); + current = current->next; + } +} + +void joincmdlinetext() +{ + if (no_prompt) return; + if (strlen(prompt)==0) prompt="Run: "; + strcpy(commandlinetext,prompt); + + keynode_t * current = cmdline; + + while (current != NULL) { + strcat(commandlinetext,current->key); + current = current->next; + } + + strcat(commandlinetext,"_"); +} + +void set_scroll_level(int new_scroll) { + if (!noscroll){ + if (new_scroll != scrolled_past) { + scrolled_past = new_scroll; + if (scrolled_past > (entries_count - 1)/columns - rows + 1) { + scrolled_past = (entries_count - 1)/columns - rows + 1; + } + if (scrolled_past < 0) { + scrolled_past = 0; + } + arrange_positions(); + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + } +} + +void set_hover(int hovered, node_t * cell, int hover) +{ + if (hover) hovered_entry = hovered; + if (cell==NULL) return; + if (cell->hidden) return; + if (cell->hovered!=hover) updates = imlib_update_append_rect(updates, cell->x, cell->y, cell_width, cell_height); + cell->hovered=hover; +} + +void hover_entry(int entry){ + hoverset = KEYBOARD; + int to_row = (entry+columns-1)/columns; + int display_row = (hovered_entry-(scrolled_past*columns)+columns-1)/columns; + if (entry>(columns*rows)+scrolled_past*columns || entry<=scrolled_past*columns) { + set_scroll_level(to_row - display_row); + } + int j = 1; + int max = scrolled_past*columns + columns*rows; + max = (max > entries_count ? entries_count : max); + int i = (entry < scrolled_past*columns + 1 + ? scrolled_past*columns + 1 + : (entry > max + ? max + : entry)); + node_t * current = entries; + while (current != NULL) { + if (j == i) set_hover(i, current, 1); + else set_hover(i, current, 0); + if (!current->hidden) j++; + current = current->next; + } +} + +void filter_entries() +{ + node_t * current = entries; + entries_count = 0; + + while (current != NULL) + { + if (strlen(commandline)==0 || strcasestr(current->title,commandline)!=NULL || strcasestr(current->cmd,commandline)!=NULL){ + current->hidden=0; + entries_count ++; + } else { + current->hidden=1; + current->clicked=0; + set_hover(0, current, 1); + } + current=current->next; + } + set_scroll_level(0); +} + + +int starts_with(const char *pre, const char *str) +{ + size_t lenpre = strlen(pre), + lenstr = strlen(str); + return lenstr < lenpre ? 0 : strncmp(pre, str, lenpre) == 0; +} + +void run_command(char * cmd_orig); +void run_internal_command(char * cmd_orig) { + int will_quit = 0; + char * cmd = malloc(strlen(cmd_orig)+1); + memcpy(cmd, cmd_orig, strlen(cmd_orig)+1); + char *p = strtok( cmd, " "); + if (strcmp(p, "scroll") == 0) { + p = strtok( NULL, " "); + if (strcmp(p, "top") == 0){ + set_scroll_level(0); + } else if (strcmp(p, "bottom") == 0){ + set_scroll_level(entries_count); + } else { + if (p[0] == '+' || p[0] == '-') + set_scroll_level(scrolled_past + atoi(p)); + else + set_scroll_level(atoi(p)); + } + } else if (strcmp(p, "hover") == 0) { + if (hoverset != KEYBOARD) hovered_entry = 0; + p = strtok( NULL, " "); + int new_hover; + if (strcmp(p, "start") == 0){ + new_hover = 1; + } else if (strcmp(p, "end") == 0){ + new_hover = entries_count; + } else { + if (p[0] == '+' || p[0] == '-') + new_hover = hovered_entry + atoi(p); + else + new_hover = atoi(p); + } + hover_entry(new_hover); + } else if (strcmp(p, "exec") == 0) { + int old_oo = output_only; + output_only = 0; + run_command(strtok(NULL, "\"")); + output_only = old_oo; + } else if (strcmp(p, "print") == 0){ + printf("%s\n", strtok(NULL, "\"")); + } else if (strcmp(p, "quit") == 0) { + will_quit = 1; + } + if (p != NULL) { + p = strtok(NULL, ""); + if (p != NULL) { + if (p[0] == ':') { + run_internal_command(&p[1]); + } else { + fprintf(stderr, "Internal command \"%s\" supplied with extraneous parameters \"%s\"\n", cmd_orig, p); + } + } + } + free(cmd); + if (will_quit) { + cleanup(); + exit(INTERNALCMD); + } +} + +void reset_prompt() +{ + while (cmdline != NULL) pop_key(); + joincmdline(); + joincmdlinetext(); + filter_entries(); + arrange_positions(); + node_t * current = entries; + while (current != NULL) { + set_hover(0, current, 0); + current = current->next; + } + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); +} + +void run_command(char * cmd_orig) +{ + + char cmd[512]; + char *array[100] = {0}; + strcpy(cmd,cmd_orig); + + int isrecur = starts_with(":recur ", cmd_orig) || (strcmp(":recur", cmd_orig) == 0); + if(isrecur) { + // split arguments into pieces + int i = 0; + // If we recur (ie. start xlunch again) run the command that was used to run xlunch + array[0] = program_name; + + // Blindly consume the first token which should be "recur" + char *p = strtok (cmd, " "); + p = strtok (NULL, " "); + while (p != NULL) + { + array[++i]=p; + p = strtok (NULL, " "); + if (i>=99) break; + } + } else { + if (cmd_orig[0] == ':') { + run_internal_command((char *)(cmd_orig + sizeof(char))); + return; + } + if(output_only){ + fprintf(stdout, "%s\n", cmd_orig); + if(!dont_quit){ + cleanup(); + exit(OKAY); + } else { + reset_prompt(); + return; + } + } + array[0] = "/bin/bash"; + array[1] = "-c"; + array[2] = cmd_orig; + array[3] = NULL; + } + + restack(); + + if (dont_quit) + { + pid_t pid=fork(); + if (pid==0) // child process + { + if (!multiple_instances) close(lock); + printf("Forking command: %s\n",cmd); + int err; + err = execvp(array[0],array); + fprintf(stderr,"Error forking %s : %d\n",cmd,err); + exit(OKAY); + } + else if (pid<0) // error forking + { + fprintf(stderr,"Error running %s\n",cmd); + } + else // parent process + { + reset_prompt(); + } + } + else + { + cleanup(); + printf("Running command: %s\n",cmd); + int err; + err = execvp(array[0],array); + fprintf(stderr,"Error running %s : %d\n",cmd, err); + exit(OKAY); + } +} + +int parse_entries() +{ + int changed = 0; // if the list of elements have changed or not + int parsing = 0; // section currently being read + int position = 0; // position in the current entry + int leading_space = 0; + int line = 1; // line count for error messages + int readstatus; + + struct pollfd fds; + fds.fd = fileno(input_source); + fds.events = POLLIN; + node_t * current_entry = NULL; + char internal_command[128]; + while(poll(&fds, 1, 0)) { + char b; + readstatus = read(fds.fd, &b, 1); + if(readstatus <= 0){ + break; + } + if(parsing == 0 && position == leading_space){ + if(b != ':' && b != '#') { + current_entry = malloc(sizeof(node_t)); + } else { + current_entry = NULL; + if(b == '#'){ + parsing = -1; + } + } + } + if (current_entry == NULL) { + if (b == '\n') b = '\0'; + if (position > leading_space && parsing != -1) + internal_command[position-leading_space-1] = b; + } else { + if(b == '\0') { + fprintf(stderr, "Null-byte encountered while reading entries at line %d. Aborting.\n", line); + } + // Check for semi-colons only for the first two elements to support bash commands with semi-colons in them + if(b == ';' && parsing != 2) { + b = '\0'; + } else if (b == '\n') { + line++; + b = '\0'; + if(parsing == 0){ + clear_entries(); + changed = 1; + continue; + } + } + if(b == ' ' && position <= leading_space) leading_space++; + if(b != ' ' && leading_space > 0) leading_space = -leading_space; + switch(parsing){ + case 0: + if (leading_space <= 0) + current_entry->title[position+leading_space] = b; + break; + case 1: + current_entry->icon[position] = b; + break; + case 2: + current_entry->cmd[position] = b; + break; + } + } + position++; + if(b == '\0') { + position = 0; + leading_space = 0; + if(parsing == 2 || current_entry == NULL) { + if(current_entry != NULL) { + push_entry(current_entry); + changed = 1; + } else { + if (parsing != -1) + run_internal_command(internal_command); + } + parsing = 0; + } else { + parsing++; + } + } + if(current_entry != NULL) { + int maxlen = (parsing == 2 ? 511 : 255); + if(position == maxlen){ + fprintf(stderr, "Entry too long on line %d, maximum length is %d characters!\n", line, maxlen); + break; + } + } + } + if(readstatus == 0){ + if(parsing == 2){ + current_entry->cmd[position]='\0'; + push_entry(current_entry); + changed = 1; + } + close(fds.fd); + input_source = NULL; + } + if(changed) { + filter_entries(); + arrange_positions(); + } + return changed; +} + +void parse_button(char *button_spec) { + int parsing = 0; // section currently being read + int position = 0; // position in the current entry + int i = 0; + button_t *new_button = malloc(sizeof(button_t)); + char b = button_spec[0]; + char x[256]; + char y[256]; + while (b != '\0') { + if ((b == ';' && parsing != 4) || (parsing == 2 && b == ',') ) { + b = '\0'; + } + switch(parsing){ + case 0: + new_button->icon_normal[position] = b; + break; + case 1: + new_button->icon_highlight[position] = b; + break; + case 2: + x[position] = b; + break; + case 3: + y[position] = b; + break; + case 4: + new_button->cmd[position] = b; + break; + } + position ++; + if(b == '\0') { + position = 0; + parsing++; + } + int maxlen = (parsing == 4 ? 511 : 255); + if(position == maxlen){ + fprintf(stderr, "Entry too long, maximum length is %d characters!\n", maxlen); + break; + } + i++; + b = button_spec[i]; + } + if (x[0] == '-') { + new_button->x = atoi(x)-1; + } else { + new_button->x = atoi(x); + } + if (y[0] == '-') { + new_button->y = atoi(y)-1; + } else { + new_button->y = atoi(y); + } + imlib_context_set_image(imlib_load_image(new_button->icon_normal)); + new_button->w = imlib_image_get_width(); + new_button->h = imlib_image_get_height(); + imlib_free_image(); + new_button->cmd[position] = '\0'; + new_button->next = buttons; + buttons = new_button; +} + +void set_clicked(node_t * cell, int clicked) +{ + if (cell==NULL) return; + if (cell->hidden) return; + if (cell->clicked!=clicked) updates = imlib_update_append_rect(updates, cell->x, cell->y, cell_width, cell_height); + cell->clicked=clicked; +} + +Imlib_Font load_default_font(){ + // No font was specified, try to load some default options as a fallback + Imlib_Font font; + font = imlib_load_font("OpenSans-Regular/10"); + if (!font) font = imlib_load_font("DejaVuSans/10"); + return font; +} + +int get_font_height(Imlib_Font font){ + imlib_context_set_font(font); + // maximum font descent is relative to baseline (ie. negative) + int height = imlib_get_maximum_font_ascent() - imlib_get_maximum_font_descent(); + imlib_free_font(); + return height; +} + +Imlib_Font load_font() +{ + Imlib_Font font; + if (strlen(font_name) == 0){ + font = load_default_font(); + } else { + font = imlib_load_font(font_name); + } + if (font == NULL) { + fprintf(stderr, "Font %s could not be loaded! Please specify one with -f parameter\n", font_name); + exit(FONTERROR); + } + font_height = get_font_height(font); + return font; +} + +Imlib_Font load_prompt_font() +{ + Imlib_Font font; + if (strlen(prompt_font_name) == 0){ + if (strlen(font_name) == 0){ + font = load_default_font(); + } else { + font = imlib_load_font(font_name); + } + } else { + font = imlib_load_font(prompt_font_name); + } + if (font == NULL) { + fprintf(stderr, "Prompt font %s could not be loaded! Please specify one with -F parameter\n", prompt_font_name); + exit(FONTERROR); + } + prompt_font_height = get_font_height(font); + return font; +} + + +// set background image for desktop, optionally copy it from root window, +// and set background for highlighting items +// +void update_background_images() +{ + /* reset images if exist */ + if (background) + { + imlib_context_set_image(background); + imlib_free_image(); + } + + if (highlight) + { + imlib_context_set_image(highlight); + imlib_free_image(); + } + + // load highlighting image from a file + if (strlen(highlight_file)>0) + highlight=imlib_load_image(highlight_file); + + /* fill the window background */ + background = imlib_create_image(screen_width, screen_height); + // When xlunch is launched and there is another full screen window 'background' was NULL + if(background) { + imlib_context_set_image(background); + imlib_image_set_has_alpha(1); + imlib_image_clear(); + + if (use_root_img) { + DATA32 * direct = imlib_image_get_data(); + int ok = get_root_image_to_imlib_data(direct); + if (ok) { + imlib_image_put_back_data(direct); + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_context_set_blend(1); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + imlib_context_set_blend(0); + } + } else{ // load background from file + if (strlen(background_file)>0) { + image = imlib_load_image(background_file); + if (image) { + imlib_context_set_image(image); + int w = imlib_image_get_width(); + int h = imlib_image_get_height(); + imlib_context_set_image(background); + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_context_set_blend(1); + + // Those are our source coordinates if we use just scale + // this would give the same result as feh --bg-scale + int imx=0, imy=0, imw=w, imh=h; + + // But we do not want to use scale, rather we use fill to keep aspect ratio + // It gives the same result as feh --bg-fill + if (bg_fill) { + if ( (double) (w/h) < (double) (screen_width/screen_height) ) + { + imw = (int) w; + imh = (int) (screen_height * w / screen_width); + imx = 0; + imy = (int) ((h - imh) / 2); + } + else + { + imw = (int) (screen_width * h / screen_height); + imh = (int) h; + imx = (int) ((w - imw) / 2); + imy = 0; + } + } + + imlib_blend_image_onto_image(image, 1, imx, imy, imw, imh, 0, 0, screen_width, screen_height); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + imlib_context_set_blend(0); + imlib_context_set_image(image); + imlib_free_image(); + } + } else { + imlib_context_set_color(background_color.r, background_color.g, background_color.b, background_color.a); + imlib_image_fill_rectangle(0,0, screen_width, screen_height); + } + } + } +} + +void draw_text_with_shadow(int posx, int posy, char * text, color_t color) { + imlib_context_set_color(0, 0, 0, 30); + imlib_text_draw(posx +1, posy +1, text); + imlib_text_draw(posx +1, posy +2, text); + imlib_text_draw(posx +2, posy +2, text); + + imlib_context_set_color(color.r, color.g, color.b, color.a); + imlib_text_draw(posx, posy, text); +} + +void handle_option(int c, char *optarg); + +void parse_config(FILE *input) { + int readstatus; + int position = 0; + int size = 0; + int eol = 0; + int fileline = 1; + char *optarg = NULL; + char matching[(sizeof(long_options)/sizeof(struct option)) - 1]; + char *entries_word = "entries"; + int matching_entries = 1; + int matched = '?'; + int comment = 0; + memset(matching, 1, sizeof(long_options)/sizeof(struct option) - 1); + + struct pollfd fds; + fds.fd = fileno(input); + fds.events = POLLIN; + node_t * current_entry; + while(poll(&fds, 1, 0)) { + char b; + readstatus = read(fds.fd, &b, 1); + if(readstatus <= 0){ + break; + } + if((b == ':' && optarg == NULL) || b == '\n') { + if (b == '\n') eol = 1; + b = '\0'; + } + if(b == '#' && optarg == NULL && position == 0) comment = 1; + if(comment == 1 && eol != 1) continue; + if(b == ' ' && position == 0) continue; + if(optarg == NULL) { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (long_options[i].name[position] != b){ + matching[i] = 0; + } + } + if (entries_word[position] != b && eol != 1) { + matching_entries = 0; + } + if(b == '\0') { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (matching[i] == 1) { + optarg = malloc(1); + position = -1; + matched = long_options[i].val; + } + } + } + } else { + optarg = realloc(optarg, ++size); + optarg[position] = b; + } + position++; + if(eol == 1) { + if(position != 1) { + if(matching_entries){ + input_source = input; + break; + } else { + if(matched == '?') { + fprintf(stderr, "Got unknown option in config file on line %d\n", fileline); + } + handle_option(matched, optarg); + } + } + position = 0; + size = 0; + eol = 0; + comment = 0; + matching_entries = 1; + memset(matching, 1, sizeof(long_options)/sizeof(struct option) - 1); + if(optarg != NULL){ + //free(optarg); + optarg = NULL; + } + matched = '?'; + fileline++; + } + } + if(position > 1) { + if(matching_entries){ + input_source = input; + } else { + if (matched == '?') { + for(int i = 0; i < sizeof(long_options)/sizeof(struct option) - 1; i++) { + if (matching[i] == 1) { + matched = long_options[i].val; + break; + } + } + } + if(matched == '?') { + fprintf(stderr, "Got unknown option in config file on line %d\n", fileline); + } + handle_option(matched, optarg); + } + } + if(input_source != input) + close(fds.fd); +} + +void handle_option(int c, char *optarg) { + switch (c) { + case 'v': + fprintf(stderr, "xlunch graphical program launcher, version %d.%d.%d\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); + exit(OKAY); + + case 'd': + desktop_mode = 1; + break; + + case 'G': + use_root_img = 1; + if(background_color_set == 0){ + background_color.r = 0; + background_color.g = 0; + background_color.b = 0; + background_color.a = 100; + } + break; + + case 'n': + no_prompt = 1; + break; + + case 'g': + background_file = optarg; + if(background_color_set == 0){ + background_color.r = 0; + background_color.g = 0; + background_color.b = 0; + background_color.a = 100; + } + break; + + case 'L': + highlight_file = optarg; + break; + + case 'I': + icon_padding = atoi(optarg); + break; + + case 1020: + icon_v_padding = atoi(optarg); + break; + + case 'T': + text_padding = atoi(optarg); + break; + + case 'c': + ucolumns = atoi(optarg); + break; + + case 'r': + urows = atoi(optarg); + break; + + case 'b': + if(strcmp(optarg, "auto") == 0){ + uborder.value = -1; + } else { + if (optarg[strlen(optarg)-1] == '%') { + uborder.percent = atoi(optarg); + } else { + uborder.value = atoi(optarg); + } + } + break; + + case 'B': + if(strcmp(optarg, "auto") == 0){ + uside_border.value = -1; + } else { + if (optarg[strlen(optarg)-1] == '%') { + uside_border.percent = atoi(optarg); + } else { + uside_border.value = atoi(optarg); + } + } + break; + + case 'P': + prompt_spacing = atoi(optarg); + break; + + case 's': + icon_size = atoi(optarg); + break; + + case 'i': + input_file = optarg; + break; + + case 'W': + windowed = 1; + break; + + case 'p': + prompt = optarg; + break; + + case 'f': + font_name = optarg; + break; + + case 'F': + prompt_font_name = optarg; + break; + + case 'm': + multiple_instances = 1; + break; + + case 't': + void_click_terminate = 1; + break; + + case 'x': + uposx = atoi(optarg); + break; + + case 'y': + uposy = atoi(optarg); + break; + + case 'w': + uwidth = atoi(optarg); + break; + + case 'h': + uheight = atoi(optarg); + break; + + case 'o': + output_only = 1; + break; + + case 'S': + select_only = 1; + break; + + case 1009: + sscanf(optarg, "%02x%02x%02x%02x", &text_color.r, &text_color.g, &text_color.b, &text_color.a); + break; + + case 1010: + sscanf(optarg, "%02x%02x%02x%02x", &prompt_color.r, &prompt_color.g, &prompt_color.b, &prompt_color.a); + break; + + case 1011: + sscanf(optarg, "%02x%02x%02x%02x", &background_color.r, &background_color.g, &background_color.b, &background_color.a); + background_color_set = 1; + break; + + case 1012: + sscanf(optarg, "%02x%02x%02x%02x", &highlight_color.r, &highlight_color.g, &highlight_color.b, &highlight_color.a); + break; + + case 'a': + text_after = 1; + break; + + case 1013: + program_name = optarg; + break; + + case 'q': + dont_quit = 1; + break; + + case 'R': + reverse = 1; + break; + + case 'O': + text_other_side = 1; + break; + + case 'M': + clear_memory = 1; + break; + + case 'u': + upside_down = 1; + break; + + case 'X': + padding_swap = 1; + break; + + case 'l': + least_margin = atoi(optarg); + break; + + case 'V': + least_v_margin = atoi(optarg); + break; + + case 'C': + center_icons = 1; + break; + + case 'e': + hide_missing = 1; + break; + + case 'A': + parse_button(optarg); + break; + + case 'U': ; + unsigned char lb = optarg[0]; + int i = 0; + shortcut_t *current_shortcut = NULL; + while (lb != '\0') { + if ( current_shortcut == NULL ) { + current_shortcut = malloc(sizeof(shortcut_t)); + } else { + current_shortcut->next = malloc(sizeof(shortcut_t)); + current_shortcut = current_shortcut->next; + } + if ( shortcuts == NULL) + shortcuts = current_shortcut; + current_shortcut->entry = NULL; + current_shortcut->next = NULL; + if (( lb & 0x80 ) == 0 ) { // lead bit is zero, must be a single ascii + current_shortcut->key = malloc(sizeof(char)); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)); + i+=1; + } else if (( lb & 0xE0 ) == 0xC0 ) { // 110x xxxx + current_shortcut->key = malloc(sizeof(char)*2); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*2); + i+=2; + } else if (( lb & 0xF0 ) == 0xE0 ) { // 1110 xxxx + current_shortcut->key = malloc(sizeof(char)*3); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*3); + i+=3; + } else if (( lb & 0xF8 ) == 0xF0 ) { // 1111 0xxx + current_shortcut->key = malloc(sizeof(char)*4); + memcpy(current_shortcut->key, &optarg[i], sizeof(char)*4); + i+=4; + } else { + printf( "Unrecognized lead byte in shortcut (%02x)\n", lb ); + } + lb = optarg[i]; + } + break; + + case 1014: + parse_config(fopen(optarg, "rb")); + read_config = 1; + break; + + case 1015: + bg_fill = 1; + break; + + case 1016: + focus_lost_terminate = 1; + break; + + case 1017: + border_ratio = atoi(optarg); + break; + + case 1018: + side_border_ratio = atoi(optarg); + break; + + case 1019: + noscroll = 1; + break; + + case '?': + fprintf(stderr, "See --help for usage documentation\n"); + exit(CONFIGERROR); + break; + + case 'H': + fprintf (stderr,"usage: xlunch [options]\n" + " xlunch is a program launcher/option selector similar to dmenu or rofi.\n" + " By default it launches in full-screen mode and terminates after a selection is made,\n" + " it is also possible to close xlunch by pressing Esc or the right mouse button.\n" + " Some options changes this behaviour, the most notable being the desktop mode switch:\n" + " -d, --desktop Desktop mode, always keep the launcher at\n" + " background(behind other windows), and ignore ESC\n" + " and right mouse click. Combined with --dontquit\n" + " xlunch never exits (behaviour of --desktop from\n" + " previous versions).\n" + " Functional options:\n" + " --config [file] Reads configuration options from a file. The\n" + " options are the same as the long options\n" + " specified here. Options that take a value must\n" + " have a colon (':') before it's option. It is\n" + " also possible to pass the entries along with the\n" + " configuration file by using \"entries:\"\n" + " followed by a newline and the regular contents\n" + " of an input file\n" + " -v, --version Returns the version of xlunch\n" + " -H, --help Shows this help message\n" + " --name POSIX-esque way to specify the first part of\n" + " WM_CLASS (default: environment variable \n" + " RESOURCE_NAME or argv[0])\n" + " -n, --noprompt Hides the prompt, only allowing selection\n" + " by icon\n" + " -o, --outputonly Do not run the selected entry, only output it\n" + " to stdout\n" + " -S, --selectonly Only allow an actual entry and not free-typed\n" + " commands. Nice for scripting.\n" + " -i, --input [file] File to read entries from, defaults to stdin\n" + " if data is available otherwise it reads from\n" + " $HOME/.config/xlunch/entries.dsv or\n" + " /etc/xlunch/entries.dsv\n" + " -m, --multiple Allow multiple instances running\n" + " -t, --voidclickterminate Clicking anywhere that's not an entry terminates\n" + " xlunch, practical for touch screens.\n" + " --focuslostterminate When the window loses focus xlunch will quit,\n" + " practical for menus\n" + " -q, --dontquit When an option is selected, don't close xlunch.\n" + " Combined with --desktop xlunch\n" + " never exits (behaviour of --desktop from\n" + " previous versions).\n" + " -R, --reverse All entries in xlunch as reversly ordered.\n" + " -W, --windowed Start in windowed mode\n" + " -M, --clearmemory Set the memory of each entry to null before\n" + " exiting. Used for passing sensitive information\n" + " through xlunch.\n" + " -U, --shortcuts [shortcuts] Sets shortcuts for the entries, 'shortcuts' is a\n" + " string of UTF-8 characters to use sequentially\n" + " for the entries provided.\n" + " -A, --button [button] Adds a button to the window. The argument\n" + " \"button\" is a semicolon-separated list on the\n" + " form \";;,;\"\n" + " If x or y is negative positioning is relative\n" + " to the other side of the screen.\n" + " --noscroll Disable scroll in xlunch. Ignore entries\n" + " that can't fit the screen.\n\n" + " Multi monitor setup: xlunch cannot detect your output monitors, it sees your monitors\n" + " as a big single screen. You can customize this manually by setting windowed mode and\n" + " providing the top/left coordinates and width/height of your monitor screen which\n" + " effectively positions xlunch on the desired monitor. Use the following options:\n" + " -x, --xposition [i] The x coordinate of the launcher window\n" + " -y, --yposition [i] The y coordinate of the launcher window\n" + " -w, --width [i] The width of the launcher window\n" + " -h, --height [i] The height of the launcher window\n\n" + " Style options:\n" + " -p, --prompt [text] The prompt asking for input (default: \"Run: \")\n" + " -f, --font [name] Font name including size after slash (default:\n" + " \"OpenSans-Regular/10\" and \"DejaVuSans/10\")\n" + " -F, --promptfont [name] Font to use for the prompt\n" + " (default: same as --font)\n" + " -G, --rootwindowbackground Use root windows background image\n" + " -g, --background [file] Image to set as background (jpg/png)\n" + " --bgfill Makes the background keep aspect ratio\n" + " while stretching\n" + " -L, --highlight [file] Image set as highlighting under selected icon\n" + " (jpg/png)\n" + " -I, --iconpadding [i] Padding around icons (default: 10)\n" + " --iconvpadding [i] Vertical padding around icons (default: same as\n" + " iconpadding)\n" + " -T, --textpadding [i] Padding around entry titles (default: 10)\n" + " -c, --columns [i] Number of columns to show (without this the max\n" + " amount possible is used)\n" + " -r, --rows [i] Numbers of rows to show (without this the max\n" + " amount possible is used)\n" + " -b, --border [i] Size of the border around the icons and prompt\n" + " (default: 1/10th of screen width)\n" + " This can also be set to 'auto' in order to\n" + " automatically calculate a border taking into\n" + " account the margin settings and the\n" + " configured columns and rows. You can also specify\n" + " border in terms of percentage of screen width by\n" + " appending a %% sign to the value\n" + " -B, --sideborder [i] Size of the border on the sides, if this is used\n" + " --border will be only top and bottom. Similarily\n" + " this can be set to 'auto' or a percentage but\n" + " then only side borders are calculated\n" + " --borderratio [i] The ratio of the border to apply above the\n" + " content. 0 is no top border, only bottom. 100 is\n" + " only top border, no bottom\n" + " --sideborderratio [i] The ratio of the side border to apply to the\n" + " left of the content. 0 is no left border, only\n" + " right. 100 is only left border, no right\n" + " -C, --center Center entries when there are fewer entries on a\n" + " row than the maximum\n" + " -P, --promptspacing [i] Distance between the prompt and the icons\n" + " (default: 48)\n" + " -s, --iconsize [i] Size of the icons (default: 48)\n" + " -a, --textafter Draw the title to the right of the icon instead\n" + " of below, this option automatically sets\n" + " --columns to 1 but this can be overridden.\n" + " -O, --textotherside Draw the text on the other side of the icon from\n" + " where it is normally drawn.\n" + " -u, --upsidedown Draw the prompt on the bottom and have icons\n" + " sort from bottom to top.\n" + " -X, --paddingswap Icon padding and text padding swaps order\n" + " around text.\n" + " -l, --leastmargin [i] Adds a margin to the calculation of\n" + " application sizes.\n" + " -V, --leastvmargin [i] Adds a vertical margin to the calculation of\n" + " application sizes.\n" + " -e, --hidemissing Hide entries with missing or broken icon images\n" + " --tc, --textcolor [color] Color to use for the text on the format rrggbbaa\n" + " (default: ffffffff)\n" + " --pc, --promptcolor [color] Color to use for the prompt text\n" + " (default: ffffffff)\n" + " --bc, --backgroundcolor [color] Color to use for the background\n" + " (default: 2e3440ff) NOTE: transparent background\n" + " color requires a compositor\n" + " --hc, --highlightcolor [color] Color to use for the highlight box\n" + " (default: ffffff32)\n\n"); + // Check if we came from the error block above or if this was a call with --help + if(c == '?'){ + exit(CONFIGERROR); + } else { + exit(OKAY); + } + break; + } +} + +void init(int argc, char **argv) +{ + + int c, option_index; + while ((c = getopt_long(argc, argv, "vdr:ng:L:b:B:s:i:p:f:mc:x:y:w:h:oatGHI:T:P:WF:SqROMuXeCl:V:U:A:", long_options, &option_index)) != -1) { + handle_option(c, optarg); + } + + // If no configuration file was explicitly given, try to read a default one + if (read_config == 0) { + FILE *config_source; + char * homeconf = NULL; + + char * home = getenv("HOME"); + if (home!=NULL) + { + homeconf = concat(home,"/.config/xlunch/xlunch.conf"); + } + config_source = fopen(homeconf, "rb"); + if(config_source == NULL) { + config_source = fopen("/etc/xlunch/default.conf", "rb"); + } + free(homeconf); + if(config_source != NULL){ + parse_config(config_source); + fclose(config_source); + } + } + + + if (least_v_margin == -1) least_v_margin = least_margin; + if (icon_v_padding == -1) icon_v_padding = icon_padding; + + /* connect to X */ + disp = XOpenDisplay(NULL); + if (!disp) + { + fprintf(stderr,"Cannot connect to DISPLAY\n"); + exit(WINERROR); + } + + if (!XMatchVisualInfo(disp, DefaultScreen(disp), 32, TrueColor, &vinfo)) { + XMatchVisualInfo(disp, DefaultScreen(disp), 24, TrueColor, &vinfo); + } + + attr.colormap = XCreateColormap(disp, DefaultRootWindow(disp), vinfo.visual, AllocNone); + attr.border_pixel = 0; + attr.background_pixel = 0; + + /* get default visual , colormap etc. you could ask imlib2 for what it */ + /* thinks is the best, but this example is intended to be simple */ + screen = DefaultScreen(disp); + + /* get/set screen size */ + if (uwidth==0) screen_width=DisplayWidth(disp,screen); + else screen_width=uwidth; + + if (uheight==0) screen_height=DisplayHeight(disp,screen); + else screen_height=uheight; + + calculate_percentage(screen_height, &uborder); + calculate_percentage(screen_width, &uside_border); +} + +void recheckHover(XEvent ev) { + node_t * current = entries; + int i = 1; + int j = 1; + int any_hovered = 0; + + while (current != NULL) + { + if (mouse_moves>3 && mouse_over_cell(current, j, ev.xmotion.x, ev.xmotion.y)) { + set_hover(i, current, 1); + any_hovered = 1; + hoverset=MOUSE; + } + else { + set_hover(i, current,0); + set_clicked(current,0); + } + if(!current->hidden) + j++; + i++; + current = current->next; + } + if (any_hovered == 0) hovered_entry = 0; + + button_t * button = buttons; + while (button != NULL) { + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y)) { + if (button->hovered != 1) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->hovered = 1; + } else { + if (button->hovered != 0) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->hovered = 0; + button->clicked = 0; + } + button = button->next; + } +} + +void handleButtonPress(XEvent ev) { + switch (ev.xbutton.button) { + case 3: // right click + if (!desktop_mode) { + cleanup(); + exit(RIGHTCLICK); + } + break; + case 4: // scroll up + set_scroll_level(scrolled_past - 1); + recheckHover(ev); + break; + case 5: // scroll down + set_scroll_level(scrolled_past + 1); + recheckHover(ev); + break; + case 1:; // left click + node_t * current = entries; + int voidclicked = 1; + int index = 1; + mouse_moves += 4; + recheckHover(ev); + while (current != NULL) + { + if (mouse_over_cell(current, index, ev.xmotion.x, ev.xmotion.y)) { + set_clicked(current,1); + voidclicked = 0; + } + else set_clicked(current,0); + if(!current->hidden) + index++; + current = current->next; + } + + button_t * button = buttons; + while (button != NULL) { + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y)) { + if (button->clicked != 1) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->clicked = 1; + voidclicked = 0; + } else { + if (button->clicked != 0) updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button->clicked = 0; + } + button = button->next; + } + + if (voidclicked && void_click_terminate) { + cleanup(); + exit(VOIDCLICK); + } + break; + } +} + +void handleButtonRelease(XEvent ev) { + node_t * current = entries; + int index = 1; + + while (current != NULL) + { + if (mouse_over_cell(current, index, ev.xmotion.x, ev.xmotion.y)) if (current->clicked==1) run_command(current->cmd); + set_clicked(current, 0); // button release means all cells are not clicked + updates = imlib_update_append_rect(updates, current->x, current->y, icon_size, icon_size); + if(!current->hidden) + index++; + current = current->next; + } + + button_t * button = buttons; + + while (button != NULL) + { + if (mouse_over_button(button, ev.xmotion.x, ev.xmotion.y) && button->clicked == 1) run_command(button->cmd); + button->clicked = 0; + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + updates = imlib_update_append_rect(updates, x, y, button->w, button->h); + button = button->next; + } +} + +void handleKeyPress(XEvent ev) { + // keyboard events + int count = 0; + KeySym keycode = 0; + Status status = 0; + char kbdbuf[20]= {0}; + count = Xutf8LookupString(ic, (XKeyPressedEvent*)&ev, kbdbuf, 20, &keycode, &status); + + if (keycode==XK_Escape && !desktop_mode) + { + cleanup(); + exit(ESCAPE); + } + + if (keycode==XK_Return || keycode==XK_KP_Enter) + { + // if we have an icon hovered, and the hover was caused by keyboard arrows, run the hovered icon + node_t * current = entries; + node_t * selected = NULL; + node_t * selected_one = NULL; + node_t * first = NULL; + int nb=0; + while (current != NULL) + { + if (!current->hidden) + { + nb++; + selected_one=current; + if (first == NULL) first = current; + if (current->hovered) selected = current; + } + current=current->next; + } + /* if only 1 app was filtered, consider it selected */ + if (nb==1 && selected_one!=NULL) run_command(selected_one->cmd); + else if (hoverset==KEYBOARD && selected!=NULL) run_command(selected->cmd); + // else run the command entered by commandline, if the command prompt is used + else if (!no_prompt && !select_only) run_command(commandline); + // or if --selectonly is specified, run first program regardless of selected state + else if (select_only && first!=NULL) run_command(first->cmd); + } + + if (keycode==XK_Tab || keycode==XK_Up || keycode==XK_Down || keycode==XK_Left || keycode==XK_Right + || keycode==XK_KP_Up || keycode==XK_KP_Down || keycode==XK_KP_Left || keycode==XK_KP_Right + || keycode==XK_Page_Down || keycode==XK_Page_Up || keycode==XK_Home || keycode==XK_End) + { + int i=0; + if (keycode==XK_KP_Left || keycode==XK_Left) i=-1; + if (keycode==XK_Up || keycode==XK_KP_Up) i=-columns; + if (keycode==XK_Down || keycode==XK_KP_Down) i=columns; + if (keycode==XK_Tab || keycode==XK_Right || keycode==XK_KP_Right) i=1; + if (keycode==XK_Page_Up) i=-columns*rows; + if (keycode==XK_Page_Down) i=columns*rows; + if (keycode==XK_End) i = entries_count;//(scroll ? scrolled_past*columns+n : n); + if (keycode==XK_Home) i = -entries_count;//(scroll ? scrolled_past*columns+1 : 1); + if (hovered_entry == 0) { + if (keycode != XK_End && keycode != XK_Page_Down) { + hovered_entry = 1-i; + } else { + hovered_entry = 1; + } + } + i = hovered_entry + i; + hover_entry(i); + return; + } + + if (keycode==XK_Delete || keycode==XK_BackSpace) + pop_key(); + else if (count>1 || (count==1 && kbdbuf[0]>=32)){ // ignore unprintable characterrs + if (!no_prompt) push_key(kbdbuf); + shortcut_t *shortcut = shortcuts; + while(shortcut != NULL) { + for(int i = 0; i < count; i++){ + if (kbdbuf[i] != shortcut->key[i]) { + break; + } else if (i == count-1) { + run_command(shortcut->entry->cmd); + } + } + shortcut = shortcut->next; + } + } + + joincmdline(); + joincmdlinetext(); + filter_entries(); + arrange_positions(); + + // we used keyboard to type command. So unselect all icons. + node_t * current = entries; + int i = 1; + while (current != NULL) + { + set_hover(i, current,0); + set_clicked(current,0); + current = current->next; + i++; + } + + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); +} + +void renderEntry(Imlib_Image buffer, char title[256], node_t * current, Cursor * c, int up_x, int up_y) { + int h = 0; + int w = 0; + if (current->hovered) + { + if (hoverset == MOUSE) *c = XCreateFontCursor(disp,XC_hand1); + + if (highlight) + { + imlib_context_set_image(highlight); + w = imlib_image_get_width(); + h = imlib_image_get_height(); + imlib_context_set_image(buffer); + imlib_blend_image_onto_image(highlight, 1, 0, 0, w, h, current->x-up_x, current->y-up_y, cell_width, cell_height); + } + else + { + imlib_context_set_image(buffer); + imlib_context_set_color(highlight_color.r, highlight_color.g, highlight_color.b, highlight_color.a); + imlib_image_fill_rectangle(current->x-up_x, current->y-up_y, cell_width, cell_height); + } + } + if (strlen(current->icon) != 0) { + image=imlib_load_image(current->icon); + if (image) + { + imlib_context_set_image(image); + w = imlib_image_get_width(); + h = imlib_image_get_height(); + imlib_context_set_image(buffer); + int d; + if (current->clicked) d=2; + else d=0; + int x = current->x - up_x + + (text_other_side && text_after ? cell_width - icon_padding - icon_size : icon_padding)+d; + int y = current->y - up_y +(text_other_side && !text_after ? cell_height - icon_v_padding - icon_size : icon_v_padding)+d; + + imlib_blend_image_onto_image(image, 1, 0, 0, w, h, x, y, icon_size-d*2, icon_size-d*2); + + imlib_context_set_image(image); + imlib_free_image(); + } + } + /* draw text under icon */ + Imlib_Font font = load_font(); + if (font) + { + imlib_context_set_image(buffer); + int text_w; + int text_h; + + const size_t osz = strlen(current->title); + size_t sz = osz; + imlib_context_set_font(font); + do + { + strncpyutf8(title,current->title,sz); + if(sz != osz) + strcat(title,".."); + imlib_get_text_size(title, &text_w, &text_h); + sz--; + } while(text_w > cell_width-(text_after ? (icon_size != 0 ? icon_padding*2 : icon_padding) + icon_size + text_padding : 2*text_padding) && sz>0); + + int d; + if (current->clicked==1) d=4; + else d=0; + + if (text_after) { + draw_text_with_shadow(current->x - up_x + (text_other_side ? text_padding : (icon_size != 0 ? (padding_swap ? icon_padding*2 : icon_padding + text_padding) : icon_padding) + icon_size), current->y - up_y + cell_height/2 - font_height/2, title, text_color); + } else { + draw_text_with_shadow(current->x - up_x + cell_width/2 - text_w/2, current->y - up_y + (text_other_side ? text_padding : (padding_swap ? icon_v_padding*2 : icon_v_padding + text_padding) + icon_size), title, text_color); + } + + /* free the font */ + imlib_free_font(); + } +} + +/* the program... */ +int main(int argc, char **argv){ + /* events we get from X */ + XEvent ev; + /* our virtual framebuffer image we draw into */ + Imlib_Image buffer; + char title[255]; + + /* width and height values */ + int w, h, x, y; + + // set initial variables now + init(argc, argv); + + if(program_name == NULL) { + program_name = getenv("RESOURCE_NAME"); + if(program_name == NULL) { + program_name = argv[0]; + } + } + joincmdlinetext(); + + // If an instance is already running, quit + if (!multiple_instances) + { + int oldmask = umask(0); + lock = open("/tmp/xlunch.lock", O_CREAT | O_RDWR, 0666); + umask(oldmask); + int rc = flock(lock, LOCK_EX | LOCK_NB); + if (rc) { + if (errno == EWOULDBLOCK) fprintf(stderr,"xlunch already running. You may want to consider --multiple\nIf this is an error, you may remove /tmp/xlunch.lock\n"); + exit(LOCKERROR); + } + } + + //win = XCreateSimpleWindow(disp, DefaultRootWindow(disp), uposx, uposy, screen_width, screen_height, 0, 0, 0); + win = XCreateWindow(disp, DefaultRootWindow(disp), (uposx == -1 ? 0 : uposx), (uposy == -1 ? 0 : uposy), screen_width, screen_height, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr); + + // absolute fullscreen mode by overide redirect + if (!windowed && desktop_mode) + { + unsigned long valuemask = CWOverrideRedirect; + XSetWindowAttributes attributes; + attributes.override_redirect=True; + XChangeWindowAttributes(disp,win,valuemask,&attributes); + } + + /* add the ttf fonts dir to our font path */ + char* homedir; + if((homedir = getenv("HOME")) != NULL) { + imlib_add_path_to_font_path(concat(homedir,"/.local/share/fonts")); + imlib_add_path_to_font_path(concat(homedir,"/.fonts")); + } + imlib_add_path_to_font_path("/usr/local/share/fonts"); + imlib_add_path_to_font_path("/usr/share/fonts/truetype"); + imlib_add_path_to_font_path("/usr/share/fonts/truetype/dejavu"); + imlib_add_path_to_font_path("/usr/share/fonts/TTF"); + /* set our cache to 2 Mb so it doesn't have to go hit the disk as long as */ + /* the images we use use less than 2Mb of RAM (that is uncompressed) */ + imlib_set_cache_size(2048 * screen_width); + /* set the font cache to 512Kb - again to avoid re-loading */ + imlib_set_font_cache_size(512 * screen_width); + /* Preload fonts so that recalc can know their sizes */ + load_font(); + load_prompt_font(); + recalc_cells(); + /* set the maximum number of colors to allocate for 8bpp and less to 128 */ + imlib_set_color_usage(128); + /* dither for depths < 24bpp */ + imlib_context_set_dither(1); + /* set the display , visual, colormap and drawable we are using */ + imlib_context_set_display(disp); + imlib_context_set_visual(vinfo.visual); + imlib_context_set_colormap(attr.colormap); + imlib_context_set_drawable(win); + + update_background_images(); + + /* tell X what events we are interested in */ + XSelectInput(disp, win, StructureNotifyMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask | EnterWindowMask | ExposureMask | KeyPressMask | KeyReleaseMask | KeymapStateMask | FocusChangeMask ); + GC gc = XCreateGC(disp, win, 0, 0); + /* set our name */ + XClassHint* classHint; + + /* set the titlebar name */ + XStoreName(disp, win, "monocleOS Menu"); + + /* set the name and class hints for the window manager to use */ + classHint = XAllocClassHint(); + if (classHint) { + classHint->res_name = basename(program_name); + classHint->res_class = (windowed ? "monocleOS Menu" : (desktop_mode ? "monocleOS Menu" : "monocleOS Menu")); + } + XSetClassHint(disp, win, classHint); + XFree(classHint); + /* show the window */ + XMapRaised(disp, win); + /* Force window reposition, can make effect only when windowed is enabled, depending on WM */ + if (uposx != -1 || uposy != -1) + XMoveWindow(disp,win,uposx,uposy); + + // prepare for keyboard UTF8 input + if (XSetLocaleModifiers("@im=none") == NULL) { + cleanup(); + exit(LOCALEERROR); + } + im = XOpenIM(disp, NULL, NULL, NULL); + if (im == NULL) { + fputs("Could not open input method\n", stdout); + cleanup(); + exit(INPUTMERROR); + } + + ic = XCreateIC(im, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, win, NULL); + if (ic == NULL) { + fprintf(stderr,"Could not open input context, without it we can't properly handle UTF8\n"); + cleanup(); + exit(INPUTCERROR); + } + XSetICFocus(ic); + + // send to back or front, depending on settings + restack(); + + // parse entries file + input_source = determine_input_source(); + if(input_source != NULL){ + parse_entries(); + } + + + // prepare message for window manager that we are requesting fullscreen + XClientMessageEvent msg = { + .type = ClientMessage, + .display = disp, + .window = win, + .message_type = XInternAtom(disp, "_NET_WM_STATE", True), + .format = 32, + .data = { + .l = { + 1 /* _NET_WM_STATE_ADD */, + XInternAtom(disp, "_NET_WM_STATE_FULLSCREEN", True), + None, + 0, + 1 + } + } + }; + + // send the message + if (!windowed && !desktop_mode) + XSendEvent(disp, DefaultRootWindow(disp), False, SubstructureRedirectMask | SubstructureNotifyMask, (XEvent*)&msg); + + // Get the FD of the X11 display + x11_fd = ConnectionNumber(disp); + eventfds[0].fd = x11_fd; + eventfds[0].events = POLLIN || POLLPRI || POLLOUT || POLLRDHUP; + if(input_source == stdin) { + eventfds[1].fd = 0; /* this is STDIN */ + eventfds[1].events = POLLIN; + } + + /* infinite event loop */ + for (;;) + { + /* init our updates to empty */ + updates = imlib_updates_init(); + + // Poll for events, while blocking until one becomes available + int poll_result; + if(!XPending(disp)){ + poll_result = poll(eventfds, (input_source == stdin ? 2 : 1), -1); + } else { + poll_result = 1; + eventfds[0].revents = 1; + } + + if(poll_result < 0){ + // An error occured, abort + cleanup(); + exit(POLLERROR); + } else { + if(input_source == stdin && eventfds[1].revents != 0){ + int changed = parse_entries(input_source); + if(changed){ + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + } + if(eventfds[0].revents != 0) { + /* while there are events form X - handle them */ + while (XPending(disp)) + { + XNextEvent(disp, &ev); + + // allow through only UTF8 events + if (XFilterEvent(&ev, win)) continue; + + switch (ev.type) + { + + case Expose: + /* window rectangle was exposed - add it to the list of */ + /* rectangles we need to re-render */ + updates = imlib_update_append_rect(updates, ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height); + break; + + case FocusIn: + restack(); + break; + + case FocusOut: + restack(); + if (focus_lost_terminate) { + cleanup(); + exit(FOCUSLOST); + } + break; + + + case ConfigureNotify: + if (screen_width!=ev.xconfigure.width || screen_height!=ev.xconfigure.height) + { + screen_width=ev.xconfigure.width; + screen_height=ev.xconfigure.height; + calculate_percentage(screen_height, &uborder); + calculate_percentage(screen_width, &uside_border); + if (!use_root_img) update_background_images(); + recalc_cells(); + arrange_positions(); + updates = imlib_update_append_rect(updates, 0, 0, screen_width, screen_height); + } + break; + + case ButtonPress: + handleButtonPress(ev); + break; + + case ButtonRelease: + handleButtonRelease(ev); + break; + + // refresh keyboard layout if changed + case KeymapNotify: + XRefreshKeyboardMapping(&ev.xmapping); + break; + + case KeyPress: + handleKeyPress(ev); + break; + + case KeyRelease: + break; + + case EnterNotify: + case MotionNotify: + mouse_moves++; + recheckHover(ev); + break; + + default: + /* any other events - do nothing */ + break; + } + } + } + /* no more events for now ? ok - idle time so lets draw stuff */ + + /* take all the little rectangles to redraw and merge them into */ + /* something sane for rendering */ + updates = imlib_updates_merge_for_rendering(updates, screen_width, screen_height); + + for (current_update = updates; current_update; current_update = imlib_updates_get_next(current_update)) + { + int up_x, up_y, up_w, up_h; + + /* find out where the first update is */ + imlib_updates_get_coordinates(current_update, &up_x, &up_y, &up_w, &up_h); + + /* create our buffer image for rendering this update */ + buffer = imlib_create_image(up_w, up_h); + + /* we can blend stuff now */ + imlib_context_set_blend(1); + + imlib_context_set_image(buffer); + + imlib_image_set_has_alpha(1); + imlib_image_clear(); + /* blend background image onto the buffer */ + imlib_blend_image_onto_image(background, 1, 0, 0, screen_width, screen_height, - up_x, - up_y, screen_width, screen_height); + + node_t * current = entries; + int drawn = 0; + int seen = 0; + Cursor c = XCreateFontCursor(disp,XC_top_left_arrow); + + while (current != NULL) + { + if (!current->hidden) + { + if (seen++ < scrolled_past * columns) { + current = current->next; + continue; + } + renderEntry(buffer, title, current, &c, up_x, up_y); + if (++drawn == columns*rows) + break; + } + current = current->next; + } + + button_t *button = buttons; + while (button != NULL) { + if(button->hovered) c = XCreateFontCursor(disp,XC_hand1); + image = imlib_load_image(button->hovered ? (button->icon_highlight[0] == '\0' ? button->icon_normal : button->icon_highlight) : button->icon_normal); + if (image) + { + imlib_context_set_image(buffer); + int d; + if (button->clicked) d=2; + else d=0; + int x = (button->x < 0 ? screen_width + button->x + 1 - button->w : button->x); + int y = (button->y < 0 ? screen_height + button->y + 1 - button->h : button->y); + imlib_blend_image_onto_image(image, 1, 0, 0, button->w, button->h, x - up_x + d, y - up_y + d, button->w-d*2, button->h-d*2); + + imlib_context_set_image(image); + imlib_free_image(); + } + + button = button->next; + } + + XDefineCursor(disp,win,c); + + /* set the buffer image as our current image */ + imlib_context_set_image(buffer); + + /* draw prompt */ + if (!no_prompt) { + Imlib_Font font = load_prompt_font(); + if (font) + { + imlib_context_set_font(font); + if(upside_down) { + draw_text_with_shadow(prompt_x - up_x, (screen_height - prompt_font_height) - (prompt_y - up_y), commandlinetext, prompt_color); + } else { + draw_text_with_shadow(prompt_x - up_x, prompt_y - up_y, commandlinetext, prompt_color); + } + /* free the font */ + imlib_free_font(); + } + } + + + /* draw scrollbar, currently not draggable, only indication of scroll */ + if (!noscroll) + { + int scrollbar_width=15; // width of entire scrollbar + int scrollbar_height=screen_height-2*border; // height of entire scrollbar + int scrollbar_screen_margin=50; // distance from screen edge + int pages = (entries_count - 1) / rows / columns + 1; // total pages to scroll, round up, min 1 + + // show scrollbar only if there are more pages + if (pages > 1) + { + int scrollbar_draggable_height = scrollbar_height * rows * columns / (entries_count+columns - ((entries_count+columns-1)%columns)); // height of scrollbar page (draggable), round to whole rows + float p = (entries_count - 1) / columns + 1 - rows; // current scrolled percentage + int scrollbar_draggable_shift = p ? (scrollbar_height - scrollbar_draggable_height) * scrolled_past / p : 0; + + imlib_context_set_blend(1); + + // draw scrollbar background on full height + imlib_context_set_color(255,255,255,60); + imlib_image_fill_rectangle(screen_width - scrollbar_screen_margin, border, scrollbar_width, scrollbar_height); + + // draw current scroll position + imlib_context_set_color(255,255,255,112); + imlib_image_fill_rectangle(screen_width - scrollbar_screen_margin, border + scrollbar_draggable_shift, scrollbar_width, scrollbar_draggable_height); + imlib_context_set_blend(0); + } + } + + /* don't blend the image onto the drawable - slower */ + imlib_context_set_blend(0); + /* render the image at 0, 0 */ + imlib_render_image_on_drawable(up_x, up_y); + /* don't need that temporary buffer image anymore */ + imlib_free_image(); + } + } + /* if we had updates - free them */ + if (updates) + imlib_updates_free(updates); + /* loop again waiting for events */ + } + return 0; +} + diff --git a/pkg/src/xlunch_data/themes/black_circle/bg.png b/pkg/src/xlunch_data/themes/black_circle/bg.png new file mode 100644 index 0000000..fed9a9b Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/bg.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/cancel.png b/pkg/src/xlunch_data/themes/black_circle/icons/cancel.png new file mode 100644 index 0000000..5dc6c61 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/cancel.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/hibernate.png b/pkg/src/xlunch_data/themes/black_circle/icons/hibernate.png new file mode 100644 index 0000000..1f5e591 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/hibernate.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/lock.png b/pkg/src/xlunch_data/themes/black_circle/icons/lock.png new file mode 100644 index 0000000..81ac52f Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/lock.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/logout.png b/pkg/src/xlunch_data/themes/black_circle/icons/logout.png new file mode 100644 index 0000000..2c493a3 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/logout.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/restart.png b/pkg/src/xlunch_data/themes/black_circle/icons/restart.png new file mode 100644 index 0000000..25d2aa7 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/restart.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/shutdown.png b/pkg/src/xlunch_data/themes/black_circle/icons/shutdown.png new file mode 100644 index 0000000..05b5725 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/shutdown.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/suspend.png b/pkg/src/xlunch_data/themes/black_circle/icons/suspend.png new file mode 100644 index 0000000..e5229eb Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/suspend.png differ diff --git a/pkg/src/xlunch_data/themes/black_circle/icons/switch.png b/pkg/src/xlunch_data/themes/black_circle/icons/switch.png new file mode 100644 index 0000000..0452731 Binary files /dev/null and b/pkg/src/xlunch_data/themes/black_circle/icons/switch.png differ diff --git a/pkg/src/xlunch_data/themes/classic/bg.png b/pkg/src/xlunch_data/themes/classic/bg.png new file mode 100644 index 0000000..c5d7af5 Binary files /dev/null and b/pkg/src/xlunch_data/themes/classic/bg.png differ diff --git a/pkg/src/xlunch_data/themes/classic/icons/logout.png b/pkg/src/xlunch_data/themes/classic/icons/logout.png new file mode 100644 index 0000000..fa6dddb Binary files /dev/null and b/pkg/src/xlunch_data/themes/classic/icons/logout.png differ diff --git a/pkg/src/xlunch_data/themes/classic/icons/restart.png b/pkg/src/xlunch_data/themes/classic/icons/restart.png new file mode 100644 index 0000000..7c80934 Binary files /dev/null and b/pkg/src/xlunch_data/themes/classic/icons/restart.png differ diff --git a/pkg/src/xlunch_data/themes/classic/icons/shutdown.png b/pkg/src/xlunch_data/themes/classic/icons/shutdown.png new file mode 100644 index 0000000..8c25c3a Binary files /dev/null and b/pkg/src/xlunch_data/themes/classic/icons/shutdown.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/bg.png b/pkg/src/xlunch_data/themes/color_circle/bg.png new file mode 100644 index 0000000..534ec0c Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/bg.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/cancel.png b/pkg/src/xlunch_data/themes/color_circle/icons/cancel.png new file mode 100644 index 0000000..92e07fc Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/cancel.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/hibernate.png b/pkg/src/xlunch_data/themes/color_circle/icons/hibernate.png new file mode 100644 index 0000000..c3e9615 Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/hibernate.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/lock.png b/pkg/src/xlunch_data/themes/color_circle/icons/lock.png new file mode 100644 index 0000000..1247c1d Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/lock.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/logout.png b/pkg/src/xlunch_data/themes/color_circle/icons/logout.png new file mode 100644 index 0000000..b9a9fc4 Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/logout.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/restart.png b/pkg/src/xlunch_data/themes/color_circle/icons/restart.png new file mode 100644 index 0000000..4546788 Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/restart.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/shutdown.png b/pkg/src/xlunch_data/themes/color_circle/icons/shutdown.png new file mode 100644 index 0000000..2566faf Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/shutdown.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/suspend.png b/pkg/src/xlunch_data/themes/color_circle/icons/suspend.png new file mode 100644 index 0000000..71e9a82 Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/suspend.png differ diff --git a/pkg/src/xlunch_data/themes/color_circle/icons/switch.png b/pkg/src/xlunch_data/themes/color_circle/icons/switch.png new file mode 100644 index 0000000..1858566 Binary files /dev/null and b/pkg/src/xlunch_data/themes/color_circle/icons/switch.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/bg.png b/pkg/src/xlunch_data/themes/white_circle/bg.png new file mode 100644 index 0000000..63d7894 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/bg.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/cancel.png b/pkg/src/xlunch_data/themes/white_circle/icons/cancel.png new file mode 100644 index 0000000..39cbc62 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/cancel.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/hibernate.png b/pkg/src/xlunch_data/themes/white_circle/icons/hibernate.png new file mode 100644 index 0000000..e4131e3 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/hibernate.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/lock.png b/pkg/src/xlunch_data/themes/white_circle/icons/lock.png new file mode 100644 index 0000000..e03ed8a Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/lock.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/logout.png b/pkg/src/xlunch_data/themes/white_circle/icons/logout.png new file mode 100644 index 0000000..bd8d456 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/logout.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/restart.png b/pkg/src/xlunch_data/themes/white_circle/icons/restart.png new file mode 100644 index 0000000..326593e Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/restart.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/shutdown.png b/pkg/src/xlunch_data/themes/white_circle/icons/shutdown.png new file mode 100644 index 0000000..af146cd Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/shutdown.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/suspend.png b/pkg/src/xlunch_data/themes/white_circle/icons/suspend.png new file mode 100644 index 0000000..bc3dbf4 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/suspend.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle/icons/switch.png b/pkg/src/xlunch_data/themes/white_circle/icons/switch.png new file mode 100644 index 0000000..13ef45e Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle/icons/switch.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/bg.png b/pkg/src/xlunch_data/themes/white_circle_mix/bg.png new file mode 100644 index 0000000..90486b7 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/bg.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/cancel.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/cancel.png new file mode 100644 index 0000000..39cbc62 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/cancel.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/hibernate.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/hibernate.png new file mode 100644 index 0000000..e4131e3 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/hibernate.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/lock.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/lock.png new file mode 100644 index 0000000..e88be65 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/lock.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/logout.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/logout.png new file mode 100644 index 0000000..4cb49fd Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/logout.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/restart.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/restart.png new file mode 100644 index 0000000..7649c6f Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/restart.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/shutdown.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/shutdown.png new file mode 100644 index 0000000..34408a2 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/shutdown.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/suspend.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/suspend.png new file mode 100644 index 0000000..7d92846 Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/suspend.png differ diff --git a/pkg/src/xlunch_data/themes/white_circle_mix/icons/switch.png b/pkg/src/xlunch_data/themes/white_circle_mix/icons/switch.png new file mode 100644 index 0000000..c306b0f Binary files /dev/null and b/pkg/src/xlunch_data/themes/white_circle_mix/icons/switch.png differ diff --git a/pkg/themeUpgrade.hook b/pkg/themeUpgrade.hook new file mode 100644 index 0000000..d4cf675 --- /dev/null +++ b/pkg/themeUpgrade.hook @@ -0,0 +1,10 @@ +[Trigger] +Operation = Upgrade +Type = Package +Target = arc-gtk-theme + +[Action] +Description = Updating GTK theme configuration +When = PostTransaction +Depends = arc-gtk-theme +Exec = /bin/sh -c "/usr/bin/update --theme" diff --git a/pkg/tips-service b/pkg/tips-service new file mode 100755 index 0000000..6c41bb6 --- /dev/null +++ b/pkg/tips-service @@ -0,0 +1,78 @@ +#!/bin/bash + +# tips-service +# Copyright (C) 2020 Zack Didcott + +# 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 . + +appName="Hints & Tips" +timeout=15000 +urgency="normal" + + +if [[ ! -f /home/$USER/.config/monocleOS/tips-service.conf ]]; then + # Defaults + periodicTips=1 + periodicTipsFreq=120 + applicationTips=1 +else + # User Preferences + source /home/$USER/.config/monocleOS/tips-service.conf +fi + +## Daemon +function funcDaemon { + # Random UI Tips + while [[ $periodicTips = 1 ]]; do + # Array must be defined in while loop for dynamic content + tipsArray=("You can turn off these helpful tips by opening Settings, then selecting Hints & Tips." "If a program is misbehaving, you can force close it by right clicking on the cross in the top-right." "By clicking on the window icons at the top-right of your screen, you can change the layout of windows." "Did you know that you can launch the on-screen magnifier by clicking on the magnifier icon." "Get Creative. Personalise your PC by opening Settings and selecting Themes & Personalisation." "It's not you; it's me. If some things are difficult to read, you can change the system font size in Settings, then Themes & Personalisation." "Not your favourite colour? Change your system's appearance in Settings  Themes & Personalisation" "Speakers too quiet? You can change the volume by scrolling on the speaker icon on the top bar - click to mute. More advanced sound settings are found in the Settings application." "Want to start up where you left off? Try putting your PC to sleep instead of powering off by clicking the Sleep icon." "Just a head's up, your PC $(/usr/bin/monocleOS --freeSpaceCheck Home)" "monocleOS is compatible with most external peripheral devices, such as mice, keyboards and cameras." "Make sure to create a recovery key, in case you forget your password. Add a recovery key in Settings  Advanced  Recovery, then Add a Recovery Key." "monocleOS cannot protect you from all evil masterminds. Be careful who you give personal data to; if something looks fishy, stay away from it." "Rarely use a certain application? Go to Settings, then select Add/Remove Programs." "To change your background image, go to Settings  Themes & Personalisation, then select Change your Wallpaper.") + sleep ${periodicTipsFreq}m + notification="${tipsArray[$RANDOM % ${#tipsArray[@]}]}" ## Set notification to random element in array + notify-send -u $urgency -t $timeout -a "$appName" "$notification" + done +} + +## Application Tips +function funcApp { + if [[ $applicationTips = 1 ]]; then + declare -A appTipsArray=(["lock"]="To unlock your PC, type your password and press Enter." ["office"]="In Office, you can write a letter, create a spreadsheet, or even express your artistic side with Draw." ["magnifier"]="To use the screen magnifier, move the cursor over the magnifier then hold the left mouse button while moving your mouse around the screen. To close the magnifier, click on its window and exit as normal." ["settings"]="Select an option, then click OK - or press Enter. Your choice." ["web"]="Simply type in your search query, then press Enter.") + app="${1,,}" + match=0 + for arrayApp in "${!appTipsArray[@]}"; do # Compare given argument with keys of appTipsArray + if [[ $arrayApp = "$app" ]]; then + match=1 + break + fi + done + if [[ $match = 0 ]]; then + echo "Invalid application identifier." + exit 1 + elif [[ $match = 1 ]]; then + notify-send -u $urgency -t $timeout -a "$appName" "${appTipsArray[$app]}" + fi + fi + exit +} + +case "$1" in + --daemon) + funcDaemon + ;; + --app) + funcApp $2 + ;; + *) + echo $"Usage: $0 --daemon | --app [application identifier]." + exit 1 +esac diff --git a/pkg/tips-service.conf b/pkg/tips-service.conf new file mode 100644 index 0000000..2833733 --- /dev/null +++ b/pkg/tips-service.conf @@ -0,0 +1,3 @@ +periodicTips=1 +periodicTipsFreq=120 +applicationTips=1 diff --git a/pkg/toggleTouchpad.sh b/pkg/toggleTouchpad.sh new file mode 100755 index 0000000..89f749f --- /dev/null +++ b/pkg/toggleTouchpad.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if synclient -l | grep "TouchpadOff .*=.*0" ; then + synclient TouchpadOff=1 ; +else + synclient TouchpadOff=0 ; +fi diff --git a/pkg/update b/pkg/update new file mode 100755 index 0000000..bd8e1f0 --- /dev/null +++ b/pkg/update @@ -0,0 +1,73 @@ +#!/bin/bash + +# monocleOS updater - executed by automatic-update.service/timer & respective functions run by pacman hooks +# Copyright (C) 2020 Zack Didcott + +# 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 . + +source /etc/monocleOS.env + +function funcSystem { + optUpdate="-Syu --noconfirm" + optClean="-Sc --noconfirm" + systemd-inhibit --why="System Updating..." sudo -u monocle $installer $optUpdate + systemd-inhibit --why="System Updating..." sudo -u monocle $installer $optClean +} + +## Pacman Hook Functions + +function funcGrub { + if [[ $bootloader == "efi" ]]; then + grub-install --target=$bootloaderArch-efi --efi-directory=$efiPath --bootloader-id=GRUB + if [[ $secureBoot = 1 ]]; then cp $efiPath/EFI/GRUB/grubx64.efi $efiPath/EFI/Boot/loader.efi; fi # for secure boot, but won't do any harm if copied anyway + else # Assume MBR if not EFI + # find mapper device, then find physical partition for mapper (LVM on LUKS) device, then find device that parition resides in: quite simple really... :P + dev="$(basename "$(readlink -f /sys/class/block/"$(ls /sys/class/block/"$(basename "$(readlink -f /dev/mapper/$VG)")"/slaves)"/..)")" + grub-install --target=i386-pc /dev/$dev + grub-install --target=i386-pc --force /dev/$dev'1' + fi +} + +function funcMirrorlist { + reflector --latest 25 --protocol https --sort rate --save /etc/pacman.d/mirrorlist + rm -f /etc/pacman.d/mirrorlist.pacnew +} + +function funcTheme { + # Backup New Update + cp /usr/share/themes/Arc/gtk-2.0/gtkrc /usr/share/themes/Arc/gtk-2.0/gtkrc.bk + cp /usr/share/themes/Arc/gtk-3.0/gtk.gresource /usr/share/themes/Arc/gtk-3.0/gtk.gresource.bk + cp /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc.bk + cp /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource.bk + # User Preferences + cp /home/user/.config/monocleOS/arc_gtk2_gtkrc /usr/share/themes/Arc/gtk-2.0/gtkrc + cp /home/user/.config/monocleOS/arc_gtk3_gtk_gresource /usr/share/themes/Arc/gtk-3.0/gtk.gresource + cp /home/user/.config/monocleOS/arc_dark_gtk2_gtkrc /usr/share/themes/Arc-Dark/gtk-2.0/gtkrc + cp /home/user/.config/monocleOS/arc_dark_gtk3_gtk_gresource /usr/share/themes/Arc-Dark/gtk-3.0/gtk.gresource +} + +case "$1" in + --grub) + funcGrub + ;; + --mirrorlist) + funcMirrorlist + ;; + --theme) + funcTheme + ;; + *) + funcSystem + ;; +esac diff --git a/pkg/xinitrc b/pkg/xinitrc new file mode 100644 index 0000000..7c7c639 --- /dev/null +++ b/pkg/xinitrc @@ -0,0 +1,41 @@ +#!/bin/sh + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +# merge in defaults and keymaps + +if [ -f $sysresources ]; then + xrdb -merge $sysresources +fi + +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi + +if [ -f "$userresources" ]; then + xrdb -merge "$userresources" +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# start some nice programs + +if [ -d /etc/X11/xinit/xinitrc.d ] ; then + for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +picom & +feh --bg-fill --no-xinerama /home/$USER/.wallpaper.png & +gnome-screensaver & +xss-lock -- /usr/bin/monocleOS --lock & +dunst & +/usr/bin/tips-service --daemon & +exec i3 diff --git a/pkg/xlunch_menu_precompiled b/pkg/xlunch_menu_precompiled new file mode 100755 index 0000000..b624c23 Binary files /dev/null and b/pkg/xlunch_menu_precompiled differ diff --git a/pkg/xlunch_precompiled b/pkg/xlunch_precompiled new file mode 100755 index 0000000..9657e3d Binary files /dev/null and b/pkg/xlunch_precompiled differ