update files to the new openbox build

This commit is contained in:
manuel 2024-01-08 12:57:45 -01:00
parent 2479922fc0
commit 4e5e2c29d1
1524 changed files with 172108 additions and 12203 deletions

View File

@ -1,83 +0,0 @@
#!/bin/bash
# BldHelper-nightly.sh
# This script is meant to be run on the build server and expects to find and update itself from adjacent repos.
# From PepDistroConfigs, these repos are ../PepProPixMaps & ../PepProTools and are vital to having a working build.
### ## # Set build working variables HERE # ## ###
PREFIX=PepOS-testing # Sets a unique final name of the ISO and checksum so <HouseKeeping> only removes 2 files .
SUFFIX=amd64 # Also used by <HouseKeeping>. And to distinguish between amd64 and x86 or devuan and ubuntu .
BUILD=nightly # Sets which pepbld.sh to use and the location in /var/www/html/[release|rc|testing|nightly|unstable]
##################################################
### ## # Make NO Edits Below This Line !! # ## ###
##################################################
TODAY=$(date -u +"%Y-%m-%d") && export TODAY # If MasterBuilder.sh is used IT will set the date. If not used, we set it here.
FileName=${PREFIX}-${SUFFIX}-${TODAY}-${BUILD} # This will give a uniquely named and dated ISO and checksum for <HouseKeeping>.
LOCATION="/var/www/html/${BUILD}" # Tells <HouseKeeping> and the script which 2 files to remove and where to put them.
LogDir="/var/log/Live-Build" # This folder contains a log for the last $[PREFIX]-$[SUFFIX] build.
WorkingDir=~/pep_builder/MRTestRepo # * If we change servers or locations T*H*I*S line is the O*N*L*Y line to change. *
OutFile="/tmp/${PREFIX}${SUFFIX}.out"
LogFile="${LogDir}/${PREFIX}-${SUFFIX}-${BUILD}.log"
_cache="./cache"
_break=0 ; _wait=30 # Time (in seconds) to wait
cd ${WorkingDir}
./RepoUpdater | tee ${OutFile}
# Run the build script - expect 50 minutes, allow 60.
./PepBld-${BUILD}.sh 2>&1 | tee --append ${OutFile}
# Timing matters, don't destroy the old one without a replacement.
# Check for the ISO to appear and wait for things to settle.
until [ -e fusato/*.iso ]
do ((++_break))
[ $_break -gt $_wait ] && break || sleep 1
done
if [ ${_break} -lt ${_wait} ] ; then
mv fusato/*.iso fusato/${FileName}.iso
# Make the checksum file.
cd fusato
echo "# ${FileName}" > ${FileName}-sha512.checksum
sha512sum ${FileName}.iso >> ${FileName}-sha512.checksum
### <HouseKeeping>
# Remove the previous files in ${LOCATION} .
rm -f ${LOCATION}/${PREFIX}-${SUFFIX}*.iso
rm -f ${LOCATION}/${PREFIX}-${SUFFIX}*-sha512.checksum
#rm -f ${LOCATION}/${PREFIX}-${SUFFIX}*.torrent
# This is where we can create the .torrent file.
#mv $(FileName}* ${LOCATION}/
mv ${FileName}.iso ${LOCATION}/${FileName}.iso
mv ${FileName}-sha512.checksum ${LOCATION}/${FileName}-sha512.checksum
#mv ${FileName}.torrent ${LOCATION}/${FileName}.torrent
# touch -t ${_stamp} ${LOCATION} ${LOCATION}/${FileName}*
touch ${LOCATION}/${FileName}*
lb clean &
# Move the log file to the log directory.
[ ! -e ${LogDir} ] && mkdir -p ${LogDir}
mv ${OutFile} ${LogFile}
# Remove old packages from the cache directory
for i in $(grep "Del " ${LogFile} | sort -u | cut -f2,3 -d" " | tr " " "_" | tr ":" "*" | tr "+" "*" )
do for j in $_cache/packages.*/${i}*.deb
do [ -e $j ] && rm $j
done
done
### </HouseKeeping>
else echo -e "\n\tAfter $_break seconds, ISO never appeared.\n" | tee --append ${OutFile}
mv ${OutFile} ${LogFile}
fi

View File

@ -1,89 +0,0 @@
#!/bin/bash
# BldHelper-release.sh
# This script is meant to be run on the build server and expects to find and update itself from adjacent repos.
# From PepDistroConfigs, these repos are ../PepProPixMaps & ../PepProTools and are vital to having a working build.
### ## # Set build working variables HERE # ## ###
PREFIX=PeppermintOS # Sets a unique final name of the ISO and checksum so <HouseKeeping> only removes 2 files .
SUFFIX=amd64 # Also used by <HouseKeeping>. And to distinguish between amd64 and x86 or devuan and ubuntu .
BUILD=release # Sets which pepbld.sh to use and the location in /var/www/html/[release|rc|testing|nightly|unstable]
##################################################
### ## # Make NO Edits Below This Line !! # ## ###
##################################################
TODAY=$(date -u +"%Y-%m-%d") && export TODAY # If MasterBuilder.sh is used IT will set the date. If not used, we set it here.
FileName="${PREFIX}-${SUFFIX}" # This will give a uniquely named and dated ISO and checksum for <HouseKeeping>.
LOCATION=/var/www/html/${BUILD} # Tells <HouseKeeping> and the script which 2 files to remove and where to put them.
LogDir=/var/log/Live-Build # This folder contains a log for the last $[PREFIX]-$[SUFFIX] build.
WorkingDir=~/pep_builder/PepDistroConfigs/PepOSx86_64 # * If we change servers or locations T*H*I*S line is the O*N*L*Y line to change. *
OutFile="/tmp/${PREFIX}${SUFFIX}.out"
LogFile="${LogDir}/${PREFIX}-${SUFFIX}-${BUILD}.log"
_cache="./cache"
_break=0 ; _wait=30 # Time (in seconds) to wait
cd ${WorkingDir}/../
./RepoUpdater | tee ${OutFile}
./RepoUpdater -c -a PepOSx86_64 | tee -a ${OutFile}
cd ${WorkingDir}
# Run the build script - expect 50 minutes, allow 60.
./pepbld.sh 2>&1 | tee -a ${OutFile}
# Timing matters, don't destroy the old one without a replacement.
# Check for the ISO to appear and wait for things to settle.
until [ -e fusato/*.iso ]
do ((++_break))
[ $_break -gt $_wait ] && break || sleep 1
done
if [ ${_break} -lt ${_wait} ] ; then
mv fusato/*.iso fusato/${FileName}.iso
# Define a 2GiB partition, at offset 4194304, in the ISO's 3rd entry of the MBR .
dd bs=1 count=16 seek=478 conv=notrunc if=peploadersplash/P4-2GB-MBR.hex of=fusato/${FileName}.iso
# Make the checksum file.
cd fusato
echo "# ${FileName} ${TODAY}" > ${FileName}-sha512.checksum
sha512sum ${FileName}.iso >> ${FileName}-sha512.checksum
### <HouseKeeping>
# Remove the previous files in ${LOCATION} .
rm -f ${LOCATION}/${FileName}*.iso
rm -f ${LOCATION}/${FileName}*-sha512.checksum
#rm -f ${LOCATION}/${FileName}*.torrent
# This is where we can create the .torrent file.
#mv $(FileName}* ${LOCATION}/
mv ${FileName}.iso ${LOCATION}/${FileName}.iso
mv ${FileName}-sha512.checksum ${LOCATION}/${FileName}-sha512.checksum
#mv ${FileName}.torrent ${LOCATION}/${FileName}.torrent
# touch -t ${_stamp} ${LOCATION} ${LOCATION}/${FileName}*
touch ${LOCATION}/${FileName}*
lb clean &
# Move the log file to the log directory.
[ ! -e ${LogDir} ] && mkdir -p ${LogDir}
mv ${OutFile} ${LogFile}
# Remove old packages from the cache directory
for i in $(grep "Del " ${LogFile} | sort -u | cut -f2,3 -d" " | tr " " "_" | tr ":" "*" | tr "+" "*" )
do for j in $_cache/packages.*/${i}*.deb
do [ -e $j ] && rm $j
done
done
### </HouseKeeping>
else echo -e "\n\tAfter $_break seconds, ISO never appeared.\n" | tee --append ${OutFile}
mv ${OutFile} ${LogFile}
fi

674
LICENSE
View File

@ -1,674 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
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 <https://www.gnu.org/licenses/>.
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:
<program> Copyright (C) <year> <name of author>
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
<https://www.gnu.org/licenses/>.
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
<https://www.gnu.org/licenses/why-not-lgpl.html>.

797
Notes
View File

@ -1,797 +0,0 @@
2022-04-10 AM by KsWoodsMan
Been a month and been plenty busy.
The RepoUpdater is behaving well. It is at a stable state and has been production ready.
Manuel has brought in installing additional packages during the OS install.
Progress there has been steady with quite a bit to show for it.
I've created a script to build the modules from a formatted list.
It reads the list line by line testing for conditions to apply to its output.
I've given it a little but of error checking so it doesn't do screwy things when ran on a autogenerated file it has made.
It's "hacky" and may lack finese but it's working. And makes fully flesh out modules usable in calamares.
Our package lists are rather large. They can stand to be trimmed and re-organized.
2022-03-12 PM by KsWoodsMan
Still working on the repo updater.
Parts of it might best partly broken out so local builds benefit from the updating as well.
Having pepbld.sh run the updater means their repo is updated with each build.
Having the build server run each of the parts also means the developers repos could be updated nightly.
It could also mean their core files used for the release builds would be changed , daily.
For testing purposes, we still have our nightly and testing builds that can be completely unique.
2022-03-11 PM by KsWoodsMan
Working on the updater has presented several glitches in the way I was comsidering its implementation.
As the team grows and tasks/responsibilities are reallocated I've been trying to keep additional repos "aligned" to a single core repo.
The inherent problem is that there hasn't been an actual "base repo" where all of the files that make Peppermint what it is are located.
The KSTestRepo has been developement repo where these common files were located.
With only a single architecture build , this hasn't been a problem.
Keeping Devuan builds in mind, the changes being made had extra builds in mind.
Quickly adding the x86_32 builds has shown areas I hadn't considered.
I need to move away from the common files being located in the amd64 build and have a "core files" repo where we all go to get and update the common files.
This will work _much_ better at keeping the small differences from influencing the production repo.
If it's found that any of the common files breaks something in different builds, that file can be "ignored" when updating common files.
There needs to be a "first person" approach where a developer can keep their build files intact as they work on their differences.
The biggest difference are currently in peploadersplash, pepcal/calamares/modules and peppackages.
These will be the files getting updated in the unique builds in the production repo.
The other differences are in the build scripts in the root of the repo directory.
Select files , intended for the release , will also be included in the unique build directories inside PepDistroConfigs.
Then a "second person" approach to maintain the common files used by the developers for their repo.
This way there can be a "core team" for this one repo.
This will keep changes in the x86_64 builds from breaking things in the x86_32 and Devuan builds and the reverse since individual changes won't show up in the core repo.
The production repo will also need to be updated from the common or "core repo"
For a "third person" , they won't have to get all several repos to make any of the ISOs.
Cloning PepDistroConfigs will provide a central place to build any of the ISOs we've released.
At the time of a release , PepDistroConfigs will be updated with the most recent files from the outside repos and each of the unique builds.
Reducing the complexity for both the devs and end users is paramount.
Whatever goes into place must be easily repeatable for the each of the developers, as well as anyone giving it a try from the repo.
Not everoyne will have cloned the repo to ${HOME}/pep_builder, so the scripts for the updater need to be relative to the current directory.
When adding a "core repo" and to reduce some of the confusion, the build repo I've been working in could be renamed to PepOSx86_64 or similar.
To follow the same naming convention the PepI686Configs and PepDevuanConfigs could be renamed to PepOSx86_32 and PepOSDevuan respectively.
Then the directories going into PepDistroConfigs (PepOSx86_32, PepOSx86_64 & PepOSDevuan) will make more sense and won't seem disjointed.
We will all have to be in unison about this change. In the long run it will help immensely keeping things aligned in the release builds.
Check with the other devs to see how they are about renaming their repo.
External Repos Sattelite/Build Repositories ||| Build Server
o->--> PepOSx86_32 >--------->--------o->-- nightly
PepProPixMaps >--o | |
| +->--> PepOSx86_64 >------->------o-> | >-- nightly
PepProtools >----+ | | |
| +->--> PepOSDevuan >----->----o-> | | >-- nightly
PepUpdater >-----+ | | | |
| +->--(FutureBuilds)>--->--o-> | | | >-- nightly
o---<----<---o | | | | |
| | | | | |
CoreFiles >--->---o-->--o | | | |
\
`----->-------------->----- PepDistroConfigs
\
`---->-- Release ISO's
2022-03-01 PM by KsWoodsMan
My last 10 days have been quiet here. I've been working in several areas at once.
1) Combining the new x86_32 build into what is existing in the production repo at PepDistroConfigs .
2) Working on implementing the package additions from the x86_32 builds into the x86_64 builds.
3) Working on scripting to build an effective list , with full descriptions , from the .yaml files provided.
4) Adding in the source file, for the .yaml script, whether to certain packages are installed , by default , and allow the enduser to unselect them, if desired.
5) For offline installs, working out which additional packages will be installed by default and adding them and their dependencies to ./pool on the ISO.
6) To get our sources.list in the live-session and available to the installer.
7) Yet another full re-write of the autoupdater to take in fine grained differences between the 2 separate builds incorporating them into the Production Repo.
8) To keep the auto-updater from interferring with the builds, I'm considering implementing it in the BldHelper-*.sh script for the final build.
This way when a new release is cut it will pull from the adjacent repos, updating itself and push the changes for the new release to the public repo.
8) Continuing to keep the new Devuan builds in mind using free time and breaks to search for instances where they are using Live-Build instead of the Devuan SDK
Though nothing is wrong with the std SDK it doesn't fit well with the current toolset.
9) Working towards a distro update so people that have installed from earlier versions can bring their installs up-to-date with the most recent release.
Keeping in mind that some users may have modified their system as they make it their own, not breaking these systems and not causing data loss.
10) Scripting the "changing of the ISOs" so this doesn't have to be babysat or manually tended to. After a release ISO gets cut it updates the SF and GitHub locations.
11) Looking at the multi language support for the x86_32 builds to also incorporate this into the x86_64 builds and later into the Devuan builds.
12) And then there is _always_ the additional time given to questions and comments in the forums.
* come back and add the updates to each of these, in footnoted form, in this same section or follow up reffering back to this entry.
2022-02-21 PM by KsWoodsMan
More housekeeping was done removing unwanted packages , as voiced from within the community.
Starting to add the newer contributed version of calamares.
Notice was given to look over the driver modules carefully as there will be diffences between architectures.
Some minor additions/changers were made in the adjacent x86_32 repo to take in the common files for the distro specific apps.
This should make templating for the Devuan builds easier. As well as good pointers for use in the auto updater.
This might be where my previous idea of having "skinny trees" will work.
To have a directory for each build inside PepDistroConfigs.
In each of the mini repos is the files specific to that build.
Along side those build specific files/directories are symlinks pointing back to the main repo in the parent directory, for common files.
As well as a symlink in the "skinny repo" pointing to fusato in the parent directory.
During the weekly updates to the main repo the contents of ../PepProPixMaps and ../PepProTools will get copied into place in PepDistroConfigs/PepProPixMaps and PepDistroConfigs/PepProTools.
This way all work submitted to the 2 previously mentioned repos prior a few minutes before build time will be included in the release build.
And due to the relative nature of symlinks, while the build is running in fusato and goes back to the source directory, it will find either the symlinks pointing to the common directories in the parent
or it will find it's uniquie directories and files required to buld an ISO in it's mini-repo directory.
I don't even think any tweaking of the "pepbld.sh" files will be required. They can go into the repective mini repo, unchanged.
The get the unique builds to run from the parent repo, create a script in the parent directory of PepDistroConfigs for each of the builds. Call it Build-amd64-ISO.sh or Build-i686-ISO or Build-Devuan-ISO ... you get the picture. ;)
This script makes sure a build directory exists or will create it for a first time build. It can also take care of renaming the ISO , much like is done in the BldHelper scripts meant for the build server.
The script will cd to the mini-repo and start a build from there. All of the symlinks to requred directories (in the parent) will be in place and the unique files for it's build will be in the mini-repo.
Each build maintainer has their own repo.
Each of the unique builds are separated by as much as is required.
Since the Main repo gets updated on a regular schedule anyone accessing the repo can get this one repo and be able to build any of our ISO's being offered.
There shouldn't be any confusion over missing files or a need to pull in adjacent repos.
Everything will be in one easy place to find and can start their build immediately.
If the builds can't share "fusato" build directories
Each build repo needs to follow some predfined templating in the layout, to match their counterparts,
"Smart" & "Pretty". I like it. Now to start implementing it.
2022-02-21 AM by KsWoodsMan
Still more HouseKeeping done. This includes removing peptools in favor of the adjacent PepProTools repo holding distro specific apps.
Getting ready for a transition to a newer and more capable version of the calamares installer.
I'll be working this into the testing builds then nightly and finally to the release builds.
Having the builds all separated will take some "creativity" to mesh them all into the main repo.
LOL - "The more creatively you try to tweak things the creatively they can break."
I think it is doable. It will require a much finer grained updater than initially expected.
Until the batch updater is fully functional, there will be some minor difference made in the build server's crontab for the release build.
Still more HouseKeeping in this repo. More of the x86 files found and removed.
Noticed dissimularities between the directions the builds may be taking.
Some may be good across the board.
Not wanting to stray to far from what I know of as the core principles I'll hesitate to include all of them, till we are all in agreement.
2022-02-20 by KsWoodsMan
Added 3 additional packages to the nightly build. These include gufw, mugshot and simple-scan. Dropping qt5ct from the testing builds as it no longer seems warranted.
A GUI interface for iptables seems reasonable and mugshot doesn't take much space to appease some crowds.
And then simple-scan that I'd forgotten to include/test with a network scanner during the final testing phases.
After making a new repo to accomodate the 686-pae builds much HouseKeeping was needed in this directory.
Separating the builds allows me to more fully focus on dev of the amd64 version and the upcoming Devuan version.
2022-02-19 by KsWoodsMan
In the 3 external repos used for common files, the underscores ( _ ) were removed from their names.
The BldHelper scripts wered edited to reflect the new change.
Be sure to adjust any local git directories for this change as well as changing the PepBld scripts to relect the new changes.
Proposed adjustment to the version od calaraes being used was accepted with enthusiasm giving many additional option during the OS install.
Also, Net Install options were considered and agree to ne an upcoming "feature add".
2022-02-18 by KsWoodsMan
Additional repos were added to Peppermint_OS . These include Pep_Pro_PixMaps and Pep_Dev_Tools as well as renaming Pep_Hub to Pep_Pro_Tools.
These will be used as common files to be sure apps in /opt/pypep have the most current set of icons available while building ISOs.
Updated BldHelper-*.sh scripts used by the server for automated builds.
The PepBld-i686-*.sh files will need 3 lines edited or removed / moved to a new area at the end of the build script(s) to find these current files.
2022-02-13
In the forum, at https://forum.peppermintos.com/index.php/topic,11171.msg107269.html ,
ManuelRosa has expressed enough interest in a 32-bit version to have gone to the trouble of posting the required edits for the build.
All the required information was in one place. It was well presented and easy to follw (: nicely done ! :) KUDOs !!!
This looks like a good thing, for some. Be sure to watch this thread for involvement and acceptance.
Being a "community driven project" , I see no reason, at this point, not to give it firm consideration.
Some of the web reviews I've heard of, have seemed disappointed saying "They aren't going to offer 'this'."
That I know of, there hasn't been a conscious decision made NOT to include this.
The first thoughts were to get the amd64 version out *first*, then follow it with additional builds.
2022-02-12 AM
Just finished getting the Snap Store in hub to work. I hope.
Fixed the old error in hub.py involving btnspm/lblspm to btnsnst/lblsnst .
Added ssst to run an installer after snapd is recognized as installed when the hub starts.
Added a symlink in pephooks/normal/0600-... from snap to /usr/bin/snap-store.
Added a test for /snap/bin to exist. this shows up after `sudo snap install snap-store && snap-store` is run/
Added more to that , if not exist then install it using snap.
This is after countless fresh installs because purging snapd wasn't sufficient at removing everything.
Logged into the build server to build a new release ISO which includes current fixes in the new Peppermint Hub.
I did mention the existance of the replacement for Release 2022-02-11 that fixes the PepHub troubles.
A new peppackages.py is in the works. So It's unclear to me if the current revision will be updated immediately so the hub still works after snapd is installed
or if the current release will be skipped waiting for the newer peppackackages.py .
I REALLY need to get the proceedure from G how to update the release files at GitHub and SF .
Having this info, I could script it into a cron job on the DO server.
Checked persistence with a /home partition. It added 10 seconds to boot-up. OK not bad, it's a really slow USB 2 drive.
the last test, adding /opt to persistence was painful. Check later if this has improved.
Then try it with the slow USB for full persistence. Comparing that to Pep-10 on the ame USB and with a USB-3 drive with far better specs.
noon: I checked into the build server to see why a new build hadn't happened for the testing build.
Something in the build caused it to crash but not sure at what point. The following build overwrote the tmp logfile.
Fix this in the housekeeping portion of the BuildHelpers so even if the build exits early the logs still get moved out of the way for the next build.
PM: Added a comment in the checksum file of the release ISO showing the DOB of the ISO.
This should make it easier to verify that a newer ISO is available to devs and end-users.
Not sure how well it is going to work out trying to also check pre-dev repos for new files to include those files in the Dev Repo.
This seems better placed with the author/maintainer there. When they are ready for files to end up in the Production repo it would seem more natural to have the author push them to the De-Repo.
Then when edits are found to be needed , in the Dev repo , for the editor to push those changes from the dev repo back to the Pre-Dev as well.
This would to help keep old errors from being reintroduced.
Directly mentioning certain files, in the dev repo, have changed Has Not been effective at keeping previous errors from being re-introduced from pre-dev.
Otherwise, The auto-updater will probably have to be rewritten to use rsync to scan raw files in the online repo.
Instead of the much simpler method of looking for local changes between the Dev repo (KSTestRepo) and the Production repo at PepDistroConfigs.
There were times weeks went by that finished files were sitting in a pre-dev repo and not pushed to the production or dev repo.
Some of the finished files might have been pushed to the production repo as well.
Previously, this has caused much confusion of what was or wasn't a final version/revision.
Also several setbacks occured , having the final version was in production repo, but never showing up in Developement for testing by others.
Also, Never having gone through the dev repo, no review was ever done on them.
Because these final versions never appeared in the dev repo (as expected) they were re-written with older versions or not included.
This may stem from my not having worked in the same shop as other dev's and not being fully aware of the S.O.P. in use by them.
I do think it is prudent, making for a smoother workflow, for the _author_ or _maintainer_ of cetain files/dirs to move their changes from pre-dev to the dev Repo.
If edits in the *Dev Repo* happen _and_ a pre-dev repo exists where the originals reside, then it also makes sense for the edits to pushed to where the pre-dev work exists.
This way, the orginal author sees and gets the newest edited files when they renew local copies by pulling from the pre-dev repo.
2022-02-11
Pulled down the web copy to try and burned a fresh one from testing.
The release was looking good till someone said the SnapStore in the hub wasn't working, again.
He gave an example of the error pointing to line 233. YUP ! an old error keeps finding it's way back into that file.
After snapd is installed in the system the hub looks at it differently and calls another app than the original.
Thats fine except the new action isn't defined and nothing is written there for it.
Wrote a how-to for setting the pinning as expected with unstable only available when explicitly called upon.
What took 20 minutes in some web shows takes less than 2 minutes and BANG ! its done and working completely as expected.
Figured out that LUKS encryption DOESNT work for the / partition, during an install.
It wasn't spelled out exactly.
That fact was merrily danced around with "can be used to encrypt /home or swap partitions and LVM's, except for boot.
Just because / wasn't mentioned ... was and should be No indicator it works on / . OK issue closed.
Workarounds are available but not using or during a normal install. Sheesh !
Added an extra line to BldHelper-release.sh to add the date of the released ISO in the checksum.
It wasn't much and adds 37 bytes to the file size taking the checksum from 153 bytes to 190 bytes.
2022-02-10
In the testing builds - I changed a variable for the repo from bullseye to stable.
The build went through as hoped. Boots and all works correctly as it should .
Changed the sources.list and 99pin-unstable to relect testing (50) unstable (10).
I do get a warning about apt expected bullseye-updates but got back stable-updates.
Everything other than that notification works. pinning, updates, installls ...
Very useable.
Added bluez and bluez-firmware to improve functionality for BT users.
RWC has mentioned inputattatch for Iphone devices. It doesn't look big or have large dependencies. OK
Gearing up for the next release. Still working on the robo-updater. Parts are working correctly.
Went a week without incremental updates to the Production repo handled it in record time compared to the same, by hand, a little each night.
The build scripts in the Dev repo are going to HAVE to be manually updated. not much getting around that.
Once the RU can spot a difference it will move the Dev file to Production. But moving changes from the testing to nightly to the release builds hasn't proven to be scriptable.
The pinning is absolutely correct.
Been waiting for edits to the hub and actions source file to come in. Life gets in the way sometimes and wasn't back till hours after they arrived.
No time to review or test, they were pushed through.
Found a build log from the Debian XFCE4 project, takes some 'gleaning' to pull info from it but seems we are on similar track.
Theirs seems to be using 'make' where ours uses shell scripting. Potato Patoto .
Not as bad as finding Qt options for calamares from a hexdump of the binary .
2022-02-08
The misconfigured pinning has been resolved by adding a colon (:) as needed in the correct location.
For the LUKS issue . I'll be pulling down a src copy to read, looking for comments there from the author.
Looking forward to seeing a few extra additions to the welcome screen.
A couple of touch ups there should have 3 search engines added in the "Links" area at the bottom.
Also backgrounding the web apps keeps from blocking the other apps available on the welcome page.
Listening to and watching the reviews from the initial release gives insight to where their eyes fall, what they are seeing/looking for and where.
They are familiar with the XFCE4 desktop already and looking for new baubbles, gadgets, gizmos and shiny things there.
Otherwise their over-all attention seems lost quickly, not taking time to do much more than "kick the tires". CI|CD we'll stay in the forefront for delivery there.
Now that the overall pace has slowed, dig deeper into the back-logs.
We have tons of X-apps installed that aren't showing up in the menus.
Yeah, ok , they aren't the prettiest (xcalc) but they _are_ there and available but gone unnoticed and are the basis for better looking apps.
maybe do something like - for i in $(busybox --list); do [ -x $(which $i) ] && ls -l $(which $i) || echo "The app $i is not in our path." ; done
Submitted a newer peppackages for review with 3 addditional files to include DDG, Yandex and Metager search engines at the bottom.
I didn't have any 20x20 pngs for the icons for them. And mentioned this.
The changes are minor but stop the app from blocking new instances of the additional features.
Blocking them doesn't stop them from being activated. they all go into a queue causing them to act similar to pop-ups coming from nowhere.
In the older version this is demonstrated by starting one app then trying to oppen different apps.
repetive clicking any of the buttons causes that one to restart or others to restart over and over.
2022-02-07
Lasts nights build to test encryped install runs through without errors.
Reboots are as normal , using UEFI , grub config has the calls to load crypto modules, they are present.
The decryption password is asked by grub on boot, boot process starts and times out trying to access the root partition.
The partition can be accessed from another installed OS as well as from the live-session.
It's not errors with the encryption nor the password. The problem is in the initramfs.
Been thinking about stream lining parts of the build by adding 2 more directories AFTER the 2022-02-10 build.
These 2 directories, pepnightly and peptesting, will have pep* sudirectories containing files unique from the release.
2022-02-06
Referring back to 2022-02-03 unstable has been commented out of /usr/sbin/sources-final.
Pinning in /etc/apt/preferences.d.99pin-unstable has been commented out of the PepBld-*.sh scripts.
A bonafide concern has came in about installing with encryption. Basically "Not Working" is accurate.
Grub is asking for a boot password. Good so far.
Grub menu Selection comes up as expected. But the boot process stops while trying to decrypt the partition.
Drops to a root initramfs prompt.
Looking for missing depenencies points to cryptsetup-initramfs & cryptsetup not being in the initrd.
https://live-team.pages.debian.net/live-manual/html/live-manual/customizing-run-time-behaviours.en.html#588
echo "cryptsetup" > config/package-lists/encryption.list.chroot
2022-02-07 Looking at previous L-B log files, cryptsetup and cryptsetup-initramfs are and have been getting into the build.
but don't seem to be appearing in the initrd for use during booting.
I may hove to extensively go through build logs as well as debug files for the installer to see where they're getting dropped.
2022-02-06 AM
It's coming to notice that some of apps expected to be current in the stable repo are not getting updated.
FF-esr seems to be high on the list for some.
With reports of ver. 91 being in old-stable but not stable sounds like it was removed by Debian or in the middle of a "re-fit". Just our luck.
From the installed OS, Look into how pinning in being handled for this.
It seems odd that the Live-session isn't behaving here as expected. But then they _are_ 2 different animals.
Noticed also was the lack of SPM in the hub. Odd that it was seemingly defined and expected to be there.
A quick fix there should have the button location brought out to the GUI.
Installing to an encrypted partition has not gone as well as expected for those that use it.
Seems as though either a depenency is missing from the live session , not being installed , or it is removed during the install.
2022-02-05 Ks
With the release behind us , I want to spend a bit of time to "soften" the wording in the boot config filies.
Change "Recovery" to "Direct Boot" and have seperate menues for sda sdb nvme01 mmc0 and mmc1.
Then trim the padding from the file(s) as most is now unwarranted
2022-02-06 PM Also to add a timeout before booting to a default.
Devuan is next up on the list. Coming in at the tail of the Pep-amd64 project I didn't have much time to really take in the entire process.
Thankfully we managed and What is there , none of us should feel as though any part of it requires defending.
Having some, recently invited, fresh eyes on the project should help things.
There will always be someones pet app that didn't go in the build.
It's expected to happen. Yes, Peppermint has changed.
Otherwise it would have been Pep-10 Re-respin.
We brought some of the classic looks and brought with us new innovation.
2022-02-04 Ks
Adding an ampersand (&) to the end of nearly all of the commands in the welcome window allows more than one child window to be opened.
example:
def rls ():
# pwel.destroy()
os.system('python3 /opt/pypep/release.py &')
The exceptions to this is for peppackages.py and for hub.py .
These 2 apps import singleton to allow only a single instance.
Without the "&" the hub and the the others will block the other apps, til the first one is closed.
With the "&" it will allow multiple instances of each (except hub.py and peppackages.py) and also no longer blocks the other apps from starting right away.
Also, an error message that python3 was anable to raise the window for hub.py and another error for peppackages.py .
Second of notice was , adding "&" to the pks command breaks some retries opening peppackages.py .
Logging out and back in corrects this, temporaily. This app is now "stand alone" with python3 in the bang-line.
More trial and error testing this without "python3" folowing pkexec is warranted.
Mentions have been made about MeWe not getting attention in the Welcome screen.
Another "nice feature" in the bottom row would be to have one to open a WebSearch to metager.org or duckduckgo.com.
Really cool would be if it had an address bar.
This would allow users to use the agnostic browser to find and DL their browser of choice, not in the debian repos.
22-02-03 Ks
Had a ZDNET article pointed out about a "serious security vunerability" using pkexec .
After aplying their recommended patch, this broke more than it fixed as the set UID bit for root is REQUIRED.
This patch was immediately removed.
Unpinned the stable repo from 900 to match Security and Bullseye-Updates at 500 .
Left unstable pinned to low priority (10)
Added --security true \ to the testing builds. This should keep things curent as well as allow Debian to manage taking care of the pwnkit for pkexec.
--backports true \ was also a recent addition, for Nvidia drivers.
2022-02-02 Ks
We released to the public. Not the frantic Grand Re-Opening I'd expected. But, it is building.
At least the pirates aren't killing the tourists and the Dinosaurs aren't eating them either. yay.
2022-02-01 Ks
With no clear route back to the Welcome window, with the exception of pge, "pwel.destroy()" has been commented out from welcome*.py.
This keeps the Welcome Window alive as the parent process.
The exception to this was for the pge command which does allow the parent to close , in favor of the Extras.
Closing these with the button, instead of using the window manager decorations, allows these to return to the main_loop.
Check also if the min, resize & maximize window decoration does the same.
2022-02-06 PM Closing the task by using the window decorations does NOT allow pge.py to return to the Welcome screen.
2021-01-02
Plenty to update but not sure where to start.
Calamares - To me, the look has improved considereably. Still a few places to change.
- font brightness +/- depending on the background intensity.
- buttons to resize and change their color (on hover).
- width of some dropdowns should be decreased.
- color change in the backgrond for tool tips.
- tweak the size and aspect ratio for the slides to better match that area.
- darken or lighten the intensity of some "icons" GPT/MBR in partittion selection, "About" and "Finished"
32) This really should have been started as a Journaled Log with dates and times.
Then add to the journal references to the section here more as a ToDo at the top and a DoneList towards the bottom.
A full rewrite here is in order. The journal should contain the thoughts and actions for the day , referencing entries for when the thought began.
For completness, retain this original Notes file which began in early to mid-November of 2021 and move forward to a journal style log.
31) This seems like as good of a time and place to start a bulleted list of minor things in the glib-2.0 directory.
Things more associated with "the feel", as opposed to "the look". Small item I have been working towards as this has progressed.
- set peplive password to "blank" - # This must be rooted out in a live-boot or live-config setting, found on the ISO but inserted during builds.
- keyboard numlock = on - Done
- remember numlock state = true - Done
- remember session = false - Done
- Alps touchpad edgescroll = true - w.i.p .... look in /usr/share/glib2.0 for these in gsettings.
- Alps touchpad taps = true - w.i.p .... my laptop has this issue ~/.config/xfce4/xfconf/xfce-perchan*/pointers.xml
- Synaptic touchpad edgescroll = true - w.i.p .... look in /usr/share/glib2.0 for these in gsettings.
- Synaptic touchpad taps = true - w.i.p .... Dustins laptop has this issue ~/.config/xfce4/xfconf/xfce-perchan*/pointers.xml
- touchpad 2 fingered scroll = true - Done
- nemo right clicks to open terminal - Done * This setting changes during OS install. Continue to rely on a symlink for this.
- thunar open maximized = false - Done
- thunar on open dimensions = 724x400 - Done
- firmware-ralink for my MT7601U wireless - # Misconfigred RTL8188CE module, breaks WiFi till RTL8198uu module is unloaded.
- firmware-mediatek for my RTL8188CE - # Not finding the correct module and uses module RTL8198uu instead.
- firmware-iwlwifi for intel wirelesscards - Done
-
-
-
- - - - - - -
30) In an attempt to speed up the build process and lower the bandwidth used, I have been (mostly) able to take care of stale mountpoints in the chroot(s).
Leaving the ./fusato/cache directory in place and deleteing ALL other files and directories around it lowers local BW usage by 300 GB/mo .
This also reduces the time required, during builds, to fetch 800+MB of .deb packages.
On my slow connection this saves me 30 - 45 minutes for each build.
Builds are disk intensive. Compared to using a spinning disk, using a SSD drive would cut local build times to under 30 minutes.
29) During a build ,`lb`creates and uses mountpoints in the chroot(s) in fusato.
If a build fails it leaves these set and causes problems that have plagued the build process, producing inconsistent ISO's in the process.
The command `lb clean` probably takes care of these as well as removing old files from the last build.
Piping the output of
`mount` => `tac` => `grep "${PWD}/fusato/chroot"` => `cut -f3 -d" "` => `umount`
takes care of unmounting them is the opposite order as when they were mounted by a previouly failed build.
Starting a build with "--clean \" may also do something after the obvious files and directories are revoved.
This means, after a failed build (locally or on the remote server) no more manual intervention for this before the next build starts.
28) New Years Day 2022 - I found/made time to start working ahead a little bit.
I Started woring (locally) on a separate build that doesn't rely on "--apt-recommends true".
And I thought I was having a hard time getting things right for online/offline grub and grub-efi installs.
It is progressing. I've gotten ahead of myself trying to build the live session without having the bootstrap setup correctly.
By not having the bootsrap built correctly, with `live-boot` included, `lb` isn't creating any user accounts to log in to, effectively.
I can still get into the bootstrap with "init=/bin/sh" in the boot configs for the ISO .
Jan 13, 2022 , I added live-boot to the unstable build to see if this creates a user account used to log into the live-session. - Nope
27) While on the welcome window , be sure to check whether the manual one won't open while the auto version is running and vise-versa.
While both can be opened at the same time, it is unlikely to happen.
Changes made to welcome.py and welcome_man.py causes welcome.py close with the PepGetExtras (pge) and reopens welcome_man.py .
26) The startup Welcome Window still "destroys" itself when anything there is activated.
The devs know and anyone familiar with the OS will find the one in Favorites.
New users won't know how to get it back. This will be a "point of frustration" for them and something for the YT naysayers to pick apart.
25) The Debian update from 12-18-21 has introduced a few unforeseen things.
First it was the kernel version change which was found the same day when the ISO's failed to boot.
Then, while trying to install FF the install would hang with only minor warnings being shown.
This is on "the mends" with a temporary solution going into place and a direction in mind to keep this showing up again.
Possibly adding FF-ESR as a second choice to FF but then Where do you start and when do you stop ... ?
**** Looks like the fix, for now, was to bring the FF-unstable install out to a terminal window to interact with the user.
I need to revist redirecting the IO for terminal apps to VT's. Ahhh the "Good ol' Days" from WirelessKs.net with apps displaying on 30 VT's.
Getting the I/O from `dialog` to show and respond in the output box INSIDE the installer window would look cleaner.
Look into seeing where the display box is getting redirected from.
* It is a "pipe" where the `stdout` is piped out but nothing to redirect `stdin` back to there.
All of the tty's, except where a normal user is logged in, are owned by root and only read permissions are given to members of the "tty" group.
The code in peppackages.py mentions tkinter-terminal. If this terminal opens a tty in /dev/pts/* instead of piping the output to it, run APT in it.
Other wise it might take some creativity to open a terminal in a diffent desktop,
then to use redirects such as `htop > /dev/pts/0 < /dev/pts/0 & ` . Can the same be done for `APT` ?
This should cause apt to write to AND read from the tty opened by tkinter-terminal. Will apt use it for a fallback to interact with the user ?
* How do I efffectively communicate this to the devs working in that area ?!
Backing up to FF-ESR solved this. Later, I'll still have a go looking into tkinter-terminal. redirects to/from the OS Might be useful at somepoint.
24) Had a snafu collision between ICE working and wrestling a workaround for the snapstore into this.
It seems resolved. Further testing is required. the fix was put in ./pephooks/0600-*symlinks*
Jan 13, 2022; Ice is working and no negative reports about the snap store. No news is good news.
23) It is also time to start thinking about automating the process of updating files from the dev repo to the production repo.
This shouldn't be that hard to implement. This is just up `rsyns`'s alley.
Check to be cure the creation times are intact when using `git`.
This is to see if ctime is when they appear locally or at the time they were created on the remote users system.
As long as no one creates files in the production area, automation here should succeed.
Tommy mentioned automated code checking tools to go into the dev directory. Should be doable.
22) With automated builds running smoothly for the last month, we hit a snag while trying to run them with the time overlapped.
The first build to start failed while waiting for an ISO to show up. the second build finished (roughly) on time.
It is time to implement a locking file and detection. So if a build does run over the expected time the next build won't destroy it.
This will tell subsequent instances to pause and wait for the first one to finish before continueing.
Jan 13, 2022; this still needs done. And will be even more necessary when we add extra flavors.
21) Earlier it struck me, Now that the base is stable and working, developing for this would go a lot faster if ....
I were to install the OS to a decent drive IN the machine I'm working from. This way, I am right there IN the OS.
OhMeeGawd ! How did I not see it sooner !
Install the OS with a home part on the disk - WITHOUT my current home partition attatched.
During the install create a normal user account.
Copy the requred files from the old $HOME_PART to their/my new ${HOME} and Presto !!!
Normal cavaets apply regarding protecting the home partition. Take great care not to wipe that out, Keep Back Ups !!!
*** Now that persistence is working with our ISO, This just got even easier.
20) Current discussions were on the topic of "Which default browser to use".
It's been handed down that - NO Web Broweser will be installed."
This is on the premise of "browser choice is a matter of choice left up to user (person in the seat)."
OK. Seems harsh. But, "not my baby". I'm in the delivery department not the conception department.
*** Tommy has something is the works that is looking EXTREMELY promising for use in place of an "x-www-browser".
I seen the current results. I'm thoroughly impressed. Pointing /etc/alternative/x-www-browser at it negates the need for a named browser.
It's resizable, has an address bar, goes forwards and backwards, will DL files, plays YT video and sound is working.
Getting it to accept a URL from a command line and possibly the window size on open makes this a drop in replacement.
19) My testing builds on the build server are running again.
Or so I'll find out tonight. Dec 5, 2021
It might not have needed the PATH variable set.
Having it set for `cron` won't hurt though.
18) We started with '--hdd-label "Peppermint" \' in the config portion.
We are building an ISO not a HDD image. This isn't PenDriveLinux.*
This was removed and commented out in my script, with a note.
That I can tell, Removing it hasn't seemed to affect anything.
I see no changes usings `strings -td $the_file.iso` .
* (PenDriveLinux - Hmmmm Ideas ! A working full featured desktop in under 500 MB.)
17) After setting the config vaiable "--apt-recommends true" to "false", one of the hooks scripts spit an error.
( See #29 ) Not just an error. ANY errors in the hook scripts causes the build to fail abruptly, leaving stale mountpoints in the chroot.
The error was a missing directory (or variable) where, I guess, files were to be written to (or used) during the rest of the build.
This was bad-Bad-BAD. The build crashed at 9 minutes into the run, each time.
Reading the local file /usr/lib/live/build/config has been a both a great help to trim and to break local builds.
Also, because --apt-recommends was set to 'false' `sudo wasn't installed which called some thing in 0520 and 0540 hooks to fail.
`live-build` runs as root and has no need for `sudo`. Without the --apt-recommends auto installing the kitchen sink,
the trimmed versions will need extras listed explicitly. - Choices -
Also in hooks/normal/0540- there is some odd bit there about adding a $Desktop in /root and setting the icon for the root user.
16) The pepbld-log.out shows needless time spent running 'zsync' on the ISO.
By adding "--zsync false \" in the config portion of pepbld.sh this should stop.
Its removal has shaved the local build time to 1 hour 15 minutes. (note to self - install that SSD in place of the Sandisk USB for dev desktop)
Further time saving was found by offloading the logfilie to /tmp to stop blocking R/W's for the build.
This helped locally. Not much I can do in the remote serever.
Jan 5, 2022; Another big improvement was to do writes in ./fusato to a disk on a seperate channel from where reads are done.
More gains found again by deleting ./fusato/cache/bootstrap as well as everything else in fusato EXCEPT ./fusato/cache .
This is where the .deb packages are held , as well as the InRelease and Packages.gz files for the local repository.
ALSO I unpacked the Nov 11, 2021 tarfile, from before the Debian version change in Dec, and ran a new build from there with the old packages.
As hoped, Live-Build recognized the old files and only DL'ed the files that have changed in Bullseye.
Even better was that Live-Build took care of removing old packages after the new ones were in place. Win - Win !!!
Local build times are now under 38 minutes for a 1.5 GB ISO. What HAVE I done with that SSD ?
Hmmmm , USB-3 Raid-0 is do-able and should hit the upper limit of the host transfer speeds.
15) Ran into a problem with running `./pepbld.sh` as a cronjob.
It seems the output of `lb` might need to be attatched to a terminal to run correctly. Heh ! tee to the rescue.
cronjob: runs a helper scrip and the helper pipes the outputs to a file.
`tee` couldn't care less that `stdout` gets blackholed or gets written to /dev/null.
Sending the output to /dev/null seems better than it showing up in /dev/console.
From ${working_directory}, I'll try changing the pepbld.sh line to "`./pepbld.sh | tee ../pepbld-log.out >/dev/null`"
This way the logfile will show up outside ./pepdistroconfigs in KSTestRepo .
Cronjobs run with the power of the user but not with their full environment.
We haven't been setting the PATH variable in the scripts (early on I wondered why not).
The scripts have been getting called from the CLI using `sudo`, using this does set our PATH.
But since we are calling sudo in the crobjob the script errors/exits the first time it encounters a command NOT in the cron user's path.
*** The addition of "PATH="/sbin:/usr/sbin:/usr/local/sbin:$PATH" on the line immediately following #!/bin/bash will make the scrips more portable.
14) I must have missed a memo that the ISO is getting trimmed and shrunk to about 1GB, or less.
The idea for this seem to be partly due to "choice" the end user has the "choice" to add what they want.
The end user might know what choices are available. Seemingly , more than Half of windows users cant find the Control Panel.
A new user or windows convert is likely to give up and go elsewhere since they won't know what choices are available.
They won't know that synaptic is a package manager or even how to use a CLI text editor, much less able to run `sudo apt install`.
Maybe I'm missing something That perhaps there is the plab(???) of a sleek racer inmind for one set of ISOs.
And another ISO to appeal to the new enthusiasts. Pep 10 was done very nicely with just 1.6GB. Even At 1.4 it doesn't seem lacking.
13) I been noting the location of lint files not needed by the Live-Session or the installed OS.
Getting these cleaned up, before final release, will help to trim the iso size.
*** This requires a or a few 'hook' called in ./config/hooks(/live and-or /normal) to run during the install - for each flavor.
This '095X-lint-removal-hook' needs written to be portable. So each of the builder scripts can re-use it.
Something along the lines of `for $file in \ list-by_path \; do [ -e $file ] && rm -rf $file; done` .
If it exists, whether it is a directory or a file, it gets removed and moves on with no errors to cause the build to fail.
This is a clean-up only. Not to be used for trimming particular flavours.
Additions should be done by listing key additions in the builder scripts.
12) An added benefit to the seperate trees is `cron` can call MasterBuilder.sh in the root of the worling directory.
From there , MasterBuilder.sh sequentially call each of the ./Builders/${FLAVOUR}.sh scripts for each build.
The ./MasterBuilder.sh take care of the house keeping deleting the old files, before renaming and putting new ones into place in /var/www/html/*/* .
**** This is all worked out. By using a BuildHelper-*.sh and a PepBld-*.sh for each build, pepbld.sh is only used for the weekly builds.
This does require a symlink from PepBld-release.sh => pepbld.sh. And keeping 2-3 more (PepBld-*.sh) files similar to pepbld.sh.
BUT this preserves the beauty of the C.D. nature. Each build has a unique build script from the release version(s).
After daily or weekly modifications are found to work well, then pepbld.sh can be edited to incorporate the changes.
This is exactly like having 4 repos all rolled into just one.
***This should roll together PERFECTLY when we start an x86 or Devuan build. All that's needed is another unique PepBld-*.sh and BuildHelper-*.sh.
From there one more line in the crontab and we are building a new "flavor" or set of flavors.
11) Been working on shifting from all the files spread out flat to organizing them in an actual tree.
A quick edit of the pepbld-orig.sh script gave me what I needed for mine.
I'll probably write a script to read pepbld.sh in the other repos that will write a script for their files.
The idea behind this is to have a common tree of things like wallpapers, icons and default config files.
THEN have several skinny trees with the specifics for a certain type or flavour of Peppermint.
Some discussion has gone on about doing more than an amd64 and x86 Debian distro.
This will allow the team to _more_easily_ support additions of Devuan and possibly ubuntu.
Another benefit is, the possibility of an easier model for rolling releases of each flavour.
A single change in the common or parent tree will immediately show up in the others as well.
Each of the build scripts will have it's own list of packages to be installed.
The common tree can be used to pick from various files & folders or backgrounds for a full, sleek or stripped model.
***Actually, the current method is just as modular and pluggable. Changing the format only means less typing for one build.
The only real benefit is it is already in a tree format.
Each of the different builds/flavors can have their own "skinny tree" with their specific config files that can be copied in place overwriting files in the main tree.
**** In the long run, having the files spead out is more like picking files off of a shelf , all in one store.
Rather than going to several orchards for a piece of fruit. The build scripts will detail what goes into each recipe.
10) The files /isolinux/live.cfg and /boot/grub/grub.cfg are close. They get the job done and look good during boot-up..
With more than just /dev/sd[a-z] now, might include /dev/nvme0[1-9] and /dev/mmc?? , each in sub-menus.
***Closer inspection of the sys/isolinux.cfg files shows a stdmenu.cfg where I should be sourcing the recovery options.
Lets get this written up, included with the builds and then sourced from stdmenu.cfg with the others.
Then go back to /boot/brub/grub.cfg to do the same. :) Modules, not monoliths. ( see #11 )
9) I have a bash_aliases file in ./pepaliases that will get trimmed. Most people in the seat won't need/use/know what is in there.
They might use linux for years ... and never know ~/.bash_aliases exists. :D
Noticed that the line for bash_aliases was segregated from the others.
It goes from being a visible file in our folders to being a hidden file in the live-session/OS .
Consider trimming the one for release further now that there is also a larger list of applets in the -nightly and -testing builds.
Cavy was informed of the dangerous applet in the testing build used to quickly recreate the partitions needed for the Dev Desktop for my local builds.
I have warned others to stick with the release and nightly builds. * We'll see how well they listen. *
8) I feel pretty confident the snapshot from Main on 11-27-21 is going to work. I went through it by hand.
There were only a few permissions that required changing. Most notably was 'install-peppermint' being copied to /usr/bin and some of the .desktop files. .
**** Created a pair of tools to recursively look for and report directories and files set incorrectly.
Keeping in mind that some .desktop files require being +x , images and config files do not.
Still seeing a few trickle into our folders that need tweaking. Nothing to worry about, for now.
7) Reverting again to a newer tarfile used for successful builds, dated 27, November 2021.
A serious snafu happened when I "off-handedly" changed the permissions of files in pepdistroconfig then sent them upstream.
This is the reason for reverting again, using `git reset SomeLongStringFoundInTheLogs` would have saved time.
I'll have to unlearn old habits as I get more familiar with `git` and working in a larger collaboration than just me & myself.
**** Git-Foo is getting stronger. `git diff ${file_name}` is a _blessing_ to review changes before a commit/push .
6) I have been able to get Offline installs working by sending a list (one package per line) to installer.list.binary.
This is the location used by Live-Build to create /pool and /dists on the ISO for offline installs.
This list needs to include grub2-common, shim-signed and shim-unsigned needs to be here as well. ... will fill this in later.
In the chroot section - I have efibootmgr. The pkg grub-common is pulled in and grub2-common is in /pool .
In the installer is - grub-common, grub2-common, grub-efi-amd64, grub-efi-amd64-bin, grub-efi-amd64-signed, grub-efi-ia32-bin,
grub-pc-bin, libefiboot1, libefivar1, mokutil, shim-helpers-amd64-signed, shim-signed, shim-signed-common, shim-unsigned & ucf .
The packages grub-efi and grub-pc are conflicting and have been removed from the installer section to be saved in /pool .
****See notes in section 5 about using `grub-cloud-amd64` and `grub-legacy`.
And the sources.list, for the live-session <== THIS was where the problem began, again. And buggy bios in a test machine. See 5 above.
5) After more that a week solid of trying to find the problem with grub on bare-metal and neglecting all else I am giving up.
I'm reverting to the tarfile used for successful build downloaded from Codeberg dated 14, November 2021.
This doesn't have the styling and improvements from @grafiksinc and @jonesy. But clamares is installing grub correctly.
**** Jan 12, 2022; Off and on for the last 2.5 months, `grub` has been the bain of my existance.
This was FINALLY cured by COMPLETELY removeing all instances of grub* from the packages list.
Using `grub-cloud-amd64` in the installer lists was an *O*M*G* breath of fresh air and burden removed.
When it comes time to start an x86/i686 build, Debian also provides the `grub-legacy` package` , just for this.
**** And now it isn't pulling in grub-pc or grub common for the offline installer. Just include the dependencies and co-depends for grub-cloud-amd64
I went back to re re-edit all of the build scripts for the full list of dependencies of grub-cloud-amd64 in the installer sections.
ALSO - Note that BFI'ing a sources.list into the builds breaks things. It requires finesse. (BFI = Brute Force)
* It wasn't broken anymore. Stop trying to fix or improve this section. Months of grief could have been better spent elsewhere.
- "Grub-common breaks grub-cloud-amd64". Something from '--apt-recommends true' is pulling grub-common in, as it's installed in the chroot.
- I feel somebody's pain as they were going through this before now.
- As it turns out, it is a compatability problem with the machine I was testing offline installs on.
### This whole setcion needs a rewrite. The problems I was having were more to do with the buggy BIOS than with the current builds.
4) Found a new problem no Pep testers found or commented on.
During "Install Alongside", Indecisively selecting the partition to use crashes the installer on the fourth click.
No warnings are given , no errors to the screen or to the install log. Maybe in /root/.config/calamares/session.log .
"... don't use this option." ???!!!??? Maybe not, but it _needs_ tested .... Check the Debian USB for the same bug.
3) During the install, Calamares is expecting `smartctl` to be in its path. It isn't in the binary.
I'm not certain (yet) whether it needs to be installed in the live-session or the chroot.
It's not fatal, the installer logs mildly complain about it not being there.
Add it to the installed packages in the binary to see.
Added it to the list in chroot.list.packages .
2) Doing an install with `toram` crashes with an "out of space" screen error at about 86% completed.
Further looking in the log shows /dev/shm is mounted to /dev/sdb1 (the ISO).
***This is supposed to be a tmpfs.***
1) **Why, oh Why** does the "Install Alongside" option rearrange the partitions order ?
The graphical depiction is correct but they are labeled out of order in the GPT.
This is going to break something for (OCD) people expecting the GPT tables to be in order.
I came in late for the testing phase. I started in UEFI beta. Check this behaviour using MBR in a Legacy install.
*** Let It Go ! ***
####################################
*) Persistence is still on a back burner as we work through Offline UEFI installs and the others take care of styling and Pepperminting.
Using ${HOME} persistence seems better currently. But ANY persistence causes the installer to fail at unpacking /live/filesystem.squashfs .
*** A thought came to mind to have a symlink from the location the installer expects it to be
pointing to the mounted FS. A regular mount , while in live session , should cover it up. This can go in configs/hooks/normal/0900-OS-LintRemoval
Nope Persistence is working now , as expected by removing stale files being maintained in peploadersplash.
*** I think I can close this one. But not the "toram" boot option. Review line 2 of this paragragh for checking persistence still.
The persistent partition is getting mounted 2x to the same directory. This is still better than when we were re-using the old EFI files in /peploadersplash/boot/efi .
Using persitence as an overlay to / was horribly slow.
Having ONLY /home mounted there was quite usable.
Adding /opt to the partition, with /home, to be able to install "foreign" applications (google-chrome) was not "great".
Manually unmounting the second instance where the persistence partition holds both /home and /opt makes this much easier to use.
Still not great , but 'marginally' acceptable. though not ready for prime-time.
I did add a few bits to the testing build.
Just after the ISO is created and before the sha512 checksum gets written, I have added a 4rd partition , outside of the ISO .
Normal tools don't allow this. But then `dd` wouldn't ordinarily be used as a partitioning tool either.
Says the one guy that uses "Disk-Destroyer" to edit boot files on a USB or ISO image.
./pephooks/540.... :
*** Skip to last paragraph ***
<strike>
I'm thinking, for calamares installer, these debs only need to be available for install
Their location would be in ${binary}/pool/main/[e,g,l,m,s]
_In Debian_, The Packages files that point to them are in the binary, in /live/filesystem.squashfs .
./var/lib/apt/lists/local-mirror.cdbuilder.debian.org_debian_dists_bullseye_contrib_binary-amd64_Packages
./var/lib/apt/lists/local-mirror.cdbuilder.debian.org_debian_dists_bullseye_main_binary-amd64_Packages
./var/lib/apt/lists/local-mirror.cdbuilder.debian.org_debian_dists_bullseye_non-free_binary-amd64_Packages
In Pep11 , these files are
./var/lib/apt/lists/deb.debian.org_debian_dists_bullseye-updates_main_binary-amd64_Packages
./var/lib/apt/lists/deb.debian.org_debian_dists_bullseye_contrib_binary-amd64_Packages
./var/lib/apt/lists/deb.debian.org_debian_dists_bullseye_main_binary-amd64_Packages
./var/lib/apt/lists/deb.debian.org_debian_dists_bullseye_non-free_binary-amd64_Packages
notice the difference between lists/local-mirror.cdbuilder and lists/deb.debian.org
I'll make a list of the packages ( ! installed to the squashfs) for Pep11 CORE and Pep11 FULL to populate these.
This should also let us have the dependency package from Sid needed for _____(?)_____
It would go in the binary at /pool/main/unstable instead of /pool/main/bullseye
In Debian the corresponding entry is - Filename: pool/main/u/util-linux/...... It is local.
EUREKA !!! We should just need to create the directory ./pepdistroconfigs/pepbinarypool .
Then set about populationg it with packages we want for the UEFI install and both CORE and FULL.
Then `Live-Build` should take care of making ${binary}/pool the local repository for calamares installer.
To test this I am going to grab /pool/* from the debian disk, insert it to the new ./pepbinarypool dir
and add a line in pepbld.sh to copy the contents correctly into the $fusato/binary/pool tree.
</strike>
<strike>
Our Live-Build and the subsequent binary does NOT know to do anything with these files.
The debian binary does NOT list these as a location to use.
*BUT* during the process of the Live-Session booting, it has a routine that DOES know.
Until this is found (look in their hooks & initrd) we'll just grab their file from in the Live-Session at /apt/sources.d/Debian*.list
It is only a single line, pointing to /pool, that we can append to /apt/etc/sources.list .
*** It's created in Debians sources-media module. *** Is ours different ? or not used ?
The directory ./peploadersplash/pool/main already exists.
Adding ./pepbinarypool is redundant on my part.
Edit my entry in ./pepbld.sh to include what was there waiting for me.
We already have "pool" in place , just need to use it.
<s>For offline, Find and use the hook "sources-media" and the related hooks correctly. </s>
</strike>
***
What IS waiting for us is the inclusion of a 'new line' deliminated list at installer.list.binary to be used by `lb`, not " " deliminated.
Later I did figure out that it could be a space deliminated list. I'd made 2 changes at the same time and accounted success to both.
That's ok though. a new-line seperated list is much easier to read and keep track of during edits or visually scanning for typos.
Live-Build uses installer.list.binary to create /pool and /dists in the ISO and calamares uses these files for Offline installs.
Between this and the inclusion of 'grub-pc' to packages.list.binary file this was the key to getting Offline UEFI installs working.
**** This is where I took out everything including all grub and grub related entries in both this list and the packages list, replacing them all with "grub-cloud-amd64" in JUST the installer list.
..... and now it isn't pulling in grub-pc or grub common for the offline installer.
I went back to re re-edit all of the build scripts for the full list of dependencies of grub-cloud-amd64 in the installer sections.
Using grub-cloud-amd64 does NOT work as expected. The calamares package lists grub-common as a dependency.
The package grub-common breaks the meta-package grub-cloud-amd64.
It mght be possible to use grub-cloud-amd64 in the packages list THEN drop in the calamares.deb so the dependency on grub-common is already met by grub-cloud-amd64.
This could open up the posibility of not needing separate ISO's for x86 and amd64 builds.
The combined ISO would be larger than either current ISO. But , because of so many shared files it wouldn't be 2x the size.
Or will `lb` spit out 2 ISO's and take 2X as long ?
If it didn't take 2X as long AND it successfully created 2 ISO's .... I haven't taken this into account during future proofing my server scripts.
no defined area
##############################
Check this during the Pep11 installer run, from inside the CHROOT .
From the "Packages" file describing the package efibootmgr:
"Note: efibootmgr requires that the kernel module efivars be loaded prior to use. 'modprobe efivars' should do the trick if it does not automatically load"
*** It's mounted correctly in the live-session as well as in the CHROOT. ****
This is for later.
###############################
Still not sure why persistence with Pep11 gets such a kick in the head.
The filesystems are getting mounted 2X instead of just once.
When doing an install with `toram`, /dev/shm gets mounted to the Read ONLY ISOfs at /dev/sdb1.
This is why the installer "runs out of space", exiting early when running `mkinitfs` .
This is supposed to be a tmpfs with RW.
*** slight mentions of this bug in other groups points to the problem as having "findiso=" in the boot config entry for the "toram" option.
One other thing slips my memory - review conversations with @cavy to jog my memory. It was the lint files.
Missing files in the lint removal section causes builds to fail at 9 minutes in.
Around 2022-01-07 I added error checking for in the script for these files.
I also added a commented list of files NOT to remove and adding to the list.
Removal of some files has had unexpected consequences in unexpected places.
Cavy's working knowledge of the GUI and retention of various information has been extremely valuable.
Having him on the team has been an asset I would dearly miss were his skillsets not been available.
The CLI might not be where he shines, yet mine are not remarkable in the GUI.
We have managed well together and the results are quite favorable. ++

View File

@ -1,301 +0,0 @@
#!/bin/bash
PATH="/sbin:/usr/sbin:/usr/local/sbin:$PATH"
# Set the working folder variable
uchinanchu="$(pwd)"
[ "$TODAY" ] || TODAY=$(date -u +"%Y-%m-%d")
# Create the build folder, move into it removing stale mountpoints and files there.
[ -e fusato ] && [ ! -d fusato ] && rm -f fusato || [ ! -e fusato ] && mkdir fusato
cd fusato
umount $(mount | grep "${PWD}/chroot" | tac | cut -f3 -d" ") 2>/dev/null
for i in ./* ./.build ; do [ $i = ./cache ] && continue || rm -rf $i ; done
# Set of the structure to be used for the ISO and Live system.
# See /usr/lib/live/build/config for a full list of examples.
# Up above is the manual description of what options I used so far.
lb config \
--mode debian \
--distribution bookworm \
--archive-areas "main contrib non-free non-free-firmware" \
--architectures amd64 \
--linux-flavours amd64 \
--apt-recommends true \
--binary-images iso-hybrid \
--firmware-binary false \
--firmware-chroot false \
--security true \
--updates true
--backports true \
--image-name "PepOS" \
--iso-application "PeppermintOS" \
--iso-preparer "PeppermintOS-https://peppermintos.com/" \
--iso-publisher "Peppermint OS Team" \
--image-name "PepOS" \
--iso-volume "${TODAY} 1" \
--win32-loader false \
--checksums sha512 \
--cache true \
--clean \
--color \
--quiet \
--zsync false \
"${@}"
# Install the XFCE Desktop
mkdir -p $uchinanchu/fusato/config/package-lists/
echo xfce4 > $uchinanchu/fusato/config/package-lists/desktop.list.chroot
echo "# Install extra Desktop packages.
mousepad
xfce4-battery-plugin
xfce4-clipman-plugin
xfce4-power-manager
xfce4-taskmanager
xfce4-terminal
xfce4-screenshooter
xfce4-whiskermenu-plugin
xfce4-docklike-plugin
xfce4-notes-plugin
xfce4-panel-profiles
xfce4-time-out-plugin
orage
thunar-archive-plugin
thunar-volman
xarchiver
lightdm
lightdm-gtk-greeter
lightdm-gtk-greeter-settings
" > $uchinanchu/fusato/config/package-lists/extra-desktop.list.chroot
# Install software
echo "# Install software to the squashfs for calamares to unpack to the OS.
dconf-editor
arandr
#gparted
gnome-disk-utility
menulibre
synaptic
system-config-printer
gnome-system-tools
screenfetch
simple-scan
" > $uchinanchu/fusato/config/package-lists/packages.list.chroot
echo "#Install system packages.
cups
curl
dkms
dbus-x11
nala
efibootmgr
fonts-cantarell
fonts-liberation
gdebi
gir1.2-webkit2-4.0
git
grub-pc
gvfs-backends
inputattach
inxi
locales
neofetch
network-manager-gnome
ntp
nvidia-detect
os-prober
pulseaudio-module-bluetooth
smartmontools
smbclient
sqlite3
wireless-tools
wget
alsa-utils
bluez
" > $uchinanchu/fusato/config/package-lists/system.list.chroot
echo "# install the Peppermint artwork.
marwaita-gtk-theme
tela-icon-theme
marwaita-for-xfwm
marwaita-peppermint-gtk-theme
pepermint-wallpapers
" > $uchinanchu/fusato/config/package-lists/artwork.list.chroot
echo "# Install Python3 packages.
python3-pip
python3-tk
python3-bs4
python3-requests
python3-ttkthemes
python3-pyqt5
python3-pyqt5.qtsvg
python3-pyqt5.qtwebkit
python3-pyqt5.qtwebengine
python3-pil.imagetk
python3-apt
" > $uchinanchu/fusato/config/package-lists/python.list.chroot
echo "# install the calamares installer to install the system to the hd.
calamares
calamares-settings-debian
f2fs-tools
xfsprogs
" > $uchinanchu/fusato/config/package-lists/installer.list.chroot
echo "# install firmware for squasfs to improve hardware compatibility.
atmel-firmware
bluez-firmware
firmware-linux-free
midisport-firmware
firmware-misc-nonfree
firmware-amd-graphics
#firmware-ath9k-htc
firmware-bnx2
firmware-bnx2x
firmware-brcm80211
firmware-cavium
firmware-intel-sound
firmware-intelwimax
firmware-iwlwifi
firmware-libertas
firmware-linux
firmware-linux-nonfree
firmware-misc-nonfree
firmware-myricom
firmware-netronome
firmware-netxen
firmware-qcom-media
firmware-qcom-soc
firmware-qlogic
firmware-realtek
firmware-samsung
firmware-siano
firmware-ti-connectivity
firmware-sof-signed
firmware-zd1211
" > $uchinanchu/fusato/config/package-lists/firmware.list.chroot
# Packages to be stored in /pool but not installed in the OS .
echo "# These packages are available to the installer, for offline use.
efibootmgr
grub-common
grub2-common
grub-efi
grub-efi-amd64
grub-efi-amd64-bin
grub-efi-amd64-signed
grub-efi-ia32-bin
libefiboot1
libefivar1
mokutil
os-prober
shim-helpers-amd64-signed
shim-signed
shim-signed-common
shim-unsigned
" > $uchinanchu/fusato/config/package-lists/installer.list.binary
# Setup the chroot structure
mkdir -p $uchinanchu/fusato/config/includes.binary
mkdir -p $uchinanchu/fusato/config/includes.bootstrap/etc/apt
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/local/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/applications
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/icons/default
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/pixmaps
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/xfce4/helpers
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/polkit-1/actions
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/fonts/pepconf
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/local/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/sbin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/lib/live/config
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/apt
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/calamares
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/default
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/lightdm
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/live/config.conf.d
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/.config/xfce4
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/autostart
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/whiskermenu
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/xfconf/xfce-perchannel-xml
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/.local/share
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/Desktop
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pypep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pypep/dbpep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/startpep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pepconf
mkdir -p $uchinanchu/fusato/config/includes.chroot/boot/grub
mkdir -p $uchinanchu/fusato/config/archives
mkdir -p $uchinanchu/fusato/config/hooks/live
mkdir -p $uchinanchu/fusato/config/hooks/normal
mkdir -p $uchinanchu/fusato/config/packages.chroot
# Copy single files to the chroot
cp $uchinanchu/pepaliases/bash_aliases $uchinanchu/fusato/config/includes.chroot/etc/skel/.bash_aliases
cp $uchinanchu/pepcal/adddesktopicon/add-calamares-desktop-icon $uchinanchu/fusato/config/includes.chroot/usr/bin
cp $uchinanchu/pepcal/calamares/settings.conf $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp $uchinanchu/peplightdm/lightdm.conf $uchinanchu/fusato/config/includes.chroot/etc/lightdm
cp $uchinanchu/peplightdm/lightdm-gtk-greeter.conf $uchinanchu/fusato/config/includes.chroot/etc/lightdm
cp $uchinanchu/pepsources/sources.list $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/PepProTools/xDaily $uchinanchu/fusato/config/includes.chroot/usr/local/bin
cp $uchinanchu/PepProTools/Welcome_auto.desktop $uchinanchu/fusato/config/includes.chroot/etc/xdg/autostart
# Copy directory contents to the chroot
cp $uchinanchu/pepapplication/* $uchinanchu/fusato/config/includes.chroot/usr/share/applications
cp $uchinanchu/pepgrub/grub $uchinanchu/fusato/config/includes.chroot/etc/default
cp $uchinanchu/pephooks/live/* $uchinanchu/fusato/config/includes.chroot/usr/lib/live/config
cp $uchinanchu/pephooks/normal/* $uchinanchu/fusato/config/hooks/normal
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.bootstrap/etc
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.chroot/etc
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/peposrelease/* $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/peposrelease/* $uchinanchu/fusato/config/includes.chroot/usr/lib
cp $uchinanchu/peppolkit/* $uchinanchu/fusato/config/includes.chroot/usr/share/polkit-1/actions
cp $uchinanchu/pepdb/* $uchinanchu/fusato/config/includes.chroot/opt/pypep/dbpep
cp $uchinanchu/pepuserconfig/* $uchinanchu/fusato/config/includes.chroot/etc/live/config.conf.d
cp $uchinanchu/PepProPixMaps/* $uchinanchu/fusato/config/includes.chroot/usr/share/pixmaps
# Copy recursive files and sub-directories, containing symlinks.
cp -r $uchinanchu/PepProTools/* $uchinanchu/fusato/config/includes.chroot/opt/pypep
cp -r $uchinanchu/pepcal/calamares/branding $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp -r $uchinanchu/pepcal/calamares/modules $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp -r $uchinanchu/pepxfce/xfce4/panel $uchinanchu/fusato/config/includes.chroot/etc/skel/.config/xfce4
cp -r $uchinanchu/pepxfce/xfce4/xfconf/xfce-perchannel-xml/* $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/xfconf/xfce-perchannel-xml
cp -r $uchinanchu/pepxfce/xfce4/defaults.rc $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/whiskermenu
cp -r $uchinanchu/pepxfce/Thunar $uchinanchu/fusato/config/includes.chroot/etc/xdg/
cp -r $uchinanchu/pepgrub/themes $uchinanchu/fusato/config/includes.chroot/boot/grub
# Resolves Synaptics issue. Might be better in a conf hook.
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/distro-info
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates
ln -s Debian.info $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates/Peppermint.info
ln -s Debian.mirrors $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates/Peppermint.mirrors
ln -s debian.csv $uchinanchu/fusato/config/includes.chroot/usr/share/distro-info/peppermint.csv
# Place files unique to Nightly builds here.
cp $uchinanchu/pepnightly/pepaliases/bash_aliases $uchinanchu/fusato/config/includes.chroot/etc/skel/.bash_aliases
cp $uchinanchu/pepnightly/pepapplication/* $uchinanchu/fusato/config/includes.chroot/usr/share/applications
cp $uchinanchu/pepnightly/pepcal/install-peppermint $uchinanchu/fusato/config/includes.chroot/usr/bin
cp $uchinanchu/pepnightly/pepcal/sources-final $uchinanchu/fusato/config/includes.chroot/usr/sbin
cp $uchinanchu/pepnightly/pepmultimedia/* $uchinanchu/fusato/config/archives
cp -r $uchinanchu/pepnightly/peploadersplash/boot $uchinanchu/fusato/config/includes.binary
cp -r $uchinanchu/pepnightly/peploadersplash/isolinux $uchinanchu/fusato/config/includes.binary
# Build the ISO #
lb build #--debug --verbose

View File

@ -1 +0,0 @@
pepbld.sh

Binary file not shown.

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
PepProPixMaps/kumo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
PepProPixMaps/luakit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

BIN
PepProPixMaps/xd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,158 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* this script is for performing actions for the hub
*
"""
import os
import subprocess
def osettingsmgr():
"""#Settings Manager"""
subprocess.Popen("xfce4-settings-manager")
def odeconf():
"""#Deconf Editor"""
subprocess.Popen("dconf-editor")
def omt():
"""#Mouse Settings"""
subprocess.Popen("xfce4-mouse-settings")
def oclf():
"""#Appearence"""
subprocess.Popen("xfce4-appearance-settings")
def opp():
"""#Panel Preferences"""
subprocess.Popen(["xfce4-panel", "--preferences"])
def ons():
"""#Notifications Configuration"""
subprocess.Popen("xfce4-notifyd-config")
def opa():
"""#Default settings"""
subprocess.Popen("xfce4-mime-settings")
def oks():
"""#Keyboardsettings"""
subprocess.Popen("xfce4-keyboard-settings")
def nhnm():
"""#Network Manager"""
subprocess.Popen("nm-connection-editor")
def nhpr():
"""#Printers"""
subprocess.Popen("system-config-printer")
def nhdis():
"""#Display"""
subprocess.Popen("xfce4-display-settings")
def nhpom():
"""#Power Manager"""
subprocess.Popen("xfce4-power-manager-settings")
def nhpav():
"""#Pulse Audio Volume"""
subprocess.Popen("pavucontrol")
def ssug():
"""#User and Groups"""
subprocess.Popen("users-admin")
def ssdu():
"""#Disk Utilities"""
subprocess.Popen("gnome-disks")
def ssum():
"""#Update Manager"""
subprocess.Popen(["pkexec", "python3", "/opt/pypep/pepu.py"])
def ssas():
"""#Accessibilitity"""
subprocess.Popen("xfce4-accessibility-settings")
def sssi():
"""#System Informaion"""
cmd = "xfce4-terminal -e 'bash -c \"neofetch\";bash'"
subprocess.Popen(cmd, shell=True)
def ssfh():
"""#Flathub"""
os.system('python3 /opt/pypep/fh.py')
def ssss():
"""#Snapstore"""
os.system('python3 /opt/pypep/web_spstore.py')
def ssst():
"""#Snapstore"""
cmd = "[ -e /snap/bin ] && snap-store || xfce4-terminal -T \"Snap Store Installer\" -e \"bash -c 'sudo snap install snap-store'\""
subprocess.Popen(cmd, shell=True)
def ssai():
"""#App Image"""
os.system('python3 /opt/pypep/web_aih.py')
def ssgn():
"""#gnomestore"""
subprocess.Popen("gnome-software")
def ssgns():
"""#gnomestoreweb"""
os.system('python3 /opt/pypep/web_gstore.py')
def ssspm():
"""#Synaptic Package Manage"""
subprocess.Popen("synaptic-pkexec")
def packages():
"""#Installer"""
subprocess.Popen(["pkexec", "python3", "/opt/pypep/peppackages.py"])
def lkumo():
"""#Launch kumo"""
subprocess.Popen(["pkexec", "python3", "/opt/pypep/pepkumo.py"])
def lttkcreate():
"""#Launch TTK Creator"""
subprocess.Popen(
["pkexec", "python3", "/usr/local/lib/python3.9/dist-packages/ttkcreator/__main__.py"])
def lpscope():
"""#Launch PepScope"""
subprocess.Popen(["python3", "/opt/pypep/rdata.py"])

View File

@ -1,6 +0,0 @@
#!/usr/bin/env python3
import ttkbootstrap as ttk
#This will set the style to used for boostrap
#just change the name to what is needed for the
#the system
bbstyle = ttk.Window(themename="darkly")

View File

@ -1,2 +0,0 @@
[
}]

View File

@ -1,393 +0,0 @@
[
{
"commit": "651754af44ba98cc7a42822907f8992dbbe0f0a1",
"date": "Fri Sep 16 03:00:30 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json"
]
},
{
"commit": "c0523f34f6be8b77ba6b78074af57017c2809f3c",
"date": "Thu Sep 15 06:32:58 2022 -0500",
"message": "Automated-Updates",
"files": [
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "958c57f13fb6133ec19ef4d381cc69347b5a2c71",
"date": "Thu Sep 15 03:00:33 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/hub.py",
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "1cb08ccf7ef187263c8df69b26b6c050744da8ea",
"date": "Wed Sep 14 04:49:31 2022 -0500",
"message": "Automated-Updates",
"files": [
"PepProTools/actions.py",
"PepProTools/hub.py",
"PepProTools/hubconf.py",
"PepProTools/pddata.py",
"PepProTools/pdvdata.py",
"PepProTools/ptdata.py",
"PepProTools/rdata.py",
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "eb74fcbcb5723673567836398a476fa9c69bbcc1",
"date": "Wed Sep 14 04:08:40 2022 -0500",
"message": "Package-python3-pyqt5-qtsql-added-to-the-build-packages",
"files": [
"PepBld-nightly.sh",
"PepBld-skinny.sh",
"PepBld-testing.sh",
"PepBld-unstable.sh",
"pepbld.sh"
]
},
{
"commit": "93ac9dc5b7e6224b60331486f6a0194dfa2ccd9e",
"date": "Wed Sep 14 02:54:29 2022 -0500",
"message": "Updated-file",
"files": [
"BldHelper-release.sh"
]
},
{
"commit": "834ad8f948883a820b6b1cde505430a7c149e871",
"date": "Wed Sep 14 01:44:15 2022 -0500",
"message": "Bringing-Build-files-into-alignment",
"files": [
"PepBld-nightly.sh",
"pepbld.sh"
]
},
{
"commit": "8bd7d287f616b51ff18e0ae8aa845ad2a48217f3",
"date": "Wed Sep 14 01:43:11 2022 -0500",
"message": "Prepping-for-release-Bringing-BldHelper-files-into-alignment",
"files": [
"BldHelper-nightly.sh",
"BldHelper-release.sh"
]
},
{
"commit": "de585cd9a072e34acd83c2b032aa309428820322",
"date": "Wed Sep 14 03:00:30 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json"
]
},
{
"commit": "307ccb307a9af8347b28d03f17b6446778e8b359",
"date": "Tue Sep 13 03:00:33 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json"
]
},
{
"commit": "09bee6cc405acd6a32121905390d86a971c4ceee",
"date": "Sun Sep 11 23:09:05 2022 -0500",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/hub.py",
"PepProTools/hubconf.py",
"PepProTools/xDaily"
]
},
{
"commit": "320b519934a4f2558c48164e0685f24bf1a139d2",
"date": "Mon Sep 12 03:00:31 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/hub.py",
"PepProTools/hubconf.py",
"PepProTools/xDaily"
]
},
{
"commit": "2bb30aa47907c0d3c5eb017b55b3382929e36b90",
"date": "Sun Sep 11 00:59:18 2022 -0500",
"message": "Automated-Updates",
"files": [
"PepProTools/xDaily",
"pepbld.sh"
]
},
{
"commit": "44ffc3c14277028e87705707881c1d6eacc21636",
"date": "Sat Sep 10 23:13:13 2022 -0500",
"message": "Long-awaited-push-of-the-version-to-correct-Unable-to-install-grub-for-UEFI-Secure-boot",
"files": [
"peptesting/pepcal/install-peppermint"
]
},
{
"commit": "b09b6484ace16eadb64e294e258ce296fd9a2060",
"date": "Sat Sep 10 23:10:12 2022 -0500",
"message": "Long-awaited-push-of-the-version-to-include-the-Peppermint-Apt-repository",
"files": [
"pepnightly/pepcal/sources-final"
]
},
{
"commit": "2fcb5ebb4e310c4713732768018185481f595502",
"date": "Sat Sep 10 23:03:39 2022 -0500",
"message": "Reinstated-copying-the-missing-Arc-themes-we-use.-Test-for-adding-to-the-ISO-Volume-Name",
"files": [
"PepBld-nightly.sh"
]
},
{
"commit": "c9e16b179937f690de55f2895cf030a0cae269bf",
"date": "Sun Sep 11 03:00:39 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/kumosm.png"
]
},
{
"commit": "8ca8461a842089f5d0673a2ba4b5a1d7dcf16f60",
"date": "Wed Sep 7 03:00:37 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/codeb.py",
"PepProTools/mas.py",
"PepProTools/mat.py",
"PepProTools/pge.py",
"PepProTools/reddit.py",
"PepProTools/sf.py",
"PepProTools/welcome.py",
"PepProTools/welcome_man.py"
]
},
{
"commit": "699707adc981996e05809d5dc765471de1217575",
"date": "Tue Sep 6 03:00:31 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/bd.py",
"PepProTools/cb.png",
"PepProTools/codeb.py",
"PepProTools/mas.py",
"PepProTools/mat.py",
"PepProTools/mn.png",
"PepProTools/mt.png",
"PepProTools/pdocs.py",
"PepProTools/pep-logo-deb.png",
"PepProTools/pep-logo-dev.png",
"PepProTools/peppermint-word-white.png",
"PepProTools/rd.png",
"PepProTools/reddit.py",
"PepProTools/sf.png",
"PepProTools/sf.py",
"PepProTools/welcome.py",
"PepProTools/welcome_man.py",
"PepProTools/welconf.py",
"PepProTools/welfunc.py"
]
},
{
"commit": "7835c5df9d8a176a9777ef13ace7782f3a710a13",
"date": "Sun Sep 4 03:00:33 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/hub.py"
]
},
{
"commit": "8fa867011a6406793dc0026689e236ed8763882a",
"date": "Sat Sep 3 03:00:29 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/install-peppermint"
]
},
{
"commit": "decd9908d9f746fb4ed92c771111f2bf9eb6cbd9",
"date": "Thu Sep 1 03:00:30 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/bsconf.py",
"PepProTools/pepkumo.py",
"PepProTools/pepu.py"
]
},
{
"commit": "d005eb9bd8d1ff3e54f35071208dc29bd7b94b13",
"date": "Wed Aug 31 03:00:29 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepaliases/bash_aliases"
]
},
{
"commit": "e9387b555ec5c9594b293ea47ece87e3d5f0af7d",
"date": "Tue Aug 30 04:20:17 2022 -0500",
"message": "Colorized-pep-writer",
"files": [
"pepnightly/pepaliases/bash_aliases",
"peptesting/pepaliases/bash_aliases",
"pepunstable/pepaliases/bash_aliases"
]
},
{
"commit": "e720e4fb47fe6bf94b797342dfe6f8fd5890dbde",
"date": "Mon Aug 29 01:56:50 2022 -0500",
"message": "Automated-Updates",
"files": [
"BldHelper-nightly.sh",
"PepProTools/actions.py",
"PepProTools/hub.py",
"PepProTools/peppermint-rimbw-48.png",
"peppackages/nala_0.10.0_all.deb",
"peppackages/python3-anyio_3.6.1-1_all.deb",
"peppackages/python3-click_8.0.3-1_all.deb",
"peppackages/python3-colorama_0.4.5-1_all.deb",
"peppackages/python3-commonmark_0.9.1-4_all.deb",
"peppackages/python3-h11_0.13.0-2_all.deb",
"peppackages/python3-httpcore_0.15.0-1_all.deb",
"peppackages/python3-httpx_0.23.0-1_all.deb",
"peppackages/python3-pexpect_4.8.0-3_all.deb",
"peppackages/python3-ptyprocess_0.7.0-3_all.deb",
"peppackages/python3-pygments_2.12.0+dfsg-2_all.deb",
"peppackages/python3-rfc3986_1.5.0-2_all.deb",
"peppackages/python3-rich_12.4.4-1_all.deb",
"peppackages/python3-sniffio_1.2.0-1_all.deb",
"peppackages/python3-socksio_1.0.0-2_all.deb",
"peppackages/python3-tomli_2.0.1-1_all.deb",
"peppackages/python3-typer_0.4.1-1_all.deb",
"peppackages/python3-typing-extensions_3.10.0.2-1_all.deb"
]
},
{
"commit": "501c132fadeb707d68b39d30013092739465b5a2",
"date": "Sat Aug 27 03:00:35 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/pepkumo.py",
"PepProTools/xDaily"
]
},
{
"commit": "60a1d9b6864354bdefaaf0693bc42e311c7a0129",
"date": "Thu Aug 25 03:00:28 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/modules/netinstall-packages.yaml",
"pephooks/normal/0600-OS-symlinks.hook.chroot"
]
},
{
"commit": "1d8a379328939bb1ce58b9a617873d71c042919c",
"date": "Wed Aug 24 21:10:14 2022 -0500",
"message": "Corrected-the-previous-changes-on-the-fie-being-held-back-from-the-public-repo",
"files": [
"PepBld-nightly.sh"
]
},
{
"commit": "01ff2d6b189b4916b4dca19a43f631027b9272cc",
"date": "Wed Aug 24 21:07:23 2022 -0500",
"message": "Corrected-privacy-concern-for-users-SSBs",
"files": [
"PepBld-nightly.sh"
]
},
{
"commit": "ae4bdf5fe44379440ba88851cebb6b52bb6e6c6e",
"date": "Wed Aug 24 03:00:30 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/pepu.py"
]
},
{
"commit": "ea2bb4387d409fe978b1bfcf868e58277367c946",
"date": "Tue Aug 23 03:00:34 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/modules/netinstall-packages.yaml"
]
},
{
"commit": "944e86e4993585525f01b0206320e01ea5d5fa30",
"date": "Mon Aug 22 04:16:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/modules/netinstall-packages.yaml",
"pepcal/calamares/netinstall-packages"
]
},
{
"commit": "69f2f1988d5a81076c005dc48855e6d8ea9fed3f",
"date": "Sat Aug 20 23:17:07 2022 -0500",
"message": "Merge-branch-main-of-https-codeberg.org-Peppermint_OS-PepOSx86_64"
},
{
"commit": "b82669d7c31529e13efcc4c2ecc1ebb32613fd72",
"date": "Sun Aug 21 04:16:49 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/netinstall-packages"
]
},
{
"commit": "e257ddd3db02f3b6c2fa5cd39e5b87aad8435fc9",
"date": "Sat Aug 20 23:16:40 2022 -0500",
"message": "Updated-file-fixing-typo-of-i-for-j-when-trimming-old-.debs",
"files": [
"BldHelper-nightly.sh"
]
},
{
"commit": "20d025ea7e7831a2fa4440cd19e3429ca07c0aea",
"date": "Fri Aug 19 04:27:11 2022 -0500",
"message": "Merge-branch-main-of-https-codeberg.org-Peppermint_OS-PepOSx86_64"
},
{
"commit": "d9c510762509080511f359ad4c28b280433169e2",
"date": "Fri Aug 19 04:26:37 2022 -0500",
"message": "Updated-file-to-copy-new-netinstall-packages.yaml-back-to-the-build-and-to-remove-old-packages-from-the-local-cache-directory",
"files": [
"BldHelper-nightly.sh"
]
},
{
"commit": "affe7dc051d8253c87b26d90b7d86d954bc412aa",
"date": "Thu Aug 18 23:30:33 2022 +0000",
"message": "Updated-BldHelper-scripts-for-new-repo-name",
"files": [
"BldHelper-skinny.sh",
"BldHelper-testing.sh",
"BldHelper-unstable.sh"
]
},
{
"commit": "fb21f9273d1bbdd55f6066f80317de8e9d6a896e",
"date": "Thu Aug 18 17:52:20 2022 -0500",
"message": "Automated-Updates",
"files": [
"peppackages/calamares_3.2.57-0peppermint3_amd64.deb"
]
}]

View File

@ -1,268 +0,0 @@
[
{
"commit": "deb943ce990b901d022e7e7ccd787bdec39af56b",
"date": "Fri Sep 16 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/sysupdate.sh"
]
},
{
"commit": "ccc77fa6837d3852e667832b55fb856aa0ed74a2",
"date": "Thu Sep 15 06:32:04 2022 -0500",
"message": "Automated-Updates",
"files": [
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "f858bbf9b12abd471da0d99c82dce5eac645adb6",
"date": "Thu Sep 15 06:00:39 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/hub.py",
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "e83178c76922cd841e03380a9ea59f8d399d4669",
"date": "Wed Sep 14 04:48:24 2022 -0500",
"message": "Automated-Updates",
"files": [
"pephooks/normal/0540-webinst.hook.chroot"
]
},
{
"commit": "acc680f38955c22a19d63ece4f6d0dbe3cc1608d",
"date": "Wed Sep 14 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/actions.py",
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/hub.py",
"PepProTools/hubconf.py",
"PepProTools/pddata.py",
"PepProTools/pdvdata.py",
"PepProTools/ptdata.py",
"PepProTools/rdata.py"
]
},
{
"commit": "5e2bab73729955c6099bd153b67c38fc3e696f97",
"date": "Tue Sep 13 06:00:33 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json"
]
},
{
"commit": "42996f975d60b56047ed81ce0b2d35a60ba18ad7",
"date": "Mon Sep 12 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/git-pepd64.json",
"PepProTools/git-pepdv64.json",
"PepProTools/git-peptools.json",
"PepProTools/hub.py",
"PepProTools/hubconf.py",
"PepProTools/xDaily"
]
},
{
"commit": "bc7c74417f6dd9db037b07b2b44168b93c72c381",
"date": "Sun Sep 11 06:00:42 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/kumosm.png"
]
},
{
"commit": "4b958c2666dcc69f8c96d3b7dcd58624f24a32fd",
"date": "Fri Sep 9 06:00:35 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/xDaily"
]
},
{
"commit": "12550a4799a658c8c50a36f0e5395175cc824f00",
"date": "Thu Sep 8 21:16:10 2022 -0500",
"message": "Automated-Updates",
"files": [
"PepProTools/xDaily"
]
},
{
"commit": "5a3a3ef7497e266fa4a2f8703d44645a3feb54f8",
"date": "Thu Sep 8 21:11:02 2022 -0500",
"message": "Updated-Devuan-specific-files",
"files": [
"PepBld-nightly.sh",
"pepbuildtools/devuan-keyring_2017.10.03_all.deb",
"pepbuildtools/devuan-keyring_2022.09.04_all.deb"
]
},
{
"commit": "e8671a9aadbc5489c39261fe08283f4394aca763",
"date": "Tue Sep 6 06:00:39 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/bd.py",
"PepProTools/cb.png",
"PepProTools/codeb.py",
"PepProTools/mas.py",
"PepProTools/mat.py",
"PepProTools/mn.png",
"PepProTools/mt.png",
"PepProTools/pdocs.py",
"PepProTools/pep-logo-deb.png",
"PepProTools/pep-logo-dev.png",
"PepProTools/peppermint-word-white.png",
"PepProTools/pge.py",
"PepProTools/rd.png",
"PepProTools/reddit.py",
"PepProTools/sf.png",
"PepProTools/sf.py",
"PepProTools/welcome.py",
"PepProTools/welcome_man.py",
"PepProTools/welconf.py",
"PepProTools/welfunc.py"
]
},
{
"commit": "55ff2a9317c32ca7e9019783bcc6b1697872cb43",
"date": "Sun Sep 4 06:00:28 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/hub.py"
]
},
{
"commit": "9b2a6eb67810c448b19adf575bfa3c736e271ced",
"date": "Sat Sep 3 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/install-peppermint"
]
},
{
"commit": "c4a456b2c318e88178430faeb0400cc5778d08f6",
"date": "Wed Aug 31 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/bsconf.py",
"PepProTools/pepkumo.py",
"PepProTools/pepu.py",
"pepaliases/bash_aliases"
]
},
{
"commit": "a431733f662bbd717da5e73ea6c0773beaf94909",
"date": "Tue Aug 30 06:00:33 2022 +0000",
"message": "Automated-Updates",
"files": [
"peppackages/nala_0.10.0_all.deb",
"peppackages/python3-anyio_3.6.1-1_all.deb",
"peppackages/python3-click_8.0.3-1_all.deb",
"peppackages/python3-colorama_0.4.5-1_all.deb",
"peppackages/python3-commonmark_0.9.1-4_all.deb",
"peppackages/python3-h11_0.13.0-2_all.deb",
"peppackages/python3-httpcore_0.15.0-1_all.deb",
"peppackages/python3-httpx_0.23.0-1_all.deb",
"peppackages/python3-pexpect_4.8.0-3_all.deb",
"peppackages/python3-ptyprocess_0.7.0-3_all.deb",
"peppackages/python3-pygments_2.12.0+dfsg-2_all.deb",
"peppackages/python3-rfc3986_1.5.0-2_all.deb",
"peppackages/python3-rich_12.4.4-1_all.deb",
"peppackages/python3-sniffio_1.2.0-1_all.deb",
"peppackages/python3-socksio_1.0.0-2_all.deb",
"peppackages/python3-tomli_2.0.1-1_all.deb",
"peppackages/python3-typer_0.4.1-1_all.deb",
"peppackages/python3-typing-extensions_3.10.0.2-1_all.deb"
]
},
{
"commit": "413bf46a86d5897c7533a36a14f2b7e8d0d8bb15",
"date": "Mon Aug 29 06:00:31 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/actions.py",
"PepProTools/hub.py",
"PepProTools/peppermint-rimbw-48.png"
]
},
{
"commit": "ca320cd86d8e9cd9c2e0388129bb743ed97067d6",
"date": "Sat Aug 27 06:00:38 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/pepkumo.py",
"PepProTools/xDaily"
]
},
{
"commit": "2af99060d5182fdd842124b8f366fa4c807c53e3",
"date": "Fri Aug 26 06:00:32 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/modules/netinstall-packages.yaml"
]
},
{
"commit": "bd11a0f088d02d0276dbbd2b474a357b4aa358d7",
"date": "Thu Aug 25 06:00:31 2022 +0000",
"message": "Automated-Updates",
"files": [
"pephooks/normal/0600-OS-symlinks.hook.chroot"
]
},
{
"commit": "4fc50feaade7811fbae29fb97976ab127b8cf55b",
"date": "Thu Aug 25 01:08:19 2022 +0000",
"message": "Updated-server-HouseKepping-in-the-nightly-builds",
"files": [
"BldHelper-nightly.sh"
]
},
{
"commit": "608572ade734f485cbe66667f18c488166d14fc7",
"date": "Tue Aug 23 06:00:37 2022 +0000",
"message": "Automated-Updates",
"files": [
"PepProTools/pepu.py"
]
},
{
"commit": "8a01299c47c276d4aafb15546fbc647ed6d6471c",
"date": "Mon Aug 22 07:15:34 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/netinstall-packages"
]
},
{
"commit": "197f9d42559e71c371038a609572ffb6a9019ec2",
"date": "Sun Aug 21 07:15:56 2022 +0000",
"message": "Automated-Updates",
"files": [
"pepcal/calamares/netinstall-packages"
]
},
{
"commit": "ebb6bf4a4ec18f8050f693df3673fa4a4cb1f36a",
"date": "Fri Aug 19 09:00:45 2022 +0000",
"message": "Automated-Updates",
"files": [
"peppackages/calamares_3.2.57-0peppermint3_amd64.deb"
]
}]

View File

@ -1,365 +0,0 @@
[
{
"commit": "0ff775ee55f0d21b7c9efa75c0154998ce13991d",
"date": "Fri Sep 16 15:00:04 2022 +0000",
"message": "Automated-JSON-Update",
"files": [
"git-pepd64.json",
"git-pepdv64.json",
"git-peptools.json"
]
},
{
"commit": "2e685c38fad8a24e51336d29ca15b053ebb02a1e",
"date": "Fri Sep 16 13:22:47 2022 +0900",
"message": "Updated-spelling-line-149",
"files": [
"sysupdate.sh"
]
},
{
"commit": "88e47c073b08f34eb8ef3f22d88f72eb5e382d08",
"date": "Fri Sep 16 13:20:14 2022 +0900",
"message": "Merge-branch-main-of-https-codeberg.org-Peppermint_OS-PepProTools"
},
{
"commit": "ffd169b8bd5cc6e0b81516261957734a20a98fdb",
"date": "Fri Sep 16 13:19:54 2022 +0900",
"message": "Updated-spelling-line-149",
"files": [
"sysupdate.sh"
]
},
{
"commit": "73447789bada509734fc5cca9a94b5a00e806a53",
"date": "Thu Sep 15 15:00:04 2022 +0000",
"message": "Automated-JSON-Update",
"files": [
"git-pepd64.json",
"git-pepdv64.json",
"git-peptools.json"
]
},
{
"commit": "ae8fdc154d914b0563961bfcf689b32f6088ef07",
"date": "Wed Sep 14 15:00:04 2022 +0000",
"message": "Automated-JSON-Update",
"files": [
"git-pepd64.json",
"git-pepdv64.json",
"git-peptools.json"
]
},
{
"commit": "59cdd9d19e031f05c84bd2baa2803fcbc758bbb8",
"date": "Wed Sep 14 23:03:44 2022 +0900",
"message": "Auto-Updates",
"files": [
"hub.py"
]
},
{
"commit": "fc02b7e89db44a2b8ad10bd28d25a42fcac702ea",
"date": "Wed Sep 14 14:49:06 2022 +0900",
"message": "Auto-updates",
"files": [
"hub.py"
]
},
{
"commit": "810c58d2c6fc2524cb7ad1278da3b917561a938b",
"date": "Wed Sep 14 14:40:38 2022 +0900",
"message": "Auto-Update",
"files": [
"rdata.py"
]
},
{
"commit": "825c23a341e5a1447e6e791c0e5dc0e64e88951e",
"date": "Wed Sep 14 14:30:40 2022 +0900",
"message": "Auto-Updated",
"files": [
"rdata.py"
]
},
{
"commit": "463dc021b93b2c720afd644bc882c9730e817296",
"date": "Wed Sep 14 14:21:27 2022 +0900",
"message": "Corrected-Database-connection-status",
"files": [
"rdata.py"
]
},
{
"commit": "3ef60dda2a7a388f7af5998842d48b5e941dd00e",
"date": "Wed Sep 14 14:13:06 2022 +0900",
"message": "Deployed-the-PepScope-tool-into-the-Pephub-for-loge-viewing",
"files": [
"actions.py",
"hub.py",
"hubconf.py",
"pddata.py",
"pdvdata.py",
"ptdata.py",
"rdata.py"
]
},
{
"commit": "51c463cbb39ecdeafaecb012e8696880e8f092d4",
"date": "Wed Sep 14 12:36:42 2022 +0900",
"message": "Merge-branch-main-of-https-codeberg.org-Peppermint_OS-PepProTools"
},
{
"commit": "14a9708dd1ce86418f111bd2f349dc64c5a2d0b7",
"date": "Wed Sep 14 12:36:29 2022 +0900",
"message": "Correcteed-Flatpack-Placement",
"files": [
"hub.py"
]
},
{
"commit": "56c7a7af5437a0ff525193d8d2e327b36a0e69a3",
"date": "Tue Sep 13 15:00:08 2022 +0000",
"message": "Automated-JSON-Update",
"files": [
"git-pepd64.json",
"git-pepdv64.json",
"git-peptools.json"
]
},
{
"commit": "f5b11aacdceb3c59edc734f7276d97f0cd696f10",
"date": "Mon Sep 12 15:00:05 2022 +0000",
"message": "Automated-JSON-Update",
"files": [
"git-pepd64.json",
"git-pepdv64.json",
"git-peptools.json"
]
},
{
"commit": "13fc6d3d7a7df919da866db06a1308e05df37eef",
"date": "Mon Sep 12 04:05:24 2022 +0000",
"message": "test-push3",
"files": [
"git-pepdv64.json"
]
},
{
"commit": "46bb094abbd25b987aed80b077729987839e330a",
"date": "Mon Sep 12 04:00:52 2022 +0000",
"message": "test-push2",
"files": [
"git-pepd64.json"
]
},
{
"commit": "d0c025e153cb3cdbbd3fb422a7173a3f6fad68a3",
"date": "Mon Sep 12 04:00:04 2022 +0000",
"message": "test-push",
"files": [
"git-peptools.json"
]
},
{
"commit": "7d4766edab0b444ef19b4f0d2d605bcf69f53704",
"date": "Sun Sep 11 22:57:14 2022 -0500",
"message": "Fixed-something-wacky-and-strange-that-caused-the-file-to-half-revert-to-an-early-version-pre-Sep-03",
"files": [
"xDaily"
]
},
{
"commit": "5d92436b30b32e35eee929ee0f3ad18d569e6338",
"date": "Mon Sep 12 12:05:55 2022 +0900",
"message": "Updated-Layout-to-better-fit-most-resolutions",
"files": [
"hub.py",
"hubconf.py"
]
},
{
"commit": "cef9045717b9b344a08dea77798ebae1a189ad17",
"date": "Sun Sep 11 20:36:03 2022 +0900",
"message": "Updated-The-Peppermint-Hub",
"files": [
"hub.py",
"hubconf.py"
]
},
{
"commit": "969252d145706f967b9cfc17cefaff0bcf8bafab",
"date": "Sat Sep 10 20:26:20 2022 +0900",
"message": "ray-created-a-new-Kumo-icon-added-it",
"files": [
"kumosm.png"
]
},
{
"commit": "3d7cda5f879ee072368075f98f78d43ea40fa241",
"date": "Tue Sep 6 13:15:40 2022 +0900",
"message": "Stopped-the-repopening-of-Welcome",
"files": [
"pge.py"
]
},
{
"commit": "d707b352ee93fa9c461457792f828291d1491f51",
"date": "Tue Sep 6 12:40:24 2022 +0900",
"message": "Stopped-close-after-toggle-set",
"files": [
"welcome.py",
"welcome_man.py"
]
},
{
"commit": "11f6ddf8a951d27ac8ee716b99deb4fed91dd423",
"date": "Tue Sep 6 12:35:21 2022 +0900",
"message": "Corrected-the-conf-window",
"files": [
"codeb.py",
"mas.py",
"mat.py",
"reddit.py",
"sf.py"
]
},
{
"commit": "d4e64ff2ee741d8c973515ac86efd5480154f478",
"date": "Tue Sep 6 11:23:58 2022 +0900",
"message": "updated-title",
"files": [
"codeb.py"
]
},
{
"commit": "4645e0812f727f80c67cacfe178008a8d146318e",
"date": "Tue Sep 6 11:20:04 2022 +0900",
"message": "Updated-Welcome-Screen-logo-transparent",
"files": [
"peppermint-word-white.png"
]
},
{
"commit": "2196e9b78f7c3d663989bf2d689b3786e766eb61",
"date": "Tue Sep 6 11:15:17 2022 +0900",
"message": "Updated-Welcome-Screen",
"files": [
"welcome_man.py"
]
},
{
"commit": "41450cf1a20c0637215ac7a89c6afc25d7b5ffc3",
"date": "Tue Sep 6 11:11:29 2022 +0900",
"message": "Updated-Welcome-Screen-logos",
"files": [
"pep-logo-deb.png",
"pep-logo-dev.png"
]
},
{
"commit": "451d5cf5931eb9b9980598f35ab4149d2c3ff336",
"date": "Tue Sep 6 11:09:32 2022 +0900",
"message": "Updated-Welcome-Screen",
"files": [
"bd.py",
"cb.png",
"codeb.py",
"mas.py",
"mat.py",
"mn.png",
"mt.png",
"pdocs.py",
"rd.png",
"reddit.py",
"sf.png",
"sf.py",
"welcome.py",
"welconf.py",
"welfunc.py"
]
},
{
"commit": "20911de085beb7594c7168e67a20c085f3ff2ec8",
"date": "Sat Sep 3 17:58:58 2022 -0500",
"message": "Corrected-xDaily-portion-keeping-the-title-and-icon-from-showing-properly",
"files": [
"hub.py"
]
},
{
"commit": "752beadd2b4ca19823c858fa9dfd248168fe4916",
"date": "Sat Sep 3 01:21:35 2022 -0500",
"message": "Small-changes-a-name-in-the-header-an-icon-matching-xDaily-enabled-interactive-mode-and-window-close-when-done",
"files": [
"hub.py"
]
},
{
"commit": "b3ea1ecdca46992df33da5cd57c2f090fe5c7b93",
"date": "Wed Aug 31 12:27:54 2022 +0900",
"message": "Added-a-conf-structure-to-centralize-the-style-settings-for-tkinter",
"files": [
"bsconf.py",
"pepkumo.py",
"pepu.py"
]
},
{
"commit": "2949be454f8e1a0dd181778e54ee49b770b87e95",
"date": "Mon Aug 29 13:56:31 2022 +0900",
"message": "Added-style-editor-for-tkinter",
"files": [
"actions.py",
"hub.py",
"peppermint-rimbw-48.png"
]
},
{
"commit": "af2090d4bb39d91e9c45ef02a3e44020bc8a6934",
"date": "Fri Aug 26 20:49:04 2022 +0900",
"message": "Added-tabbing-as-requested-by-community-members",
"files": [
"pepkumo.py"
]
},
{
"commit": "9e0ce83985afaa0c5ad79e6f90b8a1bcbf9a448c",
"date": "Fri Aug 26 04:26:28 2022 -0500",
"message": "Updated-file-to-drop-one-line-after-pausing-when-run-from-in-a-terminal",
"files": [
"xDaily"
]
},
{
"commit": "683847bf757a13c3569fafe1c6b79e24aef36bc6",
"date": "Fri Aug 26 03:36:31 2022 -0500",
"message": "Updated-xDaily-to-use-nala-as-the-default-falling-back-to-apt-pausing-when-done",
"files": [
"xDaily"
]
},
{
"commit": "f6f37fd70767ba375b269f3d048cd4ebdcc7dbec",
"date": "Tue Aug 23 13:44:27 2022 +0900",
"message": "updated-completion-message-to-include-the-repo",
"files": [
"pepu.py"
]
},
{
"commit": "6d9762397eafc021cab6c2fc1ed865a597c79e6f",
"date": "Tue Aug 23 13:40:20 2022 +0900",
"message": "updated-completion-message-to-include-the-repo",
"files": [
"pepu.py"
]
},
{
"commit": "32f86989037041c59d0c61387929c617c893ddfa",
"date": "Tue Aug 23 13:37:11 2022 +0900",
"message": "updated-completion-message-to-include-the-repo",
"files": [
"pepu.py"
]
}]

4
PepProTools/hub Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
python3 ~/.local/share/pmostools/peptools/hub.py

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,26 +0,0 @@
#!/bin/bash
_extras=pepicons
_repo="Peppermint_OS/PepIcons"
###########################################
# Quietly have wget -q0- "pipe" its output directly to tar.
# Use tar -xvz to decompress, list and untar the DL file
# to the symlink 'pepicons' in /usr/share, on the fly.
# Leaving no files to remove and no permission changes required.
###########################################
echo -e "\n Downloadng Extended Icon set to /usr/share/"
wget https://codeberg.org/${_repo}/archive/main.tar.gz --show-progress -qO -|
tar -xz -C /usr/share 2>/dev/null
echo -e "\n Extended Icon set downloded and installed\n\n Updating system icon caches."
echo -en "\n\t Password required to update icon cache\n\t "
sudo /usr/sbin/update-icon-caches /usr/share/icons/*
echo
read -n1 -p " Process Completed. Press any key to close this dialog." answ
# Go back to the Extras
python3 /opt/pypep/pge.py &

3
PepProTools/kumo Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
python3 ~/.local/share/pmostools/peptools/kumo.py

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

View File

@ -1,70 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used is used to show debian updates
"""
import sys
from PyQt5.QtSql import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def initializeModel(model):
"""get thedisplay ready"""
model.setTable('gitdata')
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
model.setHeaderData(0, Qt.Horizontal, "Date Updated")
model.setHeaderData(1, Qt.Horizontal, "Comment")
model.setHeaderData(2, Qt.Horizontal, "Change ID")
def createView(title, model):
"""Create the view"""
view = QTableView()
view.setModel(model)
view.setWindowTitle(title)
return view
def addrow():
"""Add the data"""
print(model.rowCount())
ret = model.insertRows(model.rowCount(), 1)
print(ret)
def findrow(i):
""" Find the data needed"""
delrow = i.row()
if __name__ == '__main__':
""" The main class to present everything"""
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('/opt/pypep/dbpep/welval.db')
model = QSqlTableModel()
delrow = -1
initializeModel(model)
view1 = createView("Table Model (View 1)", model)
view1.clicked.connect(findrow)
dlg = QDialog()
layout = QVBoxLayout()
layout.addWidget(view1)
dlg.setLayout(layout)
dlg.setGeometry(QRect(0, 0, 500, 700))
dlg.setWindowTitle("Update History - Peppermint Debian")
dlg.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
dlg.setWindowFlag(Qt.WindowMinimizeButtonHint, True)
dlg.setWindowFlag(Qt.WindowMaximizeButtonHint, True)
dlg.show()
sys.exit(app.exec_())

View File

@ -1,70 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used is used to show devuan updates
"""
import sys
from PyQt5.QtSql import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def initializeModel(model):
"""get thedisplay ready"""
model.setTable('gitdata')
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
model.setHeaderData(0, Qt.Horizontal, "Date Updated")
model.setHeaderData(1, Qt.Horizontal, "Comment")
model.setHeaderData(2, Qt.Horizontal, "Change ID")
def createView(title, model):
"""Create the view"""
view = QTableView()
view.setModel(model)
view.setWindowTitle(title)
return view
def addrow():
"""Add the data"""
print(model.rowCount())
ret = model.insertRows(model.rowCount(), 1)
print(ret)
def findrow(i):
""" Find the data needed"""
delrow = i.row()
if __name__ == '__main__':
""" The main class to present everything"""
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('/opt/pypep/dbpep/welval.db')
model = QSqlTableModel()
delrow = -1
initializeModel(model)
view1 = createView("Table Model (View 1)", model)
view1.clicked.connect(findrow)
dlg = QDialog()
layout = QVBoxLayout()
layout.addWidget(view1)
dlg.setLayout(layout)
dlg.setGeometry(QRect(0, 0, 500, 700))
dlg.setWindowTitle("Update History - Peppermint Devuan")
dlg.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
dlg.setWindowFlag(Qt.WindowMinimizeButtonHint, True)
dlg.setWindowFlag(Qt.WindowMaximizeButtonHint, True)
dlg.show()
sys.exit(app.exec_())

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,462 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* this script is for the selected packages screen
*
"""
import subprocess
import tkinter as tk
from tendo import singleton
import ttkbootstrap as ttk
import putilities
# makes sure only a single instance is running
me = singleton.SingleInstance()
# list of all checkboxes and their current value
checkboxstates = []
# this will set the window name and style.
instw = ttk.Window(themename="darkly")
# the window size
instw.geometry('680x520')
# the title of the window
instw.title("Suggested Packages")
# set the icon for the window
instw.tk.call('wm', 'iconphoto', instw._w, tk.PhotoImage(
file='/usr/share/pixmaps/peppermint-old.png'))
# ROW for all the items but the logo and the title
ROW = 20
ROW2 = 360
# main title style
spmt = ttk.Style()
spmt.configure(
"F62817.TLabel",
foreground="#ffffff",
background="#222222",
font=(
"Helvetica",
'22',
'bold'))
# This is all the lables and verbiage used and thier placements
lblpmtitle = ttk.Label(
instw,
style="F62817.TLabel",
text="Select Your Software Packages").place(
x=140,
y=10)
lblpmsubtitle = ttk.Label(
instw,
bootstyle="light",
text="Darkened items are already installed. \nPackages are from Stable Repositories.").place(
x=ROW2,
y=310)
lblpmsubtitle = ttk.Label(
instw,
bootstyle="light",
text="At PeppermintOS, we let our users decide what software is on their system.").place(
x=140,
y=40)
lblsoftware = ttk.Label(
instw,
bootstyle="light",
text="Software").place(
x=100,
y=80)
lblbROWsers = ttk.Label(
instw,
bootstyle="light",
text="Web Browsers").place(
x=440,
y=80)
# output textbox
textbox = ttk.Text(
instw,
background="#2f2f2f",
foreground="white",
state='disabled')
textbox.place(x=0, y=420, height=100, width=680)
textbox.configure(font=("GNU Unifont", '8'))
def install_check(appname, checkbox):
"""if this package is already installed, grey out the item"""
if putilities.install_check(appname):
checkbox.configure(state=["disabled"])
# firefox
firefox = tk.StringVar()
firefox.set("off")
cbfirefox = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=firefox,
onvalue='firefox-esr',
offvalue="off",
text="Firefox: Mozilla's Open-source Browser")
cbfirefox.place(x=ROW2, y=100)
checkboxstates.append(firefox)
install_check("firefox-esr", cbfirefox)
# konqueror
konqueror = tk.StringVar()
konqueror.set("off")
cbkonqueror = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=konqueror,
onvalue="konqueror",
offvalue="off",
text="Konqueror: KDE Browser and file manager")
cbkonqueror.place(x=ROW2, y=120)
checkboxstates.append(konqueror)
install_check("konqueror", cbkonqueror)
# epiphany-bROWser
epiphany = tk.StringVar()
epiphany.set("off")
cbepiphany = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=epiphany,
onvalue="epiphany-browser",
offvalue="off",
text="Gnome Web (Epiphany): Intuitive Browser")
cbepiphany.place(x=ROW2, y=140)
checkboxstates.append(epiphany)
install_check("epiphany-bROWser", cbepiphany)
# falkon
falkon = tk.StringVar()
falkon.set("off")
cbfalkon = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=falkon,
onvalue="falkon",
offvalue="off",
text="Falkon: Qt5 Browser by KDE")
cbfalkon.place(x=ROW2, y=160)
checkboxstates.append(falkon)
install_check("falkon", cbfalkon)
# torbROWser-launcher
torbROWser = tk.StringVar()
torbROWser.set("off")
cbtorbrowser = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=torbROWser,
onvalue="torbrowser-launcher",
offvalue="off",
text="Tor Browser: Privacy Browser")
cbtorbrowser.place(x=ROW2, y=180)
checkboxstates.append(torbROWser)
install_check("torbrowser-launcher", cbtorbrowser)
# midori
midori = tk.StringVar()
midori.set("off")
cbmidori = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=midori,
onvalue="midori",
offvalue="off",
text="Midori: Fast, lightweight Browser")
cbmidori.place(x=ROW2, y=200)
checkboxstates.append(midori)
install_check("midori", cbmidori)
# qutebROWser
qutebROWser = tk.StringVar()
qutebROWser.set("off")
cbqutebROWser = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=qutebROWser,
onvalue="qutebrowser",
offvalue="off",
text="Qutebrowser: Vim-like Browser")
cbqutebROWser.place(x=ROW2, y=220)
checkboxstates.append(qutebROWser)
install_check("qutebrowser", cbqutebROWser)
# luakit
luakit = tk.StringVar()
luakit.set("off")
cbluakit = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=luakit,
onvalue="luakit",
offvalue="off",
text="Luakit: Browser extensible by Lua")
cbluakit.place(x=ROW2, y=240)
checkboxstates.append(luakit)
install_check("luakit", cbluakit)
# chromium
chromium = tk.StringVar()
chromium.set("off")
cbchromium = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=chromium,
onvalue="chromium",
offvalue="off",
text="Chromium: Google's Open-Source Browser")
cbchromium.place(x=ROW2, y=260)
checkboxstates.append(chromium)
install_check("chromium", cbchromium)
# atril
atril = tk.StringVar()
atril.set("off")
cbatril = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=atril,
onvalue="atril",
offvalue="off",
text="Atril: a multi-page document viewer")
cbatril.place(x=ROW, y=100)
checkboxstates.append(atril)
install_check("atril", cbatril)
# transmission
transmission = tk.StringVar()
transmission.set("off")
cbtransmission = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=transmission,
onvalue="transmission",
offvalue="off",
text="Transmission BitTorrent Client")
cbtransmission.place(x=ROW, y=120)
checkboxstates.append(transmission)
install_check("transmission", cbtransmission)
# ARandR
arandr = tk.StringVar()
arandr.set("off")
cbarandr = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=arandr,
onvalue="arandr",
offvalue="off",
text="ARandR: Another XRandR GUI")
cbarandr.place(x=ROW, y=140)
checkboxstates.append(arandr)
install_check("arandr", cbarandr)
# pmount
pmount = tk.StringVar()
pmount.set("off")
cbpmount = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=pmount,
onvalue="pmount",
offvalue="off",
text="pmount: Standard mount program")
cbpmount.place(x=ROW, y=160)
checkboxstates.append(pmount)
install_check("pmount", cbpmount)
# dconf-editor
dconfeditor = tk.StringVar()
dconfeditor.set("off")
cbdconfeditor = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=dconfeditor,
onvalue="dconf-editor",
offvalue="off",
text="DConf Editor: For environment settings")
cbdconfeditor.place(x=ROW, y=180)
checkboxstates.append(dconfeditor)
install_check("dconf-editor", cbdconfeditor)
# gpicview
gpicview = tk.StringVar()
gpicview.set("off")
cbgpicview = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=gpicview,
onvalue="gpicview",
offvalue="off",
text="GpicView image viewer")
cbgpicview.place(x=ROW, y=200)
checkboxstates.append(gpicview)
install_check("gpicview", cbgpicview)
# parole
parole = tk.StringVar()
parole.set("off")
cbparole = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=parole,
onvalue="parole",
offvalue="off",
text="Parole: Media player for Xfce")
cbparole.place(x=ROW, y=220)
checkboxstates.append(parole)
install_check("parole", cbparole)
#GNU Firewall
gufw = tk.StringVar()
gufw.set("off")
cbgufw = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=gufw,
onvalue="gufw",
offvalue="off",
text="gufw: GNU Firewall")
cbgufw.place(x=ROW, y=240)
checkboxstates.append(gufw)
install_check("gufw", cbgufw)
# snapd
snapd = tk.StringVar()
snapd.set("off")
cbsnapd = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=snapd,
onvalue="snapd",
offvalue="off",
text="Snap Package Platform")
cbsnapd.place(x=ROW, y=260)
checkboxstates.append(snapd)
install_check("snapd", cbsnapd)
# flatpak
flatpak = tk.StringVar()
flatpak.set("off")
cbflatpak = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=flatpak,
onvalue="flatpak",
offvalue="off",
text="Flatpak Packages Platform")
cbflatpak.place(x=ROW, y=280)
checkboxstates.append(flatpak)
install_check("flatpak", cbflatpak)
# gnome-software
gnomesoftware = tk.StringVar()
gnomesoftware.set("off")
cbgnomesoftware = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=gnomesoftware,
onvalue="gnome-software",
offvalue="off",
text="Gnome software store")
cbgnomesoftware.place(x=ROW, y=300)
checkboxstates.append(gnomesoftware)
install_check("gnome-software", cbgnomesoftware)
# timshift
timeshift = tk.StringVar()
timeshift.set("off")
cbtimeshift = ttk.Checkbutton(
instw,
bootstyle="danger",
variable=timeshift,
onvalue="timeshift",
offvalue="off",
text="TimeShift: Backup Tool")
cbtimeshift.place(x=ROW, y=320)
checkboxstates.append(timeshift)
install_check("timeshift", cbtimeshift)
def install(applist):
""" install the applications"""
btnwk = ttk.Button(instw, text="Installing...", bootstyle="danger", state='disabled')
btnwk.place(x=245, y=375, height=30, width=150)
btn.place_forget()
textbox.configure(state='normal')
def textout(line):
textbox.insert(tk.END, line)
textbox.update_idletasks()
textbox.see("end")
print(line + "\n")
if len(applist) > 0:
with subprocess.Popen(["apt-get", "install", "-y"] + applist,
shell=False, stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True) as point:
if point.stdout:
for line in point.stdout:
textout(line)
if point.stderr:
for line in point.stderr:
textout(line)
textout("Done.")
textbox.configure(state='disabled')
btnwk.place_forget()
btn.place(x=245, y=375, height=30, width=150)
def fin():
"""Finish close window"""
instw.destroy()
def getcheckboxes():
"""This will verify the check boxes"""
appqueue = []
for item in checkboxstates:
if item.get() != "off":
appqueue.append(item.get())
print(appqueue)
if len(appqueue) > 0:
install(appqueue)
else:
textbox.configure(state='normal')
textbox.insert(
tk.END,
"No packages selected. Please select a package.\n")
textbox.update_idletasks()
textbox.see("end")
textbox.configure(state='disabled')
# inital Begin install button
btn = ttk.Button(
instw,
text="Install Selected",
bootstyle="light-outline",
command=getcheckboxes)
##Placement of the Begin install button##
btn.place(x=245, y=375, height=30, width=150)
btnf = ttk.Button(
instw,
bootstyle="light-outline",
text="Done",
command=getcheckboxes)
btn.place(x=245, y=375, height=30, width=150)
##Start the window#
instw.mainloop()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,753 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used as an update gui manager
"""
import tkinter as tk
import subprocess
import os
import shutil
import sqlite3
import filecmp
from tkinter import Frame
from threading import Thread
import ttkbootstrap as ttk
from crontab import CronTab
from git import Repo
from ttkbootstrap.scrolled import ScrolledText
from ttkbootstrap.constants import HORIZONTAL
import bsconf
# setup the window
pwin = bsconf.bbstyle
pwin.title('Peppermint Update Manager')
pwin.tk.call('wm', 'iconphoto', pwin._w,
tk.PhotoImage(
file='/usr/share/pixmaps/peppermint-old.png'))
pwin['bg'] = '#000000'
WINDOW_HEIGHT = 630
WINDOW_WIDTH = 750
# set the database connection string
dcon = sqlite3.connect('/opt/pypep/dbpep/welval.db')
pcur = dcon.cursor()
# Create the update table
pcur.execute(""" CREATE TABLE IF NOT EXISTS upsched (id integer PRIMARY
KEY AUTOINCREMENT, dname text, cronnum int, hr int,
min int);""")
# The Functions
def center_screen():
""" gets the coordinates of the center of the screen """
screen_width = pwin.winfo_screenwidth()
screen_height = pwin.winfo_screenheight()
# Coordinates of the upper left corner of the window to make the window
# appear in the center
x_cordinate = int((screen_width / 2) - (WINDOW_WIDTH / 2))
y_cordinate = int((screen_height / 2) - (WINDOW_HEIGHT / 2))
pwin.geometry("{}x{}+{}+{}".format(WINDOW_WIDTH,
WINDOW_HEIGHT, x_cordinate, y_cordinate))
def drepo():
"""Delete the temp repo files."""
fld = '/opt/tmprpo/'
for filename in os.listdir(fld):
fp = os.path.join(fld, filename)
try:
if os.path.isfile(fp) or os.path.islink(fp):
os.unlink(fp)
elif os.path.isdir(fp):
shutil.rmtree(fld)
except Exception as e:
print('Failed to delete %s. Reason: %s' % (fp, e))
def cbclone():
"""Clones the Production Tools Repo locally"""
repo_url = 'https://codeberg.org/Peppermint_OS/PepProTools.git'
repo_path = '/opt/tmprpo/'
if os.path.exists(repo_path):
shutil.rmtree(repo_path)
else:
os.makedirs(repo_path)
Repo.clone_from(repo_url, repo_path)
def checkfiles():
"""Compare the repo files downloaded with what is in opt and
detemrine if an update is needed
"""
b = '/opt/pypep/'
a = '/opt/tmprpo/'
comp = filecmp.dircmp(a, b)
common = sorted(comp.common)
left = sorted(comp.left_list)
right = sorted(comp.right_list)
if left != common or right != common:
file_names = os.listdir(a)
for file_name in file_names:
if file_name.endswith(".git"):
pass
else:
shutil.copy(os.path.join(a, file_name), b)
else:
pass
def updtpeptools():
"""brings all the update tool functions together"""
terminalstuff.delete(1.0)
pwin.update()
msg1 = '''
Checking Codeberg for updates'''
terminalstuff.insert('end', msg1)
pwin.update()
cbclone()
msg2 = '''
Applying updates'''
terminalstuff.insert('end', msg2)
pwin.update()
checkfiles()
msg3 = '''
Cleaning up....'''
terminalstuff.insert('end', msg3)
pwin.update()
drepo()
message = '''
PepTools updated! Check out PepScope to review the changes'''
terminalstuff.insert('end', message)
pwin.update()
def pu(cmd, terminal):
"""set up the pipe process."""
# set thecompleted message
pepipe = subprocess.Popen(cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
bufsize=1,
universal_newlines=True,
shell=True)
pepipe.poll()
while True:
line = pepipe.stdout.readline()
terminal.insert(tk.END, line)
terminal.see(tk.END)
if not line and pepipe.poll is not None:
break
commsg = '''Completed!'''
terminalstuff.insert('end', commsg)
def peppersys():
""" This will apt command and send the results to the terminal textbox """
sysu = "apt update && apt upgrade -y"
pepper = Thread(target=lambda: pu(sysu, terminalstuff))
pepper.start()
terminalstuff.delete(1.0, END)
def ldsettings():
"""Preset the update options based on what is stored in the database"""
# set the connector
dbst = sqlite3.connect('/opt/pypep/dbpep/welval.db')
mvar = "Mon"
tuvar = "Tue"
wvar = "Wed"
tvar = "Thu"
fvar = "Fri"
savar = "Sat"
suvar = "Sun"
# set the queries
cbval = """ SELECT COUNT(*) FROM upsched WHERE dname = ?;"""
hval = """ SELECT hr FROM upsched WHERE hr IS NOT NULL;"""
hcval = """ SELECT COUNT(*) FROM upsched WHERE hr IS NOT NULL;"""
mval = """ SELECT min FROM upsched WHERE min IS NOT NULL;"""
mcval = """ SELECT COUNT(*) FROM upsched WHERE min IS NOT NULL;"""
# set the cursor to be used for execution
dcur = dbst.cursor()
# Start the hr call
dcur.execute(hcval)
hrc = dcur.fetchone()
if int(hrc[0]) > 0:
# If there is a hour value in the databes set the texbox
# widget to that value.
dcur.execute(hval)
hsel = dcur.fetchone()
txtopthour.insert(0, hsel)
else:
# if there is no value print this message and pass.
print('No hour value is there')
# Start the minute call
dcur.execute(mcval)
minc = dcur.fetchone()
if int(minc[0]) > 0:
# If there is a minute value in the databes set the texbox
# widget to that value.
dcur.execute(mval)
msel = dcur.fetchone()
txtoptmin.insert(0, msel)
else:
# if there is no value print this message and pass.
print('No minute value is there')
##Start text box settings...##
# Monday
dcur.execute(cbval, (mvar,))
mr = dcur.fetchone()
if int(mr[0]) > 0:
# if the cbval is in the DB then print and set the checkbutton
# value
cbm_v.set(1)
print("Mon is there")
else:
# If the cbval is 0 then print this message
print('Nothing There')
#Tue##
dcur.execute(cbval, (tuvar,))
tur = dcur.fetchone()
if int(tur[0]) > 0:
cbtu_v.set(1)
print("Tue is there")
else:
print('Nothing There')
##Wed##
dcur.execute(cbval, (wvar,))
wr = dcur.fetchone()
if int(wr[0]) > 0:
cbw_v.set(1)
print("Wed is there")
else:
print('Nothing There')
##Thu##
dcur.execute(cbval, (tvar,))
tr = dcur.fetchone()
if int(tr[0]) > 0:
cbt_v.set(1)
print("Thu is there")
else:
print('Nothing There')
##Fri##
dcur.execute(cbval, (fvar,))
fr = dcur.fetchone()
if int(fr[0]) > 0:
cbf_v.set(1)
print("Fri is there")
else:
print('Nothing There')
##Sat##
dcur.execute(cbval, (savar,))
sar = dcur.fetchone()
if int(sar[0]) > 0:
cbsa_v.set(1)
print("Sat is there")
else:
print('Nothing There')
##Sun##
dcur.execute(cbval, (suvar,))
sur = dcur.fetchone()
if int(sur[0]) > 0:
cbsu_v.set(1)
print("Sun is there")
else:
print('Nothing There')
def pcron():
"""This will set ccron table schedule to run updates"""
cron = CronTab(user='root')
# get the value that is entered in the hour text box
# it must be with 0 to 24 other wise it is out of range
# then see if the hour is already in the DB if it is
# delete it and add in the new value from the text box
# else its a new record and you just need to add it
# set the connector
db = sqlite3.connect('/opt/pypep/dbpep/welval.db')
# set the cursor
dbcur = db.cursor()
# This section will save the hour values entered in the database
hrtx = txtopthour.get()
if len(hrtx) == 0:
# If nothing was entered then print the message and pass the if
print('nothing entered')
else:
# if there is a value then delete it first then add the record
# other wise just add the record.
hra = int(hrtx)
if 0 <= hra <= 24:
hval = """ SELECT COUNT(*) FROM upsched WHERE hr IS NOT NULL; """
hdel = """ DELETE FROM upsched WHERE hr IS NOT NULL; """
hrinsrt = """ INSERT INTO upsched (hr) VALUES (?); """
harg = hra
dbcur.execute(hval)
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
dbcur.execute(hdel)
db.commit()
dbcur.execute(hrinsrt, (harg,))
db.commit()
print(hra)
else:
dbcur.execute(hrinsrt, (harg,))
db.commit()
else:
print('out of range')
# Same process for the Minute its a repeate as above but for the
# Minute text widget
mitx = txtoptmin.get()
if len(mitx) == 0:
print('nothing entered')
else:
mia = int(mitx)
if 0 <= mia <= 24:
mval = """ SELECT COUNT(*) FROM upsched WHERE min IS NOT NULL; """
mdel = """ DELETE FROM upsched WHERE min IS NOT NULL; """
miinsrt = """ INSERT INTO upsched (min) VALUES (?); """
marg = mia
dbcur.execute(mval)
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
dbcur.execute(mdel)
db.commit()
dbcur.execute(miinsrt, (marg,))
db.commit()
print(mia)
else:
dbcur.execute(miinsrt, (marg,))
db.commit()
else:
print('out of range')
# these are the days of the week checkbuttons if they are on or
# off do something
# var the message to print in terminal
alrdy = "There is already a value for that day,"
# set the variables used for the SQL queries
mvar = "Mon"
tuvar = "Tue"
wvar = "Wed"
tvar = "Thu"
fvar = "Fri"
savar = "Sat"
suvar = "Sun"
# set the queries
cval = """ SELECT COUNT(*) FROM upsched WHERE dname = ?;"""
dinsrt = """ INSERT INTO upsched(dname) VALUES (?);"""
drmv = """ DELETE FROM upsched WHERE dname = ?;"""
if cbm_v.get() == 1:
# run the query withthe variable
dbcur.execute(cval, (mvar,))
# get the result
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
# if the value is in the DB then print
print(alrdy, "Mon")
else:
# if it is not in the DB then add it
dbcur.execute(dinsrt, (mvar,))
db.commit()
print('Mon Added to Database')
# Create the new job
jobm = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Monday')
# Set the value to what is in the hour textbox
jobm.hour.on(hra)
# Set the value to what is in the minute textbox
jobm.minute.on(mia)
# set the day of the week
jobm.dow.on('1')
# Write the job to the crontab
cron.write()
# Show the job was witten
print('wrote cron')
# list the jobs in the terminal
for jobm in cron:
print(jobm)
# this is the finish monday function
print('mon is on')
else:
# If unchecked Remove the current day value
if cbm_v.get() == 0:
dbcur.execute(cval, (mvar,))
mdelresult = dbcur.fetchone()
if int(mdelresult[0]) > 0:
# run the delete query
dbcur.execute(drmv, (mvar,))
# commit the change to the database
db.commit()
# set what job to find in the crontab
jobm = cron.find_comment('Monday')
# Clear and write the contab
cron.remove(jobm)
cron.write()
# print that the cron job was deleted
print('Mon Cron Deleted')
# print the Record was deleted from the Databaes
print('Mon was deleted from db becuase the cb is off')
else:
# Print nothing deleted if nothing was found
print('nothing to delete')
# pring that that the check box is off.
print('mon is off')
if cbtu_v.get() == 1:
dbcur.execute(cval, (tuvar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Tue")
else:
dbcur.execute(dinsrt, (tuvar,))
db.commit()
print('Tue Added to Database')
jobtu = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Tuesday')
jobtu.hour.on(hra)
jobtu.minute.on(mia)
jobtu.dow.on(2)
cron.write()
for jobtu in cron:
print(jobtu)
print('wrote cron')
print('tue is on')
else:
if cbtu_v.get() == 0:
dbcur.execute(cval, (tuvar,))
tudelresult = dbcur.fetchone()
if int(tudelresult[0]) > 0:
dbcur.execute(drmv, (tuvar,))
db.commit()
jobtu = cron.find_comment('Tuesday')
cron.remove(jobtu)
cron.write()
print('Tue Cron Deleted')
print('Tue was deleted from db becuase the cb is off')
else:
print('nothing to delete')
print('tue is off')
if cbw_v.get() == 1:
dbcur.execute(cval, (wvar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Wed")
else:
dbcur.execute(dinsrt, (wvar,))
db.commit()
print('Wed Added to Database')
jobw = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Wednesday')
jobw.hour.on(hra)
jobw.minute.on(mia)
jobw.dow.on(3)
cron.write()
print('wrote cron')
print('wed is on')
else:
if cbw_v.get() == 0:
dbcur.execute(cval, (wvar,))
wdelresult = dbcur.fetchone()
if int(wdelresult[0]) > 0:
dbcur.execute(drmv, (wvar,))
db.commit()
jobw = cron.find_comment('Wednesday')
cron.remove(jobw)
cron.write()
print('Wed Cron Deleted')
print('Wed was deleted from db becuase the cb is off')
else:
print('nothing to delete')
print('wed is off')
if cbt_v.get() == 1:
dbcur.execute(cval, (tvar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Thu")
else:
dbcur.execute(dinsrt, (tvar,))
db.commit()
print('Thu Added to Database')
jobt = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Thursday')
jobt.hour.on(hra)
jobt.minute.on(mia)
jobt.dow.on(4)
cron.write()
print('wrote cron')
print('thu is on')
else:
if cbt_v.get() == 0:
dbcur.execute(cval, (tvar,))
tdelresult = dbcur.fetchone()
if int(tdelresult[0]) > 0:
dbcur.execute(drmv, (tvar,))
db.commit()
jobt = cron.find_comment('Thursday')
cron.remove(jobt)
cron.write()
print('Thu Cron Deleted')
print('Thu was deleted from db becuase the cb is off')
else:
print('nothing to delete')
print('thu is off')
if cbf_v.get() == 1:
dbcur.execute(cval, (fvar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Fri")
else:
dbcur.execute(dinsrt, (fvar,))
db.commit()
print('Fri Added to Database')
jobf = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Friday')
jobf.hour.on(hra)
jobf.minute.on(mia)
jobf.dow.on(5)
cron.write()
print('wrote cron')
print('fri is on')
else:
if cbf_v.get() == 0:
dbcur.execute(cval, (fvar,))
fdelresult = dbcur.fetchone()
if int(fdelresult[0]) > 0:
dbcur.execute(drmv, (fvar,))
db.commit()
jobf = cron.find_comment('Friday')
cron.remove(jobf)
cron.write()
print('Fri Cron Deleted')
print('Fri was deleted from db becuase the cb is off')
else:
print('nothing to delete')
print('fri is off')
if cbsa_v.get() == 1:
dbcur.execute(cval, (savar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Sat")
else:
dbcur.execute(dinsrt, (savar,))
db.commit()
print('Sat Added to Database')
jobsa = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Saturday')
jobsa.hour.on(hra)
jobsa.minute.on(mia)
jobsa.dow.on(6)
cron.write()
print('wrote cron')
print('sat is on')
else:
if cbsa_v.get() == 0:
dbcur.execute(cval, (savar,))
sadelresult = dbcur.fetchone()
if int(sadelresult[0]) > 0:
dbcur.execute(drmv, (savar,))
db.commit()
jobsa = cron.find_comment('Saturday')
cron.remove(jobsa)
cron.write()
print('Sat Cron Deleted')
print('Sat was deleted from db becuase the cb is off')
else:
print('nothing to delete')
print('sat is off')
if cbsu_v.get() == 1:
dbcur.execute(cval, (suvar,))
crresult = dbcur.fetchone()
if int(crresult[0]) > 0:
print(alrdy, "Sun")
else:
dbcur.execute(dinsrt, (suvar,))
db.commit()
print('Sun Added to Database')
jobsu = cron.new(
command='/bin/sh opt/pypep/pepwork.sh',
comment='Sunday')
jobsu.hour.on(hra)
jobsu.minute.on(mia)
jobsu.dow.on(0)
cron.write()
for job in cron:
print(job)
print('wrote cron')
print('sun is on')
else:
if cbsu_v.get() == 0:
dbcur.execute(cval, (suvar,))
sudelresult = dbcur.fetchone()
if int(sudelresult[0]) > 0:
dbcur.execute(drmv, (suvar,))
db.commit()
jobsu = cron.find_comment('Sunday')
cron.remove(jobsu)
cron.write()
print('Sun Cron Deleted')
print('Sun was deleted from db because the cb is off')
else:
print('nothing to delete')
print('sun is off')
pwin.destroy()
# notebook stuff
pnb = ttk.Notebook(pwin, bootstyle="danger")
pnb.pack(pady=10, expand=True)
fnb1 = ttk.Frame(pnb, width=400, height=400)
fnb2 = ttk.Frame(pnb, width=400, height=400)
fnb1.pack(fill='both', expand=True)
fnb2.pack(fill='both', expand=True)
pnb.add(fnb1, text='Update Manager')
pnb.add(fnb2, text='Options')
# frames to use separate parts of the window
fbset0 = Frame(fnb1)
fbset0.pack(side="top")
fbset1 = Frame(fnb1)
fbset1.pack(side="top")
fbset3 = Frame(fnb1)
fbset3.pack(side="top")
fbset2 = Frame(fnb1)
fbset2.pack(side="top")
fbset4 = Frame(fnb1)
fbset4.pack(side="top")
fterm = Frame(fnb1)
fterm.pack(side="top", fill="both", expand=True)
# These lables provide space in betweenthe buttons
# Using pack on the Update manager tab
lbltitle = ttk.Label(fbset0)
lbltitle.pack()
lbltitle = ttk.Label(fbset3)
lbltitle.pack()
lbltitle = ttk.Label(fbset4)
lbltitle.pack()
# Holds the terminal output
terminalstuff = ScrolledText(fterm, padding=5, bootstyle="dark")
terminalstuff.pack(fill="both", expand=True)
# The things that are used on the Update Manager Tab
sysupdtbtn = ttk.Button(
fbset1,
text="System Updates",
width=20,
cursor="hand2",
bootstyle="light-outline",
command=peppersys)
sysupdtbtn.pack(side="left")
ptupdtbtn = ttk.Button(
fbset1,
text="Update Pep Tools",
width=20,
cursor="hand2",
bootstyle="light-outline",
command=updtpeptools)
ptupdtbtn.pack(side="left")
lblumsg = ttk.Label(
fbset2,
text="Use the buttons to update your tools or system",
bootstyle="inverse-light")
lblumsg.pack()
# the things that are used on the Options tab
# The title of the Peppermint Tools Section
lblopttitle = ttk.Label(
fnb2,
text="Set a schedule for Peppermint tools",
bootstyle="inverse-light")
lblopttitle.place(x=10, y=15)
# First one below the Peppermint tools title
sepoptlt = ttk.Separator(fnb2, bootstyle="danger", orient=HORIZONTAL)
sepoptlt.place(x=10, y=40, relwidth=1)
# Second one below the System Updates
sepopbtm = ttk.Separator(fnb2, bootstyle="danger", orient=HORIZONTAL)
sepopbtm.place(x=10, y=140, relwidth=1)
# The last one right above the information
sepopend = ttk.Separator(fnb2, bootstyle="danger", orient=HORIZONTAL)
sepopend.place(x=10, y=240, relwidth=1)
cbm_v = tk.IntVar()
cbm = ttk.Checkbutton(fnb2, text="Mon", variable=cbm_v,
bootstyle="success-round-toggle")
cbm.place(x=10, y=180)
cbtu_v = tk.IntVar()
cbtu = ttk.Checkbutton(
fnb2,
text="Tue",
variable=cbtu_v,
bootstyle="success-round-toggle")
cbtu.place(x=80, y=180)
cbw_v = tk.IntVar()
cbw = ttk.Checkbutton(fnb2, text="Wed", variable=cbw_v,
bootstyle="success-round-toggle")
cbw.place(x=160, y=180)
cbt_v = tk.IntVar()
cbt = ttk.Checkbutton(fnb2, text="Thu", variable=cbt_v,
bootstyle="success-round-toggle")
cbt.place(x=240, y=180)
cbf_v = tk.IntVar()
cbf = ttk.Checkbutton(fnb2, text="Fri", variable=cbf_v,
bootstyle="success-round-toggle")
cbf.place(x=10, y=210)
cbsa_v = tk.IntVar()
cbsa = ttk.Checkbutton(
fnb2,
text="Sat",
variable=cbsa_v,
bootstyle="success-round-toggle")
cbsa.place(x=80, y=210)
cbsu_v = tk.IntVar()
cbsu = ttk.Checkbutton(
fnb2,
text="Sun",
variable=cbsu_v,
bootstyle="success-round-toggle")
cbsu.place(x=160, y=210)
# lets the user know the schedule will start from the selected date
lbloptdys = ttk.Label(fnb2, text="Select the days you want")
lbloptdys.place(x=10, y=150)
lblopttime = ttk.Label(fnb2, text="Select the time you want")
lblopttime.place(x=10, y=50)
lblopttimehr = ttk.Label(fnb2, text="hr")
lblopttimehr.place(x=17, y=80)
lblopttimemin = ttk.Label(fnb2, text="min")
lblopttimemin.place(x=66, y=80)
txtopthour = ttk.Entry(fnb2, bootstyle="danger", width=2)
txtopthour.place(x=10, y=100)
lblopttimecl = ttk.Label(fnb2, text=":")
lblopttimecl.place(x=50, y=105)
txtoptmin = ttk.Entry(fnb2, bootstyle="danger", width=2)
txtoptmin.place(x=66, y=100)
# this is the information section explaining what this application does.
# The frame that holds the message
instfr = ttk.Labelframe(fnb2, bootstyle="danger", text='Information')
instfr.place(x=10, y=270)
# The message
lblinstpt = ttk.Label(
instfr,
text="When you set a schedule for the Peppermint tools, the updater"
" will check the git repos for any new updates that may be"
" available and install them. Addtionally System Updates"
" will check the Debian or Devuan repos depending on what spin"
" of Peppermint you are running ",
wraplength=600)
lblinstpt.pack(side="top", pady=5, padx=5)
btnpt = ttk.Button(
fnb2,
text="Save & Exit",
cursor="hand2",
bootstyle="light-outline",
command=pcron)
btnpt.place(x=500, y=500)
# call Center screen
center_screen()
ldsettings()
pwin.mainloop()

View File

@ -1,42 +0,0 @@
#!/bin/bash
pdir=/opt/tmprpox
fdir=/opt/tmprpox/PepProTools
desdir=/opt/pypep
cbr="https://codeberg.org/Peppermint_OS/PepProTools.git"
fwt(){
###Function to run if the folder was there (fwt)###
#remove the tmpropox
rm -r "$pdir"
#make a new folder tmprox
mkdir "$pdir"
#go to the tmprpox folder
cd "$pdir"
#clone the protools repo
git clone "$cbr"
#use rsynch to copy files over to the opt location
#rsync -av /opt/tmprpox/* /opt/pypep
rsync -av "$fdir"/* "$desdir"
#Clean up and remove the tmpropox
rm -r "$pdir"
}
fwnt(){
###Function to run if the folder was not there (fwnt)###
mkdir "$pdir"
#go to the tmprpox folder
cd "$pdir"
#clone the protools repo
git clone "$cbr"
#use rsynch to copy files over to the opt location
#rsync -av /opt/tmprpox/* /opt/pypep
rsync -av "$fdir"/* "$desdir"
#Clean up and remove the tmpropox
rm -r "$pdir"
}
fupug(){
#Run the apt update and upgrade to update from the debian repos
apt update && apt upgrade -y
}

View File

@ -1,21 +0,0 @@
#!/bin/bash
#use the utils for the needed functions
source peputils.sh
#start system updates
fupug
#see if the tmprpox folder exists
#if it does run the fwt function else
#runs the fwnt function - See the peputils for descriptions
#of what the functions do
if [ -d "$pdir" ];
then
fwt
else
fwnt
fi

View File

@ -1,88 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used to download extras
"""
import subprocess as sp
import tkinter as tk
import ttkbootstrap as ttk
from tendo import singleton
#setting up window
pex = ttk.Window(themename="darkly")
WINDOW_HEIGHT = 230
WINDOW_WIDTH = 355
pex.title('Get Extras')
pex.tk.call('wm', 'iconphoto', pex._w, tk.PhotoImage(file='/usr/share/pixmaps/peppermint-old.png'))
#keep only instance at a time
me = singleton.SingleInstance()
#main title style
spmt = ttk.Style()
spmt.configure("#F62817.TLabel", foreground ="#b12026",
background ="#222222", font = ("Helvetica", '12', 'bold') )
###Verbiage and titel Placements###
lblpmwelttl = ttk.Label(pex, style="Whiteb.TLabel",
text="Download and Install Wallpaper, Themes and Icons ")
lblpmwelttl.place(x=10, y=10)
#Functions to open the other pythons files. or close this screen ###
#open the sure scripts
def icons():
"""get the icons"""
pex.destroy()
sp.call(['xfce4-terminal', '-x','/opt/pypep/icons.sh'])
def themes():
"""get the themes"""
pex.destroy()
sp.call(['xfce4-terminal', '-x','/opt/pypep/themes.sh', '&'])
def wall_papers():
"""get the wallpapers"""
pex.destroy()
sp.call(['xfce4-terminal', '-x','/opt/pypep/walls.sh', '&'])
def quit_pge():
"""quit the window"""
pex.destroy()
def center_screen():
""" gets the coordinates of the center of the screen """
screen_width = pex.winfo_screenwidth()
screen_height = pex.winfo_screenheight()
# Coordinates of the upper left corner of the window to make the window
# appear in the center
x_cordinate = int((screen_width / 2) - (WINDOW_WIDTH / 2))
y_cordinate = int((screen_height / 2) - (WINDOW_HEIGHT / 2))
pex.geometry("{}x{}+{}+{}".format(WINDOW_WIDTH,
WINDOW_HEIGHT, x_cordinate, y_cordinate))
###All the buttons and placements##
themes_button = ttk.Button(text="Peppermint Themes",
bootstyle="danger-outline", command=themes, width=20)
themes_button.place(x=90, y=50)
icons_button = ttk.Button(text='Peppermint Icons', command=icons,
bootstyle="danger-outline", width=20 )
icons_button.place(x=90, y=90)
wall_papers_button = ttk.Button(text='Peppermint WallPaper', command=wall_papers,
bootstyle="danger-outline", width=20 )
wall_papers_button.place(x=90, y=130)
close_button = ttk.Button(text="Close", bootstyle="light-outline",
command=quit_pge, width=10)
close_button.place(x=225, y=190)
#call Center screen
center_screen()
pex.mainloop()

View File

@ -1,70 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used is used to show peptools updates
"""
import sys
from PyQt5.QtSql import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def initializeModel(model):
"""get thedisplay ready"""
model.setTable('gitdata')
model.setEditStrategy(QSqlTableModel.OnFieldChange)
model.select()
model.setHeaderData(0, Qt.Horizontal, "Date Updated")
model.setHeaderData(1, Qt.Horizontal, "Comment")
model.setHeaderData(2, Qt.Horizontal, "Change ID")
def createView(title, model):
"""Create the view"""
view = QTableView()
view.setModel(model)
view.setWindowTitle(title)
return view
def addrow():
"""Add the data"""
print(model.rowCount())
ret = model.insertRows(model.rowCount(), 1)
print(ret)
def findrow(i):
""" Find the data needed"""
delrow = i.row()
if __name__ == '__main__':
""" The main class to present everything"""
app = QApplication(sys.argv)
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('/opt/pypep/dbpep/welval.db')
model = QSqlTableModel()
delrow = -1
initializeModel(model)
view1 = createView("Table Model (View 1)", model)
view1.clicked.connect(findrow)
dlg = QDialog()
layout = QVBoxLayout()
layout.addWidget(view1)
dlg.setLayout(layout)
dlg.setGeometry(QRect(0, 0, 500, 700))
dlg.setWindowTitle("Update History - Peppermint Tools")
dlg.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
dlg.setWindowFlag(Qt.WindowMinimizeButtonHint, True)
dlg.setWindowFlag(Qt.WindowMaximizeButtonHint, True)
dlg.show()
sys.exit(app.exec_())

View File

@ -1,23 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* this script is for performing utility functions
*
"""
import apt
#gets all installed packages
cache = apt.Cache()
#Checks if a package is installed
def install_check(appname):
"""This one check is a application is installed"""
try:
print(appname,cache[appname].is_installed)
return cache[appname].is_installed
except:
#probably not installed or otherwise throws errors on check
return False

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,252 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* Update log from CodeBerg
"""
import json
import sqlite3
import tkinter as tk
import os
import importlib.util
import subprocess
import ttkbootstrap as ttk
from tendo import singleton
import bsconf
# setup the window
pwin = bsconf.bbstyle
WINDOW_HEIGHT = 190
WINDOW_WIDTH = 310
pwin.resizable(False, False)
pwin.title('Peppermint Scope')
pwin.tk.call('wm', 'iconphoto', pwin._w,
tk.PhotoImage(
file='/usr/share/pixmaps/peppermint-old.png'))
# keep only instance at a time
me = singleton.SingleInstance()
# database connection string
conn = sqlite3.connect('/opt/pypep/dbpep/welval.db')
pcur = conn.cursor()
# Create the table
pcur.execute(
'CREATE TABLE IF NOT EXISTS gitdata ( date text, message text, commitd text)')
def debdata():
""" Gets the Debian Data"""
con = sqlite3.connect('/opt/pypep/dbpep/welval.db')
cur = con.cursor()
git_data = json.load(open('git-pepd64.json'))
columns = ['date', 'message', 'commit']
# set the data up to be binded
value = []
values = []
for data in git_data:
for i in columns:
value.append(str(dict(data).get(i)))
values.append(list(value))
value.clear()
# clear the old data
dquery = 'DELETE FROM gitdata'
# the query used to store the data
iquery = 'INSERT INTO gitdata values(?,?,?)'
# clean out auto updates
cquery = """ DELETE FROM gitdata WHERE message LIKE 'Auto%' """
# run the query
cur.execute(dquery)
cur.executemany(iquery, values)
cur.execute(cquery)
con.commit()
con.close()
print("Data is Done")
# open the results screen
os.system('python3 /opt/pypep/pddata.py &')
def devdata():
"""Gets the Devuan Data"""
con = sqlite3.connect('/opt/pypep/dbpep/welval.db')
cur = con.cursor()
git_data = json.load(open('git-pepdv64.json'))
columns = ['date', 'message', 'commit']
# set the data up to be binded
value = []
values = []
for data in git_data:
for i in columns:
value.append(str(dict(data).get(i)))
values.append(list(value))
value.clear()
# clear the old data
dquery = 'DELETE FROM gitdata'
# the query used to store the data
iquery = 'INSERT INTO gitdata values(?,?,?)'
# clean out auto updates
cquery = """ DELETE FROM gitdata WHERE message LIKE 'Auto%' """
# run the query
cur.execute(dquery)
cur.executemany(iquery, values)
cur.execute(cquery)
# commit the data and close connection
con.commit()
con.close()
print("Data is Done")
# open the results screen for devuan
os.system('python3 /opt/pypep/pdvdata.py &')
def peptoolsdata():
"""prepare the log JSON data for peptools"""
con = sqlite3.connect('/opt/pypep/dbpep/welval.db')
cur = con.cursor()
git_data = json.load(open('git-peptools.json'))
columns = ['date', 'message', 'commit']
# set the data up to be binded
value = []
values = []
for data in git_data:
for i in columns:
value.append(str(dict(data).get(i)))
values.append(list(value))
value.clear()
# clear the old data
dquery = 'DELETE FROM gitdata'
# the query used to store the data
iquery = 'INSERT INTO gitdata values(?,?,?)'
# clean out auto updates
cquery = """ DELETE FROM gitdata WHERE message LIKE 'Auto%' """
# run the query
cur.execute(dquery)
cur.executemany(iquery, values)
cur.execute(cquery)
# commit the data and close connection
con.commit()
con.close()
print("Data is Done")
# open the results screen for peptools
os.system('python3 /opt/pypep/ptdata.py &')
def center_screen():
""" gets the coordinates of the center of the screen """
screen_width = pwin.winfo_screenwidth()
screen_height = pwin.winfo_screenheight()
# Coordinates of the upper left corner of the window to make the window
# appear in the center
x_cordinate = int((screen_width / 2) - (WINDOW_WIDTH / 2))
y_cordinate = int((screen_height / 2) - (WINDOW_HEIGHT / 2))
pwin.geometry("{}x{}+{}+{}".format(WINDOW_WIDTH,
WINDOW_HEIGHT, x_cordinate, y_cordinate))
def instdep():
"""This will pop a terminal so the user ca instal the qtsql"""
# kill the window
pwin.destroy()
# pop the terminal
cmd = "xfce4-terminal -e 'bash -c \"sudo apt-get install -y python3-pyqt5.qtsql\";bash'"
subprocess.Popen(cmd, shell=True)
def vdecide():
"""All the buttons and placements"""
# These are the controls that are used
btnpt = ttk.Button(
text="PepTools Updates",
bootstyle="danger-outline",
width=27,
command=peptoolsdata)
btnid = ttk.Button(
text="Install Dependencies",
bootstyle="danger-outline",
width=27,
command=instdep)
btndev = ttk.Button(
text="Pep Devuan Updates",
bootstyle="danger-outline",
width=27,
command=devdata)
btndeb = ttk.Button(
text="Pep Debian Updates",
bootstyle="danger-outline",
width=27,
command=debdata)
lblex = ttk.Label(
pwin,
text="Select what updates you would like to review",
wraplength=300)
lbldep = ttk.Label(
pwin,
text="PepScope needs some dependencies installed",
wraplength=300)
# variables used to test if package is installed
package = 'PyQt5.QtSql'
is_present = importlib.util.find_spec(package)
# conditions
if os.path.exists("/etc/devuan_version"):
if is_present is None:
print("Is Not Here Devuan!")
# Button and Label placements
btnid.grid(row=1, column=1, ipadx=5, ipady=5, padx=5, pady=5)
lbldep.grid(
row=0,
column=0,
columnspan=4,
ipadx=5,
ipady=5,
padx=5,
pady=5)
else:
print("You Good Devuan!")
# Button and Label placements
btndev.grid(row=1, column=1, ipadx=5, ipady=5, padx=5, pady=5)
btnpt.grid(row=2, column=1, ipadx=5, ipady=5, padx=5, pady=5)
lblex.grid(
row=0,
column=0,
columnspan=4,
ipadx=5,
ipady=5,
padx=5,
pady=5)
elif os.path.exists("/etc/debian_version"):
if is_present is None:
print("Is Not Here Debian!")
# Button and Label placements
btnid.grid(row=1, column=1, ipadx=5, ipady=5, padx=5, pady=5)
lbldep.grid(
row=0,
column=0,
columnspan=4,
ipadx=5,
ipady=5,
padx=5,
pady=5)
else:
print("You Good Debian!")
# Button and Label placements
btndeb.grid(row=1, column=1, ipadx=5, ipady=5, padx=5, pady=5)
btnpt.grid(row=2, column=1, ipadx=5, ipady=5, padx=5, pady=5)
lblex.grid(
row=0,
column=0,
columnspan=4,
ipadx=5,
ipady=5,
padx=5,
pady=5)
# call Center screen
center_screen()
vdecide()
pwin.mainloop()

View File

@ -1,2 +0,0 @@
#!/bin/bash
sudo /opt/pypep/xDaily

View File

@ -1,23 +0,0 @@
#!/bin/bash
_extras=themes
_repo="Peppermint_OS/PepThemes"
###########################################
# Quietly have wget -q0- "pipe" its output directly to tar.
# Use tar -xvz to decompress, list and untar the DL file
# to the symlink 'pepthemes' in /usr/share, on the fly.
# Leaving no files to remove and no permission changes required.
###########################################
echo -e "\n Downloadng Additional ${_extras} to /usr/share/"
wget https://codeberg.org/${_repo}/archive/main.tar.gz --show-progress -qO - |
tar -xz -C /usr/share 2>/dev/null
echo -e "\n Additional Themes downloaded and installed.\n"
read -n1 -p " Process Completed. Press any key to close this dialog." answ
# Go back to the Extras
python3 /opt/pypep/pge.py &

View File

@ -1,23 +0,0 @@
#!/bin/bash
_extras=wallpapers
_repo="Peppermint_OS/PepWallPaper"
###########################################
# Quietly have wget -q0- "pipe" its output directly to tar.
# Use tar -xvz to decompress, list and untar the DL file
# to the symlink 'pepwallpaper' in /usr/share, on the fly.
# Leaving no files to remove and no permission changes required.
###########################################
echo -e "\n Downloadng Bonus ${_extras} to /usr/share/"
wget https://codeberg.org/${_repo}/archive/master.tar.gz --show-progress -qO - |
tar -xz -C /usr/share 2>/dev/null
echo -e "\n Bonus Wallpapers downloaded and installed.\n"
read -n1 -p " Process Completed. Press any key to close this dialog." answ
# Go back to the Extras
python3 /opt/pypep/pge.py &

View File

@ -1,78 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used to help get the wallpapers
"""
import os
import tkinter as tk
from tendo import singleton
import ttkbootstrap as ttk
# setting up window
pexs = ttk.Window(themename="darkly")
window_height = 120
window_width = 420
pexs.title('Additional Wallpaper')
pexs.tk.call('wm', 'iconphoto', pexs._w, tk.PhotoImage(
file='/usr/share/pixmaps/peppermint-old.png'))
# keep only instance at a time
me = singleton.SingleInstance()
def center_screen():
""" gets the coordinates of the center of the screen """
global screen_height, screen_width, x_cordinate, y_cordinate
screen_width = pexs.winfo_screenwidth()
screen_height = pexs.winfo_screenheight()
# Coordinates of the upper left corner of the window to make the window
# appear in the center
x_cordinate = int((screen_width / 2) - (window_width / 2))
y_cordinate = int((screen_height / 2) - (window_height / 2))
pexs.geometry("{}x{}+{}+{}".format(window_width,
window_height, x_cordinate, y_cordinate))
def wls():
"""Check if user can connect to codeberg"""
pexs.destroy()
os.system('python3 /opt/pypep/diagwlschk.py')
def xc():
"""close the form start back at pge"""
pexs.destroy()
os.popen('python3 /opt/pypep/pge.py')
# title message
lblexp = ttk.Label(
pexs,
bootstyle="light",
text="Would you like to install addtional wallpaper created by the Peppermint Team and Community?.",
wraplength=400)
lblexp.pack(side="top")
###All the buttons and placements##
btncore = ttk.Button(
text="Install",
bootstyle="danger-outline",
command=wls,
width=8)
btncore.pack(side="left", padx=5, pady=5)
bttut = ttk.Button(
text='Cancel',
bootstyle="danger-outline",
width=8,
command=xc)
bttut.pack(side="left", padx=5, pady=5)
# call Center screen
center_screen()
pexs.mainloop()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("App Image Hub")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://www.appimagehub.com/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,24 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Build Date log")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://sourceforge.net/p/peppermintos/pepwiki/BuildDate/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,22 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint CodeBerg")
self.setWindowIcon(QIcon('/opt/pypep/cb.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://codeberg.org/Peppermint_OS"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Flat Hub")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://flathub.org/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Community Forum")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-fm-20.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://sourceforge.net/p/peppermintos/pepos/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Gnome Store")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://wiki.gnome.org/Projects/SandboxedApps"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Mastodon")
self.setWindowIcon(QIcon('/opt/pypep/mn.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://fosstodon.org/web/@peppermintos"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("[matrix]")
self.setWindowIcon(QIcon('/opt/pypep/mt.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://matrix.to/#/!JhPtEbNexzFaoOkvGp:matrix.org?via=matrix.org"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("PepDocs")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://peppermint_os.codeberg.page/html/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Reddit")
self.setWindowIcon(QIcon('/opt/pypep/rd.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://www.reddit.com/r/PeppermintOS/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Release Notes")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://peppermint_os.codeberg.page/releasenotes.html"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Community Forums")
self.setWindowIcon(QIcon('/opt/pypep/sf.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://sourceforge.net/p/peppermintos/pepos/"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Snap Craft")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://snapcraft.io/snap-store"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,45 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Kumo Tutorial")
self.setWindowIcon(QIcon('/usr/share/pixmaps/peppermint-old.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://peppermint_os.codeberg.page/html/#kumo"))
self.setCentralWidget(self.browser)
#add a nav toolbar
self.navigation_bar = QToolBar('Navigation Toolbar')
self.addToolBar(self.navigation_bar)
#put a back button
back_button = QAction("Back", self)
back_button.setStatusTip('Go to previous page you visited')
back_button.triggered.connect(self.browser.back)
self.navigation_bar.addAction(back_button)
#put a next button
next_button = QAction("Next", self)
next_button.setStatusTip('Go to next page')
next_button.triggered.connect(self.browser.forward)
self.navigation_bar.addAction(next_button)
#put a refresh button
refresh_button = QAction("Refresh", self)
refresh_button.setStatusTip('Refresh this page')
refresh_button.triggered.connect(self.browser.reload)
self.navigation_bar.addAction(refresh_button)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

View File

@ -1,23 +0,0 @@
#!/usr/bin/env python3
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
import sys
class MainWindow(QMainWindow):
#set up the main window and the url address.
def __init__(self, *args, **kwargs):
super(MainWindow,self).__init__(*args, **kwargs)
self.setWindowTitle("Peppermint Team Twitter")
self.setWindowIcon(QIcon('/usr/share/pixmaps/twtter.png'))
self.browser = QWebEngineView()
self.browser.setUrl(QUrl("https://twitter.com/peppermintos"))
self.setCentralWidget(self.browser)
self.show()
app = QApplication(sys.argv)
window = MainWindow()
app.exec_()

3
PepProTools/welcome Executable file
View File

@ -0,0 +1,3 @@
#!/bin/bash
python3 ~/.local/share/pmostools/peptools/welcome.py

View File

@ -1,308 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This script is used to welcome the user to the system
"""
import os
import tkinter as tk
import ttkbootstrap as ttk
import welconf
import welfunc
# setting up window
pewel = welconf.bbstyle
pewel.resizable(False, False)
WINDOW_HEIGHT = 540
WINDOW_WIDTH = 770
def wbase():
"""Check to see what base is being loaded"""
if os.path.exists("/etc/devuan_version"):
pewel.title(welconf.DEVUAN_TITLE)
lpath = welconf.devcandy
l_g = tk.Label(pewel, image=lpath, width=128, height=128, borderwidth=0)
l_g.grid(
columnspan=2,
row=0,
column=0,
ipadx=5,
ipady=5,
padx=5,
pady=5)
elif os.path.exists("/etc/debian_version"):
pewel.title(welconf.DEBIAN_TITLE)
lpath = welconf.debcandy
l_g = tk.Label(pewel, image=lpath, width=128, height=128, borderwidth=0)
l_g.grid(
columnspan=2,
row=0,
column=0,
ipadx=5,
ipady=5,
padx=5,
pady=5)
def center_screen():
""" gets the coordinates of the center of the screen """
screen_width = pewel.winfo_screenwidth()
screen_height = pewel.winfo_screenheight()
# Coordinates of the upper left corner of the window to make the window
# appear in the center
x_cordinate = int((screen_width / 2) - (WINDOW_WIDTH / 2))
y_cordinate = int((screen_height / 2) - (WINDOW_HEIGHT / 2))
pewel.geometry("{}x{}+{}+{}".format(WINDOW_WIDTH,
WINDOW_HEIGHT, x_cordinate, y_cordinate))
def kon():
""" This feature will is the disabled the welcome screen"""
# This will get the logged in user
gusr = tk.StringVar()
gusr.set(os.getlogin())
# set it in to as entry box
txtcappuser = ttk.Entry(pewel, bootstyle="success", width=10, text=gusr)
# set that as a variable
usr = txtcappuser.get()
# Create path variable
spath = "/home/" + usr + "/.config/autostart/"
if os.path.isfile(spath + "Welcome_auto.desktop"):
cbas = ttk.Checkbutton(
pewel,
text="Disable Auto start",
bootstyle="light-round-toggle",
command=kon_del)
cbas.grid(row=2, column=6)
else:
cbas = ttk.Checkbutton(
pewel,
text="Disable Auto start",
bootstyle="light-round-toggle")
def kon_del():
""" This feature will let the user disable the welcome screen"""
# This will get the logged in user
gusr = tk.StringVar()
gusr.set(os.getlogin())
# set it in to as entry box
txtcappuser = ttk.Entry(pewel, bootstyle="danger", width=10, text=gusr)
# set that as a variable
usr = txtcappuser.get()
# Create path variable
spath = "/home/" + usr + "/.config/autostart/"
if os.path.isfile(spath + "Welcome_auto.desktop"):
os.remove(spath + "Welcome_auto.desktop")
print("sym deleted")
else:
print("no welcome sym to delete")
# Set the window icon
pewel.tk.call('wm', 'iconphoto', pewel._w, tk.PhotoImage(
file='/usr/share/pixmaps/peppermint-old.png'))
# logo for the splash
lpath2 = welconf.peppertxt
lg2 = tk.Label(pewel, image=lpath2, width=600, height=80, borderwidth=0)
lg2.grid(columnspan=4, row=0, column=3, ipadx=5, ipady=5, padx=5, pady=5)
# Frame that managed the Welcome To Peppermint Section
fsw = ttk.Frame(pewel, width=200)
fsw.grid(row=1, column=0, columnspan=4)
# Frame title
wms = ttk.Labelframe(fsw, bootstyle="warning", text="Welcome to Peppermint OS")
wms.grid(row=2, column=0, columnspan=2, ipadx=0, ipady=0, padx=10, pady=10)
# Frame Buttons
btnsaw = ttk.Button(
wms,
text="Apps & Web Browser",
cursor="hand2",
style="danger-outline",
command=welfunc.suggested_packages)
btnsaw.grid(row=0, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
btnph = ttk.Button(
wms,
text="Peppermint Hub",
cursor="hand2",
bootstyle="danger-outline",
command=welfunc.hub)
btnph.grid(row=1, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
btnwik = ttk.Button(
wms,
text="Kumo Docs",
cursor="hand2",
bootstyle="danger-outline",
command=welfunc.kumo_docs)
btnwik.grid(row=2, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
btnpge = ttk.Button(
wms,
text="Peppermint Extra's",
cursor="hand2",
bootstyle="danger-outline",
command=welfunc.pep_extras)
btnpge.grid(row=3, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
btnpdocs = ttk.Button(
wms,
text="Pep Docs",
cursor="hand2",
bootstyle="danger-outline",
command=welfunc.pep_docs)
btnpdocs.grid(row=4, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
btnbdl = ttk.Button(
wms,
text="Build Log",
cursor="hand2",
bootstyle="danger-outline",
command=welfunc.build_date)
btnbdl.grid(row=5, column=0, ipadx=5, ipady=5, padx=5, pady=5, sticky='ew')
# Frame labels
lblsaw = ttk.Label(wms, text=" - Select Packages and Web Browsers ",
wraplength=300)
lblsaw.grid(row=0, column=1, sticky='ew')
lblph = ttk.Label(wms, text=" - System changes, and customizations ",
wraplength=300)
lblph.grid(row=1, column=1, sticky='ew')
lblwik = ttk.Label(wms, text=" - Read how to create and manage SSB's ",
wraplength=300)
lblwik.grid(row=2, column=1, sticky='ew')
lblpge = ttk.Label(wms, text=" - Download all the Peppermint Extras ",
wraplength=300)
lblpge.grid(row=3, column=1, sticky='ew')
lblpdocs = ttk.Label(wms, text=" - Peppermint Online Documentation",
wraplength=300)
lblpdocs.grid(row=4, column=1, sticky='ew')
lblbdl = ttk.Label(wms, text=" - Review the build log",
wraplength=300)
lblbdl.grid(row=5, column=1, sticky='ew')
# Frame that manages the Community buttons
fs = ttk.Frame(pewel)
fs.grid(row=1, column=5, columnspan=2, ipadx=0, ipady=0, padx=10, pady=10)
# Frame Title
soc = ttk.Labelframe(fs, bootstyle="warning", text="The Peppermint Community")
soc.grid(row=0, column=0)
# Frame message
lblqt = ttk.Label(fs, text=welconf.MESSAGE_TEXT,
wraplength=250)
lblqt.grid(row=1, column=0, sticky='ew')
# Social Icons
icotms = welconf.tms
icotfm = welconf.fm
icotmat = welconf.mat
icotrd = welconf.rd
icotcb = welconf.cb
# Social buttons
btncf = ttk.Button(
soc,
text="Forums",
cursor="hand2",
bootstyle="dark-outline",
image=icotfm,
command=welfunc.source_forge)
btncf.grid(
row=0,
column=0,
ipadx=10,
ipady=10,
padx=10,
pady=10,
sticky='nesw'
)
btnrd = ttk.Button(
soc,
text="Reddit",
cursor="hand2",
bootstyle="dark-outline",
image=icotrd,
command=welfunc.reddit)
btnrd.grid(
row=0,
column=1,
ipadx=10,
ipady=10,
padx=10,
pady=10,
sticky='nesw'
)
btnmt = ttk.Button(
soc,
text="-matrix-",
cursor="hand2",
bootstyle="dark-outline",
image=icotmat,
command=welfunc.matrix)
btnmt.grid(
row=0,
column=2,
ipadx=10,
ipady=10,
padx=10,
pady=10,
sticky='nesw'
)
btnmas = ttk.Button(
soc,
text="Mastodon",
cursor="hand2",
bootstyle="dark-outline",
image=icotms,
command=welfunc.mastodon)
btnmas.grid(
row=1,
column=1,
ipadx=10,
ipady=10,
padx=10,
pady=10,
sticky='nesw'
)
btncb = ttk.Button(
soc,
text="CodeBerg",
cursor="hand2",
bootstyle="dark-outline",
image=icotcb,
command=welfunc.code_berg)
btncb.grid(
row=1,
column=0,
ipadx=10,
ipady=10,
padx=10,
pady=10,
sticky='nesw'
)
# set the correct build branding
wbase()
kon()
# call Center screen
center_screen()
# run the application
pewel.mainloop()

View File

@ -1,38 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* this files should be used for the over all style and design of
* the Welcome Screen
"""
from tkinter import PhotoImage
import ttkbootstrap as ttk
# This will set the style to used for boostrap
# just change the name to what is needed for the
# the system
bbstyle = ttk.Window(themename="darkly")
# set the title of the window
DEBIAN_TITLE = "Welcome to Peppermint - (Debian)"
DEVUAN_TITLE = "Welcome to Peppermint - (Devuan)"
# set the logo for the screen
debcandy = PhotoImage(file='/opt/pypep/pep-logo-deb.png')
devcandy = PhotoImage(file='/opt/pypep/pep-logo-dev.png')
# add the logo text
peppertxt = PhotoImage(file='/opt/pypep/peppermint-word-white.png')
# set the icons that are used for the community buttons
tms = PhotoImage(file="/opt/pypep/mn.png")
fm = PhotoImage(file="/opt/pypep/sf.png")
mat = PhotoImage(file="/opt/pypep/mt.png")
rd = PhotoImage(file="/opt/pypep/rd.png")
cb = PhotoImage(file="/opt/pypep/cb.png")
# set the message for the community section
MESSAGE_TEXT = ("Come join the conversation and discussion about"
" PeppermintOS using these links to participate in"
" the community.")

View File

@ -1,72 +0,0 @@
"""
* Author: "PepDebian(peppermintosteam@proton.me)
*
* License: SPDX-License-Identifier: GPL-3.0-or-later
*
* This file is used to keep functions that are used for the Welcome
* Screen
"""
import os.path
def suggested_packages():
""" Open the suggested packages """
os.system('pkexec python3 /opt/pypep/peppackages.py')
def pep_extras():
"""Open peppemrinmt Extra's"""
os.system('python3 /opt/pypep/pge.py')
def hub():
"""Open the Hub"""
os.system('python3 /opt/pypep/hub.py &')
##SSB's###
def kumo_docs():
"""Open the Kumo docs"""
os.system('python3 /opt/pypep/web_tutorial.py &')
def pep_docs():
"""Open Pep Docs"""
os.system('python3 /opt/pypep/web_pdocs.py &')
# Community Section
def twitter():
"""Open the Pep twitter"""
os.system('python3 /opt/pypep/web_twtr.py &')
def reddit():
"""Open Reddit"""
os.system('python3 /opt/pypep/web_reddit.py &')
def mastodon():
"""Open Mastodon"""
os.system('python3 /opt/pypep/web_mas.py &')
def code_berg():
"""Open Codeberg"""
os.system('python3 /opt/pypep/web_codeb.py &')
def matrix():
"""Open Matrix"""
os.system('python3 /opt/pypep/web_mat.py &')
def source_forge():
"""Open Sourceforge"""
os.system('python3 /opt/pypep/web_sf.py &')
def build_date():
"""Open BuildDate wiki"""
os.system('python3 /opt/pypep/web_bd.py &')

View File

@ -1,10 +1,8 @@
#!/bin/bash
PROGNAME="xDaily"
[ "$USER" != "root" ] &&
[ "$USER" != "root" ] &&
echo -e "\t$PROGNAME must be run as root. \n\tOr with \`sudo $PROGNAME\` ." && exit
#use the utils for the needed functions
source /opt/pypep/peputils.sh
### Our options are going to be
# = "full output to the terminal, no stopping."
@ -16,20 +14,20 @@ for i in _quiet _interactive ; do unset -v $i ; done
while getopts 'iq' OPTION; do
case "$OPTION" in
i)
_interactive="yes"
echo -e " Entering interactive mode\n"
break
_interactive="yes"
echo -e " Entering interactive mode\n"
break
;;
q)
_quiet="yes"
echo -e " Entering interactive mode, without verbose output.\n"
break
_quiet="yes"
echo -e " Entering interactive mode, without verbose output.\n"
break
;;
?)
echo "Usage: $(basename ${PROGNAME}) [-i = interactive] [-q = suppressed ouput]"
return 1
echo "Usage: $(basename ${PROGNAME}) [-i = interactive] [-q = suppressed ouput]"
return 1
;;
esac
done
@ -37,165 +35,153 @@ done
[ "$(which nala)" ] && PkgMgr="nala" || PkgMgr="apt"
see_it() {
[ "$_interactive" = "yes" ] && ( read -n1 -p " $_msg ? \"Y/n\" " answ
[ -z $answ ] || [ "$answ" = "y" ] || [ "$answ" = "Y" ] && echo &&
do_it &&
echo -e " $_msg - Completed.\n" ||
echo -e "\r $_msg - Skipped.\n" )
[ "$_interactive" = "yes" ] && ( read -n1 -p " $_msg ? \"Y/n\" " answ
[ -z $answ ] || [ "$answ" = "y" ] || [ "$answ" = "Y" ] && echo &&
do_it &&
echo -e " $_msg - Completed.\n" ||
echo -e "\r $_msg - Skipped.\n" )
}
no_see() {
[ "$_quiet" = "yes" ] && ( read -n1 -p " $_msg ? \"Y/n\" " answ
[ -z $answ ] || [ "$answ" = "y" ] || [ "$answ" = "Y" ] && echo &&
do_it > /dev/null &&
echo -e " $_msg - Completed.\n" ||
echo -e "\r $_msg - Skipped.\n" )
[ "$_quiet" = "yes" ] && ( read -n1 -p " $_msg ? \"Y/n\" " answ
[ -z $answ ] || [ "$answ" = "y" ] || [ "$answ" = "Y" ] && echo &&
do_it > /dev/null &&
echo -e " $_msg - Completed.\n" ||
echo -e "\r $_msg - Skipped.\n" )
}
run_it() {
[ "$_interactive" != "yes" ] && [ "$_quiet" != "yes" ] && (
echo -e "\n $_msg ." &&
do_it &&
echo -e " $_msg - Completed." )
[ "$_interactive" != "yes" ] && [ "$_quiet" != "yes" ] && (
echo -e "\n $_msg ." &&
do_it &&
echo -e " $_msg - Completed." )
}
# Begin xDaily command functions
# Begin xDaily command functions
_update() {
_msg="Check apt repositories for Updates"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr update ||
$PkgMgr update 2>&1 >/dev/null
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr update ||
$PkgMgr update 2>&1 >/dev/null
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_upgradable() {
_msg="See upgradable packages"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr list --upgradable ||
$PkgMgr list --upgradable 2>&1 >/dev/null
[ "$_quiet" != "yes" ] &&
$PkgMgr list --upgradable ||
$PkgMgr list --upgradable 2>&1 >/dev/null
}
see_it
# no_see
# run_it
see_it
# no_see
# run_it
}
_upgrade() {
_msg="Install available updated packages"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr upgrade ||
$PkgMgr upgrade 2>&1 >/dev/null
[ "$_quiet" != "yes" ] &&
$PkgMgr upgrade ||
$PkgMgr upgrade 2>&1 >/dev/null
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_apt_clean() {
_msg="Remove unneccessary packages from APT cache"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr clean ||
$PkgMgr clean 2>&1 >/dev/null
[ "$_quiet" != "yes" ] &&
$PkgMgr clean ||
$PkgMgr clean 2>&1 >/dev/null
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_autoclean () {
_msg="Remove unavailable entries from APT cache"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr autoclean ||
$PkgMgr autoclean 2>&1 >/dev/null
[ "$_quiet" != "yes" ] &&
$PkgMgr autoclean ||
$PkgMgr autoclean 2>&1 >/dev/null
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_autoremove() {
_msg="Remove old dependencies not required by the system"
do_it() {
[ "$_quiet" != "yes" ] &&
$PkgMgr autoremove ||
$PkgMgr autoremove 2>&1 >/dev/null
[ "$_quiet" != "yes" ] &&
$PkgMgr autoremove ||
$PkgMgr autoremove 2>&1 >/dev/null
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_clear_thumbnails() {
_msg="Clear browser thumbnail caches"
do_it() {
for i in ".thumbnails" ".cache/thumbnails" ; do
for j in "*/*.png" "*/*/*.png" ; do
[ "$_quiet" != "yes" ] &&
rm -v /home/${SUDO_USER}/${i}/${j} 2>/dev/null ||
rm /home/${SUDO_USER}/${i}/${j} 2>/dev/null
done
done ; true
}
see_it
no_see
run_it
for i in ".thumbnails" ".cache/thumbnails" ; do
for j in "*/*.png" "*/*/*.png" ; do
[ "$_quiet" != "yes" ] &&
rm -v /home/${SUDO_USER}/${i}/${j} 2>/dev/null ||
rm /home/${SUDO_USER}/${i}/${j} 2>/dev/null
done
done ; true
}
see_it
no_see
run_it
}
_clear_recents() {
_msg="Clear the \"Recently Used\" list in FireFox"
do_it() {
dd bs=1 count=1 status=none if=/dev/null of=/home/${SUDO_USER}/.local/share/recently-used.xbel
chown ${SUDO_USER} /home/${SUDO_USER}/.local/share/recently-used.xbel
dd bs=1 count=1 status=none if=/dev/null of=/home/${SUDO_USER}/.local/share/recently-used.xbel
chown ${SUDO_USER} /home/${SUDO_USER}/.local/share/recently-used.xbel
}
see_it
no_see
run_it
see_it
no_see
run_it
}
_rbranding() {
_msg="Reconfirm Peppermint Branding in os-release"
do_it() {
diff -q /opt/pepconf/os-release /usr/lib/os-release || cp /opt/pepconf/os-release /usr/lib/os-release
diff -q /opt/pepconf/os-release /etc/os-release || cp /opt/pepconf/os-release /etc/os-release
}
see_it
no_see
run_it
diff -q /opt/pepconf/os-release /usr/lib/os-release || cp /opt/pepconf/os-release /usr/lib/os-release
diff -q /opt/pepconf/os-release /etc/os-release || cp /opt/pepconf/os-release /etc/os-release
}
see_it
no_see
run_it
}
_ssd_trimfs() {
_msg="For SSDs: trim eligible ext2/3/4 filesystems"
do_it() {
for mnt in $(grep -E "(ext2|ext3|ext4)" /etc/mtab | cut -f2 -d" ")
do fstrim ${mnt} &>/dev/null &&
echo -e " Completed fstrim for \"${mnt}\"" ||
echo -e " No fstrim required for \"${mnt}\""
done
}
for mnt in $(grep -E "(ext2|ext3|ext4)" /etc/mtab | cut -f2 -d" ")
do fstrim ${mnt} &>/dev/null &&
echo -e " Completed fstrim for \"${mnt}\"" ||
echo -e " No fstrim required for \"${mnt}\""
done
}
see_it
no_see
run_it
}
_ptools() {
_msg="Synch up the PepTools"
do_it() {
if [ -d "$pdir" ]
then fwt
else fwnt
fi
}
see_it
no_see
run_it
}
_udcache() {
_msg="Caching icons at /usr/share/icons/"
@ -205,7 +191,7 @@ _udcache() {
run_it
}
_update
_upgradable
_upgrade
@ -217,7 +203,6 @@ _clear_recents
_udcache
_rbranding
_ssd_trimfs
_ptools
[ "$_interactive" = "yes" ] &&
read -n1 -p " Press any key to continue ... " answ

View File

@ -1,17 +0,0 @@
Copyright (C) 2022 Peppermint OS.
# Peppermint Debian Configs for 64 bit
## Peppermint Build configs
These are for Peppermint Debian configs. The files are used to build the ISO
that is distributed for Peppermint Devuan
These configs are distributed under the terms of the GNU General Public
License Version 3 or any later version (SPDX: *GPL-3.0-or-later*).
## Contributions and Bug Reports
Contributions are accepted as CodeBerg pull requests or via email (`git
send-email` patches). Any problem may also be reported through CodeBerg issues
page or by contacting: peppermintosteam@proton.me

View File

@ -1 +0,0 @@
../PepCoreFiles/RepoUpdater

View File

@ -18,4 +18,4 @@ Categories=Settings
Comment=Calamares Installer for Peppermint Live
Keywords=calamares;system;install;peppermint;installer
StartupNotify=True
StartupWMClass=calamares
StartupWMClass=calamares

View File

@ -2,10 +2,10 @@
Version=1.0
Type=Application
Name=Peppermint Hub
Exec=python3 hub.py
Exec=hub
Icon=/usr/share/pixmaps/peppermint-hub.png
Terminal=false
Categories=Settings
StartupNotify=True
Comment=Use the Hub to configure your system
Path=/opt/pypep

View File

@ -2,10 +2,10 @@
Version=1.0
Type=Application
Name=Welcome to Peppermint
Exec=python3 welcome_man.py
Exec=welcome
Icon=/usr/share/pixmaps/peppermint.png
Terminal=false
Categories=Settings
StartupNotify=True
Name[en_US]=Welcome to Peppermint
Path=/opt/pypep

View File

15
applications/jgmenu.desktop Executable file
View File

@ -0,0 +1,15 @@
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=jgmenu
GenericName=Application Menu
GenericName[ru]=Меню приложений
GenericName[sv]=Program Meny
Comment=Displays menu for launching installed applications
Comment[ru]=Отображает меню для запуска установленных приложений
Comment[sv]=Visar meny för installerade program
Exec=jgmenu_run
Terminal=false
Icon=Menu_logo
Categories=System
StartupNotify=false

10
applications/kumo.desktop Executable file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=Kumo
GenericName=Kumo
Comment=Simple SSB Launcher
Categories=Network;
Type=Application
Exec=kumo
Icon=/usr/share/pixmaps/kumo.png
Terminal=false
NoDisplay=false

67
applications/plank.desktop Executable file
View File

@ -0,0 +1,67 @@
[Desktop Entry]
Name=Plank
GenericName=Dock
Comment[am]=
Comment[ar]=بسيط بغباء.
Comment[bg]=Пределно прост.
Comment[bs]=Glupavo jednostavan.
Comment[ca]=Estúpidament simple.
Comment[cs]=Stupidně jednoduchý.
Comment[da]=Super simpel.
Comment[de]=Lächerlich einfach.
Comment[el]=Βλακωδώς απλό.
Comment[en_AU]=Stupidly simple.
Comment[en_CA]=Stupidly simple.
Comment[en_GB]=Stupidly simple.
Comment[eo]=Stulte simple.
Comment[es]=Estúpidamente simple.
Comment[et]=Hämmastavalt lihtne.
Comment[eu]=Erraza baino errazagoa.
Comment[fi]=Todella yksinkertainen.
Comment[fr]=Stupidement simple.
Comment[ga]=Simplíocht shimplí.
Comment[gd]=Cho furasta 's a ghabhas.
Comment[gl]=Estupidamente simple.
Comment[he]=טפשי עד כמה שזה פשוט
Comment[hr]=Neviđeno jednostavan
Comment[hu]=Nagyszerűen egyszerű.
Comment[id]=Begitu sederhana.
Comment[it]=Stupidamente semplice.
Comment[ja]=
Comment[ka]=
Comment[ko]= .
Comment[lt]=Kvailai paprastas.
Comment[lv]=Muļķīgi vienkārši.
Comment[ml]=.
Comment[ms]=Ringkas la sangat.
Comment[nb]=Uforstandig enkelt.
Comment[ne]=
Comment[nl]=Belachelijk eenvoudig.
Comment[nn]=Idiotsikkert
Comment[pl]=Idiotycznie prosty.
Comment[pt]=Estupidamente simples.
Comment[pt_BR]=Estupidamente simples.
Comment[ro]=Stupid de simplu.
Comment[ru]=До безумного прост.
Comment[sk]=Primitívne jednoduchý.
Comment[sl]=Bedasto preprost.
Comment[sma]=dle dan aelhkies.
Comment[sr]=Шашаво једноставно.
Comment[sr@latin]=Glupavo jenostavan.
Comment[sv]=Galet enkelt.
Comment[ta]=ி ி
Comment[te]= ి.
Comment[th]=
Comment[tr]=Son derece basit.
Comment[uk]=Просто легкий.
Comment[uz]=Ahmoqona darajada sodda.
Comment[vi]=Cc kì đơn gin.
Comment[zh_CN]=
Comment[zh_TW]=
Comment=Stupidly simple.
Categories=Utility;
Type=Application
Exec=plank
Icon=plank
Terminal=false
NoDisplay=false

17
build-all.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
################################################################################
# Title: build-all.sh
# Description: Script to build Peppermint Debian ISO images
# Author: manuel rosa <manuelsilvarosa@gmail.com>
# Date: Outubro 29, 2023
# License: GPL-3.0-or-later
################################################################################
# update files
#git pull --ff
# this script will build the isos sequencialy
./debian-64/BldHelper.sh
./debian-32/BldHelper.sh

View File

@ -2,20 +2,26 @@
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Set secure permissions for the initramfs if we're configuring
# Install luks utilities if needed.
# Also, set secure permissions for the initramfs if we're configuring
# full-disk-encryption. The initramfs is re-generated later in the
# installation process so we only set the permissions snippet without
# regenerating the initramfs right now:
if [ "$(mount | grep $CHROOT" " | cut -c -16)" = "/dev/mapper/luks" ]; then
echo "UMASK=0077" > $CHROOT/etc/initramfs-tools/conf.d/initramfs-permissions
chroot $CHROOT apt-get -y install cryptsetup-initramfs cryptsetup keyutils
fi
echo "Running bootloader-config..."
if [ -d /sys/firmware/efi/efivars ]; then
echo " * Installing grub-efi (uefi)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-ia32 cryptsetup keyutils
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-ia32
else
echo " * install grub... (bios)"
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc cryptsetup keyutils
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc
fi
# Re-enable os-prober:
sed -i "s/#GRUB_DISABLE_OS_PROBER=false/# OS_PROBER re-enabled by Debian Calamares installation:\nGRUB_DISABLE_OS_PROBER=false/g" $CHROOT/etc/default/grub
chroot $CHROOT /usr/sbin/update-grub

View File

@ -2,20 +2,26 @@
CHROOT=$(mount | grep proc | grep calamares | awk '{print $3}' | sed -e "s#/proc##g")
# Set secure permissions for the initramfs if we're configuring
# Install luks utilities if needed.
# Also, set secure permissions for the initramfs if we're configuring
# full-disk-encryption. The initramfs is re-generated later in the
# installation process so we only set the permissions snippet without
# regenerating the initramfs right now:
if [ "$(mount | grep $CHROOT" " | cut -c -16)" = "/dev/mapper/luks" ]; then
echo "UMASK=0077" > $CHROOT/etc/initramfs-tools/conf.d/initramfs-permissions
chroot $CHROOT apt-get -y install cryptsetup-initramfs cryptsetup keyutils
fi
echo "Running bootloader-config..."
if [ -d /sys/firmware/efi/efivars ]; then
echo " * Installing grub-efi (uefi)..."
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-ia32 cryptsetup keyutils
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-efi-arm64
else
echo " * install grub... (bios)"
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc cryptsetup keyutils
DEBIAN_FRONTEND=noninteractive chroot $CHROOT apt-get -y install grub-pc
fi
# Re-enable os-prober:
sed -i "s/#GRUB_DISABLE_OS_PROBER=false/# OS_PROBER re-enabled by Debian Calamares installation:\nGRUB_DISABLE_OS_PROBER=false/g" $CHROOT/etc/default/grub
chroot $CHROOT /usr/sbin/update-grub

View File

@ -7,9 +7,9 @@ windowSize: 700,450
windowPlacement: center
strings:
productName: Peppermint
productName: Peppermint
shortProductName: Peppermint
version: 00
version: 00
shortVersion: 00
versionedName: Peppermint
shortVersionedName: Peppermint
@ -26,6 +26,9 @@ images:
slideshow: "show.qml"
style:
sidebarBackground: "#333333"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#F62817"
sidebarBackground: "#C0C0C0"
sidebarText: "#000000"
sidebarTextSelect: "#ffffff"
sidebarTextHighlight: "#f62817"

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -0,0 +1,40 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2018-2019, Jonathan Carter <jcc@debian.org>
*
* Calamares 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, or (at your option) any later version.
*
* Calamares 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 Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
interval: 20000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
Image {
id: background5
source: "s5.png"
width: 2000; height: 2000
fillMode: Image.PreserveAspectFit
anchors.centerIn: parent
}
}
}

View File

@ -0,0 +1,163 @@
/*########Current Calamares Styles##########*/
/* These "Q's" are master styles for overall colours */
#mainApp {background-color: #C0C0C0;
font-family: Cantarell;
font-weight: bold;
color: #000000
}
/* Set the entire Font and Background color */
QWidget { color: #000000 ;
background-color: #C0C0C0;
font-family: Cantarell;
font: 14px; }
#globalStorageTab { background-color: #C0C0C0 }
/* Set Drop Down Font and Background color */
QComboBox { font: 14px ;
color: #000000 ;
background-color: #ffffff ;
padding: 2px ;
border-radius: 10px
}
#languageWidget { font: 14px ;
color: #111111 ;
background-color: #ffffff ;
text-align: center ;
border-radius: 6px
}
/* Set the inline Text box edit Font and Background color */
QLineEdit { font: 14px;
color: #111111;
background-color: #ffffff;
border-color: #000000
}
/* Set List box Font and Background color */
QListView { font: 14px;
color: #000000;
background-color: #ffffff;
alternate-background-color: #C0C0C0;
padding: 2px;
border-radius: 4px
}
#layoutSelector {}
/* Set the TreeView Font and Background color */
QTreeView { color: #000000;
background-color: #ffffff;
border-radius: 14px
}
/* Set buttons Font and Background color */
QPushButton { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-width: 10px;}
#view-button-back { font: 14px;
background-color: #C0C0C0
}
#view-button-back:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-next { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-next:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000
}
#view-button-cancel { font: 14px;
background-color: #C0C0C0;
border-color: #000000
}
#view-button-cancel:hover { font: 14px;
color: #000000;
background-color: #ffffff;
border-color: #000000;
}
#view-button-install { font: 14px;
color: #C0C0C0;
border-color: #000000
}
#view-button-done { font: 14px;
color: #000000;
border-color: #000000
}
/* Set the color in the keyboard selection */
#layoutSelector { selection-background-color: #F62817 }
#variantSelector { selection-background-color: #F62817 }
/* Set the CheckBox size and Background color */
QCheckBox { color: #000000;
background-color: #C0C0C0;
border-width: 2px;
border-color: #000000
}
m_encryptCheckBox { font: 14px;
color: #F62817;
background-color: #C0C0C0;
border-radius: 4px;
padding: 6px
}
checkBoxDoAutoLogin { font: 14px;
color: #000000;
background-color: #C0C0C0;
padding: 4px
}
restartCheckBox { font: 14px;
color: #000000;
background-color: #C0C0C0;
border-color: #000000;
border-radius: 8px;
height: 16px;
width: 100px;
padding: 4px
}
#QCheckBox#restartCheckBox::indicator:checked { image: url(/usr/share/pixmaps/ckm.png) }
/* Set the color when selected */
QRadioButton { color: #000000;
background-color: #C0C0C0;
padding: 4px;
border-radius: 4px
}
QComboBoxPrivateContainer { background-color: #ffffff }
QComboBoxListView { background-color: #ffffff }
qt_scrollarea_hcontainer { background-color: #ffffff }
qt_scrollarea_vcontainer { background-color: #ffffff }
QRadioButton::indicator { width: 18px ; height: 18px }
QRadioButton::indicator::checked { image: url(/usr/share/pixmaps/peppermint.png) }
QRadioButton::indicator::checked:hover { image: url(/usr/share/pixmaps/peppermint-fm-20.png) }
QRadioButton::indicator::unchecked:hover { image: url(/usr/share/pixmaps/peppermint-inst.png) }
/* Set the tip Font and Background color */
QToolTip { font: 14px;
color: #000000;
background-color: #ffffff;
padding: 4px;
border-radius: 4px
}
/* Set the Progress Bar alignment and load color */
QProgressBar { text-align: center }
QProgressBar::chunk { background-color: #F62817 }
#debugButton {font: }
#sidebarMenuApp{ background-color: #C0C0C0 }
#tabWidget { background-color: #C0C0C0 }

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -43,7 +43,7 @@ efiBootMgr: "efibootmgr"
# setting the option here, keep in mind that the name is sanitized
# (problematic characters, see above, are replaced).
#
efiBootloaderId: "debian"
efiBootloaderId: "peppermint"
# Optionally install a copy of the GRUB EFI bootloader as the EFI
# fallback loader (either bootia32.efi or bootx64.efi depending on

Some files were not shown because too many files have changed in this diff Show More