Compare commits
24 Commits
9468b2e015
...
master
Author | SHA1 | Date | |
---|---|---|---|
bbb4aa1d9e | |||
c776338883 | |||
25dc28e9e4 | |||
d89d86a70b | |||
05cc785b60 | |||
490b329d64 | |||
d9e522f05f | |||
b6f7e63fe0 | |||
7d0f668c79 | |||
552e3320d5 | |||
425be2e5ef | |||
aa7aff5e55 | |||
c84d84dd16 | |||
549e192430 | |||
3f0f8cb7d1 | |||
70128628ec | |||
7f9b671d90 | |||
a0a1d5d677 | |||
2002026070 | |||
ce65213712 | |||
f78cb02bb5 | |||
79b09ba5cc | |||
947bd69a2e | |||
a0323ad50a |
337
salt-gruvbox/LICENSE
Normal file
337
salt-gruvbox/LICENSE
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
Creative Commons Legal Code
|
||||||
|
|
||||||
|
Attribution-ShareAlike 3.0 Unported
|
||||||
|
|
||||||
|
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL
|
||||||
|
SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT
|
||||||
|
RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS"
|
||||||
|
BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION
|
||||||
|
PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.
|
||||||
|
|
||||||
|
License
|
||||||
|
|
||||||
|
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||||
|
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||||
|
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||||
|
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||||
|
|
||||||
|
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE
|
||||||
|
BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE
|
||||||
|
CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE
|
||||||
|
IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
|
||||||
|
a. "Adaptation" means a work based upon the Work, or upon the Work and other
|
||||||
|
pre-existing works, such as a translation, adaptation, derivative work,
|
||||||
|
arrangement of music or other alterations of a literary or artistic work,
|
||||||
|
or phonogram or performance and includes cinematographic adaptations or any
|
||||||
|
other form in which the Work may be recast, transformed, or adapted
|
||||||
|
including in any form recognizably derived from the original, except that a
|
||||||
|
work that constitutes a Collection will not be considered an Adaptation for
|
||||||
|
the purpose of this License. For the avoidance of doubt, where the Work is
|
||||||
|
a musical work, performance or phonogram, the synchronization of the Work
|
||||||
|
in timed-relation with a moving image ("synching") will be considered an
|
||||||
|
Adaptation for the purpose of this License.
|
||||||
|
b. "Collection" means a collection of literary or artistic works, such as
|
||||||
|
encyclopedias and anthologies, or performances, phonograms or broadcasts,
|
||||||
|
or other works or subject matter other than works listed in Section 1(f)
|
||||||
|
below, which, by reason of the selection and arrangement of their contents,
|
||||||
|
constitute intellectual creations, in which the Work is included in its
|
||||||
|
entirety in unmodified form along with one or more other contributions,
|
||||||
|
each constituting separate and independent works in themselves, which
|
||||||
|
together are assembled into a collective whole. A work that constitutes a
|
||||||
|
Collection will not be considered an Adaptation (as defined below) for the
|
||||||
|
purposes of this License.
|
||||||
|
c. "Creative Commons Compatible License" means a license that is listed at
|
||||||
|
http://creativecommons.org/compatiblelicenses that has been approved by
|
||||||
|
Creative Commons as being essentially equivalent to this License,
|
||||||
|
including, at a minimum, because that license: (i) contains terms that have
|
||||||
|
the same purpose, meaning and effect as the License Elements of this
|
||||||
|
License; and, (ii) explicitly permits the relicensing of adaptations of
|
||||||
|
works made available under that license under this License or a Creative
|
||||||
|
Commons jurisdiction license with the same License Elements as this
|
||||||
|
License.
|
||||||
|
d. "Distribute" means to make available to the public the original and copies
|
||||||
|
of the Work or Adaptation, as appropriate, through sale or other transfer
|
||||||
|
of ownership.
|
||||||
|
e. "License Elements" means the following high-level license attributes as
|
||||||
|
selected by Licensor and indicated in the title of this License:
|
||||||
|
Attribution, ShareAlike.
|
||||||
|
f. "Licensor" means the individual, individuals, entity or entities that offer
|
||||||
|
(s) the Work under the terms of this License.
|
||||||
|
g. "Original Author" means, in the case of a literary or artistic work, the
|
||||||
|
individual, individuals, entity or entities who created the Work or if no
|
||||||
|
individual or entity can be identified, the publisher; and in addition (i)
|
||||||
|
in the case of a performance the actors, singers, musicians, dancers, and
|
||||||
|
other persons who act, sing, deliver, declaim, play in, interpret or
|
||||||
|
otherwise perform literary or artistic works or expressions of folklore;
|
||||||
|
(ii) in the case of a phonogram the producer being the person or legal
|
||||||
|
entity who first fixes the sounds of a performance or other sounds; and,
|
||||||
|
(iii) in the case of broadcasts, the organization that transmits the
|
||||||
|
broadcast.
|
||||||
|
h. "Work" means the literary and/or artistic work offered under the terms of
|
||||||
|
this License including without limitation any production in the literary,
|
||||||
|
scientific and artistic domain, whatever may be the mode or form of its
|
||||||
|
expression including digital form, such as a book, pamphlet and other
|
||||||
|
writing; a lecture, address, sermon or other work of the same nature; a
|
||||||
|
dramatic or dramatico-musical work; a choreographic work or entertainment
|
||||||
|
in dumb show; a musical composition with or without words; a
|
||||||
|
cinematographic work to which are assimilated works expressed by a process
|
||||||
|
analogous to cinematography; a work of drawing, painting, architecture,
|
||||||
|
sculpture, engraving or lithography; a photographic work to which are
|
||||||
|
assimilated works expressed by a process analogous to photography; a work
|
||||||
|
of applied art; an illustration, map, plan, sketch or three-dimensional
|
||||||
|
work relative to geography, topography, architecture or science; a
|
||||||
|
performance; a broadcast; a phonogram; a compilation of data to the extent
|
||||||
|
it is protected as a copyrightable work; or a work performed by a variety
|
||||||
|
or circus performer to the extent it is not otherwise considered a literary
|
||||||
|
or artistic work.
|
||||||
|
i. "You" means an individual or entity exercising rights under this License
|
||||||
|
who has not previously violated the terms of this License with respect to
|
||||||
|
the Work, or who has received express permission from the Licensor to
|
||||||
|
exercise rights under this License despite a previous violation.
|
||||||
|
j. "Publicly Perform" means to perform public recitations of the Work and to
|
||||||
|
communicate to the public those public recitations, by any means or
|
||||||
|
process, including by wire or wireless means or public digital
|
||||||
|
performances; to make available to the public Works in such a way that
|
||||||
|
members of the public may access these Works from a place and at a place
|
||||||
|
individually chosen by them; to perform the Work to the public by any means
|
||||||
|
or process and the communication to the public of the performances of the
|
||||||
|
Work, including by public digital performance; to broadcast and rebroadcast
|
||||||
|
the Work by any means including signs, sounds or images.
|
||||||
|
k. "Reproduce" means to make copies of the Work by any means including without
|
||||||
|
limitation by sound or visual recordings and the right of fixation and
|
||||||
|
reproducing fixations of the Work, including storage of a protected
|
||||||
|
performance or phonogram in digital form or other electronic medium.
|
||||||
|
|
||||||
|
2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit,
|
||||||
|
or restrict any uses free from copyright or rights arising from limitations or
|
||||||
|
exceptions that are provided for in connection with the copyright protection
|
||||||
|
under copyright law or other applicable laws.
|
||||||
|
|
||||||
|
3. License Grant. Subject to the terms and conditions of this License, Licensor
|
||||||
|
hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the
|
||||||
|
duration of the applicable copyright) license to exercise the rights in the
|
||||||
|
Work as stated below:
|
||||||
|
|
||||||
|
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||||
|
Collections, and to Reproduce the Work as incorporated in the Collections;
|
||||||
|
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||||
|
including any translation in any medium, takes reasonable steps to clearly
|
||||||
|
label, demarcate or otherwise identify that changes were made to the
|
||||||
|
original Work. For example, a translation could be marked "The original
|
||||||
|
work was translated from English to Spanish," or a modification could
|
||||||
|
indicate "The original work has been modified.";
|
||||||
|
c. to Distribute and Publicly Perform the Work including as incorporated in
|
||||||
|
Collections; and,
|
||||||
|
d. to Distribute and Publicly Perform Adaptations.
|
||||||
|
e. For the avoidance of doubt:
|
||||||
|
|
||||||
|
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||||
|
which the right to collect royalties through any statutory or
|
||||||
|
compulsory licensing scheme cannot be waived, the Licensor reserves the
|
||||||
|
exclusive right to collect such royalties for any exercise by You of
|
||||||
|
the rights granted under this License;
|
||||||
|
ii. Waivable Compulsory License Schemes. In those jurisdictions in which
|
||||||
|
the right to collect royalties through any statutory or compulsory
|
||||||
|
licensing scheme can be waived, the Licensor waives the exclusive right
|
||||||
|
to collect such royalties for any exercise by You of the rights granted
|
||||||
|
under this License; and,
|
||||||
|
iii. Voluntary License Schemes. The Licensor waives the right to collect
|
||||||
|
royalties, whether individually or, in the event that the Licensor is a
|
||||||
|
member of a collecting society that administers voluntary licensing
|
||||||
|
schemes, via that society, from any exercise by You of the rights
|
||||||
|
granted under this License.
|
||||||
|
|
||||||
|
The above rights may be exercised in all media and formats whether now known or
|
||||||
|
hereafter devised. The above rights include the right to make such
|
||||||
|
modifications as are technically necessary to exercise the rights in other
|
||||||
|
media and formats. Subject to Section 8(f), all rights not expressly granted by
|
||||||
|
Licensor are hereby reserved.
|
||||||
|
|
||||||
|
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||||
|
subject to and limited by the following restrictions:
|
||||||
|
|
||||||
|
a. You may Distribute or Publicly Perform the Work only under the terms of
|
||||||
|
this License. You must include a copy of, or the Uniform Resource
|
||||||
|
Identifier (URI) for, this License with every copy of the Work You
|
||||||
|
Distribute or Publicly Perform. You may not offer or impose any terms on
|
||||||
|
the Work that restrict the terms of this License or the ability of the
|
||||||
|
recipient of the Work to exercise the rights granted to that recipient
|
||||||
|
under the terms of the License. You may not sublicense the Work. You must
|
||||||
|
keep intact all notices that refer to this License and to the disclaimer of
|
||||||
|
warranties with every copy of the Work You Distribute or Publicly Perform.
|
||||||
|
When You Distribute or Publicly Perform the Work, You may not impose any
|
||||||
|
effective technological measures on the Work that restrict the ability of a
|
||||||
|
recipient of the Work from You to exercise the rights granted to that
|
||||||
|
recipient under the terms of the License. This Section 4(a) applies to the
|
||||||
|
Work as incorporated in a Collection, but this does not require the
|
||||||
|
Collection apart from the Work itself to be made subject to the terms of
|
||||||
|
this License. If You create a Collection, upon notice from any Licensor You
|
||||||
|
must, to the extent practicable, remove from the Collection any credit as
|
||||||
|
required by Section 4(c), as requested. If You create an Adaptation, upon
|
||||||
|
notice from any Licensor You must, to the extent practicable, remove from
|
||||||
|
the Adaptation any credit as required by Section 4(c), as requested.
|
||||||
|
b. You may Distribute or Publicly Perform an Adaptation only under the terms
|
||||||
|
of: (i) this License; (ii) a later version of this License with the same
|
||||||
|
License Elements as this License; (iii) a Creative Commons jurisdiction
|
||||||
|
license (either this or a later license version) that contains the same
|
||||||
|
License Elements as this License (e.g., Attribution-ShareAlike 3.0 US));
|
||||||
|
(iv) a Creative Commons Compatible License. If you license the Adaptation
|
||||||
|
under one of the licenses mentioned in (iv), you must comply with the terms
|
||||||
|
of that license. If you license the Adaptation under the terms of any of
|
||||||
|
the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"),
|
||||||
|
you must comply with the terms of the Applicable License generally and the
|
||||||
|
following provisions: (I) You must include a copy of, or the URI for, the
|
||||||
|
Applicable License with every copy of each Adaptation You Distribute or
|
||||||
|
Publicly Perform; (II) You may not offer or impose any terms on the
|
||||||
|
Adaptation that restrict the terms of the Applicable License or the ability
|
||||||
|
of the recipient of the Adaptation to exercise the rights granted to that
|
||||||
|
recipient under the terms of the Applicable License; (III) You must keep
|
||||||
|
intact all notices that refer to the Applicable License and to the
|
||||||
|
disclaimer of warranties with every copy of the Work as included in the
|
||||||
|
Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or
|
||||||
|
Publicly Perform the Adaptation, You may not impose any effective
|
||||||
|
technological measures on the Adaptation that restrict the ability of a
|
||||||
|
recipient of the Adaptation from You to exercise the rights granted to that
|
||||||
|
recipient under the terms of the Applicable License. This Section 4(b)
|
||||||
|
applies to the Adaptation as incorporated in a Collection, but this does
|
||||||
|
not require the Collection apart from the Adaptation itself to be made
|
||||||
|
subject to the terms of the Applicable License.
|
||||||
|
c. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||||
|
Collections, You must, unless a request has been made pursuant to Section 4
|
||||||
|
(a), keep intact all copyright notices for the Work and provide, reasonable
|
||||||
|
to the medium or means You are utilizing: (i) the name of the Original
|
||||||
|
Author (or pseudonym, if applicable) if supplied, and/or if the Original
|
||||||
|
Author and/or Licensor designate another party or parties (e.g., a sponsor
|
||||||
|
institute, publishing entity, journal) for attribution ("Attribution
|
||||||
|
Parties") in Licensor's copyright notice, terms of service or by other
|
||||||
|
reasonable means, the name of such party or parties; (ii) the title of the
|
||||||
|
Work if supplied; (iii) to the extent reasonably practicable, the URI, if
|
||||||
|
any, that Licensor specifies to be associated with the Work, unless such
|
||||||
|
URI does not refer to the copyright notice or licensing information for the
|
||||||
|
Work; and (iv) , consistent with Ssection 3(b), in the case of an
|
||||||
|
Adaptation, a credit identifying the use of the Work in the Adaptation
|
||||||
|
(e.g., "French translation of the Work by Original Author," or "Screenplay
|
||||||
|
based on original Work by Original Author"). The credit required by this
|
||||||
|
Section 4(c) may be implemented in any reasonable manner; provided,
|
||||||
|
however, that in the case of a Adaptation or Collection, at a minimum such
|
||||||
|
credit will appear, if a credit for all contributing authors of the
|
||||||
|
Adaptation or Collection appears, then as part of these credits and in a
|
||||||
|
manner at least as prominent as the credits for the other contributing
|
||||||
|
authors. For the avoidance of doubt, You may only use the credit required
|
||||||
|
by this Section for the purpose of attribution in the manner set out above
|
||||||
|
and, by exercising Your rights under this License, You may not implicitly
|
||||||
|
or explicitly assert or imply any connection with, sponsorship or
|
||||||
|
endorsement by the Original Author, Licensor and/or Attribution Parties, as
|
||||||
|
appropriate, of You or Your use of the Work, without the separate, express
|
||||||
|
prior written permission of the Original Author, Licensor and/or
|
||||||
|
Attribution Parties.
|
||||||
|
d. Except as otherwise agreed in writing by the Licensor or as may be
|
||||||
|
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||||
|
Publicly Perform the Work either by itself or as part of any Adaptations or
|
||||||
|
Collections, You must not distort, mutilate, modify or take other
|
||||||
|
derogatory action in relation to the Work which would be prejudicial to the
|
||||||
|
Original Author's honor or reputation. Licensor agrees that in those
|
||||||
|
jurisdictions (e.g. Japan), in which any exercise of the right granted in
|
||||||
|
Section 3(b) of this License (the right to make Adaptations) would be
|
||||||
|
deemed to be a distortion, mutilation, modification or other derogatory
|
||||||
|
action prejudicial to the Original Author's honor and reputation, the
|
||||||
|
Licensor will waive or not assert, as appropriate, this Section, to the
|
||||||
|
fullest extent permitted by the applicable national law, to enable You to
|
||||||
|
reasonably exercise Your right under Section 3(b) of this License (right to
|
||||||
|
make Adaptations) but not otherwise.
|
||||||
|
|
||||||
|
5. Representations, Warranties and Disclaimer
|
||||||
|
|
||||||
|
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS
|
||||||
|
THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND
|
||||||
|
CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING,
|
||||||
|
WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE.
|
||||||
|
SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
|
||||||
|
EXCLUSION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN
|
||||||
|
NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS
|
||||||
|
LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
7. Termination
|
||||||
|
|
||||||
|
a. This License and the rights granted hereunder will terminate automatically
|
||||||
|
upon any breach by You of the terms of this License. Individuals or
|
||||||
|
entities who have received Adaptations or Collections from You under this
|
||||||
|
License, however, will not have their licenses terminated provided such
|
||||||
|
individuals or entities remain in full compliance with those licenses.
|
||||||
|
Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
|
||||||
|
b. Subject to the above terms and conditions, the license granted here is
|
||||||
|
perpetual (for the duration of the applicable copyright in the Work).
|
||||||
|
Notwithstanding the above, Licensor reserves the right to release the Work
|
||||||
|
under different license terms or to stop distributing the Work at any time;
|
||||||
|
provided, however that any such election will not serve to withdraw this
|
||||||
|
License (or any other license that has been, or is required to be, granted
|
||||||
|
under the terms of this License), and this License will continue in full
|
||||||
|
force and effect unless terminated as stated above.
|
||||||
|
|
||||||
|
8. Miscellaneous
|
||||||
|
|
||||||
|
a. Each time You Distribute or Publicly Perform the Work or a Collection, the
|
||||||
|
Licensor offers to the recipient a license to the Work on the same terms
|
||||||
|
and conditions as the license granted to You under this License.
|
||||||
|
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers
|
||||||
|
to the recipient a license to the original Work on the same terms and
|
||||||
|
conditions as the license granted to You under this License.
|
||||||
|
c. If any provision of this License is invalid or unenforceable under
|
||||||
|
applicable law, it shall not affect the validity or enforceability of the
|
||||||
|
remainder of the terms of this License, and without further action by the
|
||||||
|
parties to this agreement, such provision shall be reformed to the minimum
|
||||||
|
extent necessary to make such provision valid and enforceable.
|
||||||
|
d. No term or provision of this License shall be deemed waived and no breach
|
||||||
|
consented to unless such waiver or consent shall be in writing and signed
|
||||||
|
by the party to be charged with such waiver or consent.
|
||||||
|
e. This License constitutes the entire agreement between the parties with
|
||||||
|
respect to the Work licensed here. There are no understandings, agreements
|
||||||
|
or representations with respect to the Work not specified here. Licensor
|
||||||
|
shall not be bound by any additional provisions that may appear in any
|
||||||
|
communication from You. This License may not be modified without the mutual
|
||||||
|
written agreement of the Licensor and You.
|
||||||
|
f. The rights granted under, and the subject matter referenced, in this
|
||||||
|
License were drafted utilizing the terminology of the Berne Convention for
|
||||||
|
the Protection of Literary and Artistic Works (as amended on September 28,
|
||||||
|
1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the
|
||||||
|
WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright
|
||||||
|
Convention (as revised on July 24, 1971). These rights and subject matter
|
||||||
|
take effect in the relevant jurisdiction in which the License terms are
|
||||||
|
sought to be enforced according to the corresponding provisions of the
|
||||||
|
implementation of those treaty provisions in the applicable national law.
|
||||||
|
If the standard suite of rights granted under applicable copyright law
|
||||||
|
includes additional rights not granted under this License, such additional
|
||||||
|
rights are deemed to be included in the License; this License is not
|
||||||
|
intended to restrict the license of any rights under applicable law.
|
||||||
|
|
||||||
|
Creative Commons Notice
|
||||||
|
|
||||||
|
Creative Commons is not a party to this License, and makes no warranty
|
||||||
|
whatsoever in connection with the Work. Creative Commons will not be liable
|
||||||
|
to You or any party on any legal theory for any damages whatsoever,
|
||||||
|
including without limitation any general, special, incidental or
|
||||||
|
consequential damages arising in connection to this license.
|
||||||
|
Notwithstanding the foregoing two (2) sentences, if Creative Commons has
|
||||||
|
expressly identified itself as the Licensor hereunder, it shall have all
|
||||||
|
rights and obligations of Licensor.
|
||||||
|
|
||||||
|
Except for the limited purpose of indicating to the public that the Work is
|
||||||
|
licensed under the CCPL, Creative Commons does not authorize the use by
|
||||||
|
either party of the trademark "Creative Commons" or any related trademark
|
||||||
|
or logo of Creative Commons without the prior written consent of Creative
|
||||||
|
Commons. Any permitted use will be in compliance with Creative Commons'
|
||||||
|
then-current trademark usage guidelines, as may be published on its website
|
||||||
|
or otherwise made available upon request from time to time. For the
|
||||||
|
avoidance of doubt, this trademark restriction does not form part of the
|
||||||
|
License.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at https://creativecommons.org/.
|
308
salt-gruvbox/Main.qml
Normal file
308
salt-gruvbox/Main.qml
Normal file
@@ -0,0 +1,308 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
import SddmComponents 2.0
|
||||||
|
import "./components"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: container
|
||||||
|
width: 640
|
||||||
|
height: 480
|
||||||
|
color: "#282828"
|
||||||
|
|
||||||
|
LayoutMirroring.enabled: Qt.locale().textDirection == Qt.RightToLeft
|
||||||
|
LayoutMirroring.childrenInherit: true
|
||||||
|
|
||||||
|
property int sessionIndex: session.index
|
||||||
|
|
||||||
|
TextConstants { id: textConstants }
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: sddm
|
||||||
|
function onLoginSucceeded() {
|
||||||
|
errorMessage.color = "#83a598"
|
||||||
|
errorMessage.text = textConstants.loginSucceeded
|
||||||
|
}
|
||||||
|
function onLoginFailed() {
|
||||||
|
password.text = ""
|
||||||
|
errorMessage.color = "#fb4934"
|
||||||
|
errorMessage.text = textConstants.loginFailed
|
||||||
|
}
|
||||||
|
function onInformationMessage(message) {
|
||||||
|
errorMessage.color = "#fb4934"
|
||||||
|
errorMessage.text = message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Background {
|
||||||
|
anchors.fill: parent
|
||||||
|
source: Qt.resolvedUrl(config.background)
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
onStatusChanged: {
|
||||||
|
var defaultBackground = Qt.resolvedUrl(config.defaultBackground)
|
||||||
|
if (status == Image.Error && source != defaultBackground) {
|
||||||
|
source = defaultBackground
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Background
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "#00000000"
|
||||||
|
//color: "#e6000000"
|
||||||
|
// ^ This matches hyprlock but it looks kinda bad :<
|
||||||
|
//visible: primaryScreen
|
||||||
|
|
||||||
|
// Within that bg, we have a login box with everything in it
|
||||||
|
Rectangle {
|
||||||
|
id: rectangle
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: Math.max(600, mainColumn.implicitWidth + 50)
|
||||||
|
height: Math.max(800, mainColumn.implicitHeight + 50)
|
||||||
|
color: "#cc32302f"
|
||||||
|
radius: 8
|
||||||
|
|
||||||
|
// Lay out everything within as a column
|
||||||
|
Column {
|
||||||
|
id: mainColumn
|
||||||
|
width: 400
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: 8
|
||||||
|
|
||||||
|
// This colum has our date and time
|
||||||
|
Column {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: parent.width
|
||||||
|
spacing: 4
|
||||||
|
Clock {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
id: clockTime
|
||||||
|
color: "#ebdbb2"
|
||||||
|
timeFont.family: "IBM Plex Sans"
|
||||||
|
dateFont.family: timeFont.family
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This column contains the UN field
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
spacing: 4
|
||||||
|
Text {
|
||||||
|
id: lblName
|
||||||
|
color: "#ebdbb2"
|
||||||
|
width: parent.width
|
||||||
|
text: textConstants.userName
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
|
||||||
|
SaltTextBox {
|
||||||
|
id: name
|
||||||
|
width: parent.width; height: 50
|
||||||
|
text: userModel.lastUser
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
radius: 8
|
||||||
|
textColor: "#ebdbb2"
|
||||||
|
borderWidth: 4
|
||||||
|
borderColor: "#32302f"
|
||||||
|
focusColor: "#83a598"
|
||||||
|
hoverColor: "#504945"
|
||||||
|
color: "#282828"
|
||||||
|
|
||||||
|
KeyNavigation.backtab: rebootButton; KeyNavigation.tab: password
|
||||||
|
|
||||||
|
Keys.onPressed: function (event) {
|
||||||
|
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||||
|
sddm.login(name.text, password.text, sessionIndex)
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This one, the password field
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
spacing: 4
|
||||||
|
Text {
|
||||||
|
id: lblPassword
|
||||||
|
color: "#ebdbb2"
|
||||||
|
width: parent.width
|
||||||
|
text: textConstants.password
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
|
||||||
|
SaltPasswordBox {
|
||||||
|
id: password
|
||||||
|
width: parent.width; height: 50
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
radius: 8
|
||||||
|
textColor: "#ebdbb2"
|
||||||
|
borderWidth: 4
|
||||||
|
borderColor: "#32302f"
|
||||||
|
focusColor: "#83a598"
|
||||||
|
hoverColor: "#504945"
|
||||||
|
color: "#282828"
|
||||||
|
|
||||||
|
KeyNavigation.backtab: name; KeyNavigation.tab: session
|
||||||
|
|
||||||
|
Keys.onPressed: function (event) {
|
||||||
|
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||||
|
sddm.login(name.text, password.text, sessionIndex)
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This one, the session selector
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
spacing: 4
|
||||||
|
z: 101
|
||||||
|
Text {
|
||||||
|
id: lblSession
|
||||||
|
color: "#ebdbb2"
|
||||||
|
width: parent.width
|
||||||
|
text: textConstants.session
|
||||||
|
wrapMode: TextEdit.WordWrap
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
|
||||||
|
SaltComboBox {
|
||||||
|
id: session
|
||||||
|
width: parent.width; height: 50
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
radius: 8
|
||||||
|
textColor: "#ebdbb2"
|
||||||
|
borderColor: "#32302f"
|
||||||
|
borderWidth: 4
|
||||||
|
focusColor: "#83a598"
|
||||||
|
hoverColor: "#504945"
|
||||||
|
color: "#282828"
|
||||||
|
|
||||||
|
model: sessionModel
|
||||||
|
index: sessionModel.lastIndex
|
||||||
|
|
||||||
|
KeyNavigation.backtab: password; KeyNavigation.tab: loginButton
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This here's an error message/whatever prompt
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
Text {
|
||||||
|
id: errorMessage
|
||||||
|
color: "#ebdbb2"
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
text: textConstants.prompt
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This singular Row has our login button
|
||||||
|
Row {
|
||||||
|
spacing: 4
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
width: parent.width
|
||||||
|
SaltButton {
|
||||||
|
id: loginButton
|
||||||
|
text: textConstants.login
|
||||||
|
width: parent.width
|
||||||
|
radius: 8
|
||||||
|
|
||||||
|
onClicked: sddm.login(name.text, password.text, sessionIndex)
|
||||||
|
|
||||||
|
KeyNavigation.backtab: session; KeyNavigation.tab: shutdownButton
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
textColor: "#282828"
|
||||||
|
color: "#458588"
|
||||||
|
disabledColor: "#32302f"
|
||||||
|
activeColor: "#83a598"
|
||||||
|
pressedColor: "#458588"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// And this one has our shutdown/reboot buttons
|
||||||
|
Row {
|
||||||
|
spacing: 4
|
||||||
|
width: parent.width
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
property int btnWidth: parent.width / 2 - ( spacing / 2 )
|
||||||
|
SaltButton {
|
||||||
|
id: shutdownButton
|
||||||
|
text: textConstants.shutdown
|
||||||
|
width: parent.btnWidth
|
||||||
|
radius: 8
|
||||||
|
|
||||||
|
onClicked: sddm.powerOff()
|
||||||
|
|
||||||
|
KeyNavigation.backtab: loginButton; KeyNavigation.tab: rebootButton
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
textColor: "#ebdbb2"
|
||||||
|
color: "#32302f"
|
||||||
|
disabledColor: "#32302f"
|
||||||
|
activeColor: "#fb4934"
|
||||||
|
pressedColor: "#cc241d"
|
||||||
|
}
|
||||||
|
|
||||||
|
SaltButton {
|
||||||
|
id: rebootButton
|
||||||
|
text: textConstants.reboot
|
||||||
|
width: parent.btnWidth
|
||||||
|
radius: 8
|
||||||
|
|
||||||
|
onClicked: sddm.reboot()
|
||||||
|
|
||||||
|
KeyNavigation.backtab: shutdownButton; KeyNavigation.tab: name
|
||||||
|
font.family: "IBM Plex Sans"
|
||||||
|
font.pixelSize: 14
|
||||||
|
textColor: "#ebdbb2"
|
||||||
|
color: "#32302f"
|
||||||
|
disabledColor: "#32302f"
|
||||||
|
activeColor: "#fb4934"
|
||||||
|
pressedColor: "#cc241d"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
if (name.text == "")
|
||||||
|
name.focus = true
|
||||||
|
else
|
||||||
|
password.focus = true
|
||||||
|
}
|
||||||
|
}
|
29
salt-gruvbox/README
Normal file
29
salt-gruvbox/README
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
This theme is part of the Simple Desktop Display Manager distribution. This theme is based QtQuick2.
|
||||||
|
|
||||||
|
chevron icons are extracted from Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome.
|
||||||
|
|
||||||
|
rectangle.png is from KDM ariya theme.
|
||||||
|
|
||||||
|
The wallpaper was taken from here:
|
||||||
|
http://interfacelift.com/wallpaper/details/3170/baros_maldives.html
|
||||||
|
It was made by Dan Grady.
|
||||||
|
|
||||||
|
GeosansLight font is downloaded from here:
|
||||||
|
http://www.dafont.com/geo-sans-light.font
|
||||||
|
It was made by Manfred Klein, http://manfred-klein.ina-mar.com/.
|
||||||
|
|
||||||
|
QML files contain license headers.
|
||||||
|
|
||||||
|
warning.png is public domain: http://rationalwiki.org/wiki/File:Warning_icon_orange.svg
|
||||||
|
|
||||||
|
~~~
|
||||||
|
|
||||||
|
background.png
|
||||||
|
|
||||||
|
Nalaguriadhoo (Sun Island) view towards the South onto the waterbungalows
|
||||||
|
|
||||||
|
Copyright (C) 2012 Dr. Peter Schmidt
|
||||||
|
|
||||||
|
Source: https://commons.wikimedia.org/wiki/File:Nalaguraidhoo_Wasserbungalows.JPG
|
||||||
|
License: Creative Commons Attribution-Share Alike 3.0 Unported
|
||||||
|
License-URL: https://creativecommons.org/licenses/by-sa/3.0/deed.en
|
BIN
salt-gruvbox/background.jpg
Normal file
BIN
salt-gruvbox/background.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 529 KiB |
132
salt-gruvbox/components/SaltButton.qml
Normal file
132
salt-gruvbox/components/SaltButton.qml
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: container
|
||||||
|
width: 80; height: 30
|
||||||
|
|
||||||
|
property alias borderColor: main.color
|
||||||
|
property alias textColor: textArea.color
|
||||||
|
property alias font: textArea.font
|
||||||
|
property alias text: textArea.text
|
||||||
|
property alias implicitWidth: textArea.implicitWidth
|
||||||
|
property alias implicitHeight: textArea.implicitHeight
|
||||||
|
|
||||||
|
color: "#4682b4"
|
||||||
|
property color disabledColor: "#888888"
|
||||||
|
property color activeColor: "#266294"
|
||||||
|
property color pressedColor: "#064264"
|
||||||
|
|
||||||
|
property bool enabled: true
|
||||||
|
property bool spaceDown: false
|
||||||
|
property bool isFocused: activeFocus || mouseArea.containsMouse
|
||||||
|
property bool isPressed: spaceDown || mouseArea.pressed
|
||||||
|
|
||||||
|
signal pressed()
|
||||||
|
signal released()
|
||||||
|
signal clicked()
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "disabled"; when: (container.enabled === false)
|
||||||
|
PropertyChanges { target: container; color: disabledColor }
|
||||||
|
PropertyChanges { target: main; color: disabledColor }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "active"; when: container.enabled && container.isFocused && !container.isPressed
|
||||||
|
PropertyChanges { target: container; color: activeColor }
|
||||||
|
PropertyChanges { target: main; color: activeColor }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "pressed"; when: container.enabled && container.isPressed
|
||||||
|
PropertyChanges { target: container; color: pressedColor }
|
||||||
|
PropertyChanges { target: main; color: pressedColor }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
ColorAnimation { duration: 200 }
|
||||||
|
}
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
smooth: true
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: main
|
||||||
|
width: parent.width - 2; height: parent.height - 2
|
||||||
|
anchors.centerIn: parent
|
||||||
|
radius: container.radius
|
||||||
|
|
||||||
|
color: parent.color
|
||||||
|
|
||||||
|
visible: container.isFocused
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: textArea
|
||||||
|
anchors.centerIn: parent
|
||||||
|
color: "white"
|
||||||
|
text: "Button"
|
||||||
|
font.bold: true
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
hoverEnabled: container.enabled
|
||||||
|
enabled: container.enabled
|
||||||
|
|
||||||
|
acceptedButtons: Qt.LeftButton
|
||||||
|
|
||||||
|
onPressed: { container.focus = true; container.pressed() }
|
||||||
|
onClicked: { container.focus = true; container.clicked() }
|
||||||
|
onReleased: { container.focus = true; container.released() }
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: function (event) {
|
||||||
|
if (event.key === Qt.Key_Space) {
|
||||||
|
container.spaceDown = true;
|
||||||
|
container.pressed()
|
||||||
|
event.accepted = true
|
||||||
|
} else if (event.key === Qt.Key_Return) {
|
||||||
|
container.clicked()
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onReleased: function (event) {
|
||||||
|
if (event.key === Qt.Key_Space) {
|
||||||
|
container.spaceDown = false;
|
||||||
|
container.released()
|
||||||
|
container.clicked()
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
242
salt-gruvbox/components/SaltComboBox.qml
Normal file
242
salt-gruvbox/components/SaltComboBox.qml
Normal file
@@ -0,0 +1,242 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
FocusScope {
|
||||||
|
id: container
|
||||||
|
width: 80; height: 30
|
||||||
|
|
||||||
|
property color color: "white"
|
||||||
|
property color borderColor: "#ababab"
|
||||||
|
property color focusColor: "#266294"
|
||||||
|
property color hoverColor: "#5692c4"
|
||||||
|
property color menuColor: "white"
|
||||||
|
property color textColor: "black"
|
||||||
|
|
||||||
|
property int borderWidth: 1
|
||||||
|
property font font
|
||||||
|
property alias model: listView.model
|
||||||
|
property alias radius: main.radius
|
||||||
|
property int index: 0
|
||||||
|
|
||||||
|
property Component rowDelegate: defaultRowDelegate
|
||||||
|
|
||||||
|
signal valueChanged(int id)
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: defaultRowDelegate
|
||||||
|
Text {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: 3 + container.borderWidth
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
color: container.textColor
|
||||||
|
font: container.font
|
||||||
|
|
||||||
|
text: parent.modelItem.name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onFocusChanged: if (!container.activeFocus) close(false)
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: main
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
color: container.color
|
||||||
|
border.color: container.borderColor
|
||||||
|
border.width: container.borderWidth
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "hover"; when: mouseArea.containsMouse
|
||||||
|
PropertyChanges { target: main; border.width: container.borderWidth; border.color: container.hoverColor }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focus"; when: container.activeFocus && !mouseArea.containsMouse
|
||||||
|
PropertyChanges { target: main; border.width: container.borderWidth; border.color: container.focusColor }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
ColorAnimation { property: "border.color"; duration: 100 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Loader {
|
||||||
|
id: topRow
|
||||||
|
anchors.fill: parent
|
||||||
|
focus: true
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
sourceComponent: rowDelegate
|
||||||
|
property variant modelItem
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
anchors.fill: container
|
||||||
|
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onEntered: if (main.state == "") main.state = "hover";
|
||||||
|
onExited: if (main.state == "hover") main.state = "";
|
||||||
|
onClicked: { container.focus = true; toggle() }
|
||||||
|
onWheel: {
|
||||||
|
if (wheel.angleDelta.y > 0)
|
||||||
|
listView.decrementCurrentIndex()
|
||||||
|
else
|
||||||
|
listView.incrementCurrentIndex()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: function (event) {
|
||||||
|
if (event.key === Qt.Key_Up) {
|
||||||
|
listView.decrementCurrentIndex()
|
||||||
|
} else if (event.key === Qt.Key_Down) {
|
||||||
|
if (event.modifiers !== Qt.AltModifier)
|
||||||
|
listView.incrementCurrentIndex()
|
||||||
|
else
|
||||||
|
toggle()
|
||||||
|
} else if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) {
|
||||||
|
close(true)
|
||||||
|
} else if (event.key === Qt.Key_Escape) {
|
||||||
|
close(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: dropDown
|
||||||
|
width: container.width; height: 0
|
||||||
|
anchors.top: container.bottom
|
||||||
|
anchors.topMargin: 0
|
||||||
|
|
||||||
|
color: container.menuColor
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: myDelegate
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: dropDown.width; height: container.height - 2*container.borderWidth
|
||||||
|
color: "transparent"
|
||||||
|
|
||||||
|
Loader {
|
||||||
|
id: loader
|
||||||
|
anchors.fill: parent
|
||||||
|
sourceComponent: rowDelegate
|
||||||
|
|
||||||
|
property variant modelItem: model
|
||||||
|
}
|
||||||
|
|
||||||
|
property variant modelItem: model
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: delegateMouseArea
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
onEntered: listView.currentIndex = index
|
||||||
|
onClicked: close(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListView {
|
||||||
|
id: listView
|
||||||
|
width: container.width; height: (container.height - 2*container.borderWidth) * count + container.borderWidth
|
||||||
|
delegate: myDelegate
|
||||||
|
highlight: Rectangle {
|
||||||
|
anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined;
|
||||||
|
color: container.hoverColor
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: listView
|
||||||
|
anchors.topMargin: -container.borderWidth
|
||||||
|
color: "transparent"
|
||||||
|
clip: false
|
||||||
|
border.color: main.border.color
|
||||||
|
border.width: main.border.width
|
||||||
|
}
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "visible";
|
||||||
|
PropertyChanges { target: dropDown; height: (container.height - 2*container.borderWidth) * listView.count + container.borderWidth}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
NumberAnimation { property: "height"; duration: 100 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggle() {
|
||||||
|
if (dropDown.state === "visible")
|
||||||
|
close(false)
|
||||||
|
else
|
||||||
|
open()
|
||||||
|
}
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
dropDown.state = "visible"
|
||||||
|
listView.currentIndex = container.index
|
||||||
|
}
|
||||||
|
|
||||||
|
function close(update) {
|
||||||
|
dropDown.state = ""
|
||||||
|
|
||||||
|
if (update) {
|
||||||
|
container.index = listView.currentIndex
|
||||||
|
topRow.modelItem = listView.currentItem.modelItem
|
||||||
|
valueChanged(listView.currentIndex)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
listView.currentIndex = container.index
|
||||||
|
if (listView.currentItem)
|
||||||
|
topRow.modelItem = listView.currentItem.modelItem
|
||||||
|
}
|
||||||
|
|
||||||
|
onIndexChanged: {
|
||||||
|
listView.currentIndex = container.index
|
||||||
|
if (listView.currentItem)
|
||||||
|
topRow.modelItem = listView.currentItem.modelItem
|
||||||
|
}
|
||||||
|
|
||||||
|
onModelChanged: {
|
||||||
|
listView.currentIndex = container.index
|
||||||
|
if (listView.currentItem)
|
||||||
|
topRow.modelItem = listView.currentItem.modelItem
|
||||||
|
}
|
||||||
|
}
|
162
salt-gruvbox/components/SaltPasswordBox.qml
Normal file
162
salt-gruvbox/components/SaltPasswordBox.qml
Normal file
@@ -0,0 +1,162 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2013 Nikita Mikhaylov <nslqqq@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
FocusScope {
|
||||||
|
id: container
|
||||||
|
width: 80; height: 30
|
||||||
|
|
||||||
|
property alias borderWidth: txtMain.borderWidth
|
||||||
|
property alias color: txtMain.color
|
||||||
|
property alias borderColor: txtMain.borderColor
|
||||||
|
property alias focusColor: txtMain.focusColor
|
||||||
|
property alias hoverColor: txtMain.hoverColor
|
||||||
|
property alias radius: txtMain.radius
|
||||||
|
property alias font: txtMain.font
|
||||||
|
property alias textColor: txtMain.textColor
|
||||||
|
property alias echoMode: txtMain.echoMode
|
||||||
|
property alias text: txtMain.text
|
||||||
|
|
||||||
|
property alias image: img.source
|
||||||
|
property double imageFadeIn: 300
|
||||||
|
property double imageFadeOut: 200
|
||||||
|
|
||||||
|
property alias tooltipEnabled: tooltip.visible
|
||||||
|
property alias tooltipText: tooltipText.text
|
||||||
|
property alias tooltipFG: tooltipText.color
|
||||||
|
property alias tooltipBG: tooltip.color
|
||||||
|
|
||||||
|
SaltTextBox {
|
||||||
|
id: txtMain
|
||||||
|
width: parent.width; height: parent.height
|
||||||
|
font.pixelSize: 14
|
||||||
|
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
|
||||||
|
focus: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: img
|
||||||
|
opacity: 0
|
||||||
|
state: keyboard.capsLock ? "activated" : ""
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
fillMode: Image.PreserveAspectFit
|
||||||
|
|
||||||
|
smooth: true
|
||||||
|
height: parent.height * 0.8
|
||||||
|
|
||||||
|
source: "warning.png"
|
||||||
|
sourceSize.width: width
|
||||||
|
sourceSize.height: height
|
||||||
|
|
||||||
|
anchors.rightMargin: 0.3 * width
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "activated"
|
||||||
|
PropertyChanges { target: img; opacity: 1; }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: ""
|
||||||
|
PropertyChanges { target: img; opacity: 0; }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
to: "activated"
|
||||||
|
NumberAnimation { target: img; property: "opacity"; from: 0; to: 1; duration: imageFadeIn; }
|
||||||
|
},
|
||||||
|
|
||||||
|
Transition {
|
||||||
|
to: ""
|
||||||
|
NumberAnimation { target: img; property: "opacity"; from: 1; to: 0; duration: imageFadeOut; }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: hoverArea
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
cursorShape: Qt.ArrowCursor
|
||||||
|
|
||||||
|
onEntered: {
|
||||||
|
tooltip.x = mouseX + img.x + 10
|
||||||
|
tooltip.y = mouseY + 10
|
||||||
|
}
|
||||||
|
|
||||||
|
onPositionChanged: {
|
||||||
|
tooltip.x = mouseX + img.x + 10
|
||||||
|
tooltip.y = mouseY + 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: tooltip
|
||||||
|
color: "lightblue"
|
||||||
|
border.color: "black"
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
width: 1.1 * tooltipText.implicitWidth
|
||||||
|
height: 1.4 * tooltipText.implicitHeight
|
||||||
|
radius: 2
|
||||||
|
opacity: 0
|
||||||
|
|
||||||
|
state: hoverArea.containsMouse && img.state == "activated" ? "activated" : ""
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "activated"
|
||||||
|
PropertyChanges { target: tooltip; opacity: 1 }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: ""
|
||||||
|
PropertyChanges { target: tooltip; opacity: 0 }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: [
|
||||||
|
Transition {
|
||||||
|
to: "activated"
|
||||||
|
NumberAnimation { target: tooltip; property: "opacity"; from: 0; to: 1; duration: imageFadeIn; }
|
||||||
|
},
|
||||||
|
|
||||||
|
Transition {
|
||||||
|
to: ""
|
||||||
|
NumberAnimation { target: tooltip; property: "opacity"; from: 1; to: 0; duration: imageFadeOut; }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: tooltipText
|
||||||
|
anchors.centerIn: parent;
|
||||||
|
text: textConstants.capslockWarning
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
92
salt-gruvbox/components/SaltTextBox.qml
Normal file
92
salt-gruvbox/components/SaltTextBox.qml
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
/***************************************************************************
|
||||||
|
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without restriction,
|
||||||
|
* including without limitation the rights to use, copy, modify, merge,
|
||||||
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||||
|
* and to permit persons to whom the Software is furnished to do so,
|
||||||
|
* subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included
|
||||||
|
* in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
|
||||||
|
FocusScope {
|
||||||
|
id: container
|
||||||
|
width: 80; height: 30
|
||||||
|
|
||||||
|
property color color: "white"
|
||||||
|
property color borderColor: "#ababab"
|
||||||
|
property color focusColor: "#266294"
|
||||||
|
property color hoverColor: "#5692c4"
|
||||||
|
property alias borderWidth: main.border.width
|
||||||
|
property alias radius: main.radius
|
||||||
|
property alias font: txtMain.font
|
||||||
|
property alias textColor: txtMain.color
|
||||||
|
property alias echoMode: txtMain.echoMode
|
||||||
|
property alias text: txtMain.text
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: main
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
color: container.color
|
||||||
|
border.color: container.borderColor
|
||||||
|
border.width: 1
|
||||||
|
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "hover"; when: mouseArea.containsMouse
|
||||||
|
PropertyChanges { target: main; border.color: container.hoverColor }
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "focus"; when: container.activeFocus && !mouseArea.containsMouse
|
||||||
|
PropertyChanges { target: main; border.color: container.focusColor }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
ColorAnimation { duration: 100 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
anchors.fill: container
|
||||||
|
|
||||||
|
cursorShape: Qt.IBeamCursor
|
||||||
|
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
onEntered: if (main.state == "") main.state = "hover";
|
||||||
|
onExited: if (main.state == "hover") main.state = "";
|
||||||
|
onClicked: container.focus = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
TextInput {
|
||||||
|
id: txtMain
|
||||||
|
width: parent.width - 16
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
color: "black"
|
||||||
|
|
||||||
|
clip: true
|
||||||
|
focus: true
|
||||||
|
|
||||||
|
passwordCharacter: "\u25cf"
|
||||||
|
}
|
||||||
|
}
|
16
salt-gruvbox/metadata.desktop
Normal file
16
salt-gruvbox/metadata.desktop
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
[SddmGreeterTheme]
|
||||||
|
Name=Salt Gruvbox
|
||||||
|
Description=Gruvbox SDDM Theme
|
||||||
|
Author=Abdurrahman AVCI, Salt
|
||||||
|
Copyright=(c) 2013, Abdurrahman AVCI, (c) 2025 Salt
|
||||||
|
License=CC-BY-SA
|
||||||
|
Type=sddm-theme
|
||||||
|
Version=0.1
|
||||||
|
Website=https://git.desu.ltd/salt/sddm-theme
|
||||||
|
MainScript=Main.qml
|
||||||
|
ConfigFile=theme.conf
|
||||||
|
TranslationsDirectory=translations
|
||||||
|
Email=jacob@babor.tech
|
||||||
|
Theme-Id=salt-gruvbox
|
||||||
|
Theme-API=2.0
|
||||||
|
QtVersion=6
|
3
salt-gruvbox/theme.conf
Normal file
3
salt-gruvbox/theme.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# vim:ft=dosini:
|
||||||
|
[General]
|
||||||
|
background=background.jpg
|
Reference in New Issue
Block a user