diff -Nru sddm-0.13.0/ChangeLog sddm-0.14.0/ChangeLog --- sddm-0.13.0/ChangeLog 2015-11-04 20:40:16.000000000 +0000 +++ sddm-0.14.0/ChangeLog 2016-08-28 11:54:03.000000000 +0000 @@ -4,22 +4,54 @@ - Bug fixes * Others +## 0.14.0 - 2016-08-28 +---------------------- + + New sddm.conf option EnableAvatars (useful for slow filesystems) + + New sddm.conf option UserAuthFile on the XDisplay section + to change the default Xauthority file name and path. + + New sddm.conf option SessionLogFile on XDisplay and WaylandDisplay + sections to change the default user session log location. + + ComboBox now exposes the arrow background color as + "arrowColor" property. + + New "style" theme configuration for QtQuick Controls 2.0. + + Require Qt 5.6 or better. + + Enable HiDPI support. + + Refresh sessions list. + + Always fallback to an embedded theme if no suitable theme is found. + - Actually change Qt platform theme. + - Switch to Wayland session vt only when authentication + succeeds. + - Close PAM session. + - Delete PAM credentials after closing the session. + * More theme-neutral default user and root avatars + * REMOVED the "circles" theme. Remember to change it if you had it set! + * REMOVED the "maui" theme as a standalone theme as it is now + embedded in the greeter. Remember to change the theme to empty + if you had it set to "maui". + * Update Estonian translation. + * Add Catalan translation from Robert Antoni Buj Gelonch. + * Add Dutch translation from Eric Hameleers. + * Add Slovak translation from Martin Minka. + * Add Swedish translation from Kristoffer Grundström. + * Add Ukrainian translation from Cherevan Andriy. + * Add Indian flag from Sanjeev Premi. + ## 0.13.0 - 2015-11-04 ---------------------- -+ Greeter inherits path environment variables from parent so that - themes installed in non-standard paths will work. -+ Add ENABLE_PAM option to toggle PAM support at build time. -+ Allow overriding textColor in ComboBox. -- Don't cast QByteArray to (char *). -- Disable greeters from loading KDE's debug hander - (fix CVE-2015-0856). -- Fix multi-screen support for some setups. -* Added Serbian translation. -* Added Traditional Chinese translation. -* Improved German translation. -* Remove failsafe session entry. -* Close the pipe fd passed to X server. -* A few micro-optimizations. + + Greeter inherits path environment variables from parent so that + themes installed in non-standard paths will work. + + Add ENABLE_PAM option to toggle PAM support at build time. + + Allow overriding textColor in ComboBox. + - Don't cast QByteArray to (char *). + - Disable greeters from loading KDE's debug hander + (fix CVE-2015-0856). + - Fix multi-screen support for some setups. + * Added Serbian translation. + * Added Traditional Chinese translation. + * Improved German translation. + * Remove failsafe session entry. + * Close the pipe fd passed to X server. + * A few micro-optimizations. ## 0.12.0 - 2015-09-05 ---------------------- diff -Nru sddm-0.13.0/CMakeLists.txt sddm-0.14.0/CMakeLists.txt --- sddm-0.13.0/CMakeLists.txt 2015-11-04 20:41:33.000000000 +0000 +++ sddm-0.14.0/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -2,7 +2,6 @@ project(SDDM) -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) @@ -14,7 +13,7 @@ # Set version set(SDDM_VERSION_MAJOR 0) -set(SDDM_VERSION_MINOR 13) +set(SDDM_VERSION_MINOR 14) set(SDDM_VERSION_PATCH 0) set(SDDM_VERSION_STRING "${SDDM_VERSION_MAJOR}.${SDDM_VERSION_MINOR}.${SDDM_VERSION_PATCH}") @@ -33,6 +32,10 @@ option(ENABLE_JOURNALD "Enable logging to journald" ON) option(ENABLE_PAM "Enable PAM support" ON) +# ECM +find_package(ECM 1.4.0 REQUIRED NO_MODULE) +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH};${ECM_MODULE_PATH}") + # Definitions add_definitions(-Wall -std=c++11 -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY) @@ -86,9 +89,7 @@ find_package(XKB REQUIRED) # Qt 5 -find_package(Qt5Core REQUIRED) -find_package(Qt5DBus REQUIRED) -find_package(Qt5LinguistTools REQUIRED) +find_package(Qt5 5.6.0 CONFIG REQUIRED Core DBus Gui Qml Quick LinguistTools) # find qt5 imports dir get_target_property(QMAKE_EXECUTABLE Qt5::qmake LOCATION) @@ -100,11 +101,12 @@ set(COMPONENTS_VERSION 2.0) # Uninstall target -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - -add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") +if ("${ECM_VERSION}" VERSION_LESS "1.7.0") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") +endif() # systemd if(NOT NO_SYSTEMD) @@ -145,6 +147,8 @@ set(HALT_COMMAND "/sbin/shutdown -h -P now") set(REBOOT_COMMAND "/sbin/shutdown -r now") endif() +add_feature_info("systemd" SYSTEMD_FOUND "systemd support") +add_feature_info("journald" JOURNALD_FOUND "journald support") # Set constants set(DATA_INSTALL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/sddm" CACHE PATH "System application data install directory") diff -Nru sddm-0.13.0/components/2.0/ComboBox.qml sddm-0.14.0/components/2.0/ComboBox.qml --- sddm-0.13.0/components/2.0/ComboBox.qml 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/components/2.0/ComboBox.qml 2016-08-28 11:54:03.000000000 +0000 @@ -36,6 +36,7 @@ property font font property alias model: listView.model property int index: 0 + property alias arrowColor: arrow.color property alias arrowIcon: arrowIcon.source property Component rowDelegate: defaultRowDelegate diff -Nru sddm-0.13.0/components/2.0/PasswordBox.qml sddm-0.14.0/components/2.0/PasswordBox.qml --- sddm-0.13.0/components/2.0/PasswordBox.qml 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/components/2.0/PasswordBox.qml 2016-08-28 11:54:03.000000000 +0000 @@ -34,7 +34,7 @@ property alias hoverColor: txtMain.hoverColor property alias radius: txtMain.radius property alias font: txtMain.font - property alias textColor: txtMain.color + property alias textColor: txtMain.textColor property alias echoMode: txtMain.echoMode property alias text: txtMain.text diff -Nru sddm-0.13.0/COPYING sddm-0.14.0/COPYING --- sddm-0.13.0/COPYING 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/COPYING 1970-01-01 00:00:00.000000000 +0000 @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) 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 -this service 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 make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. 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. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -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 -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the 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 a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE 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. - - 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 -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 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, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision 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, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This 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. diff -Nru sddm-0.13.0/COPYING-CC-BY-3.0 sddm-0.14.0/COPYING-CC-BY-3.0 --- sddm-0.13.0/COPYING-CC-BY-3.0 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/COPYING-CC-BY-3.0 1970-01-01 00:00:00.000000000 +0000 @@ -1,299 +0,0 @@ -Creative Commons Legal Code - -Attribution 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 above) for the - purposes of this License. - c. "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. - d. "Licensor" means the individual, individuals, entity or entities that offer - (s) the Work under the terms of this License. - e. "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. - f. "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. - g. "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. - h. "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. - i. "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(b), 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(b), as requested. - b. 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 Section 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 (b) 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. - c. 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 this - License. - - Creative Commons may be contacted at http://creativecommons.org/. diff -Nru sddm-0.13.0/COPYING-CC-BY-SA-3.0 sddm-0.14.0/COPYING-CC-BY-SA-3.0 --- sddm-0.13.0/COPYING-CC-BY-SA-3.0 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/COPYING-CC-BY-SA-3.0 1970-01-01 00:00:00.000000000 +0000 @@ -1,337 +0,0 @@ -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 http://creativecommons.org/. diff -Nru sddm-0.13.0/data/CMakeLists.txt sddm-0.14.0/data/CMakeLists.txt --- sddm-0.13.0/data/CMakeLists.txt 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -1,4 +1,3 @@ -install(DIRECTORY "faces" DESTINATION "${DATA_INSTALL_DIR}") install(DIRECTORY "flags" DESTINATION "${DATA_INSTALL_DIR}") install(FILES @@ -8,6 +7,18 @@ ) install(FILES + "faces/root.face.icon.png" + DESTINATION "${DATA_INSTALL_DIR}/faces" + RENAME "root.face.icon" +) + +install(FILES + "faces/default.face.icon.png" + DESTINATION "${DATA_INSTALL_DIR}/faces" + RENAME ".face.icon" +) + +install(FILES "scripts/Xsession" "scripts/Xsetup" "scripts/Xstop" Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/faces/default.face.icon and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/faces/default.face.icon differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/faces/default.face.icon.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/faces/default.face.icon.png differ diff -Nru sddm-0.13.0/data/faces/README sddm-0.14.0/data/faces/README --- sddm-0.13.0/data/faces/README 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/faces/README 2016-08-28 11:54:03.000000000 +0000 @@ -1 +1,2 @@ -This files are directly copied from a KDE installation. \ No newline at end of file +These are the default avatars. +They are installed to `.face.icon` and `root.face.icon`. See ../CMakeLists.txt. Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/faces/root.face.icon and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/faces/root.face.icon differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/faces/root.face.icon.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/faces/root.face.icon.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/flags/in.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/flags/in.png differ diff -Nru sddm-0.13.0/data/man/sddm.conf.rst.in sddm-0.14.0/data/man/sddm.conf.rst.in --- sddm-0.13.0/data/man/sddm.conf.rst.in 2015-10-20 19:24:03.000000000 +0000 +++ sddm-0.14.0/data/man/sddm.conf.rst.in 2016-08-28 11:54:03.000000000 +0000 @@ -41,6 +41,14 @@ If property is set to `none`, numlock won't be changed. Default value is "none". +`InputMethod=` + Set the Qt input method for the greeter. + Tablet users with Qt Virtual Keyboard installed can set this + to "qtvirtualkeyboard" for the on-screen keyboard. + Other known values are "ibus" for the Intelligent Input Bus, + or "compose" for dead keys support. + Leave this empty if unsure. + [Theme] section: `ThemeDir=` @@ -60,15 +68,22 @@ Name of the cursor theme to be set before starting the display server. -[XDisplay] section: +`EnableAvatars=` + When enabled, home directories are searched for ".face.icon" images to + display as their avatars. This can be slow on some file systems. + When disabled, all avatars will be default. Themes may choose to hide + them altogether. + Default value is true. + +[X11] section: `ServerPath=` Path of the X server. Default value is "/usr/bin/X". `ServerArguments=` - Arguments to the X server. - Default value is "-nolisten tcp". + Arguments to the X server. + Default value is "-nolisten tcp". `XephyrPath=` Path of the Xephyr. @@ -83,9 +98,19 @@ Default value is "/usr/share/xsessions". `SessionCommand=` - Path of script to execute when starting the desktop session. + Path of script to execute when starting the user session. This script + receives the value of the "Exec" setting in the ".desktop" file of the selected + session and runs it. Default value is "@SESSION_COMMAND@". +`SessionLogFile=` + Path to the user session log file, relative to the home directory. + Default value is ".local/share/sddm/xorg-session.log". + +`UserAuthFile=` + Path to the Xauthority file, relative to the home directory. + Default value is ".Xauthority". + `DisplayCommand=` Path of script to execute when starting the display server. Default value is "@DATA_INSTALL_DIR@/scripts/Xsetup". @@ -100,16 +125,22 @@ increase as new displays added. Default value is @MINIMUM_VT@. -[WaylandDisplay] section: +[Wayland] section: `SessionDir=` Path of the directory containing session files. Default value is "/usr/share/wayland-sessions". `SessionCommand=` - Path of script to execute when starting the desktop session. + Path of script to execute when starting the user session. This script + receives the value of the "Exec" setting in the ".desktop" file of the selected + session and run it. Default value is "@WAYLAND_SESSION_COMMAND@". +`SessionLogFile=` + Path to the user session log file, relative to the home directory. + Default value is ".local/share/sddm/wayland-session.log". + [Users] section: `DefaultPath=` @@ -136,14 +167,14 @@ `RememberLastUser=` If this flag is true, LastUser value will updated - on every successfull login, if false last user value - wont be updated. + on every successful login, if false last user value + won't be updated. Default value is true. `RememberLastSession=` If this flag is true, LastSession value will updated - on every successfull login, if false last session value - wont be updated. + on every successful login, if false last session value + won't be updated. Default value is true. [Autologin] section: diff -Nru sddm-0.13.0/data/scripts/wayland-session sddm-0.14.0/data/scripts/wayland-session --- sddm-0.13.0/data/scripts/wayland-session 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/scripts/wayland-session 2016-08-28 11:54:03.000000000 +0000 @@ -1,12 +1,10 @@ #!/bin/sh # wayland-session - run as user -# Copyright (C) 2015 Pier Luigi Fiorini +# Copyright (C) 2015-2016 Pier Luigi Fiorini # This file is extracted from kde-workspace (kdm/kfrontend/genkdmconf.c) # Copyright (C) 2001-2005 Oswald Buddenhagen -session=$1 - # Note that the respective logout scripts are not sourced. case $SHELL in */bash) @@ -46,4 +44,4 @@ ;; esac -eval exec "$session" +exec $@ diff -Nru sddm-0.13.0/data/scripts/Xsession sddm-0.14.0/data/scripts/Xsession --- sddm-0.13.0/data/scripts/Xsession 2015-10-20 19:24:20.000000000 +0000 +++ sddm-0.14.0/data/scripts/Xsession 2016-08-28 11:54:03.000000000 +0000 @@ -1,11 +1,10 @@ #! /bin/sh # Xsession - run as user +# Copyright (C) 2016 Pier Luigi Fiorini # This file is extracted from kde-workspace (kdm/kfrontend/genkdmconf.c) # Copyright (C) 2001-2005 Oswald Buddenhagen -session=$1 - # Note that the respective logout scripts are not sourced. case $SHELL in */bash) @@ -85,12 +84,12 @@ fi [ -f $HOME/.Xresources ] && xrdb -merge $HOME/.Xresources -case $session in - "") +if [ -f "$USERXSESSION" ]; then + . "$USERXSESSION" +fi + +if [ -z "$@" ]; then exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session." - ;; - *) - eval exec "$session" - ;; -esac -exec xmessage -center -buttons OK:0 -default OK "Sorry, cannot execute $session. Check $DESKTOP_SESSION.desktop." +else + exec $@ +fi Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/circles/angle-down.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/circles/angle-down.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/circles/background.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/circles/background.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/circles/circles.jpg and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/circles/circles.jpg differ diff -Nru sddm-0.13.0/data/themes/circles/Main.qml sddm-0.14.0/data/themes/circles/Main.qml --- sddm-0.13.0/data/themes/circles/Main.qml 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/data/themes/circles/Main.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,272 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2013 Abdurrahman AVCI -* -* 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 ${COMPONENTS_VERSION} -import SddmComponents ${COMPONENTS_VERSION} - -Rectangle { - width: 640 - height: 480 - - LayoutMirroring.enabled: Qt.locale().textDirection == Qt.RightToLeft - LayoutMirroring.childrenInherit: true - - TextConstants { id: textConstants } - - Connections { - target: sddm - - onLoginSucceeded: { - errorMessage.color = "steelblue" - errorMessage.text = textConstants.loginSucceeded - } - - onLoginFailed: { - errorMessage.color = "red" - errorMessage.text = textConstants.loginFailed - } - } - - Background { - anchors.fill: parent - source: config.background - fillMode: Image.Tile - onStatusChanged: { - if (status == Image.Error && source != config.defaultBackground) { - source = config.defaultBackground - } - } - } - - Rectangle { - anchors.fill: parent - color: "transparent" - //visible: primaryScreen - - Rectangle { - anchors.centerIn: parent - width: Math.max(320, mainColumn.implicitWidth + 40) - height: Math.max(320, mainColumn.implicitHeight + 40) - gradient: Gradient { - GradientStop { position: 0.0; color: "#c3c3c3" } - GradientStop { position: 0.5; color: "#e5e5e5" } - GradientStop { position: 1.0; color: "#c3c3c3" } - } - - border.color: "#ababab" - border.width: 1 - - Column { - id: mainColumn - anchors.centerIn: parent - spacing: 12 - - Text { - anchors.horizontalCenter: parent.horizontalCenter - verticalAlignment: Text.AlignVCenter - width: parent.width - height: text.implicitHeight - color: "black" - text: textConstants.welcomeText.arg(sddm.hostName) - wrapMode: Text.WordWrap - font.pixelSize: 24 - elide: Text.ElideRight - horizontalAlignment: Text.AlignHCenter - } - - Column { - width: parent.width - spacing: 4 - Text { - id: lblName - width: parent.width - text: textConstants.userName - font.bold: true - font.pixelSize: 12 - } - - TextBox { - id: name - width: parent.width; height: 30 - text: userModel.lastUser - font.pixelSize: 14 - - KeyNavigation.backtab: rebootButton; KeyNavigation.tab: password - - Keys.onPressed: { - if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { - sddm.login(name.text, password.text, session.index) - event.accepted = true - } - } - } - } - - Column { - width: parent.width - spacing : 4 - Text { - id: lblPassword - width: parent.width - text: textConstants.password - font.bold: true - font.pixelSize: 12 - } - - PasswordBox { - id: password - width: parent.width; height: 30 - font.pixelSize: 14 - tooltipBG: "lightgrey" - - KeyNavigation.backtab: name; KeyNavigation.tab: session - - Keys.onPressed: { - if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { - sddm.login(name.text, password.text, session.index) - event.accepted = true - } - } - } - } - - Row { - spacing: 4 - width: parent.width / 2 - z: 100 - - Column { - z: 100 - width: parent.width * 1.3 - spacing : 4 - anchors.bottom: parent.bottom - - Text { - id: lblSession - width: parent.width - text: textConstants.session - wrapMode: TextEdit.WordWrap - font.bold: true - font.pixelSize: 12 - } - - ComboBox { - id: session - width: parent.width; height: 30 - font.pixelSize: 14 - - arrowIcon: "angle-down.png" - - model: sessionModel - index: sessionModel.lastIndex - - KeyNavigation.backtab: password; KeyNavigation.tab: layoutBox - } - } - - Column { - z: 101 - width: parent.width * 0.7 - spacing : 4 - anchors.bottom: parent.bottom - - Text { - id: lblLayout - width: parent.width - text: textConstants.layout - wrapMode: TextEdit.WordWrap - font.bold: true - font.pixelSize: 12 - } - - LayoutBox { - id: layoutBox - width: parent.width; height: 30 - font.pixelSize: 14 - - arrowIcon: "angle-down.png" - - KeyNavigation.backtab: session; KeyNavigation.tab: loginButton - } - } - } - - Column { - width: parent.width - Text { - id: errorMessage - anchors.horizontalCenter: parent.horizontalCenter - text: textConstants.prompt - font.pixelSize: 10 - } - } - - Row { - spacing: 4 - anchors.horizontalCenter: parent.horizontalCenter - property int btnWidth: Math.max(loginButton.implicitWidth, - shutdownButton.implicitWidth, - rebootButton.implicitWidth, 80) + 8 - Button { - id: loginButton - text: textConstants.login - width: parent.btnWidth - - onClicked: sddm.login(name.text, password.text, session.index) - - KeyNavigation.backtab: layoutBox; KeyNavigation.tab: shutdownButton - } - - Button { - id: shutdownButton - text: textConstants.shutdown - width: parent.btnWidth - - onClicked: sddm.powerOff() - - KeyNavigation.backtab: loginButton; KeyNavigation.tab: rebootButton - } - - Button { - id: rebootButton - text: textConstants.reboot - width: parent.btnWidth - - onClicked: sddm.reboot() - - KeyNavigation.backtab: shutdownButton; KeyNavigation.tab: name - } - } - } - } - } - - Component.onCompleted: { - if (name.text == "") - name.focus = true - else - password.focus = true - } -} diff -Nru sddm-0.13.0/data/themes/circles/metadata.desktop sddm-0.14.0/data/themes/circles/metadata.desktop --- sddm-0.13.0/data/themes/circles/metadata.desktop 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/circles/metadata.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -[SddmGreeterTheme] -Name=Circles -Description=Circles Theme -Author=Abdurrahman AVCI -Copyright=(c) 2013, Abdurrahman AVCI -License=CC-BY-SA -Type=sddm-theme -Version=0.1 -Website=https://github.com/sddm/sddm -Screenshot=circles.jpg -MainScript=Main.qml -ConfigFile=theme.conf -TranslationsDirectory=translations -Email=abdurrahmanavci@gmail.com -Theme-Id=circles -Theme-API=${COMPONENTS_VERSION} diff -Nru sddm-0.13.0/data/themes/circles/README sddm-0.14.0/data/themes/circles/README --- sddm-0.13.0/data/themes/circles/README 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/circles/README 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -This theme is part of the Simple Desktop Display Manager distribution. This theme is based QtQuick1. - -chevron icons are extracted from Font Awesome by Dave Gandy - http://fortawesome.github.com/Font-Awesome. - -Background image is CC BY 3.0, Abdurrahman AVCI. - -QML files are MIT licensed and license headers are included in each file. - -warning.png is public domain: http://rationalwiki.org/wiki/File:Warning_icon_orange.svg diff -Nru sddm-0.13.0/data/themes/circles/theme.conf sddm-0.14.0/data/themes/circles/theme.conf --- sddm-0.13.0/data/themes/circles/theme.conf 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/circles/theme.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -[General] -background=background.png - diff -Nru sddm-0.13.0/data/themes/CMakeLists.txt sddm-0.14.0/data/themes/CMakeLists.txt --- sddm-0.13.0/data/themes/CMakeLists.txt 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -1,4 +1,4 @@ -set(THEMES circles elarun maldives maui) +set(THEMES elarun maldives) foreach(THEME ${THEMES}) # We assume that theme-specific translations are stored diff -Nru sddm-0.13.0/data/themes/elarun/ACKNOWLEDGEMENT sddm-0.14.0/data/themes/elarun/ACKNOWLEDGEMENT --- sddm-0.13.0/data/themes/elarun/ACKNOWLEDGEMENT 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/elarun/ACKNOWLEDGEMENT 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -This theme is based on the KDM Elarun theme, ported to SDDM theme. -Thanks to these people for their great works. - -Background images: -Author=Nuno Pinheiro -Email=nuno@oxygen-icons.org -License=LGPLv3 - -Original KDM theme: -Author=Roman Shtylman & Nuno Pinheiro -Copyright=GPL 2010 Roman Shtylman | nuno@oxygen-icons.org, 2012 Nuno Pineheiro -License=GPL - -warning.png is public domain: http://rationalwiki.org/wiki/File:Warning_icon_orange.svg Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/elarun/images/system_switch_user.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/elarun/images/system_switch_user.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/elarun/images/user_icon.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/elarun/images/user_icon.png differ diff -Nru sddm-0.13.0/data/themes/elarun/Main.qml sddm-0.14.0/data/themes/elarun/Main.qml --- sddm-0.13.0/data/themes/elarun/Main.qml 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/data/themes/elarun/Main.qml 2016-08-28 11:54:03.000000000 +0000 @@ -40,6 +40,7 @@ onLoginSucceeded: { } onLoginFailed: { + pw_entry.text = "" } } @@ -165,14 +166,6 @@ spacing: 8 ImageButton { - id: session_button - source: "images/session_normal.png" - onClicked: if (menu_session.state === "visible") menu_session.state = ""; else menu_session.state = "visible" - - KeyNavigation.backtab: login_button; KeyNavigation.tab: system_button - } - - ImageButton { id: system_button source: "images/system_shutdown.png" onClicked: sddm.powerOff() diff -Nru sddm-0.13.0/data/themes/elarun/README sddm-0.14.0/data/themes/elarun/README --- sddm-0.13.0/data/themes/elarun/README 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/themes/elarun/README 2016-08-28 11:54:03.000000000 +0000 @@ -1,3 +1,13 @@ -This theme is based on KDM Elarun theme. +This theme is based on the KDM Elarun theme, ported to SDDM theme. +Thanks to these people for their great works. Not all functionality from original theme are ported. +Background images: +Author=Nuno Pinheiro +Email=nuno@oxygen-icons.org +License=LGPLv3 + +Original KDM theme: +Author=Roman Shtylman & Nuno Pinheiro +Copyright=GPL 2010 Roman Shtylman | nuno@oxygen-icons.org, 2012 Nuno Pineheiro +License=GPL diff -Nru sddm-0.13.0/data/themes/maldives/LICENSE sddm-0.14.0/data/themes/maldives/LICENSE --- sddm-0.13.0/data/themes/maldives/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/themes/maldives/LICENSE 2016-08-28 11:54:03.000000000 +0000 @@ -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/. diff -Nru sddm-0.13.0/data/themes/maldives/Main.qml sddm-0.14.0/data/themes/maldives/Main.qml --- sddm-0.13.0/data/themes/maldives/Main.qml 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/data/themes/maldives/Main.qml 2016-08-28 11:54:03.000000000 +0000 @@ -44,6 +44,7 @@ } onLoginFailed: { + password.text = "" errorMessage.color = "red" errorMessage.text = textConstants.loginFailed } Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/maldives/maldives.jpg and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/maldives/maldives.jpg differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/maui/angle-down.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/maui/angle-down.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/maui/angle-left.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/maui/angle-left.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/maui/angle-right.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/maui/angle-right.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/data/themes/maui/background.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/data/themes/maui/background.png differ diff -Nru sddm-0.13.0/data/themes/maui/Main.qml sddm-0.14.0/data/themes/maui/Main.qml --- sddm-0.13.0/data/themes/maui/Main.qml 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/data/themes/maui/Main.qml 1970-01-01 00:00:00.000000000 +0000 @@ -1,263 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2015 Pier Luigi Fiorini -* Copyright (c) 2013 Abdurrahman AVCI + + + + TextConstants + + Welcome to %1 + Benvingut/da a %1 + + + Warning, Caps Lock is ON! + Compte, el bloqueig de majúscules està activat! + + + Layout + Disposició + + + Login + Inicia la sessió + + + Login failed + Inici de sessió fracassat + + + Login succeeded + Inici de sessió reeixit + + + Password + Contrasenya + + + Enter your username and password + Introduïu el vostre usuari i contrasenya + + + Reboot + Reinicia + + + Session + Sessió + + + Shutdown + Apaga + + + User name + Usuari + + + Select your user and enter password + Seleccioneu el vostre usuari i introduïu la contrasenya + + + diff -Nru sddm-0.13.0/data/translations/CMakeLists.txt sddm-0.14.0/data/translations/CMakeLists.txt --- sddm-0.13.0/data/translations/CMakeLists.txt 2015-09-08 18:31:11.000000000 +0000 +++ sddm-0.14.0/data/translations/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -1,5 +1,6 @@ set(TRANSLATION_FILES ar.ts + ca.ts cs.ts de.ts es.ts @@ -12,6 +13,8 @@ ko.ts lt.ts lv.ts + nb.ts + nn.ts pl.ts pt_BR.ts pt_PT.ts @@ -20,6 +23,7 @@ sr@ijekavian.ts sr@ijekavianlatin.ts sr@latin.ts + sv.ts ru.ts tr.ts zh_CN.ts diff -Nru sddm-0.13.0/data/translations/es.ts sddm-0.14.0/data/translations/es.ts --- sddm-0.13.0/data/translations/es.ts 2015-08-20 17:08:40.000000000 +0000 +++ sddm-0.14.0/data/translations/es.ts 2016-08-28 11:54:03.000000000 +0000 @@ -9,7 +9,7 @@ Warning, Caps Lock is ON! - Atencio, Mayusculas estan encendidas! + ¡Atención, el bloqueo de mayúsculas está activado! Layout @@ -17,15 +17,15 @@ Login - Iniciar sesiòn + Iniciar sesión Login failed - Inicio de sesiòn fallido + Inicio de sesión fallido Login succeeded - Inicio de sesiòn correcto + Inicio de sesión correcto Password @@ -41,7 +41,7 @@ Session - Sesiòn + Sesión Shutdown diff -Nru sddm-0.13.0/data/translations/et.ts sddm-0.14.0/data/translations/et.ts --- sddm-0.13.0/data/translations/et.ts 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/data/translations/et.ts 2016-08-28 11:54:03.000000000 +0000 @@ -37,7 +37,7 @@ Reboot - Taaskäivitamine + Taaskäivita Session @@ -45,7 +45,7 @@ Shutdown - Seiskamine + Seiska User name diff -Nru sddm-0.13.0/data/translations/nb.ts sddm-0.14.0/data/translations/nb.ts --- sddm-0.13.0/data/translations/nb.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/nb.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,88 @@ + + + + + PictureBox + + + Press to login + Trykk for å logge inn + + + + QObject + + + %1 (Wayland) + %1 (Wayland) + + + + TextConstants + + + Warning, Caps Lock is ON! + Advarsel: «Caps Lock» står på! + + + + Layout + Tastatur + + + + Login + Logg inn + + + + Login failed + Klarte ikke logge inn + + + + Login succeeded + Innlogget + + + + Password + Passord + + + + Enter your username and password + Skriv inn brukernavn og passord + + + + Select your user and enter password + Velg bruker og skriv inn passord + + + + Reboot + Start på nytt + + + + Session + Økt + + + + Shutdown + Slå av + + + + User name + Brukernavn + + + + Welcome to %1 + Velkommen til %1 + + + diff -Nru sddm-0.13.0/data/translations/nl.ts sddm-0.14.0/data/translations/nl.ts --- sddm-0.13.0/data/translations/nl.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/nl.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + TextConstants + + Welcome to %1 + Welkom bij %1 + + + Warning, Caps Lock is ON! + Waarschuwing, Hoofdlettermodus ACTIEF! + + + Layout + Layout + + + Login + Inloggen + + + Login failed + Inloggen mislukt + + + Login succeeded + Inloggen gelukt + + + Password + Wachtwoord + + + Enter your username and password + Voer je gebruikersnaam en wachtwoord in + + + Reboot + Herstart + + + Session + Sessie + + + Shutdown + Uitschakelen + + + User name + Gebruikersnaam + + + Select your user and enter password + Kies je gebruikersnaam en voer wachtwoord in + + + diff -Nru sddm-0.13.0/data/translations/nn.ts sddm-0.14.0/data/translations/nn.ts --- sddm-0.13.0/data/translations/nn.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/nn.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,88 @@ + + + + + PictureBox + + + Press to login + Trykk for å logga inn + + + + QObject + + + %1 (Wayland) + %1 (Wayland) + + + + TextConstants + + + Warning, Caps Lock is ON! + Åtvaring: «Caps Lock» står på! + + + + Layout + Tastatur + + + + Login + Logg inn + + + + Login failed + Klarte ikkje logga inn + + + + Login succeeded + Logga inn + + + + Password + Passord + + + + Enter your username and password + Skriv inn brukarnamn og passord + + + + Select your user and enter password + Vel brukar og skriv inn passord + + + + Reboot + Start på nytt + + + + Session + Økt + + + + Shutdown + Slå av + + + + User name + Brukarnamn + + + + Welcome to %1 + Velkommen til %1 + + + diff -Nru sddm-0.13.0/data/translations/sk.ts sddm-0.14.0/data/translations/sk.ts --- sddm-0.13.0/data/translations/sk.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/sk.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + TextConstants + + Welcome to %1 + Vitajte v %1 + + + Warning, Caps Lock is ON! + Pozor, je aktívny Caps Lock! + + + Layout + Rozloženie klávesnice + + + Login + Prihlásiť sa + + + Login failed + Prihlásenie zlyhalo + + + Login succeeded + Prihlásenie bolo úspešné + + + Password + Heslo + + + Enter your username and password + Zadajte svoje užívateľské meno a heslo + + + Reboot + Reštartovať + + + Session + Relácia + + + Shutdown + Vypnúť + + + User name + Užívateľské meno + + + Select your user and enter password + Vyberte váš užívateľský účet a zadajte heslo + + + diff -Nru sddm-0.13.0/data/translations/sv.ts sddm-0.14.0/data/translations/sv.ts --- sddm-0.13.0/data/translations/sv.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/sv.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,88 @@ + + + + + PictureBox + + + Press to login + Tryck för att logga in + + + + QObject + + + %1 (Wayland) + %1 (Wayland) + + + + TextConstants + + + Warning, Caps Lock is ON! + Varning, «Caps Lock» är på! + + + + Layout + Ritning + + + + Login + Logga in + + + + Login failed + Inloggningen misslyckades + + + + Login succeeded + Inloggningen misslyckades + + + + Password + Lösenord + + + + Enter your username and password + Ange användarnamn och lösenord + + + + Select your user and enter password + Välj din användare och ange lösenord + + + + Reboot + Starta om + + + + Session + Session + + + + Shutdown + Stäng av + + + + User name + Användarnamn + + + + Welcome to %1 + Välkommen til %1 + + + diff -Nru sddm-0.13.0/data/translations/uk.ts sddm-0.14.0/data/translations/uk.ts --- sddm-0.13.0/data/translations/uk.ts 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/data/translations/uk.ts 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,59 @@ + + + + + TextConstants + + Welcome to %1 + Ласкаво просимо до %1 + + + Warning, Caps Lock is ON! + Увага, увімкнутий Caps Lock! + + + Layout + Розкладка клавіатури + + + Login + Вхід + + + Login failed + Помилка входу + + + Login succeeded + Вдалось увійти + + + Password + Пароль + + + Enter your username and password + Введіть ім'я користувача та пароль + + + Reboot + Перезавантажити + + + Session + Сесія + + + Shutdown + Вимкнути + + + User name + Ім'я користувача/translation> + + + Select your user and enter password + Оберіть користувача та введіть пароль + + + \ No newline at end of file diff -Nru sddm-0.13.0/debian/changelog sddm-0.14.0/debian/changelog --- sddm-0.13.0/debian/changelog 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/changelog 2017-05-02 17:55:40.000000000 +0000 @@ -1,3 +1,75 @@ +sddm (0.14.0-4ubuntu1) artful; urgency=medium + + [ Simon Quigley ] + * New upstream release (LP: #1627340). + * Merge from Debian. Remaining changes: + - Keep the default-display-manager file logic in sddm.postinst. + - Keep kubuntu-specific patches: + + kubuntu_nvidia-prime.diff + + kubuntu_minimum_vt.diff instead of 03_vt7-minimum-vt.diff + * Dropped changes: + - Remove debian/patches/upstream_autologin_fallback.diff as it's + reverse-applicable. + * Refresh patches. + + [ Clive Johnston ] + * Re-apply 02_kubuntu_use_breeze.diff + * Update VCS to LP and replace maui theme for breeze in recommends. + + -- Simon Quigley Tue, 02 May 2017 18:55:40 +0100 + +sddm (0.14.0-4) unstable; urgency=medium + + * Update documentation, add information about HiDPI + + -- Maximiliano Curia Tue, 14 Mar 2017 09:50:33 +0100 + +sddm (0.14.0-3) unstable; urgency=medium + + * Drop pam_systemd.so from our pam rules. + Thanks to Russell Coker for reporting (Closes: 850006) + * Add new upstream patch: Fix-display-of-user-avatars.-684.patch. + Thanks to Salvo Tomaselli for reporting (Closes: 856195) + * Create sddm's home dir if not present + * Add HiDPI patches: + Add-a-config-option-to-enable-high-DPI-scaling-701.patch (upstream) and + Regression-fix-disable-HiDPI-by-default.patch. + Thanks to Laurent Bonnaud for reporting and testing (Closes: 853843) + + -- Maximiliano Curia Sun, 12 Mar 2017 17:33:04 +0100 + +sddm (0.14.0-2) unstable; urgency=medium + + * Avoid killing plymouth from the sddm system unit (Closes: 854260) + * Purge dangling symlink. + Thanks to Andreas Beckmann for following this issue (Closes: 848936) + * Install the generated configuration file as an example + * Workaround debconf's db_purge stdout parsing (#855912) + Thanks to Laurent Bonnaud for reporting (Closes: 853844) + + -- Maximiliano Curia Mon, 20 Feb 2017 19:09:24 +0100 + +sddm (0.14.0-1) experimental; urgency=medium + + [ Maximiliano Curia ] + * New upstream release (0.14.0). + * Add missing xserver dependencies. (Closes: 833080) + * Refresh patches + * Update build-deps and deps with the info from cmake + * Drop maui and circles themes + * Bump Standards-Version to 3.9.8 + * Add a .gitattributes file to use dpkg-mergechangelogs + * Migrate dbg package to automatic dbgsym + * debian/control: Update Vcs-Browser and Vcs-Git fields + * Demote the breeze theme to a recommends + * Add a basic README.Debian for the sddm configuration and themes + * Add new patch: handle-reading-from-a-closed-file-handle.patch + + [ Aurélien COUDERC ] + * Add SDDM themes based on Debian arwork, make default theme configurable with alternatives + + -- Maximiliano Curia Fri, 30 Dec 2016 20:41:13 +0100 + sddm (0.13.0-1ubuntu5) xenial; urgency=medium * Cherry-pick cb768895c8e0d21c689d63f69d7ac668fe4e8fa6 so there is a working diff -Nru sddm-0.13.0/debian/control sddm-0.14.0/debian/control --- sddm-0.13.0/debian/control 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/control 2017-05-02 17:55:40.000000000 +0000 @@ -6,32 +6,35 @@ Maximiliano Curia Build-Depends: cmake (>= 2.8.8), debhelper (>= 9), - python-docutils, dh-systemd [linux-any], + extra-cmake-modules (>= 1.4.0~), libpam0g-dev, libsystemd-dev [linux-any], libupower-glib-dev, libxcb-xkb-dev, libxcb1-dev, + libxkbcommon-dev, pkg-config, - qtbase5-dev (>= 5.4), - qtdeclarative5-dev, + python-docutils, + qtbase5-dev (>= 5.6.0~), + qtdeclarative5-dev (>= 5.6.0~), qttools5-dev, - qttools5-dev-tools, + qttools5-dev-tools (>= 5.6.0~), systemd [linux-any] -Standards-Version: 3.9.6 +Standards-Version: 3.9.8 Homepage: https://github.com/sddm/sddm -Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-kde/kde-std/sddm.git -Vcs-Git: git://anonscm.debian.org/pkg-kde/kde-std/sddm.git +Vcs-Browser: https://code.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/sddm +Vcs-Git: https://git.launchpad.net/~kubuntu-packagers/kubuntu-packaging/+git/sddm Package: sddm Architecture: any Depends: adduser, qml-module-qtquick2, - sddm-theme-breeze | sddm-theme, + x11-common, + xserver-xorg | xserver, ${misc:Depends}, ${shlibs:Depends} -Recommends: libpam-systemd +Recommends: libpam-systemd, sddm-theme-breeze | sddm-theme Suggests: libpam-kwallet5 Provides: x-display-manager Description: modern display manager for X11 @@ -42,20 +45,21 @@ Package: sddm-theme-maui Architecture: all Depends: ${misc:Depends} -Breaks: sddm (<< ${source:Version}) Recommends: sddm Provides: sddm-theme +Breaks: sddm (<< ${source:Version}) Description: 'Maui' theme for SDDM X11 display manager Maui theme for SDDM -Package: sddm-theme-circles +Package: sddm-theme-debian-maui Architecture: all -Depends: ${misc:Depends} -Breaks: sddm (<< ${source:Version}) +Depends: desktop-base, ${misc:Depends} Recommends: sddm Provides: sddm-theme -Description: 'Circles' theme for SDDM X11 display manager - Circles theme for SDDM +Breaks: sddm (<< ${source:Version}) +Description: 'Debian Maui' theme for SDDM X11 display manager + Maui theme for SDDM, using the active desktop-base theme for the + background Package: sddm-theme-elarun Architecture: all @@ -66,6 +70,16 @@ Description: 'Elarun' Theme for SDDM X11 display manager Elarun theme for SDDM +Package: sddm-theme-debian-elarun +Architecture: all +Depends: desktop-base, ${misc:Depends} +Recommends: sddm +Provides: sddm-theme +Breaks: sddm (<< ${source:Version}) +Description: 'Debian Elarun' Theme for SDDM X11 display manager + Elarun theme for SDDM, using the active desktop-base theme for the + background. + Package: sddm-theme-maldives Architecture: all Depends: ${misc:Depends} @@ -74,17 +88,3 @@ Provides: sddm-theme Description: 'Maldives' theme for SDDM X11 display manager Maldives theme for SDDM - -Package: sddm-dbg -Depends: sddm (= ${binary:Version}), - ${misc:Depends}, - ${shlibs:Depends} -Architecture: any -Section: debug -Priority: extra -Description: modern display manager for X11 -- debugging symbols - SDDM is a modern display manager for X11 aiming to be fast, simple - and beautiful. It uses modern technologies like QtQuick to create - smooth, animated user interfaces. - . - Debugging symbols for SDDM diff -Nru sddm-0.13.0/debian/not-installed sddm-0.14.0/debian/not-installed --- sddm-0.13.0/debian/not-installed 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/not-installed 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,3 @@ +etc/sddm.conf +usr/share/man/man1/*.1 +usr/share/man/man5/*.5 diff -Nru sddm-0.13.0/debian/patches/01_sddm_systemctl.diff sddm-0.14.0/debian/patches/01_sddm_systemctl.diff --- sddm-0.13.0/debian/patches/01_sddm_systemctl.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/01_sddm_systemctl.diff 2017-05-02 17:55:40.000000000 +0000 @@ -1,6 +1,14 @@ +From: Debian/Kubuntu Qt/KDE Maintainers +Date: Fri, 11 Nov 2016 09:45:34 +0100 +Subject: _sddm_systemctl + +--- + CMakeLists.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -137,8 +137,8 @@ +@@ -139,8 +139,8 @@ if(SYSTEMD_FOUND) endif() set(MINIMUM_VT 1) diff -Nru sddm-0.13.0/debian/patches/02_kubuntu_use_breeze.diff sddm-0.14.0/debian/patches/02_kubuntu_use_breeze.diff --- sddm-0.13.0/debian/patches/02_kubuntu_use_breeze.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/02_kubuntu_use_breeze.diff 2017-05-02 17:55:40.000000000 +0000 @@ -1,11 +1,19 @@ +From: Debian/Kubuntu Qt/KDE Maintainers +Date: Fri, 11 Nov 2016 09:45:34 +0100 +Subject: _kubuntu_use_breeze + +--- + src/common/Configuration.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + --- a/src/common/Configuration.h +++ b/src/common/Configuration.h -@@ -45,7 +45,7 @@ - // Name Entries (but it's a regular class again) +@@ -46,7 +46,7 @@ namespace SDDM { + // Name Entries (but it's a regular class again) Section(Theme, Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path")); -- Entry(Current, QString, _S("maui"), _S("Current theme name")); -+ Entry(Current, QString, _S("breeze"), _S("Current theme name")); - Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Face icon directory\n" - "The files should be in username.face.icon format")); - Entry(CursorTheme, QString, QString(), _S("Cursor theme")); +- Entry(Current, QString, _S(""), _S("Current theme name")); ++ Entry(Current, QString, _S("breeze"), _S("Current theme name")); + Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Global directory for user avatars\n" + "The files should be named .face.icon")); + Entry(CursorTheme, QString, QString(), _S("Cursor theme used in the greeter")); diff -Nru sddm-0.13.0/debian/patches/04_set_default_path.diff sddm-0.14.0/debian/patches/04_set_default_path.diff --- sddm-0.13.0/debian/patches/04_set_default_path.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/04_set_default_path.diff 2017-05-02 17:55:40.000000000 +0000 @@ -1,18 +1,24 @@ -Description: Change the default PATH - The configured default PATH is used in the parts that run as root, the - greeter and for the user sessions, so its better to have an spartan default. - . - At the same time, for the zsh users this spartan version gets expanded thanks - to the default global zshenv, while exporting a different value in the - Xsession script would be overriding the users configurations in their local - zshenv. -Author: Maximiliano Curia +From: Maximiliano Curia +Date: Fri, 11 Nov 2016 09:45:34 +0100 +Subject: Change the default PATH + +The configured default PATH is used in the parts that run as root, the +greeter and for the user sessions, so its better to have an spartan default. + +At the same time, for the zsh users this spartan version gets expanded thanks +to the default global zshenv, while exporting a different value in the +Xsession script would be overriding the users configurations in their local +zshenv. Forwarded: not-needed Last-Update: 2015-09-14 --- + data/man/sddm.conf.rst.in | 2 +- + src/common/Configuration.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + --- a/data/man/sddm.conf.rst.in +++ b/data/man/sddm.conf.rst.in -@@ -114,7 +114,7 @@ +@@ -145,7 +145,7 @@ OPTIONS `DefaultPath=` Default path to set after successfully logging in. @@ -23,12 +29,12 @@ Minimum user id of the users to be listed in the --- a/src/common/Configuration.h +++ b/src/common/Configuration.h -@@ -72,7 +72,7 @@ - "A script to execute when starting the desktop session")); +@@ -78,7 +78,7 @@ namespace SDDM { ); + Section(Users, -- Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH")); -+ Entry(DefaultPath, QString, _S("/bin:/usr/bin"), _S("Default $PATH")); +- Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH for logged in users")); ++ Entry(DefaultPath, QString, _S("/bin:/usr/bin"), _S("Default $PATH for logged in users")); Entry(MinimumUid, int, UID_MIN, _S("Minimum user id for displayed users")); Entry(MaximumUid, int, UID_MAX, _S("Maximum user id for displayed users")); - Entry(HideUsers, QStringList, QStringList(), _S("Hidden users")); + Entry(HideUsers, QStringList, QStringList(), _S("Comma-separated list of users that should not be listed")); diff -Nru sddm-0.13.0/debian/patches/05_add_debian_themes.diff sddm-0.14.0/debian/patches/05_add_debian_themes.diff --- sddm-0.13.0/debian/patches/05_add_debian_themes.diff 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/patches/05_add_debian_themes.diff 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,162 @@ +From: Debian/Kubuntu Qt/KDE Maintainers +Date: Mon, 27 Feb 2017 14:58:13 +0100 +Subject: _add_debian_themes + +=================================================================== +--- + data/themes/CMakeLists.txt | 27 ++++++++++++++-- + data/themes/debian-elarun/README | 9 ++++++ + data/themes/debian-elarun/metadata.desktop | 49 ++++++++++++++++++++++++++++++ + data/themes/debian-elarun/theme.conf | 2 ++ + data/themes/debian-maui/README | 5 +++ + data/themes/debian-maui/metadata.desktop | 16 ++++++++++ + data/themes/debian-maui/theme.conf | 2 ++ + 7 files changed, 108 insertions(+), 2 deletions(-) + create mode 100644 data/themes/debian-elarun/README + create mode 100644 data/themes/debian-elarun/metadata.desktop + create mode 100644 data/themes/debian-elarun/theme.conf + create mode 100644 data/themes/debian-maui/README + create mode 100644 data/themes/debian-maui/metadata.desktop + create mode 100644 data/themes/debian-maui/theme.conf + +--- a/data/themes/CMakeLists.txt ++++ b/data/themes/CMakeLists.txt +@@ -1,4 +1,27 @@ +-set(THEMES elarun maldives) ++# Copy Maui to have it available as an external (non-embedded) theme ++file(COPY "../../src/greeter/theme/" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/maui") ++ ++# Copy Main.qml and image resources from upstream Maui to debian-maui ++file(COPY "../../src/greeter/theme/Main.qml" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-maui") ++file(GLOB MAUI_PNGS "../../src/greeter/theme/*.png") ++foreach(MAUI_PNG ${MAUI_PNGS}) ++ file(COPY "${MAUI_PNG}" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-maui") ++endforeach(MAUI_PNG) ++# Replace default background source by config key config.background ++set(SED_EXPR "s=^\\([[:space:]]*source[[:space:]]*:[[:space:]]\\)\\\"qrc:/theme/background.png\\\"[[:space:]]*$=\\1config.background=") ++execute_process(COMMAND sed -i -e "${SED_EXPR}" "${CMAKE_CURRENT_SOURCE_DIR}/debian-maui/Main.qml" RESULT_VARIABLE RES OUTPUT_VARIABLE OUT) ++message("Result of sed replacement for Maui's background source: (Res: ${RES}, Out: ${OUT})") ++ ++# Copy selected files from upstream Elarun to debian-elarun ++file(COPY "elarun/Main.qml" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-elarun") ++file(COPY "elarun/angle-down.png" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-elarun") ++file(COPY "elarun/elarun.jpg" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-elarun") ++file(GLOB ELARUN_IMGS "elarun/images/*") ++foreach(ELARUN_IMG ${ELARUN_IMGS}) ++ file(COPY "${ELARUN_IMG}" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/debian-elarun/images/") ++endforeach(ELARUN_IMG) ++ ++set(THEMES elarun maldives maui debian-maui debian-elarun) + + foreach(THEME ${THEMES}) + # We assume that theme-specific translations are stored +@@ -13,7 +36,7 @@ foreach(THEME ${THEMES}) + + qt5_add_translation(QM_FILES "${TRANSLATION_SOURCES}") + +- install(DIRECTORY "${THEME}" DESTINATION "${DATA_INSTALL_DIR}/themes" PATTERN "*.ts" EXCLUDE) ++ install(DIRECTORY "${THEME}" DESTINATION "${DATA_INSTALL_DIR}/themes" PATTERN "${THEME}/*.ts" EXCLUDE PATTERN "${THEME}/Main.qml" EXCLUDE) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${THEME}" DESTINATION "${DATA_INSTALL_DIR}/themes") + + list(APPEND THEMES_QM_FILES ${QM_FILES}) +--- /dev/null ++++ b/data/themes/debian-elarun/README +@@ -0,0 +1,9 @@ ++This theme is based on the KDM Elarun theme, ported to SDDM theme. ++It was adapted to use the active Debian theme pack. ++Thanks to these people for their great works. ++Not all functionality from original theme are ported. ++ ++Original KDM theme: ++Author=Roman Shtylman & Nuno Pinheiro ++Copyright=GPL 2010 Roman Shtylman | nuno@oxygen-icons.org, 2012 Nuno Pineheiro ++License=GPL +--- /dev/null ++++ b/data/themes/debian-elarun/metadata.desktop +@@ -0,0 +1,49 @@ ++[SddmGreeterTheme] ++Name=Debian Elarun ++Name[ca]=Debian Elarun ++Name[da]=Debian Elarun ++Name[de]=Debian Elarun ++Name[el]=Debian Elarun ++Name[es]=Debian Elarun ++Name[et]=Debian Elarun ++Name[fi]=Debian Elarun ++Name[ga]=Debian Elarun ++Name[gl]=Debian Elarun ++Name[hu]=Debian Elarun ++Name[ia]=Debian Elarun ++Name[kk]=Debian Еларун ++Name[ko]=Debian Elarun ++Name[mr]=Debian एलारन ++Name[nb]=Debian Elarun ++Name[nl]=Debian Elarun ++Name[pl]=Debian Elarun ++Name[pt]=Debian Elarun ++Name[pt_BR]=Debian Elarun ++Name[ro]=Debian Elarun ++Name[ru]=Debian Эларан ++Name[sk]=Debian Elarun ++Name[sl]=Debian Elarun ++Name[sr]=Debian Еларун ++Name[sr@ijekavian]=Еларун ++Name[sr@ijekavianlatin]=Debian Elarun ++Name[sr@latin]=Debian Elarun ++Name[sv]=Debian Elarun ++Name[uk]=Debian Еларан ++Name[x-test]=xxDebian Elarunxx ++Name[zh_CN]=Debian Elarun ++Name[zh_TW]=Debian Elarun ++ ++Description=Elarun KDM theme ported to SDDM and adapted to use the active Debian theme. \nThe original theme is based on work of Roman Shtylman & Nuno Pinheiro ++Type=sddm-theme ++Author=Reza Fatahilah Shah ++Copyright=(c) 2013, Reza Fatahilah Shah ++Screenshot=elarun.jpg ++License=GPL ++Version=0.1 ++MainScript=Main.qml ++ConfigFile=theme.conf ++TranslationsDirectory=translations ++Theme-Id=debian-elarun ++Theme-API=${COMPONENTS_VERSION} ++Website=https://github.com/sddm/sddm ++ +--- /dev/null ++++ b/data/themes/debian-elarun/theme.conf +@@ -0,0 +1,2 @@ ++[General] ++background=/usr/share/desktop-base/active-theme/login/background.svg +--- /dev/null ++++ b/data/themes/debian-maui/README +@@ -0,0 +1,5 @@ ++This theme is an adaptation of the original Maui theme from upstream SDDM for ++Debian to use the active desktop-base theme. ++ ++Check the src/greeter/theme folder from the SDDM source for more information. ++ +--- /dev/null ++++ b/data/themes/debian-maui/metadata.desktop +@@ -0,0 +1,16 @@ ++[SddmGreeterTheme] ++Name=Debian Maui ++Description=Maui Theme for Debian ++Author=Abdurrahman AVCI ++Copyright=(c) 2013, Abdurrahman AVCI ++License=CC-BY-SA ++Type=sddm-theme ++Version=0.1 ++Website=https://github.com/sddm/sddm ++Screenshot=maui.jpg ++MainScript=Main.qml ++ConfigFile=theme.conf ++TranslationsDirectory=translations ++Email=abdurrahmanavci@gmail.com ++Theme-Id=maui ++Theme-API=${COMPONENTS_VERSION} +--- /dev/null ++++ b/data/themes/debian-maui/theme.conf +@@ -0,0 +1,2 @@ ++[General] ++background=/usr/share/desktop-base/active-theme/login/background-nologo.svg diff -Nru sddm-0.13.0/debian/patches/Add-a-config-option-to-enable-high-DPI-scaling-701.patch sddm-0.14.0/debian/patches/Add-a-config-option-to-enable-high-DPI-scaling-701.patch --- sddm-0.13.0/debian/patches/Add-a-config-option-to-enable-high-DPI-scaling-701.patch 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/patches/Add-a-config-option-to-enable-high-DPI-scaling-701.patch 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,44 @@ +From: Stany MARCEL +Date: Thu, 15 Sep 2016 17:47:25 +0200 +Subject: Add a config option to enable high-DPI scaling (#701) + +The new EnableHiDPI boolean option permits to enable or not the +activation of Qt::AA_EnableHighDpiScaling attribute. + +The default is enabled. + +[ChangeLog][Greeter] Enable Qt's automatic high dpi scaling based on +configuration + +Signed-off-by: Stany MARCEL +--- + src/common/Configuration.h | 1 + + src/greeter/GreeterApp.cpp | 7 ++++++- + 2 files changed, 7 insertions(+), 1 deletion(-) + +--- a/src/common/Configuration.h ++++ b/src/common/Configuration.h +@@ -42,6 +42,7 @@ namespace SDDM { + Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state. Can be on, off or none.\n" + "If property is set to none, numlock won't be changed\n" + "NOTE: Currently ignored if autologin is enabled.")); ++ Entry(EnableHiDPI, bool, true, _S("Enable Qt's automatic high-DPI scaling")); + Entry(InputMethod, QString, QString(), _S("Input method module")); + // Name Entries (but it's a regular class again) + Section(Theme, +--- a/src/greeter/GreeterApp.cpp ++++ b/src/greeter/GreeterApp.cpp +@@ -242,7 +242,12 @@ int main(int argc, char **argv) { + qInstallMessageHandler(SDDM::GreeterMessageHandler); + + // HiDPI +- QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); ++ if (SDDM::mainConfig.EnableHiDPI.get()) { ++ qDebug() << "High-DPI autoscaling Enabled"; ++ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); ++ } else { ++ qDebug() << "High-DPI autoscaling Not Enabled"; ++ } + + QStringList arguments; + diff -Nru sddm-0.13.0/debian/patches/Fix-display-of-user-avatars.-684.patch sddm-0.14.0/debian/patches/Fix-display-of-user-avatars.-684.patch --- sddm-0.13.0/debian/patches/Fix-display-of-user-avatars.-684.patch 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/patches/Fix-display-of-user-avatars.-684.patch 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,30 @@ +From: Bastian Beischer +Date: Fri, 2 Sep 2016 13:05:18 +0200 +Subject: Fix display of user avatars. (#684) + +QFile::exists("...") does not understand file:// URLs, at least in Qt +5.7.0 and Qt 4.8.7. +--- + src/greeter/UserModel.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/src/greeter/UserModel.cpp ++++ b/src/greeter/UserModel.cpp +@@ -107,13 +107,13 @@ namespace SDDM { + d->lastIndex = i; + + if (avatarsEnabled) { +- const QString userFace = QStringLiteral("file://%1/.face.icon").arg(user->homeDir); +- const QString systemFace = QStringLiteral("file://%1/%2.face.icon").arg(facesDir).arg(user->name); ++ const QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir); ++ const QString systemFace = QStringLiteral("%1/%2.face.icon").arg(facesDir).arg(user->name); + + if (QFile::exists(userFace)) +- user->icon = userFace; ++ user->icon = QStringLiteral("file://%1").arg(userFace); + else if (QFile::exists(systemFace)) +- user->icon = systemFace; ++ user->icon = QStringLiteral("file://%1").arg(systemFace); + } + } + } diff -Nru sddm-0.13.0/debian/patches/handle-reading-from-a-closed-file-handle.patch sddm-0.14.0/debian/patches/handle-reading-from-a-closed-file-handle.patch --- sddm-0.13.0/debian/patches/handle-reading-from-a-closed-file-handle.patch 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/patches/handle-reading-from-a-closed-file-handle.patch 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,23 @@ +From: Maximiliano Curia +Date: Fri, 11 Nov 2016 10:23:38 +0100 +Subject: handle reading from a closed file handle + +--- + src/daemon/XorgDisplayServer.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/src/daemon/XorgDisplayServer.cpp ++++ b/src/daemon/XorgDisplayServer.cpp +@@ -188,6 +188,12 @@ namespace SDDM { + return false; + } + QByteArray displayNumber = readPipe.readLine(); ++ if (displayNumber.isEmpty()) { ++ // the file descriptor was closed without a display number, ++ // the X has probably died. ++ close(pipeFds[0]); ++ return false; ++ } + displayNumber.prepend(QByteArray(":")); + displayNumber.remove(displayNumber.size() -1, 1); //trim trailing whitespace + m_display = QString::fromLocal8Bit(displayNumber); diff -Nru sddm-0.13.0/debian/patches/kubuntu_minimum_vt.diff sddm-0.14.0/debian/patches/kubuntu_minimum_vt.diff --- sddm-0.13.0/debian/patches/kubuntu_minimum_vt.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/kubuntu_minimum_vt.diff 2017-05-02 17:55:40.000000000 +0000 @@ -5,11 +5,9 @@ Last-Update: 2015-03-11 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: b/CMakeLists.txt -=================================================================== --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -136,7 +136,7 @@ if(SYSTEMD_FOUND) +@@ -138,7 +138,7 @@ if(SYSTEMD_FOUND) string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SYSTEM_UNIT_DIR ${SYSTEMD_SYSTEM_UNIT_DIR}) endif() @@ -18,8 +16,6 @@ set(HALT_COMMAND "/bin/systemctl poweroff") set(REBOOT_COMMAND "/bin/systemctl reboot") else() -Index: b/services/sddm.service.in -=================================================================== --- a/services/sddm.service.in +++ b/services/sddm.service.in @@ -1,7 +1,6 @@ diff -Nru sddm-0.13.0/debian/patches/kubuntu_nvidia-prime.diff sddm-0.14.0/debian/patches/kubuntu_nvidia-prime.diff --- sddm-0.13.0/debian/patches/kubuntu_nvidia-prime.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/kubuntu_nvidia-prime.diff 2017-05-02 17:55:40.000000000 +0000 @@ -7,10 +7,8 @@ Last-Update: 2015-04-02 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ -Index: sddm-0.11.0/data/scripts/Xsetup -=================================================================== ---- sddm-0.11.0.orig/data/scripts/Xsetup -+++ sddm-0.11.0/data/scripts/Xsetup +--- a/data/scripts/Xsetup ++++ b/data/scripts/Xsetup @@ -1,3 +1,7 @@ #!/bin/sh # Xsetup - run as root before the login dialog appears @@ -19,10 +17,8 @@ + echo running NVIDIA Prime setup /sbin/prime-offload + /sbin/prime-offload +fi -Index: sddm-0.11.0/data/scripts/Xstop -=================================================================== ---- sddm-0.11.0.orig/data/scripts/Xstop -+++ sddm-0.11.0/data/scripts/Xstop +--- a/data/scripts/Xstop ++++ b/data/scripts/Xstop @@ -1,2 +1,7 @@ #!/bin/sh # Xstop - run as root after stopping X diff -Nru sddm-0.13.0/debian/patches/Regression-fix-disable-HiDPI-by-default.patch sddm-0.14.0/debian/patches/Regression-fix-disable-HiDPI-by-default.patch --- sddm-0.13.0/debian/patches/Regression-fix-disable-HiDPI-by-default.patch 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/patches/Regression-fix-disable-HiDPI-by-default.patch 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,19 @@ +From: Maximiliano Curia +Date: Sun, 12 Mar 2017 17:26:05 +0100 +Subject: Regression fix, disable HiDPI by default + +--- + src/common/Configuration.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/src/common/Configuration.h ++++ b/src/common/Configuration.h +@@ -42,7 +42,7 @@ namespace SDDM { + Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state. Can be on, off or none.\n" + "If property is set to none, numlock won't be changed\n" + "NOTE: Currently ignored if autologin is enabled.")); +- Entry(EnableHiDPI, bool, true, _S("Enable Qt's automatic high-DPI scaling")); ++ Entry(EnableHiDPI, bool, false, _S("Enable Qt's automatic high-DPI scaling")); + Entry(InputMethod, QString, QString(), _S("Input method module")); + // Name Entries (but it's a regular class again) + Section(Theme, diff -Nru sddm-0.13.0/debian/patches/series sddm-0.14.0/debian/patches/series --- sddm-0.13.0/debian/patches/series 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/series 2017-05-02 17:55:40.000000000 +0000 @@ -1,7 +1,11 @@ -upstream_autologin_fallback.diff 01_sddm_systemctl.diff 02_kubuntu_use_breeze.diff 04_set_default_path.diff +05_add_debian_themes.diff +handle-reading-from-a-closed-file-handle.patch +Fix-display-of-user-avatars.-684.patch +Add-a-config-option-to-enable-high-DPI-scaling-701.patch +Regression-fix-disable-HiDPI-by-default.patch kubuntu_minimum_vt.diff kubuntu_nvidia-prime.diff diff -Nru sddm-0.13.0/debian/patches/upstream_autologin_fallback.diff sddm-0.14.0/debian/patches/upstream_autologin_fallback.diff --- sddm-0.13.0/debian/patches/upstream_autologin_fallback.diff 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/patches/upstream_autologin_fallback.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -From cb768895c8e0d21c689d63f69d7ac668fe4e8fa6 Mon Sep 17 00:00:00 2001 -From: Jerome Leclanche -Date: Thu, 5 Nov 2015 21:28:22 +0200 -Subject: [PATCH] Fall back to regular login when autologin fails - -Fixes #316 ---- - src/daemon/Display.cpp | 42 +++++++++++++++++++++++++----------------- - src/daemon/Display.h | 1 + - 2 files changed, 26 insertions(+), 17 deletions(-) - -diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp -index 8de59e5..6bc9965 100644 ---- a/src/daemon/Display.cpp -+++ b/src/daemon/Display.cpp -@@ -103,6 +103,29 @@ namespace SDDM { - m_displayServer->start(); - } - -+ bool Display::attemptAutologin() { -+ Session::Type sessionType = Session::X11Session; -+ -+ // determine session type -+ const QString &autologinSession = mainConfig.Autologin.Session.get(); -+ if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) { -+ sessionType = Session::X11Session; -+ } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) { -+ sessionType = Session::WaylandSession; -+ } else { -+ qCritical() << "Unable to find autologin session entry" << autologinSession; -+ return false; -+ } -+ -+ Session session; -+ session.setTo(sessionType, autologinSession); -+ -+ m_auth->setAutologin(true); -+ startAuth(mainConfig.Autologin.User.get(), QString(), session); -+ -+ return true; -+ } -+ - void Display::displayServerStarted() { - // check flag - if (m_started) -@@ -122,25 +145,10 @@ namespace SDDM { - // set flags - m_started = true; - -- // determine session type -- const QString &autologinSession = mainConfig.Autologin.Session.get(); -- Session session; -- if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) { -- session.setTo(Session::X11Session, autologinSession); -- } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) { -- session.setTo(Session::WaylandSession, autologinSession); -- } else { -- qCritical() << "Unable to find autologin session entry" << autologinSession; -- emit loginFailed(m_socket); -+ bool success = attemptAutologin(); -+ if (success) { - return; - } -- -- // start session -- m_auth->setAutologin(true); -- startAuth(mainConfig.Autologin.User.get(), QString(), session); -- -- // return -- return; - } - - // start socket server -diff --git a/src/daemon/Display.h b/src/daemon/Display.h -index dc46463..3d6d6a5 100644 ---- a/src/daemon/Display.h -+++ b/src/daemon/Display.h -@@ -60,6 +60,7 @@ namespace SDDM { - void login(QLocalSocket *socket, - const QString &user, const QString &password, - const Session &session); -+ bool attemptAutologin(); - void displayServerStarted(); - - signals: --- -2.7.0.rc3 - diff -Nru sddm-0.13.0/debian/rules sddm-0.14.0/debian/rules --- sddm-0.13.0/debian/rules 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/rules 2017-05-02 17:55:40.000000000 +0000 @@ -20,7 +20,7 @@ dh $@ ${WITH_SYSTEMD} --parallel override_dh_strip: - dh_strip --dbg-package=sddm-dbg + dh_strip --dbgsym-migration='sddm-dbg (<= 0.14.0-1~~)' override_dh_auto_configure: dh_auto_configure -- ${SDDM_CMAKE_ARGS} diff -Nru sddm-0.13.0/debian/sddm.install sddm-0.14.0/debian/sddm.install --- sddm-0.13.0/debian/sddm.install 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.install 2017-05-02 17:55:40.000000000 +0000 @@ -1,14 +1,15 @@ debian/Xsession etc/sddm/ etc/dbus-1/system.d/sddm_org.freedesktop.DisplayManager.conf etc/pam.d +etc/sddm.conf usr/share/doc/sddm/ usr/bin/sddm* usr/lib/*/qt5/qml/SddmComponents/ usr/lib/*/sddm/ +usr/share/man/man1/sddm-greeter.1 +usr/share/man/man1/sddm.1 +usr/share/man/man5/sddm-state.conf.5 +usr/share/man/man5/sddm.conf.5 usr/share/sddm/faces usr/share/sddm/flags/ usr/share/sddm/scripts/ usr/share/sddm/translations/ -usr/share/man/man1/sddm.1 -usr/share/man/man1/sddm-greeter.1 -usr/share/man/man5/sddm.conf.5 -usr/share/man/man5/sddm-state.conf.5 diff -Nru sddm-0.13.0/debian/sddm.pam sddm-0.14.0/debian/sddm.pam --- sddm-0.13.0/debian/sddm.pam 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.pam 2017-05-02 17:55:40.000000000 +0000 @@ -21,7 +21,6 @@ session optional pam_keyinit.so force revoke session required pam_limits.so session required pam_loginuid.so -session required pam_systemd.so @include common-session # SELinux needs to intervene at login time to ensure that the process starts # in the proper default security context. Only sessions which are intended diff -Nru sddm-0.13.0/debian/sddm.postinst sddm-0.14.0/debian/sddm.postinst --- sddm-0.13.0/debian/sddm.postinst 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -21,6 +21,12 @@ usermod -s "/bin/false" sddm fi +if [ ! -e /var/lib/sddm ]; then + # If sddm was purged while running, the home dir gets removed but the user + # remains (as deluser refuses to delete a user that's in use). + mkdir -p /var/lib/sddm +fi + if [ -d /var/lib/sddm ]; then chown -R sddm:sddm /var/lib/sddm chmod 0750 /var/lib/sddm diff -Nru sddm-0.13.0/debian/sddm.postrm sddm-0.14.0/debian/sddm.postrm --- sddm-0.13.0/debian/sddm.postrm 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.postrm 2017-05-02 17:55:40.000000000 +0000 @@ -1,6 +1,9 @@ #!/bin/sh set -e +DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager +DEFAULT_SERVICE=/etc/systemd/system/display-manager.service + case "$1" in purge) update-rc.d sddm remove > /dev/null @@ -14,14 +17,22 @@ if getent passwd sddm >/dev/null; then if [ -x /usr/sbin/deluser ]; then - deluser --system sddm || echo "Could not remove sddm user." + deluser --system sddm >&2 || + echo "Could not remove sddm user." >&2 fi fi if getent group sddm >/dev/null; then if [ -x /usr/sbin/delgroup ]; then - delgroup --system sddm || echo "Could not remove sddm group." + delgroup --system sddm >&2 || + echo "Could not remove sddm group." >&2 fi fi + if [ ! -e "$DEFAULT_DISPLAY_MANAGER_FILE" ] && + [ -h "$DEFAULT_SERVICE" ] && [ ! -e "$DEFAULT_SERVICE" ]; then + # Dangling symlink, no other display-manager installed + rm "$DEFAULT_SERVICE" + fi + ;; abort-install|abort-upgrade) # roll back displacement of default display manager file diff -Nru sddm-0.13.0/debian/sddm.README.Debian sddm-0.14.0/debian/sddm.README.Debian --- sddm-0.13.0/debian/sddm.README.Debian 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm.README.Debian 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,54 @@ +SDDM configuration +================== + +The program as shipped already includes default settings and does not require +a configuration file to exist. For this reason there is no /etc/sddm.conf +shipped in this package. + +There is an example configuration file in: + /usr/share/doc/sddm/sddm.conf + +In order to override a configuration value you'll need to create a +/etc/sddm.conf file and set the values accordingly (see sddm.conf(5) manpage +for more details). If you use KDE, the recommended way of doing this is +through KDE's System Settings (Workspace -> Startup and Shutdown). + +Themes +------ + +The theme used by default in sddm is 'debian-theme', which is configurable +using the alternative 'sddm-debian-theme', this allows a better integration +of sddm with different desktop environments, such as LXQt or Plasma. + +Currently the following packages provide a sddm-theme: + * sddm-theme-maui + * sddm-theme-debian-maui + * sddm-theme-elarun + * sddm-theme-debian-elarun + * sddm-theme-maldives + * sddm-theme-breeze + * sddm-theme-debian-breeze + +You can easily change the one you want to use with: + + sudo update-alternatives --config sddm-debian-theme + +The themes named sddm-theme-debian-* were adapted to have the look and feel +for the Debian stretch release. + +Also, the 0.14 version of sddm drops the 'circles' theme and it will +eventually be removed from the archive. Please use a different sddm theme. + +HiDPI +----- + +There are some bugs in QT5 (#857648) that cause the QScreen object to become +invalid when enabling the HiDPI support in some video cards, this caused some +regressions in 0.14. To avoid this issue we are disabling the HiDPI support by +default. + +If you want to enable it you'll need to set EnableHiDPI configuration option +under the [General] section of your /etc/sddm.conf: + [General] + EnableHiDPI=true + diff -Nru sddm-0.13.0/debian/sddm.sddm-autologin.pam sddm-0.14.0/debian/sddm.sddm-autologin.pam --- sddm-0.13.0/debian/sddm.sddm-autologin.pam 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.sddm-autologin.pam 2017-05-02 17:55:40.000000000 +0000 @@ -14,7 +14,6 @@ session optional pam_keyinit.so force revoke session required pam_limits.so session required pam_loginuid.so -session required pam_systemd.so @include common-session # SELinux needs to intervene at login time to ensure that the process starts # in the proper default security context. Only sessions which are intended diff -Nru sddm-0.13.0/debian/sddm.sddm-greeter.pam sddm-0.14.0/debian/sddm.sddm-greeter.pam --- sddm-0.13.0/debian/sddm.sddm-greeter.pam 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.sddm-greeter.pam 2017-05-02 17:55:40.000000000 +0000 @@ -12,7 +12,6 @@ session optional pam_keyinit.so force revoke session required pam_limits.so session required pam_loginuid.so -session required pam_systemd.so @include common-session # SELinux needs to intervene at login time to ensure that the process starts # in the proper default security context. Only sessions which are intended diff -Nru sddm-0.13.0/debian/sddm.service sddm-0.14.0/debian/sddm.service --- sddm-0.13.0/debian/sddm.service 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm.service 2017-05-02 17:55:40.000000000 +0000 @@ -5,10 +5,15 @@ Conflicts=getty@tty7.service After=getty@tty7.service -# Ordering -Conflicts=plymouth-quit-wait.service -After=systemd-user-sessions.service plymouth-start.service plymouth-quit-wait.service -OnFailure=plymouth-quit.service +After=systemd-user-sessions.service + +# If using tty1 and plymouth, sddm will fail till plymouth stops +# consider using: +## After=plymouth-quit.service +# or to forcefully stop plymouth and start earlier: +## Conflicts=plymouth-quit-wait.service +## After=plymouth-start.service plymouth-quit-wait.service +## OnFailure=plymouth-quit.service [Service] # temporary safety check until all DMs are converted to correct diff -Nru sddm-0.13.0/debian/sddm-theme-circles.install sddm-0.14.0/debian/sddm-theme-circles.install --- sddm-0.13.0/debian/sddm-theme-circles.install 2016-01-15 00:26:51.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-circles.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/share/sddm/themes/circles/ diff -Nru sddm-0.13.0/debian/sddm-theme-debian-elarun.install sddm-0.14.0/debian/sddm-theme-debian-elarun.install --- sddm-0.13.0/debian/sddm-theme-debian-elarun.install 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-elarun.install 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1 @@ +usr/share/sddm/themes/debian-elarun/ diff -Nru sddm-0.13.0/debian/sddm-theme-debian-elarun.postinst sddm-0.14.0/debian/sddm-theme-debian-elarun.postinst --- sddm-0.13.0/debian/sddm-theme-debian-elarun.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-elarun.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [[ "$1" = "configure" || "$1" = "abort-upgrade" || "$1" = "abort-remove" ]]; then + update-alternatives --install \ + /usr/share/sddm/themes/debian-theme \ + sddm-debian-theme \ + /usr/share/sddm/themes/debian-elarun 50 +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-debian-elarun.prerm sddm-0.14.0/debian/sddm-theme-debian-elarun.prerm --- sddm-0.13.0/debian/sddm-theme-debian-elarun.prerm 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-elarun.prerm 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh -e +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --remove \ + sddm-debian-theme \ + /usr/share/sddm/themes/debian-elarun +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-debian-maui.install sddm-0.14.0/debian/sddm-theme-debian-maui.install --- sddm-0.13.0/debian/sddm-theme-debian-maui.install 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-maui.install 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1 @@ +usr/share/sddm/themes/debian-maui/ diff -Nru sddm-0.13.0/debian/sddm-theme-debian-maui.postinst sddm-0.14.0/debian/sddm-theme-debian-maui.postinst --- sddm-0.13.0/debian/sddm-theme-debian-maui.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-maui.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [[ "$1" = "configure" || "$1" = "abort-upgrade" || "$1" = "abort-remove" ]]; then + update-alternatives --install \ + /usr/share/sddm/themes/debian-theme \ + sddm-debian-theme \ + /usr/share/sddm/themes/debian-maui 40 +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-debian-maui.prerm sddm-0.14.0/debian/sddm-theme-debian-maui.prerm --- sddm-0.13.0/debian/sddm-theme-debian-maui.prerm 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-debian-maui.prerm 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh -e +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --remove \ + sddm-debian-theme \ + /usr/share/sddm/themes/debian-maui +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-elarun.postinst sddm-0.14.0/debian/sddm-theme-elarun.postinst --- sddm-0.13.0/debian/sddm-theme-elarun.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-elarun.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [[ "$1" = "configure" || "$1" = "abort-upgrade" || "$1" = "abort-remove" ]]; then + update-alternatives --install \ + /usr/share/sddm/themes/debian-theme \ + sddm-debian-theme \ + /usr/share/sddm/themes/elarun 20 +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-elarun.prerm sddm-0.14.0/debian/sddm-theme-elarun.prerm --- sddm-0.13.0/debian/sddm-theme-elarun.prerm 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-elarun.prerm 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh -e +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --remove \ + sddm-debian-theme \ + /usr/share/sddm/themes/elarun +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-maldives.postinst sddm-0.14.0/debian/sddm-theme-maldives.postinst --- sddm-0.13.0/debian/sddm-theme-maldives.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-maldives.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [[ "$1" = "configure" || "$1" = "abort-upgrade" || "$1" = "abort-remove" ]]; then + update-alternatives --install \ + /usr/share/sddm/themes/debian-theme \ + sddm-debian-theme \ + /usr/share/sddm/themes/maldives 20 +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-maldives.prerm sddm-0.14.0/debian/sddm-theme-maldives.prerm --- sddm-0.13.0/debian/sddm-theme-maldives.prerm 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-maldives.prerm 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh -e +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --remove \ + sddm-debian-theme \ + /usr/share/sddm/themes/maldives +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-maui.postinst sddm-0.14.0/debian/sddm-theme-maui.postinst --- sddm-0.13.0/debian/sddm-theme-maui.postinst 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-maui.postinst 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +if [[ "$1" = "configure" || "$1" = "abort-upgrade" || "$1" = "abort-remove" ]]; then + update-alternatives --install \ + /usr/share/sddm/themes/debian-theme \ + sddm-debian-theme \ + /usr/share/sddm/themes/maui 20 +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/debian/sddm-theme-maui.prerm sddm-0.14.0/debian/sddm-theme-maui.prerm --- sddm-0.13.0/debian/sddm-theme-maui.prerm 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/debian/sddm-theme-maui.prerm 2017-05-02 17:55:40.000000000 +0000 @@ -0,0 +1,12 @@ +#!/bin/sh -e +set -e + +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then + update-alternatives --remove \ + sddm-debian-theme \ + /usr/share/sddm/themes/maui +fi + +# Tag to allow some debhelper commands to inject relevant code +#DEBHELPER# + diff -Nru sddm-0.13.0/docs/THEMING.md sddm-0.14.0/docs/THEMING.md --- sddm-0.13.0/docs/THEMING.md 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/docs/THEMING.md 2016-08-28 11:54:03.000000000 +0000 @@ -15,7 +15,7 @@ ## Proxy Object -We provide a proxy object, called as `sddm` to the themes as a context property. This object holds some useful properties about the host system. It also acts as a proxy between the greeter and the daemon. All of the methods called on this object will be transfered to the daemon through a local socket to be executed there. +We provide a proxy object, called as `sddm` to the themes as a context property. This object holds some useful properties about the host system. It also acts as a proxy between the greeter and the daemon. All of the methods called on this object will be transferred to the daemon through a local socket to be executed there. ### Properties @@ -75,7 +75,7 @@ sddm-greeter --test --theme /path/to/your/theme -If you have compiled SDDM with Qt4, you can also use it in a nested X session through Xepyhr. To accomplish this use: +If you have compiled SDDM with Qt4, you can also use it in a nested X session through Xephyr. To accomplish this use: sddm --test-mode diff -Nru sddm-0.13.0/.gitignore sddm-0.14.0/.gitignore --- sddm-0.13.0/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/.gitignore 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,4 @@ +*build* +*~ +*.user + diff -Nru sddm-0.13.0/LICENSE sddm-0.14.0/LICENSE --- sddm-0.13.0/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/LICENSE 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + END OF TERMS AND CONDITIONS diff -Nru sddm-0.13.0/LICENSE.CC-BY-3.0 sddm-0.14.0/LICENSE.CC-BY-3.0 --- sddm-0.13.0/LICENSE.CC-BY-3.0 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/LICENSE.CC-BY-3.0 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,299 @@ +Creative Commons Legal Code + +Attribution 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 above) for the + purposes of this License. + c. "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. + d. "Licensor" means the individual, individuals, entity or entities that offer + (s) the Work under the terms of this License. + e. "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. + f. "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. + g. "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. + h. "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. + i. "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(b), 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(b), as requested. + b. 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 Section 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 (b) 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. + c. 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 this + License. + + Creative Commons may be contacted at https://creativecommons.org/. diff -Nru sddm-0.13.0/README.md sddm-0.14.0/README.md --- sddm-0.13.0/README.md 2015-10-31 13:33:26.000000000 +0000 +++ sddm-0.14.0/README.md 2016-08-28 11:54:03.000000000 +0000 @@ -19,7 +19,7 @@ ## SCREENSHOTS -![sample screenshot](https://raw.github.com/sddm/sddm/master/data/themes/maui/maui.jpg) +![sample screenshot](https://raw.github.com/sddm/sddm/master/src/greeter/theme/maui.jpg) ## VIDEOS @@ -36,7 +36,7 @@ ## INSTALLATION -Qt >= 5.3.0 is required to use SDDM, although Qt >= 5.4.0 is recommended. +Qt >= 5.6.0 is required to use SDDM. SDDM runs the greeter as a system user named "sddm" whose home directory needs to be set to `/var/lib/sddm`. @@ -78,3 +78,19 @@ setfacl -m u:sddm:x /home/username setfacl -m u:sddm:r /home/username/.face.icon ``` + +### Custom DPI + +In order to set custom DPI for high resolution screens you should configure +Xorg yourself. An easy way is to pass an additional argument to Xorg. + +Edit ``/etc/sddm.conf``, go to the ``X11`` section and change ``ServerArguments`` like this: + +``` +ServerArguments="-nolisten tcp -dpi 192" +``` + +to set DPI to 192. + +As an alternative you can edit Xorg configuration ``xorg.conf``, please refer to the +Xorg documentation. diff -Nru sddm-0.13.0/services/sddm.service.in sddm-0.14.0/services/sddm.service.in --- sddm-0.13.0/services/sddm.service.in 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/services/sddm.service.in 2016-08-28 11:54:03.000000000 +0000 @@ -7,7 +7,6 @@ [Service] ExecStart=@CMAKE_INSTALL_FULL_BINDIR@/sddm Restart=always -#PrivateTmp=yes [Install] Alias=display-manager.service diff -Nru sddm-0.13.0/src/common/ConfigReader.cpp sddm-0.14.0/src/common/ConfigReader.cpp --- sddm-0.13.0/src/common/ConfigReader.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/common/ConfigReader.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -30,12 +30,15 @@ QTextStream &operator>>(QTextStream &str, QStringList &list) { list.clear(); - foreach(const QStringRef &s, str.readLine().splitRef(QLatin1Char(','))) - { + + QString line = str.readLine(); + + Q_FOREACH (const QStringRef &s, line.splitRef(QLatin1Char(','))) { QStringRef trimmed = s.trimmed(); if (!trimmed.isEmpty()) list.append(trimmed.toString()); } + return str; } @@ -174,7 +177,7 @@ // to know if we should overwrite the config or not bool changed = false; // stores the order of the loaded sections - // every one could be there only once - if it occurs more times in the config, the occurences are merged + // each one could be there only once - if it occurs more times in the config, the occurrences are merged QVector sectionOrder; // the actual bytearray data for every section QMap sectionData; @@ -186,17 +189,17 @@ * Initialization of the map of nondefault values to be saved */ if (section) { - if (entry && !entry->isDefault()) + if (entry && !entry->matchesDefault()) remainingEntries.insert(section, entry); else for (const ConfigEntryBase *b : section->entries().values()) - if (!b->isDefault()) + if (!b->matchesDefault()) remainingEntries.insert(section, b); } else { for (const ConfigSection *s : m_sections) for (const ConfigEntryBase *b : s->entries().values()) - if (!b->isDefault()) + if (!b->matchesDefault()) remainingEntries.insert(s, b); } diff -Nru sddm-0.13.0/src/common/ConfigReader.h sddm-0.14.0/src/common/ConfigReader.h --- sddm-0.13.0/src/common/ConfigReader.h 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/common/ConfigReader.h 2016-08-28 11:54:03.000000000 +0000 @@ -77,6 +77,7 @@ virtual void setValue(const QString &str) = 0; virtual QString toConfigShort() const = 0; virtual QString toConfigFull() const = 0; + virtual bool matchesDefault() const = 0; virtual bool isDefault() const = 0; }; @@ -107,6 +108,7 @@ m_description(description), m_default(value), m_value(value), + m_isDefault(true), m_parent(parent) { m_parent->m_entries[name] = this; } @@ -117,13 +119,19 @@ void set(const T val) { m_value = val; + m_isDefault = false; } - bool isDefault() const { + bool matchesDefault() const { return m_value == m_default; } + bool isDefault() const { + return m_isDefault; + } + bool setDefault() { + m_isDefault = true; if (m_value == m_default) return false; m_value = m_default; @@ -147,6 +155,7 @@ // specialised for QString void setValue(const QString &str) { + m_isDefault = false; QTextStream in(qPrintable(str)); in >> m_value; } @@ -167,6 +176,7 @@ const QString m_description; T m_default; T m_value; + bool m_isDefault; ConfigSection *m_parent; }; diff -Nru sddm-0.13.0/src/common/Configuration.h sddm-0.14.0/src/common/Configuration.h --- sddm-0.13.0/src/common/Configuration.h 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/common/Configuration.h 2016-08-28 11:54:03.000000000 +0000 @@ -36,62 +36,71 @@ Config(MainConfig, QStringLiteral(CONFIG_FILE), enum NumState { NUM_NONE, NUM_SET_ON, NUM_SET_OFF }; - // Name Type Default value Description - Entry(HaltCommand, QString, _S(HALT_COMMAND), _S("Halt command")); - Entry(RebootCommand, QString, _S(REBOOT_COMMAND), _S("Reboot command")); - Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state\n" - "Valid values: on|off|none\n" - "If property is set to none, numlock won't be changed")); - // Name Entries (but it's a regular class again) + // Name Type Default value Description + Entry(HaltCommand, QString, _S(HALT_COMMAND), _S("Halt command")); + Entry(RebootCommand, QString, _S(REBOOT_COMMAND), _S("Reboot command")); + Entry(Numlock, NumState, NUM_NONE, _S("Initial NumLock state. Can be on, off or none.\n" + "If property is set to none, numlock won't be changed\n" + "NOTE: Currently ignored if autologin is enabled.")); + Entry(InputMethod, QString, QString(), _S("Input method module")); + // Name Entries (but it's a regular class again) Section(Theme, Entry(ThemeDir, QString, _S(DATA_INSTALL_DIR "/themes"), _S("Theme directory path")); - Entry(Current, QString, _S("maui"), _S("Current theme name")); - Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Face icon directory\n" - "The files should be in username.face.icon format")); - Entry(CursorTheme, QString, QString(), _S("Cursor theme")); + Entry(Current, QString, _S(""), _S("Current theme name")); + Entry(FacesDir, QString, _S(DATA_INSTALL_DIR "/faces"), _S("Global directory for user avatars\n" + "The files should be named .face.icon")); + Entry(CursorTheme, QString, QString(), _S("Cursor theme used in the greeter")); + Entry(EnableAvatars, bool, true, _S("Enable display of custom user avatars")); + Entry(DisableAvatarsThreshold,int, 7, _S("Number of users to use as threshold\n" + "above which avatars are disabled\n" + "unless explicitly enabled with EnableAvatars")); ); + // TODO: Not absolutely sure if everything belongs here. Xsessions, VT and probably some more seem universal - Section(XDisplay, - Entry(ServerPath, QString, _S("/usr/bin/X"), _S("X server path")); - Entry(ServerArguments, QString, _S("-nolisten tcp"), _S("X server arguments")); - Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Xephyr path")); - Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Xauth path")); - Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Session description directory")); - Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Xsession script path\n" - "A script to execute when starting the desktop session")); - Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Xsetup script path\n" - "A script to execute when starting the display server")); - Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Xstop script path\n" - "A script to execute when stopping the display server")); - Entry(MinimumVT, int, MINIMUM_VT, _S("Minimum VT\n" - "The lowest virtual terminal number that will be used.")); - ); - Section(WaylandDisplay, - Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Session description directory")); - Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Wayland session script path\n" - "A script to execute when starting the desktop session")); + Section(X11, + Entry(ServerPath, QString, _S("/usr/bin/X"), _S("Path to X server binary")); + Entry(ServerArguments, QString, _S("-nolisten tcp"), _S("Arguments passed to the X server invocation")); + Entry(XephyrPath, QString, _S("/usr/bin/Xephyr"), _S("Path to Xephyr binary")); + Entry(XauthPath, QString, _S("/usr/bin/xauth"), _S("Path to xauth binary")); + Entry(SessionDir, QString, _S("/usr/share/xsessions"), _S("Directory containing available X sessions")); + Entry(SessionCommand, QString, _S(SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session")); + Entry(SessionLogFile, QString, _S(".local/share/sddm/xorg-session.log"), _S("Path to the user session log file")); + Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file")); + Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Path to a script to execute when starting the display server")); + Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server")); + Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used.")); + ); + + Section(Wayland, + Entry(SessionDir, QString, _S("/usr/share/wayland-sessions"), _S("Directory containing available Wayland sessions")); + Entry(SessionCommand, QString, _S(WAYLAND_SESSION_COMMAND), _S("Path to a script to execute when starting the desktop session")); + Entry(SessionLogFile, QString, _S(".local/share/sddm/wayland-session.log"),_S("Path to the user session log file")); ); + Section(Users, - Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH")); + Entry(DefaultPath, QString, _S("/bin:/usr/bin:/usr/local/bin"), _S("Default $PATH for logged in users")); Entry(MinimumUid, int, UID_MIN, _S("Minimum user id for displayed users")); Entry(MaximumUid, int, UID_MAX, _S("Maximum user id for displayed users")); - Entry(HideUsers, QStringList, QStringList(), _S("Hidden users")); - Entry(HideShells, QStringList, QStringList(), _S("Hidden shells\n" + Entry(HideUsers, QStringList, QStringList(), _S("Comma-separated list of users that should not be listed")); + Entry(HideShells, QStringList, QStringList(), _S("Comma-separated list of shells.\n" "Users with these shells as their default won't be listed")); Entry(RememberLastUser, bool, true, _S("Remember the last successfully logged in user")); Entry(RememberLastSession, bool, true, _S("Remember the session of the last successfully logged in user")); ); + Section(Autologin, - Entry(User, QString, QString(), _S("Autologin user")); - Entry(Session, QString, QString(), _S("Autologin session")); - Entry(Relogin, bool, false, _S("Autologin again on session exit")); + Entry(User, QString, QString(), _S("Username for autologin session")); + Entry(Session, QString, QString(), _S("Name of session file for autologin session")); + Entry(Relogin, bool, false, _S("Whether sddm should automatically log back into sessions when they exit")); ); ); Config(StateConfig, []()->QString{auto tmp = getpwnam("sddm"); return tmp ? QString::fromLocal8Bit(tmp->pw_dir) : QStringLiteral(STATE_DIR);}().append(QStringLiteral("/state.conf")), Section(Last, - Entry(Session, QString, QString(), _S("Name of the session file of the last session selected. This session will be preselected when the login screen shows up.")); - Entry(User, QString, QString(), _S("Name of the last logged-in user. This username will be preselected/shown when the login screen shows up")); + Entry(Session, QString, QString(), _S("Name of the session for the last logged-in user.\n" + "This session will be preselected when the login screen appears.")); + Entry(User, QString, QString(), _S("Name of the last logged-in user.\n" + "This user will be preselected when the login screen appears")); ); ); diff -Nru sddm-0.13.0/src/common/Session.cpp sddm-0.14.0/src/common/Session.cpp --- sddm-0.13.0/src/common/Session.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/common/Session.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -49,6 +49,16 @@ return m_type; } + int Session::vt() const + { + return m_vt; + } + + void Session::setVt(int vt) + { + m_vt = vt; + } + QString Session::xdgSessionType() const { return m_xdgSessionType; @@ -108,11 +118,11 @@ switch (type) { case X11Session: - m_dir = QDir(mainConfig.XDisplay.SessionDir.get()); + m_dir = QDir(mainConfig.X11.SessionDir.get()); m_xdgSessionType = QStringLiteral("x11"); break; case WaylandSession: - m_dir = QDir(mainConfig.WaylandDisplay.SessionDir.get()); + m_dir = QDir(mainConfig.Wayland.SessionDir.get()); m_xdgSessionType = QStringLiteral("wayland"); break; default: diff -Nru sddm-0.13.0/src/common/Session.h sddm-0.14.0/src/common/Session.h --- sddm-0.13.0/src/common/Session.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/common/Session.h 2016-08-28 11:54:03.000000000 +0000 @@ -42,6 +42,9 @@ Type type() const; + int vt() const; + void setVt(int vt); + QString xdgSessionType() const; QDir directory() const; @@ -63,6 +66,7 @@ private: bool m_valid; Type m_type; + int m_vt; QDir m_dir; QString m_name; QString m_fileName; diff -Nru sddm-0.13.0/src/common/ThemeConfig.cpp sddm-0.14.0/src/common/ThemeConfig.cpp --- sddm-0.13.0/src/common/ThemeConfig.cpp 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/common/ThemeConfig.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,55 @@ +/*************************************************************************** +* Copyright (c) 2016 Pier Luigi Fiorini +* Copyright (c) 2014 David Edmundson +* Copyright (c) 2013 Abdurrahman AVCI +* +* 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 2 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, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +***************************************************************************/ + +#include "ThemeConfig.h" + +#include +#include + +namespace SDDM { + ThemeConfig::ThemeConfig(const QString &path) { + setTo(path); + } + + void ThemeConfig::setTo(const QString &path) { + clear(); + + QSettings settings(path, QSettings::IniFormat); + QSettings userSettings(path + QStringLiteral(".user"), QSettings::IniFormat); + + // read default keys + for (const QString &key: settings.allKeys()) { + insert(key, settings.value(key)); + } + // read user set themes overwriting defaults if they exist + for (const QString &key: userSettings.allKeys()) { + if (!userSettings.value(key).toString().isEmpty()) { + insert(key, userSettings.value(key)); + } + } + + //if the main config contains a background, save this to a new config value + //to themes can use it if the user set config background cannot be loaded + if (settings.contains(QStringLiteral("background"))) { + insert(QStringLiteral("defaultBackground"), settings.value(QStringLiteral("background"))); + } + } +} diff -Nru sddm-0.13.0/src/common/ThemeConfig.h sddm-0.14.0/src/common/ThemeConfig.h --- sddm-0.13.0/src/common/ThemeConfig.h 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/common/ThemeConfig.h 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,35 @@ +/*************************************************************************** +* Copyright (c) 2016 Pier Luigi Fiorini +* Copyright (c) 2013 Abdurrahman AVCI +* +* 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 2 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, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +***************************************************************************/ + +#ifndef SDDM_THEMECONFIG_H +#define SDDM_THEMECONFIG_H + +#include + +namespace SDDM { + class ThemeConfig : public QVariantMap { + public: + explicit ThemeConfig(const QString &path); + + void setTo(const QString &path); + }; +} + +#endif // SDDM_THEMECONFIG_H diff -Nru sddm-0.13.0/src/common/ThemeMetadata.cpp sddm-0.14.0/src/common/ThemeMetadata.cpp --- sddm-0.13.0/src/common/ThemeMetadata.cpp 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/common/ThemeMetadata.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,60 @@ +/*************************************************************************** +* Copyright (c) 2016 Pier Luigi Fiorini +* Copyright (c) 2013 Abdurrahman AVCI +* +* 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 2 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, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +***************************************************************************/ + +#include "ThemeMetadata.h" + +#include + +namespace SDDM { + class ThemeMetadataPrivate { + public: + QString mainScript { QStringLiteral("Main.qml") }; + QString configFile; + QString translationsDirectory { QStringLiteral(".") }; + }; + + ThemeMetadata::ThemeMetadata(const QString &path, QObject *parent) : QObject(parent), d(new ThemeMetadataPrivate()) { + setTo(path); + } + + ThemeMetadata::~ThemeMetadata() { + delete d; + } + + const QString &ThemeMetadata::mainScript() const { + return d->mainScript; + } + + const QString &ThemeMetadata::configFile() const { + return d->configFile; + } + + const QString &ThemeMetadata::translationsDirectory() const { + return d->translationsDirectory; + } + + void ThemeMetadata::setTo(const QString &path) { + QSettings settings(path, QSettings::IniFormat); + // read values + d->mainScript = settings.value(QStringLiteral("SddmGreeterTheme/MainScript"), d->mainScript).toString(); + d->configFile = settings.value(QStringLiteral("SddmGreeterTheme/ConfigFile"), d->configFile).toString(); + d->translationsDirectory = settings.value(QStringLiteral("SddmGreeterTheme/TranslationsDirectory"), d->translationsDirectory).toString(); + } +} diff -Nru sddm-0.13.0/src/common/ThemeMetadata.h sddm-0.14.0/src/common/ThemeMetadata.h --- sddm-0.13.0/src/common/ThemeMetadata.h 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/common/ThemeMetadata.h 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,47 @@ +/*************************************************************************** +* Copyright (c) 2016 Pier Luigi Fiorini +* Copyright (c) 2013 Abdurrahman AVCI +* +* 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 2 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, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +***************************************************************************/ + +#ifndef SDDM_THEMEMETADATA_H +#define SDDM_THEMEMETADATA_H + +#include + +namespace SDDM { + class ThemeMetadataPrivate; + + class ThemeMetadata : public QObject { + Q_OBJECT + Q_DISABLE_COPY(ThemeMetadata) + public: + explicit ThemeMetadata(const QString &path, QObject *parent = 0); + ~ThemeMetadata(); + + const QString &mainScript() const; + const QString &configFile() const; + const QString &translationsDirectory() const; + + void setTo(const QString &path); + + private: + ThemeMetadataPrivate *d { nullptr }; + }; +} + +#endif // SDDM_THEMEMETADATA_H diff -Nru sddm-0.13.0/src/daemon/CMakeLists.txt sddm-0.14.0/src/daemon/CMakeLists.txt --- sddm-0.13.0/src/daemon/CMakeLists.txt 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/daemon/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -8,6 +8,8 @@ ${CMAKE_SOURCE_DIR}/src/common/Configuration.cpp ${CMAKE_SOURCE_DIR}/src/common/SafeDataStream.cpp ${CMAKE_SOURCE_DIR}/src/common/ConfigReader.cpp + ${CMAKE_SOURCE_DIR}/src/common/ThemeConfig.cpp + ${CMAKE_SOURCE_DIR}/src/common/ThemeMetadata.cpp ${CMAKE_SOURCE_DIR}/src/common/Session.cpp ${CMAKE_SOURCE_DIR}/src/common/SocketWriter.cpp ${CMAKE_SOURCE_DIR}/src/auth/Auth.cpp @@ -32,16 +34,28 @@ qt5_add_dbus_adaptor(DAEMON_SOURCES "${CMAKE_SOURCE_DIR}/data/interfaces/org.freedesktop.DisplayManager.Session.xml" "DisplayManager.h" SDDM::DisplayManagerSession) add_executable(sddm ${DAEMON_SOURCES}) -target_link_libraries(sddm ${LIBXCB_LIBRARIES}) +target_link_libraries(sddm + Qt5::DBus + Qt5::Network + Qt5::Qml + ${LIBXCB_LIBRARIES}) if(PAM_FOUND) target_link_libraries(sddm ${PAM_LIBRARIES}) else() target_link_libraries(sddm crypt) endif() -qt5_use_modules(sddm DBus Network Qml) if(JOURNALD_FOUND) target_link_libraries(sddm ${JOURNALD_LIBRARIES}) endif() install(TARGETS sddm DESTINATION "${CMAKE_INSTALL_BINDIR}") + +# Generate and install the default config file +add_custom_command(COMMAND sddm --example-config > "${CMAKE_BINARY_DIR}/sddm.conf" + OUTPUT "${CMAKE_BINARY_DIR}/sddm.conf" + COMMENT "Generate default sddm.conf file" + DEPENDS sddm +) +add_custom_target(generate_config_file ALL DEPENDS "${CMAKE_BINARY_DIR}/sddm.conf") +install(FILES "${CMAKE_BINARY_DIR}/sddm.conf" DESTINATION "${CMAKE_INSTALL_FULL_SYSCONFDIR}") diff -Nru sddm-0.13.0/src/daemon/Display.cpp sddm-0.14.0/src/daemon/Display.cpp --- sddm-0.13.0/src/daemon/Display.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/daemon/Display.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -100,7 +100,32 @@ return; // start display server - m_displayServer->start(); + if (!m_displayServer->start()) { + qFatal("Display server failed to start. Exiting"); + } + } + + bool Display::attemptAutologin() { + Session::Type sessionType = Session::X11Session; + + // determine session type + const QString &autologinSession = mainConfig.Autologin.Session.get(); + if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) { + sessionType = Session::X11Session; + } else if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) { + sessionType = Session::WaylandSession; + } else { + qCritical() << "Unable to find autologin session entry" << autologinSession; + return false; + } + + Session session; + session.setTo(sessionType, autologinSession); + + m_auth->setAutologin(true); + startAuth(mainConfig.Autologin.User.get(), QString(), session); + + return true; } void Display::displayServerStarted() { @@ -122,25 +147,10 @@ // set flags m_started = true; - // determine session type - const QString &autologinSession = mainConfig.Autologin.Session.get(); - Session session; - if (findSessionEntry(mainConfig.XDisplay.SessionDir.get(), autologinSession)) { - session.setTo(Session::X11Session, autologinSession); - } else if (findSessionEntry(mainConfig.WaylandDisplay.SessionDir.get(), autologinSession)) { - session.setTo(Session::WaylandSession, autologinSession); - } else { - qCritical() << "Unable to find autologin session entry" << autologinSession; - emit loginFailed(m_socket); + bool success = attemptAutologin(); + if (success) { return; } - - // start session - m_auth->setAutologin(true); - startAuth(mainConfig.Autologin.User.get(), QString(), session); - - // return - return; } // start socket server @@ -201,7 +211,7 @@ const Session &session) { m_socket = socket; - //the SDDM user has special priveledges that skip password checking so that we can load the greeter + //the SDDM user has special privileges that skip password checking so that we can load the greeter //block ever trying to log in as the SDDM user if (user == QLatin1String("sddm")) { return; @@ -213,18 +223,21 @@ QString Display::findGreeterTheme() const { QString themeName = mainConfig.Theme.Current.get(); + + // an unconfigured theme means the user wants to load the + // default theme from the resources + if (themeName.isEmpty()) + return QString(); + QDir dir(mainConfig.Theme.ThemeDir.get()); // return the default theme if it exists if (dir.exists(themeName)) return dir.absoluteFilePath(themeName); - // otherwise return the first one in alphabetical orde, but - // return the default theme name if none is found - QStringList entries = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Readable, QDir::Name); - if (entries.count() == 0) - return dir.absoluteFilePath(themeName); - return dir.absoluteFilePath(entries.at(0)); + // otherwise use the embedded theme + qWarning() << "The configured theme" << themeName << "doesn't exist, using the embedded theme instead"; + return QString(); } bool Display::findSessionEntry(const QDir &dir, const QString &name) const { @@ -255,6 +268,9 @@ return; } + // cache last session + m_lastSession = session; + // save session desktop file name, we'll use it to set the // last session later, in slotAuthenticationFinished() m_sessionName = session.fileName(); @@ -264,10 +280,9 @@ // create new VT for Wayland sessions otherwise use greeter vt int vt = terminalId(); - if (session.xdgSessionType() == QLatin1String("wayland")) { + if (session.xdgSessionType() == QLatin1String("wayland")) vt = VirtualTerminal::setUpNewVt(); - VirtualTerminal::jumpToVt(vt); - } + m_lastSession.setVt(vt); QProcessEnvironment env; env.insert(QStringLiteral("PATH"), mainConfig.Users.DefaultPath.get()); @@ -296,10 +311,20 @@ m_auth->setCookie(qobject_cast(m_displayServer)->cookie()); // save last user and last session - stateConfig.Last.User.set(m_auth->user()); - stateConfig.Last.Session.set(m_sessionName); + if (mainConfig.Users.RememberLastUser.get()) + stateConfig.Last.User.set(m_auth->user()); + else + stateConfig.Last.User.setDefault(); + if (mainConfig.Users.RememberLastSession.get()) + stateConfig.Last.Session.set(m_sessionName); + else + stateConfig.Last.Session.setDefault(); stateConfig.save(); + // switch to the new VT for Wayland sessions + if (m_lastSession.xdgSessionType() == QLatin1String("wayland")) + VirtualTerminal::jumpToVt(m_lastSession.vt()); + if (m_socket) emit loginSucceeded(m_socket); } else if (m_socket) { diff -Nru sddm-0.13.0/src/daemon/Display.h sddm-0.14.0/src/daemon/Display.h --- sddm-0.13.0/src/daemon/Display.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/daemon/Display.h 2016-08-28 11:54:03.000000000 +0000 @@ -60,6 +60,7 @@ void login(QLocalSocket *socket, const QString &user, const QString &password, const Session &session); + bool attemptAutologin(); void displayServerStarted(); signals: @@ -80,6 +81,8 @@ int m_terminalId { 7 }; + Session m_lastSession; + QString m_passPhrase; QString m_sessionName; diff -Nru sddm-0.13.0/src/daemon/Greeter.cpp sddm-0.14.0/src/daemon/Greeter.cpp --- sddm-0.13.0/src/daemon/Greeter.cpp 2015-10-17 12:00:39.000000000 +0000 +++ sddm-0.14.0/src/daemon/Greeter.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -24,6 +24,8 @@ #include "DaemonApp.h" #include "DisplayManager.h" #include "Seat.h" +#include "ThemeConfig.h" +#include "ThemeMetadata.h" #include "Display.h" #include @@ -31,10 +33,15 @@ namespace SDDM { Greeter::Greeter(QObject *parent) : QObject(parent) { + m_metadata = new ThemeMetadata(QString()); + m_themeConfig = new ThemeConfig(QString()); } Greeter::~Greeter() { stop(); + + delete m_metadata; + delete m_themeConfig; } void Greeter::setDisplay(Display *display) { @@ -50,7 +57,18 @@ } void Greeter::setTheme(const QString &theme) { - m_theme = theme; + m_themePath = theme; + + if (theme.isEmpty()) { + m_metadata->setTo(QString()); + m_themeConfig->setTo(QString()); + } else { + const QString path = QStringLiteral("%1/metadata.desktop").arg(m_themePath); + m_metadata->setTo(path); + + QString configFile = QStringLiteral("%1/%2").arg(m_themePath).arg(m_metadata->configFile()); + m_themeConfig->setTo(configFile); + } } bool Greeter::start() { @@ -58,6 +76,26 @@ if (m_started) return false; + // themes + QString xcursorTheme = mainConfig.Theme.CursorTheme.get(); + if (m_themeConfig->contains(QLatin1String("cursorTheme"))) + xcursorTheme = m_themeConfig->value(QLatin1String("cursorTheme")).toString(); + QString platformTheme; + if (m_themeConfig->contains(QLatin1String("platformTheme"))) + platformTheme = m_themeConfig->value(QLatin1String("platformTheme")).toString(); + QString style; + if (m_themeConfig->contains(QLatin1String("style"))) + style = m_themeConfig->value(QLatin1String("style")).toString(); + + // greeter command + QStringList args; + args << QLatin1String("--socket") << m_socket + << QLatin1String("--theme") << m_themePath; + if (!platformTheme.isEmpty()) + args << QLatin1String("-platformtheme") << platformTheme; + if (!style.isEmpty()) + args << QLatin1String("-style") << style; + if (daemonApp->testing()) { // create process m_process = new QProcess(this); @@ -75,15 +113,13 @@ QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert(QStringLiteral("DISPLAY"), m_display->name()); env.insert(QStringLiteral("XAUTHORITY"), m_authPath); - env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); + env.insert(QStringLiteral("XCURSOR_THEME"), xcursorTheme); + env.insert(QStringLiteral("QT_IM_MODULE"), mainConfig.InputMethod.get()); m_process->setProcessEnvironment(env); // start greeter - QStringList args; if (daemonApp->testing()) args << QStringLiteral("--test-mode"); - args << QStringLiteral("--socket") << m_socket - << QStringLiteral("--theme") << m_theme; m_process->start(QStringLiteral("%1/sddm-greeter").arg(QStringLiteral(BIN_INSTALL_DIR)), args); //if we fail to start bail immediately, and don't block in waitForStarted @@ -116,10 +152,9 @@ connect(m_auth, SIGNAL(error(QString,Auth::Error)), this, SLOT(authError(QString,Auth::Error))); // greeter command - QStringList args; - args << QStringLiteral("%1/sddm-greeter").arg(QStringLiteral(BIN_INSTALL_DIR)); - args << QStringLiteral("--socket") << m_socket - << QStringLiteral("--theme") << m_theme; + QStringList cmd; + cmd << QStringLiteral("%1/sddm-greeter").arg(QStringLiteral(BIN_INSTALL_DIR)) + << args; // greeter environment QProcessEnvironment env; @@ -138,7 +173,7 @@ env.insert(QStringLiteral("PATH"), mainConfig.Users.DefaultPath.get()); env.insert(QStringLiteral("DISPLAY"), m_display->name()); env.insert(QStringLiteral("XAUTHORITY"), m_authPath); - env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get()); + env.insert(QStringLiteral("XCURSOR_THEME"), xcursorTheme); env.insert(QStringLiteral("XDG_SEAT"), m_display->seat()->name()); env.insert(QStringLiteral("XDG_SEAT_PATH"), daemonApp->displayManager()->seatPath(m_display->seat()->name())); env.insert(QStringLiteral("XDG_SESSION_PATH"), daemonApp->displayManager()->sessionPath(QStringLiteral("Session%1").arg(daemonApp->newSessionId()))); @@ -157,7 +192,7 @@ // start greeter m_auth->setUser(QStringLiteral("sddm")); m_auth->setGreeter(true); - m_auth->setSession(args.join(QLatin1Char(' '))); + m_auth->setSession(cmd.join(QLatin1Char(' '))); m_auth->start(); } diff -Nru sddm-0.13.0/src/daemon/Greeter.h sddm-0.14.0/src/daemon/Greeter.h --- sddm-0.13.0/src/daemon/Greeter.h 2015-08-22 15:17:51.000000000 +0000 +++ sddm-0.14.0/src/daemon/Greeter.h 2016-08-28 11:54:03.000000000 +0000 @@ -28,6 +28,8 @@ namespace SDDM { class Display; + class ThemeMetadata; + class ThemeConfig; class Greeter : public QObject { Q_OBJECT @@ -61,7 +63,9 @@ Display *m_display { nullptr }; QString m_authPath; QString m_socket; - QString m_theme; + QString m_themePath; + ThemeMetadata *m_metadata { nullptr }; + ThemeConfig *m_themeConfig { nullptr }; Auth *m_auth { nullptr }; QProcess *m_process { nullptr }; diff -Nru sddm-0.13.0/src/daemon/Seat.cpp sddm-0.14.0/src/daemon/Seat.cpp --- sddm-0.13.0/src/daemon/Seat.cpp 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/daemon/Seat.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -57,7 +57,7 @@ if (terminalId == -1) { // find unused terminal - terminalId = findUnused(mainConfig.XDisplay.MinimumVT.get(), [&](const int number) { + terminalId = findUnused(mainConfig.X11.MinimumVT.get(), [&](const int number) { return m_terminalIds.contains(number); }); } diff -Nru sddm-0.13.0/src/daemon/XorgDisplayServer.cpp sddm-0.14.0/src/daemon/XorgDisplayServer.cpp --- sddm-0.13.0/src/daemon/XorgDisplayServer.cpp 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/src/daemon/XorgDisplayServer.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -95,7 +95,7 @@ file_handler.open(QIODevice::WriteOnly); file_handler.close(); - QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.XDisplay.XauthPath.get()).arg(file); + QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file); // execute xauth FILE *fp = popen(qPrintable(cmd), "w"); @@ -128,7 +128,7 @@ if (daemonApp->testing()) { QStringList args; args << m_display << QStringLiteral("-ac") << QStringLiteral("-br") << QStringLiteral("-noreset") << QStringLiteral("-screen") << QStringLiteral("800x600"); - process->start(mainConfig.XDisplay.XephyrPath.get(), args); + process->start(mainConfig.X11.XephyrPath.get(), args); // wait for display server to start @@ -154,16 +154,16 @@ } // start display server - QStringList args = mainConfig.XDisplay.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts); + QStringList args = mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts); args << QStringLiteral("-auth") << m_authPath << QStringLiteral("-background") << QStringLiteral("none") << QStringLiteral("-noreset") << QStringLiteral("-displayfd") << QString::number(pipeFds[1]) << QStringLiteral("vt%1").arg(displayPtr()->terminalId()); qDebug() << "Running:" - << qPrintable(mainConfig.XDisplay.ServerPath.get()) + << qPrintable(mainConfig.X11.ServerPath.get()) << qPrintable(args.join(QLatin1Char(' '))); - process->start(mainConfig.XDisplay.ServerPath.get(), args); + process->start(mainConfig.X11.ServerPath.get(), args); // wait for display server to start if (!process->waitForStarted()) { @@ -236,7 +236,7 @@ // log message qDebug() << "Display server stopped."; - QString displayStopCommand = mainConfig.XDisplay.DisplayStopCommand.get(); + QString displayStopCommand = mainConfig.X11.DisplayStopCommand.get(); // create display setup script process QProcess *displayStopScript = new QProcess(); @@ -273,7 +273,7 @@ } void XorgDisplayServer::setupDisplay() { - QString displayCommand = mainConfig.XDisplay.DisplayCommand.get(); + QString displayCommand = mainConfig.X11.DisplayCommand.get(); // create display setup script process QProcess *displayScript = new QProcess(); diff -Nru sddm-0.13.0/src/greeter/CMakeLists.txt sddm-0.14.0/src/greeter/CMakeLists.txt --- sddm-0.13.0/src/greeter/CMakeLists.txt 2015-09-08 17:29:13.000000000 +0000 +++ sddm-0.14.0/src/greeter/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -6,21 +6,28 @@ ${CMAKE_SOURCE_DIR}/src/common/ConfigReader.cpp ${CMAKE_SOURCE_DIR}/src/common/Session.cpp ${CMAKE_SOURCE_DIR}/src/common/SocketWriter.cpp + ${CMAKE_SOURCE_DIR}/src/common/ThemeConfig.cpp + ${CMAKE_SOURCE_DIR}/src/common/ThemeMetadata.cpp GreeterApp.cpp GreeterProxy.cpp KeyboardLayout.cpp KeyboardModel.cpp ScreenModel.cpp SessionModel.cpp - ThemeConfig.cpp - ThemeMetadata.cpp UserModel.cpp XcbKeyboardBackend.cpp ) -add_executable(sddm-greeter ${GREETER_SOURCES}) -target_link_libraries(sddm-greeter ${LIBXCB_LIBRARIES} ${LIBXKB_LIBRARIES}) -qt5_use_modules(sddm-greeter Quick) +configure_file("theme/Main.qml" "theme/Main.qml") +configure_file("theme.qrc" "theme.qrc") + +qt5_add_resources(RESOURCES ${CMAKE_CURRENT_BINARY_DIR}/theme.qrc) + +add_executable(sddm-greeter ${GREETER_SOURCES} ${RESOURCES}) +target_link_libraries(sddm-greeter + Qt5::Quick + ${LIBXCB_LIBRARIES} + ${LIBXKB_LIBRARIES}) if(JOURNALD_FOUND) target_link_libraries(sddm-greeter ${JOURNALD_LIBRARIES}) diff -Nru sddm-0.13.0/src/greeter/GreeterApp.cpp sddm-0.14.0/src/greeter/GreeterApp.cpp --- sddm-0.13.0/src/greeter/GreeterApp.cpp 2015-11-04 19:09:15.000000000 +0000 +++ sddm-0.14.0/src/greeter/GreeterApp.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright (c) 2015 Pier Luigi Fiorini +* Copyright (c) 2015-2016 Pier Luigi Fiorini * Copyright (c) 2013 Abdurrahman AVCI * * This program is free software; you can redistribute it and/or modify @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -70,8 +71,10 @@ // get socket name QString socket = parameter(arguments(), QStringLiteral("--socket"), QString()); - // get theme path + // get theme path (fallback to internal theme) m_themePath = parameter(arguments(), QStringLiteral("--theme"), QString()); + if (m_themePath.isEmpty()) + m_themePath = QLatin1String("qrc:/theme"); // read theme metadata m_metadata = new ThemeMetadata(QStringLiteral("%1/metadata.desktop").arg(m_themePath)); @@ -98,14 +101,6 @@ if (m_themeConfig->contains(QStringLiteral("iconTheme"))) QIcon::setThemeName(m_themeConfig->value(QStringLiteral("iconTheme")).toString()); - // set cursor theme according to greeter theme - if (m_themeConfig->contains(QStringLiteral("cursorTheme"))) - qputenv("XCURSOR_THEME", m_themeConfig->value(QStringLiteral("cursorTheme")).toString().toUtf8()); - - // set platform theme - if (m_themeConfig->contains(QStringLiteral("platformTheme"))) - qputenv("QT_QPA_PLATFORMTHEME", m_themeConfig->value(QStringLiteral("platformTheme")).toString().toUtf8()); - // create models m_sessionModel = new SessionModel(); @@ -135,6 +130,9 @@ // handle screens connect(this, &GreeterApp::screenAdded, this, &GreeterApp::addViewForScreen); + connect(this, &GreeterApp::primaryScreenChanged, this, [this](QScreen *) { + activatePrimary(); + }); } void GreeterApp::addViewForScreen(QScreen *screen) { @@ -144,28 +142,20 @@ view->setResizeMode(QQuickView::SizeRootObjectToView); //view->setGeometry(QRect(QPoint(0, 0), screen->geometry().size())); view->setGeometry(screen->geometry()); + m_views.append(view); // remove the view when the screen is removed, but we // need to be careful here since Qt will move the view to // another screen before this signal is emitted so we // pass a pointer to the view to our slot -#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) connect(this, &GreeterApp::screenRemoved, this, [view, this](QScreen *) { removeViewForScreen(view); }); -#else - connect(view, &QQuickView::screenChanged, this, [view, this](QScreen *screen) { - if (screen == Q_NULLPTR) - removeViewForScreen(view); - }); -#endif -#if (QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)) // always resize when the screen geometry changes connect(screen, &QScreen::geometryChanged, this, [view](const QRect &r) { view->setGeometry(r); }); -#endif view->engine()->addImportPath(QStringLiteral(IMPORTS_INSTALL_DIR)); @@ -191,28 +181,69 @@ view->rootContext()->setContextProperty(QStringLiteral("sddm"), m_proxy); view->rootContext()->setContextProperty(QStringLiteral("keyboard"), m_keyboard); view->rootContext()->setContextProperty(QStringLiteral("primaryScreen"), QGuiApplication::primaryScreen() == screen); + view->rootContext()->setContextProperty(QStringLiteral("__sddm_errors"), QString()); // get theme main script QString mainScript = QStringLiteral("%1/%2").arg(m_themePath).arg(m_metadata->mainScript()); + QUrl mainScriptUrl; + if (m_themePath.startsWith(QLatin1String("qrc:/"))) + mainScriptUrl = QUrl(mainScript); + else + mainScriptUrl = QUrl::fromLocalFile(mainScript); + + // load theme from resources when an error has occurred + connect(view, &QQuickView::statusChanged, this, [view](QQuickView::Status status) { + if (status != QQuickView::Error) + return; + + QString errors; + Q_FOREACH(const QQmlError &e, view->errors()) { + qWarning() << e; + errors += QLatin1String("\n") + e.toString(); + } + + qWarning() << "Fallback to embedded theme"; + view->rootContext()->setContextProperty(QStringLiteral("__sddm_errors"), errors); + view->setSource(QUrl(QStringLiteral("qrc:/theme/Main.qml"))); + }); // set main script as source - view->setSource(QUrl::fromLocalFile(mainScript)); + qInfo("Loading %s...", qPrintable(mainScriptUrl.toString())); + view->setSource(mainScriptUrl); // show qDebug() << "Adding view for" << screen->name() << screen->geometry(); view->show(); + + // activate windows for the primary screen to give focus to text fields + if (QGuiApplication::primaryScreen() == screen) + view->requestActivate(); } void GreeterApp::removeViewForScreen(QQuickView *view) { + // screen is gone, remove the window m_views.removeOne(view); view->deleteLater(); } + + void GreeterApp::activatePrimary() { + // activate and give focus to the window assigned to the primary screen + Q_FOREACH (QQuickView *view, m_views) { + if (view->screen() == QGuiApplication::primaryScreen()) { + view->requestActivate(); + break; + } + } + } } int main(int argc, char **argv) { // install message handler qInstallMessageHandler(SDDM::GreeterMessageHandler); + // HiDPI + QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QStringList arguments; for (int i = 0; i < argc; i++) diff -Nru sddm-0.13.0/src/greeter/GreeterApp.h sddm-0.14.0/src/greeter/GreeterApp.h --- sddm-0.13.0/src/greeter/GreeterApp.h 2015-10-17 12:01:10.000000000 +0000 +++ sddm-0.14.0/src/greeter/GreeterApp.h 2016-08-28 11:54:03.000000000 +0000 @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright (c) 2015 Pier Luigi Fiorini +* Copyright (c) 2015-2016 Pier Luigi Fiorini * Copyright (c) 2013 Nikita Mikhaylov * * This program is free software; you can redistribute it and/or modify @@ -65,6 +65,8 @@ UserModel *m_userModel { nullptr }; GreeterProxy *m_proxy { nullptr }; KeyboardModel *m_keyboard { nullptr }; + + void activatePrimary(); }; } diff -Nru sddm-0.13.0/src/greeter/KeyboardModel.cpp sddm-0.14.0/src/greeter/KeyboardModel.cpp --- sddm-0.13.0/src/greeter/KeyboardModel.cpp 2015-09-08 17:29:13.000000000 +0000 +++ sddm-0.14.0/src/greeter/KeyboardModel.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -113,4 +113,4 @@ } } -#include "KeyboardModel.moc" +#include "moc_KeyboardModel.cpp" diff -Nru sddm-0.13.0/src/greeter/SessionModel.cpp sddm-0.14.0/src/greeter/SessionModel.cpp --- sddm-0.13.0/src/greeter/SessionModel.cpp 2015-10-20 19:24:20.000000000 +0000 +++ sddm-0.14.0/src/greeter/SessionModel.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright (c) 2015 Pier Luigi Fiorini +* Copyright (c) 2015-2016 Pier Luigi Fiorini * Copyright (c) 2013 Abdurrahman AVCI * * This program is free software; you can redistribute it and/or modify @@ -24,6 +24,7 @@ #include #include +#include namespace SDDM { class SessionModelPrivate { @@ -38,8 +39,23 @@ }; SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) { - populate(Session::X11Session, mainConfig.XDisplay.SessionDir.get()); - populate(Session::WaylandSession, mainConfig.WaylandDisplay.SessionDir.get()); + // initial population + beginResetModel(); + populate(Session::X11Session, mainConfig.X11.SessionDir.get()); + populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); + endResetModel(); + + // refresh everytime a file is changed, added or removed + QFileSystemWatcher *watcher = new QFileSystemWatcher(this); + connect(watcher, &QFileSystemWatcher::directoryChanged, [this](const QString &path) { + beginResetModel(); + d->sessions.clear(); + populate(Session::X11Session, mainConfig.X11.SessionDir.get()); + populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get()); + endResetModel(); + }); + watcher->addPath(mainConfig.X11.SessionDir.get()); + watcher->addPath(mainConfig.Wayland.SessionDir.get()); } SessionModel::~SessionModel() { @@ -129,6 +145,8 @@ // add to sessions list if (execAllowed) d->sessions.push_back(si); + else + delete si; } // find out index of the last session for (int i = 0; i < d->sessions.size(); ++i) { diff -Nru sddm-0.13.0/src/greeter/SessionModel.h sddm-0.14.0/src/greeter/SessionModel.h --- sddm-0.13.0/src/greeter/SessionModel.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/greeter/SessionModel.h 2016-08-28 11:54:03.000000000 +0000 @@ -1,5 +1,5 @@ /*************************************************************************** -* Copyright (c) 2015 Pier Luigi Fiorini +* Copyright (c) 2015-2016 Pier Luigi Fiorini * Copyright (c) 2013 Abdurrahman AVCI * * This program is free software; you can redistribute it and/or modify Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/src/greeter/theme/angle-down.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/src/greeter/theme/angle-down.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/src/greeter/theme/angle-left.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/src/greeter/theme/angle-left.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/src/greeter/theme/angle-right.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/src/greeter/theme/angle-right.png differ Binary files /tmp/tmpm9SOE0/4uwtbbEm8N/sddm-0.13.0/src/greeter/theme/background.png and /tmp/tmpm9SOE0/NzCkl95SnR/sddm-0.14.0/src/greeter/theme/background.png differ diff -Nru sddm-0.13.0/src/greeter/theme/LICENSE sddm-0.14.0/src/greeter/theme/LICENSE --- sddm-0.13.0/src/greeter/theme/LICENSE 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/greeter/theme/LICENSE 2016-08-28 11:54:03.000000000 +0000 @@ -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/. diff -Nru sddm-0.13.0/src/greeter/theme/Main.qml sddm-0.14.0/src/greeter/theme/Main.qml --- sddm-0.13.0/src/greeter/theme/Main.qml 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/greeter/theme/Main.qml 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,284 @@ +/*************************************************************************** +* Copyright (c) 2015 Pier Luigi Fiorini +* Copyright (c) 2013 Abdurrahman AVCI -* Copyright (c) 2014 David Edmundson -* -* 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 2 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, write to the -* Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -***************************************************************************/ - -#include "ThemeConfig.h" - -#include -#include - -namespace SDDM { - ThemeConfig::ThemeConfig(const QString &path) { - QSettings settings(path, QSettings::IniFormat); - QSettings userSettings(path + QStringLiteral(".user"), QSettings::IniFormat); - - // read default keys - for (const QString &key: settings.allKeys()) { - insert(key, settings.value(key)); - } - // read user set themes overwriting defaults if they exist - for (const QString &key: userSettings.allKeys()) { - if (!userSettings.value(key).toString().isEmpty()) { - insert(key, userSettings.value(key)); - } - } - - //if the main config contains a background, save this to a new config value - //to themes can use it if the user set config background cannot be loaded - if (settings.contains(QStringLiteral("background"))) { - insert(QStringLiteral("defaultBackground"), settings.value(QStringLiteral("background"))); - } - } -} diff -Nru sddm-0.13.0/src/greeter/ThemeConfig.h sddm-0.14.0/src/greeter/ThemeConfig.h --- sddm-0.13.0/src/greeter/ThemeConfig.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/greeter/ThemeConfig.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2013 Abdurrahman AVCI -* -* 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 2 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, write to the -* Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -***************************************************************************/ - -#ifndef SDDM_THEMECONFIG_H -#define SDDM_THEMECONFIG_H - -#include - -namespace SDDM { - class ThemeConfig : public QVariantMap { - public: - explicit ThemeConfig(const QString &path); - }; -} - -#endif // SDDM_THEMECONFIG_H diff -Nru sddm-0.13.0/src/greeter/ThemeMetadata.cpp sddm-0.14.0/src/greeter/ThemeMetadata.cpp --- sddm-0.13.0/src/greeter/ThemeMetadata.cpp 2015-08-22 15:17:51.000000000 +0000 +++ sddm-0.14.0/src/greeter/ThemeMetadata.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2013 Abdurrahman AVCI -* -* 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 2 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, write to the -* Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -***************************************************************************/ - -#include "ThemeMetadata.h" - -#include - -namespace SDDM { - class ThemeMetadataPrivate { - public: - QString mainScript { QStringLiteral("Main.qml") }; - QString configFile; - QString translationsDirectory { QStringLiteral(".") }; - }; - - ThemeMetadata::ThemeMetadata(const QString &path, QObject *parent) : QObject(parent), d(new ThemeMetadataPrivate()) { - QSettings settings(path, QSettings::IniFormat); - // read values - d->mainScript = settings.value(QStringLiteral("SddmGreeterTheme/MainScript"), d->mainScript).toString(); - d->configFile = settings.value(QStringLiteral("SddmGreeterTheme/ConfigFile"), d->configFile).toString(); - d->translationsDirectory = settings.value(QStringLiteral("SddmGreeterTheme/TranslationsDirectory"), d->translationsDirectory).toString(); - } - - ThemeMetadata::~ThemeMetadata() { - delete d; - } - - const QString &ThemeMetadata::mainScript() const { - return d->mainScript; - } - - const QString &ThemeMetadata::configFile() const { - return d->configFile; - } - - const QString &ThemeMetadata::translationsDirectory() const { - return d->translationsDirectory; - } -} diff -Nru sddm-0.13.0/src/greeter/ThemeMetadata.h sddm-0.14.0/src/greeter/ThemeMetadata.h --- sddm-0.13.0/src/greeter/ThemeMetadata.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/greeter/ThemeMetadata.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/*************************************************************************** -* Copyright (c) 2013 Abdurrahman AVCI -* -* 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 2 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, write to the -* Free Software Foundation, Inc., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -***************************************************************************/ - -#ifndef SDDM_THEMEMETADATA_H -#define SDDM_THEMEMETADATA_H - -#include - -namespace SDDM { - class ThemeMetadataPrivate; - - class ThemeMetadata : public QObject { - Q_OBJECT - Q_DISABLE_COPY(ThemeMetadata) - public: - explicit ThemeMetadata(const QString &path, QObject *parent = 0); - ~ThemeMetadata(); - - const QString &mainScript() const; - const QString &configFile() const; - const QString &translationsDirectory() const; - - private: - ThemeMetadataPrivate *d { nullptr }; - }; -} - -#endif // SDDM_THEMEMETADATA_H diff -Nru sddm-0.13.0/src/greeter/theme.qrc sddm-0.14.0/src/greeter/theme.qrc --- sddm-0.13.0/src/greeter/theme.qrc 1970-01-01 00:00:00.000000000 +0000 +++ sddm-0.14.0/src/greeter/theme.qrc 2016-08-28 11:54:03.000000000 +0000 @@ -0,0 +1,13 @@ + + + ${CMAKE_CURRENT_SOURCE_DIR}/theme/angle-down.png + ${CMAKE_CURRENT_SOURCE_DIR}/theme/angle-left.png + ${CMAKE_CURRENT_SOURCE_DIR}/theme/angle-right.png + ${CMAKE_CURRENT_SOURCE_DIR}/theme/background.png + ${CMAKE_CURRENT_BINARY_DIR}/theme/Main.qml + ${CMAKE_CURRENT_SOURCE_DIR}/theme/reboot.png + ${CMAKE_CURRENT_SOURCE_DIR}/theme/shutdown.png + ${CMAKE_CURRENT_SOURCE_DIR}/theme/metadata.desktop + ${CMAKE_CURRENT_SOURCE_DIR}/theme/theme.conf + + diff -Nru sddm-0.13.0/src/greeter/UserModel.cpp sddm-0.14.0/src/greeter/UserModel.cpp --- sddm-0.13.0/src/greeter/UserModel.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/greeter/UserModel.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -51,15 +51,18 @@ }; UserModel::UserModel(QObject *parent) : QAbstractListModel(parent), d(new UserModelPrivate()) { + const QString facesDir = mainConfig.Theme.FacesDir.get(); + const QString defaultFace = QStringLiteral("file://%1/.face.icon").arg(facesDir); + struct passwd *current_pw; while ((current_pw = getpwent()) != nullptr) { // skip entries with uids smaller than minimum uid - if ( int(current_pw->pw_uid) < mainConfig.Users.MinimumUid.get()) + if (int(current_pw->pw_uid) < mainConfig.Users.MinimumUid.get()) continue; // skip entries with uids greater than maximum uid - if ( int(current_pw->pw_uid) > mainConfig.Users.MaximumUid.get()) + if (int(current_pw->pw_uid) > mainConfig.Users.MaximumUid.get()) continue; // skip entries with user names in the hide users list if (mainConfig.Users.HideUsers.get().contains(QString::fromLocal8Bit(current_pw->pw_name))) @@ -81,14 +84,7 @@ user->needsPassword = strcmp(current_pw->pw_passwd, "") != 0; // search for face icon - QString userFace = QStringLiteral("%1/.face.icon").arg(user->homeDir); - QString systemFace = QStringLiteral("%1/%2.face.icon").arg(mainConfig.Theme.FacesDir.get()).arg(user->name); - if (QFile::exists(userFace)) - user->icon = userFace; - else if (QFile::exists(systemFace)) - user->icon = systemFace; - else - user->icon = QStringLiteral("%1/default.face.icon").arg(mainConfig.Theme.FacesDir.get()); + user->icon = defaultFace; // add user d->users << user; @@ -99,10 +95,26 @@ // sort users by username std::sort(d->users.begin(), d->users.end(), [&](const UserPtr &u1, const UserPtr &u2) { return u1->name < u2->name; }); + bool avatarsEnabled = mainConfig.Theme.EnableAvatars.get(); + if (avatarsEnabled && mainConfig.Theme.EnableAvatars.isDefault()) { + if (d->users.count() > mainConfig.Theme.DisableAvatarsThreshold.get()) avatarsEnabled=false; + } + // find out index of the last user for (int i = 0; i < d->users.size(); ++i) { - if (d->users.at(i)->name == stateConfig.Last.User.get()) + UserPtr user { d->users.at(i) }; + if (user->name == stateConfig.Last.User.get()) d->lastIndex = i; + + if (avatarsEnabled) { + const QString userFace = QStringLiteral("file://%1/.face.icon").arg(user->homeDir); + const QString systemFace = QStringLiteral("file://%1/%2.face.icon").arg(facesDir).arg(user->name); + + if (QFile::exists(userFace)) + user->icon = userFace; + else if (QFile::exists(systemFace)) + user->icon = systemFace; + } } } @@ -156,4 +168,8 @@ // return empty value return QVariant(); } + + int UserModel::disableAvatarsThreshold() const { + return mainConfig.Theme.DisableAvatarsThreshold.get(); + } } diff -Nru sddm-0.13.0/src/greeter/UserModel.h sddm-0.14.0/src/greeter/UserModel.h --- sddm-0.13.0/src/greeter/UserModel.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/greeter/UserModel.h 2016-08-28 11:54:03.000000000 +0000 @@ -32,6 +32,8 @@ Q_DISABLE_COPY(UserModel) Q_PROPERTY(int lastIndex READ lastIndex CONSTANT) Q_PROPERTY(QString lastUser READ lastUser CONSTANT) + Q_PROPERTY(int count READ rowCount CONSTANT) + Q_PROPERTY(int disableAvatarsThreshold READ disableAvatarsThreshold CONSTANT) public: enum UserRoles { NameRole = Qt::UserRole + 1, @@ -52,6 +54,7 @@ int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + int disableAvatarsThreshold() const; private: UserModelPrivate *d { nullptr }; }; diff -Nru sddm-0.13.0/src/helper/backend/PamBackend.cpp sddm-0.14.0/src/helper/backend/PamBackend.cpp --- sddm-0.13.0/src/helper/backend/PamBackend.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/helper/backend/PamBackend.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -276,6 +276,17 @@ return Backend::openSession(); } + bool PamBackend::closeSession() { + if (m_pam->isOpen()) { + qDebug() << "[PAM] Closing session"; + m_pam->closeSession(); + m_pam->setCred(PAM_DELETE_CRED); + return true; + } + qWarning() << "[PAM] Asked to close the session but it wasn't previously open"; + return Backend::closeSession(); + } + QString PamBackend::userName() { return QString::fromLocal8Bit((const char*) m_pam->getItem(PAM_USER)); } diff -Nru sddm-0.13.0/src/helper/backend/PamBackend.h sddm-0.14.0/src/helper/backend/PamBackend.h --- sddm-0.13.0/src/helper/backend/PamBackend.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/helper/backend/PamBackend.h 2016-08-28 11:54:03.000000000 +0000 @@ -66,6 +66,7 @@ virtual bool start(const QString &user = QString()); virtual bool authenticate(); virtual bool openSession(); + virtual bool closeSession(); virtual QString userName(); diff -Nru sddm-0.13.0/src/helper/backend/PamHandle.cpp sddm-0.14.0/src/helper/backend/PamHandle.cpp --- sddm-0.13.0/src/helper/backend/PamHandle.cpp 2015-08-22 15:17:51.000000000 +0000 +++ sddm-0.14.0/src/helper/backend/PamHandle.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -104,7 +104,8 @@ if (m_result != PAM_SUCCESS) { qWarning() << "[PAM] openSession:" << pam_strerror(m_handle, m_result); } - return m_result == PAM_SUCCESS; + m_open = m_result == PAM_SUCCESS; + return m_open; } bool PamHandle::closeSession() { @@ -115,6 +116,10 @@ return m_result == PAM_SUCCESS; } + bool PamHandle::isOpen() const { + return m_open; + } + bool PamHandle::setItem(int item_type, const void* item) { m_result = pam_set_item(m_handle, item_type, item); if (m_result != PAM_SUCCESS) { diff -Nru sddm-0.13.0/src/helper/backend/PamHandle.h sddm-0.14.0/src/helper/backend/PamHandle.h --- sddm-0.13.0/src/helper/backend/PamHandle.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/helper/backend/PamHandle.h 2016-08-28 11:54:03.000000000 +0000 @@ -54,6 +54,12 @@ virtual ~PamHandle(); /** + * Returns whether the session is open. + * \sa openSession + */ + bool isOpen() const; + + /** * pam_set_item - set and update PAM informations * * \param item_type PAM item type @@ -187,6 +193,7 @@ struct pam_conv m_conv; ///< the current conversation pam_handle_t *m_handle { nullptr }; ///< the actual PAM handle int m_result { 0 }; ///< PAM result + bool m_open { false }; ///< whether the session is open }; } diff -Nru sddm-0.13.0/src/helper/Backend.cpp sddm-0.14.0/src/helper/Backend.cpp --- sddm-0.13.0/src/helper/Backend.cpp 2015-10-31 13:28:48.000000000 +0000 +++ sddm-0.14.0/src/helper/Backend.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -23,6 +23,7 @@ #include "backend/PamBackend.h" #include "backend/PasswdBackend.h" +#include "Configuration.h" #include "UserSession.h" #include @@ -62,11 +63,20 @@ env.insert(QStringLiteral("SHELL"), QString::fromLocal8Bit(pw->pw_shell)); env.insert(QStringLiteral("USER"), QString::fromLocal8Bit(pw->pw_name)); env.insert(QStringLiteral("LOGNAME"), QString::fromLocal8Bit(pw->pw_name)); - if (env.contains(QStringLiteral("DISPLAY")) && !env.contains(QStringLiteral("XAUTHORITY"))) - env.insert(QStringLiteral("XAUTHORITY"), QStringLiteral("%1/.Xauthority").arg(QString::fromLocal8Bit(pw->pw_dir))); + if (env.contains(QStringLiteral("DISPLAY")) && !env.contains(QStringLiteral("XAUTHORITY"))) { + // determine Xauthority path + QString value = QStringLiteral("%1/%2") + .arg(QString::fromLocal8Bit(pw->pw_dir)) + .arg(mainConfig.X11.UserAuthFile.get()); + env.insert(QStringLiteral("XAUTHORITY"), value); + } // TODO: I'm fairly sure this shouldn't be done for PAM sessions, investigate! m_app->session()->setProcessEnvironment(env); } return m_app->session()->start(); } + + bool Backend::closeSession() { + return true; + } } diff -Nru sddm-0.13.0/src/helper/Backend.h sddm-0.14.0/src/helper/Backend.h --- sddm-0.13.0/src/helper/Backend.h 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/helper/Backend.h 2016-08-28 11:54:03.000000000 +0000 @@ -42,6 +42,7 @@ virtual bool start(const QString &user = QString()) = 0; virtual bool authenticate() = 0; virtual bool openSession(); + virtual bool closeSession(); virtual QString userName() = 0; diff -Nru sddm-0.13.0/src/helper/CMakeLists.txt sddm-0.14.0/src/helper/CMakeLists.txt --- sddm-0.13.0/src/helper/CMakeLists.txt 2015-08-17 16:06:19.000000000 +0000 +++ sddm-0.14.0/src/helper/CMakeLists.txt 2016-08-28 11:54:03.000000000 +0000 @@ -27,7 +27,7 @@ endif() add_executable(sddm-helper ${HELPER_SOURCES}) -qt5_use_modules(sddm-helper Network) +target_link_libraries(sddm-helper Qt5::Network) if(PAM_FOUND) target_link_libraries(sddm-helper ${PAM_LIBRARIES}) else() diff -Nru sddm-0.13.0/src/helper/HelperApp.cpp sddm-0.14.0/src/helper/HelperApp.cpp --- sddm-0.13.0/src/helper/HelperApp.cpp 2015-08-22 15:17:51.000000000 +0000 +++ sddm-0.14.0/src/helper/HelperApp.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -145,6 +145,7 @@ } void HelperApp::sessionFinished(int status) { + m_backend->closeSession(); exit(status); } diff -Nru sddm-0.13.0/src/helper/UserSession.cpp sddm-0.14.0/src/helper/UserSession.cpp --- sddm-0.13.0/src/helper/UserSession.cpp 2015-10-20 19:24:10.000000000 +0000 +++ sddm-0.14.0/src/helper/UserSession.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -46,15 +46,13 @@ if (env.value(QStringLiteral("XDG_SESSION_CLASS")) == QStringLiteral("greeter")) { QProcess::start(m_path); } else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QStringLiteral("x11")) { - qDebug() << "Starting:" << mainConfig.XDisplay.SessionCommand.get() - << m_path; - QProcess::start(mainConfig.XDisplay.SessionCommand.get(), - QStringList() << m_path); + const QString cmd = QStringLiteral("%1 %2").arg(mainConfig.X11.SessionCommand.get()).arg(m_path); + qInfo() << "Starting:" << cmd; + QProcess::start(cmd); } else if (env.value(QStringLiteral("XDG_SESSION_TYPE")) == QStringLiteral("wayland")) { - qDebug() << "Starting:" << mainConfig.WaylandDisplay.SessionCommand.get() - << m_path; - QProcess::start(mainConfig.WaylandDisplay.SessionCommand.get(), - QStringList() << m_path); + const QString cmd = QStringLiteral("%1 %2").arg(mainConfig.Wayland.SessionCommand.get()).arg(m_path); + qInfo() << "Starting:" << cmd; + QProcess::start(cmd); } else { qCritical() << "Unable to run user session: unknown session type"; } @@ -134,17 +132,24 @@ //we want to redirect after we setuid so that the log file is owned by the user // determine stderr log file based on session type - QString fileName = sessionType == QStringLiteral("x11") - ? QStringLiteral(".xsession-errors") : QStringLiteral(".wayland-errors"); + QString sessionLog = QStringLiteral("%1/%2") + .arg(QString::fromLocal8Bit(pw->pw_dir)) + .arg(sessionType == QStringLiteral("x11") + ? mainConfig.X11.SessionLogFile.get() + : mainConfig.Wayland.SessionLogFile.get()); + + // create the path + QFileInfo finfo(sessionLog); + QDir().mkpath(finfo.absolutePath()); //swap the stderr pipe of this subprcess into a file - int fd = ::open(qPrintable(fileName), O_WRONLY | O_CREAT | O_TRUNC, 0600); + int fd = ::open(qPrintable(sessionLog), O_WRONLY | O_CREAT | O_TRUNC, 0600); if (fd >= 0) { dup2 (fd, STDERR_FILENO); ::close(fd); } else { - qWarning() << "Could not open stderr to" << fileName; + qWarning() << "Could not open stderr to" << sessionLog; } //redirect any stdout to /dev/null @@ -166,11 +171,16 @@ QString display = processEnvironment().value(QStringLiteral("DISPLAY")); qDebug() << "Adding cookie to" << file; + + // create the path + QFileInfo finfo(file); + QDir().mkpath(finfo.absolutePath()); + QFile file_handler(file); file_handler.open(QIODevice::WriteOnly); file_handler.close(); - QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.XDisplay.XauthPath.get()).arg(file); + QString cmd = QStringLiteral("%1 -f %2 -q").arg(mainConfig.X11.XauthPath.get()).arg(file); // execute xauth FILE *fp = popen(qPrintable(cmd), "w"); diff -Nru sddm-0.13.0/test/ConfigurationTest.cpp sddm-0.14.0/test/ConfigurationTest.cpp --- sddm-0.13.0/test/ConfigurationTest.cpp 2015-08-22 15:17:51.000000000 +0000 +++ sddm-0.14.0/test/ConfigurationTest.cpp 2016-08-28 11:54:03.000000000 +0000 @@ -177,5 +177,4 @@ QVERIFY(config->String.get() == QStringLiteral("b")); } - -#include "ConfigurationTest.moc" +#include "moc_ConfigurationTest.cpp" diff -Nru sddm-0.13.0/.travis.yml sddm-0.14.0/.travis.yml --- sddm-0.13.0/.travis.yml 2015-11-04 20:05:12.000000000 +0000 +++ sddm-0.14.0/.travis.yml 2016-08-28 11:54:03.000000000 +0000 @@ -4,53 +4,30 @@ - clang - gcc +sudo: required + env: - PAM=0 - PAM=1 -before_install: - - if [ "$CXX" == "g++" ]; then sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test; fi - #- if [ "$CXX" == "clang++" ]; then sudo add-apt-repository -y ppa:h-rayflood/gcc-upper; sudo add-apt-repository -y ppa:h-rayflood/llvm; fi - - sudo add-apt-repository -y ppa:beineri/opt-qt542 - - sudo apt-get update -y - -install: - # gcc - - if [ "$CC" == "gcc" ]; then sudo apt-get install -qq gcc-4.8; fi - - if [ "$CC" == "gcc" ]; then export CC="gcc-4.8"; fi - - if [ "$CXX" == "g++" ]; then sudo apt-get install -qq g++-4.8; fi - - if [ "$CXX" == "g++" ]; then export CXX="g++-4.8"; fi - # clang - #- if [ "$CXX" == "clang++" ]; then sudo apt-get install -qq clang-3.6; fi - #- if [ "$CXX" == "clang++" ]; then export CXX="clang++-3.6"; fi - # qt - - sudo apt-get update - - sudo apt-get -y install qt54declarative qt54tools - # pam - - if [ "$PAM" == "1" ]; then sudo apt-get install -qq libpam0g-dev; fi - # x11 - - sudo apt-get install -qq libpam0g-dev libX11-dev libx11-xcb-dev - # xcb - - sudo wget http://mirrors.kernel.org/ubuntu/pool/main/libx/libxcb/libxcb1_1.10-2ubuntu1_amd64.deb - - sudo wget http://mirrors.kernel.org/ubuntu/pool/main/libx/libxcb/libxcb-xkb1_1.10-2ubuntu1_amd64.deb - - sudo wget http://mirrors.kernel.org/ubuntu/pool/main/libx/libxcb/libxcb1-dev_1.10-2ubuntu1_amd64.deb - - sudo wget http://mirrors.kernel.org/ubuntu/pool/main/libx/libxcb/libxcb-xkb-dev_1.10-2ubuntu1_amd64.deb - - sudo dpkg --force-depends -i libxcb1_1.10-2ubuntu1_amd64.deb - - sudo dpkg --force-depends -i libxcb-xkb1_1.10-2ubuntu1_amd64.deb - - sudo dpkg --force-depends -i libxcb1-dev_1.10-2ubuntu1_amd64.deb - - sudo dpkg --force-depends -i libxcb-xkb-dev_1.10-2ubuntu1_amd64.deb +arch: + packages: + - pam + - python-docutils + - qt5-declarative + - qt5-tools + - extra-cmake-modules + - clang + - git + script: + - if [ "$PAM" == "0" ]; then cmake -DBUILD_MAN_PAGES=ON -DENABLE_PAM:BOOL=OFF .; fi + - if [ "$PAM" == "1" ]; then cmake -DBUILD_MAN_PAGES=ON -DENABLE_PAM:BOOL=ON .; fi + - make -before_script: - # cmake - - wget --no-check-certificate http://www.cmake.org/files/v3.3/cmake-3.3.0-Linux-x86_64.tar.gz -O cmake.tar.gz - - tar -xzf cmake.tar.gz -C $HOME - - export PATH=$HOME/cmake-3.3.0-Linux-x86_64/bin:$PATH - - cmake --version - # prepare - - source /opt/qt54/bin/qt54-env.sh - - mkdir build - - cd build - - if [ "$PAM" == "0" ]; then cmake -DENABLE_PAM:BOOL=OFF ..; fi - - if [ "$PAM" == "1" ]; then cmake -DENABLE_PAM:BOOL=ON ..; fi +script: + - "curl -s https://raw.githubusercontent.com/mikkeloscar/arch-travis/master/arch-travis.sh | bash" -script: make +notifications: + email: false + irc: + - "chat.freenode.net#sddm"