├── .tag
├── src
├── sddm
│ ├── images
│ │ ├── logo.png
│ │ ├── logout.svg
│ │ ├── reload.svg
│ │ ├── keyboard-variant.svg
│ │ ├── sleep.svg
│ │ └── hibernate.svg
│ ├── screenshot.png
│ ├── dummydata
│ │ ├── tyrion.png
│ │ ├── screenModel.qml
│ │ ├── sessionModel.qml
│ │ ├── keyboard.qml
│ │ ├── sddm.qml
│ │ └── userModel.qml
│ ├── theme.conf
│ ├── CMakeLists.txt
│ ├── metadata.desktop
│ ├── components
│ │ ├── Indicator.qml
│ │ └── VirtualKeyboard.qml
│ ├── DesktopStill.qml
│ └── indicators
│ │ └── VirtualKeyboard.qml
├── imports
│ ├── storage
│ │ ├── qmldir
│ │ ├── CMakeLists.txt
│ │ ├── plugin.cpp
│ │ ├── storagemodel.h
│ │ ├── storagedevice.h
│ │ └── plugins.qmltypes
│ ├── taskmanager
│ │ ├── qmldir
│ │ ├── xdgutils.h
│ │ ├── appusage.h
│ │ ├── frequentmodel.h
│ │ ├── pagemodel.cpp
│ │ ├── appusage.cpp
│ │ ├── tasksmodel.h
│ │ ├── pagemodel.h
│ │ ├── utils_p.h
│ │ ├── usagetracker.h
│ │ ├── xdgutils.cpp
│ │ ├── plugin.cpp
│ │ ├── categoriesmodel.h
│ │ ├── CMakeLists.txt
│ │ └── frequentmodel.cpp
│ ├── compositor
│ │ ├── protocols
│ │ │ ├── liri-shell-unstable-v1.xml.license
│ │ │ └── liri-color-picker-unstable-v1.xml.license
│ │ ├── keyeventfilter.h
│ │ ├── appidandicon.h
│ │ ├── quickoutput.h
│ │ ├── fpscounter.h
│ │ ├── screencast.h
│ │ ├── desktoplayout.h
│ │ ├── waylandlirimodalv1.h
│ │ ├── fpscounter.cpp
│ │ ├── waylandliricolorpickerv1.h
│ │ ├── keyeventfilter.cpp
│ │ ├── windowmousetracker.h
│ │ ├── hotspot.h
│ │ ├── abstracttitlebar.h
│ │ ├── waylandlirimodalv1_p.h
│ │ ├── chromeitem.h
│ │ └── waylandcursorgrabber.h
│ ├── shell-private
│ │ ├── logging.cpp
│ │ ├── logging.h
│ │ ├── dbus
│ │ │ ├── multimediakeysserver.cpp
│ │ │ ├── multimediakeysserver.h
│ │ │ ├── osdserver.h
│ │ │ └── osdserver.cpp
│ │ ├── plugin.cpp
│ │ └── CMakeLists.txt
│ ├── shell
│ │ ├── StatusAreaExtension.qml
│ │ ├── osdclient.h
│ │ ├── multimediakeysclient.h
│ │ ├── Indicator.qml
│ │ ├── LoginGreeter.qml
│ │ ├── CMakeLists.txt
│ │ ├── osdclient.cpp
│ │ └── extensionsmodel.h
│ ├── notifications
│ │ ├── notificationsimageutils.h
│ │ ├── notificationsimageprovider.h
│ │ ├── notificationsimagesstorage.h
│ │ ├── notificationsimagesstorage.cpp
│ │ ├── plugin.cpp
│ │ ├── notificationsserver.cpp
│ │ ├── CMakeLists.txt
│ │ ├── notificationsmodel.h
│ │ ├── notificationsserver.h
│ │ └── notificationsadaptor.h
│ ├── utils
│ │ └── CMakeLists.txt
│ ├── loginmanager
│ │ ├── plugin.cpp
│ │ ├── CMakeLists.txt
│ │ └── usersmodel.h
│ ├── policykit
│ │ ├── plugin.cpp
│ │ ├── CMakeLists.txt
│ │ └── policykitagent.h
│ └── mpris2
│ │ ├── plugin.cpp
│ │ ├── CMakeLists.txt
│ │ ├── mpris2engine.h
│ │ ├── org.freedesktop.DBus.Properties.xml
│ │ └── org.mpris.MediaPlayer2.xml
├── compositor
│ ├── images
│ │ └── chrome
│ │ │ ├── dropshadow-8.png
│ │ │ ├── dropshadow-24.png
│ │ │ ├── window-maximize.svg
│ │ │ ├── window-restore.svg
│ │ │ ├── window-close.svg
│ │ │ └── window-minimize.svg
│ ├── qml
│ │ ├── overlays
│ │ │ └── HelpOverlay.qml
│ │ ├── desktop
│ │ │ ├── Keyboard.qml
│ │ │ ├── HardwareLayerSurfaceItem.qml
│ │ │ ├── Flash.qml
│ │ │ ├── ModalOverlay.qml
│ │ │ ├── SessionLocker.qml
│ │ │ └── IdleDimmer.qml
│ │ ├── windows
│ │ │ ├── DecorationButton.qml
│ │ │ ├── MoveItem.qml
│ │ │ ├── ChromeMenu.qml
│ │ │ └── ResizeHandler.qml
│ │ ├── images
│ │ │ ├── lan-connect.svg
│ │ │ └── lan-disconnect.svg
│ │ └── error
│ │ │ ├── ErrorOutput.qml
│ │ │ └── ErrorScreenView.qml
│ ├── sessionmanager
│ │ └── sessionmanager.h
│ └── application.h
├── plugins
│ └── statusarea
│ │ ├── user
│ │ ├── CMakeLists.txt
│ │ ├── metadata.desktop.in
│ │ ├── contents
│ │ │ └── main.qml
│ │ └── metadata.desktop
│ │ ├── datetime
│ │ ├── CMakeLists.txt
│ │ ├── contents
│ │ │ └── main.qml
│ │ ├── metadata.desktop.in
│ │ └── metadata.desktop
│ │ ├── notifications
│ │ ├── CMakeLists.txt
│ │ ├── metadata.desktop.in
│ │ └── metadata.desktop
│ │ └── storage
│ │ ├── CMakeLists.txt
│ │ ├── contents
│ │ └── images
│ │ │ ├── eject.svg
│ │ │ ├── disk.svg
│ │ │ └── harddisk.svg
│ │ ├── metadata.desktop.in
│ │ └── metadata.desktop
├── helper
│ ├── qml
│ │ ├── panel
│ │ │ ├── ShutdownIndicator.qml
│ │ │ ├── IndicatorsRow.qml
│ │ │ ├── TaskBar.qml
│ │ │ └── TaskMenu.qml
│ │ ├── launcher
│ │ │ ├── CategoriesView.qml
│ │ │ ├── AppsGrid.qml
│ │ │ └── FrequentAppsView.qml
│ │ └── KeyBindings.qml
│ ├── images
│ │ ├── logout.svg
│ │ ├── reload.svg
│ │ ├── sleep.svg
│ │ └── hibernate.svg
│ └── CMakeLists.txt
└── lockscreen
│ ├── qml
│ └── main.qml
│ └── authenticator.h
├── translations
└── statusarea
│ ├── user
│ ├── user.ts
│ ├── metadata.pot
│ ├── tr.po
│ ├── de.po
│ ├── nl.po
│ ├── lt.po
│ └── pt_BR.po
│ ├── datetime
│ ├── datetime.ts
│ ├── metadata.pot
│ ├── tr.po
│ ├── nl.po
│ ├── de.po
│ ├── lt.po
│ └── pt_BR.po
│ ├── notifications
│ ├── notifications_lt.ts
│ ├── notifications_nl.ts
│ ├── notifications_tr.ts
│ ├── notifications_pt_BR.ts
│ ├── notifications_de.ts
│ ├── notifications.ts
│ ├── metadata.pot
│ ├── nl.po
│ ├── tr.po
│ ├── de.po
│ ├── lt.po
│ └── pt_BR.po
│ └── storage
│ ├── storage_tr.ts
│ ├── storage_de.ts
│ ├── storage_lt.ts
│ ├── storage_nl.ts
│ ├── storage_pt_BR.ts
│ ├── metadata.pot
│ ├── storage.ts
│ ├── nl.po
│ ├── de.po
│ ├── tr.po
│ ├── pt_BR.po
│ └── lt.po
├── data
├── systemd
│ ├── liri-shell.target
│ ├── CMakeLists.txt
│ └── liri-shell.service.in
└── settings
│ ├── io.liri.hardware.screens.gschema.xml
│ ├── io.liri.system.gschema.xml
│ ├── io.liri.shell.gschema.xml
│ ├── CMakeLists.txt
│ └── io.liri.desktop.panel.gschema.xml
├── cmake
└── FindLibsystemd.cmake
├── AUTHORS.md
├── tools
└── dropshadow
│ ├── README.md
│ ├── dropshadow-24.qml
│ └── dropshadow-8.qml
├── LICENSES
└── BSD-3-Clause.txt
├── .reuse
└── dep5
└── features.cmake
/.tag:
--------------------------------------------------------------------------------
1 | fbc33a4d851b878c391e6f544672005f6aed3b96
2 |
--------------------------------------------------------------------------------
/src/sddm/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lirios/shell/HEAD/src/sddm/images/logo.png
--------------------------------------------------------------------------------
/src/sddm/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lirios/shell/HEAD/src/sddm/screenshot.png
--------------------------------------------------------------------------------
/src/sddm/dummydata/tyrion.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lirios/shell/HEAD/src/sddm/dummydata/tyrion.png
--------------------------------------------------------------------------------
/src/sddm/theme.conf:
--------------------------------------------------------------------------------
1 | [General]
2 | iconTheme=Paper
3 | cursorTheme=Paper
4 | platformTheme=liri
5 | style=Material
6 |
--------------------------------------------------------------------------------
/src/imports/storage/qmldir:
--------------------------------------------------------------------------------
1 | module Liri.Storage
2 | plugin storageplugin
3 | classname StoragePlugin
4 | typeinfo plugins.qmltypes
5 |
--------------------------------------------------------------------------------
/translations/statusarea/user/user.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/compositor/images/chrome/dropshadow-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lirios/shell/HEAD/src/compositor/images/chrome/dropshadow-8.png
--------------------------------------------------------------------------------
/translations/statusarea/datetime/datetime.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/compositor/images/chrome/dropshadow-24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lirios/shell/HEAD/src/compositor/images/chrome/dropshadow-24.png
--------------------------------------------------------------------------------
/src/imports/taskmanager/qmldir:
--------------------------------------------------------------------------------
1 | module Liri.Shell.TaskManager
2 | plugin taskmanagerplugin
3 | classname TaskManagerPlugin
4 | typeinfo plugins.qmltypes
5 |
--------------------------------------------------------------------------------
/src/sddm/dummydata/screenModel.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 |
3 | Item {
4 | function geometry(primary) {
5 | return Qt.rect(0, 0, 1366, 768);
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/imports/compositor/protocols/liri-shell-unstable-v1.xml.license:
--------------------------------------------------------------------------------
1 | SPDX-FileCopyrightText: 2018-2021 Pier Luigi Fiorini
2 |
3 | SPDX-License-Identifier: MIT
4 |
--------------------------------------------------------------------------------
/src/sddm/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
2 | DESTINATION "${KDE_INSTALL_DATADIR}/sddm/themes/liri/"
3 | PATTERN "CMakeLists.txt" EXCLUDE)
4 |
--------------------------------------------------------------------------------
/src/imports/compositor/protocols/liri-color-picker-unstable-v1.xml.license:
--------------------------------------------------------------------------------
1 | SPDX-FileCopyrightText: 2020-2021 Pier Luigi Fiorini
2 |
3 | SPDX-License-Identifier: MIT
4 |
--------------------------------------------------------------------------------
/data/systemd/liri-shell.target:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Graphical environment
3 | BindsTo=liri-shell.service
4 | After=liri-shell.service
5 | # Don't manually start/stop
6 | RefuseManualStart=on
7 | RefuseManualStop=on
8 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/user/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | liri_add_statusareaextension(User
2 | QML_FILES
3 | contents/main.qml
4 | TRANSLATIONS_PATH
5 | "${CMAKE_CURRENT_SOURCE_DIR}/../../../../translations/statusarea/user"
6 | )
7 |
--------------------------------------------------------------------------------
/src/sddm/dummydata/sessionModel.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 |
3 | ListModel {
4 | property int lastIndex: 0
5 |
6 | ListElement { name: "Liri" }
7 | ListElement { name: "GNOME" }
8 | ListElement { name: "Plasma" }
9 | }
10 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/datetime/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | liri_add_statusareaextension(DateTime
2 | QML_FILES
3 | contents/main.qml
4 | TRANSLATIONS_PATH
5 | "${CMAKE_CURRENT_SOURCE_DIR}/../../../../translations/statusarea/datetime"
6 | )
7 |
--------------------------------------------------------------------------------
/cmake/FindLibsystemd.cmake:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | #
3 | # SPDX-License-Identifier: BSD-3-Clause
4 |
5 | find_package(PkgConfig)
6 |
7 | pkg_check_modules(Libsystemd libsystemd IMPORTED_TARGET)
8 |
--------------------------------------------------------------------------------
/src/imports/shell-private/logging.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include "logging.h"
6 |
7 | Q_LOGGING_CATEGORY(lcShell, "liri.shell", QtDebugMsg)
8 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/notifications/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | liri_add_statusareaextension(Notifications
2 | QML_FILES
3 | contents/main.qml
4 | TRANSLATIONS_PATH
5 | "${CMAKE_CURRENT_SOURCE_DIR}/../../../../translations/statusarea/notifications"
6 | )
7 |
--------------------------------------------------------------------------------
/AUTHORS.md:
--------------------------------------------------------------------------------
1 | Shell
2 | =====
3 |
4 | # Core Developers
5 |
6 | * Pier Luigi Fiorini
7 |
8 | # Contributors
9 |
10 | You can see the list of contributors to this code base,
11 | and the number of their commits with:
12 |
13 | ```sh
14 | git shortlog -s -e -n
15 | ```
16 |
--------------------------------------------------------------------------------
/src/compositor/qml/overlays/HelpOverlay.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 |
7 | Rectangle {
8 | width: 100
9 | height: 62
10 | }
11 |
12 |
--------------------------------------------------------------------------------
/src/imports/shell-private/logging.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef LOGGING_H
6 | #define LOGGING_H
7 |
8 | #include
9 |
10 | Q_DECLARE_LOGGING_CATEGORY(lcShell)
11 |
12 | #endif // LOGGING_H
13 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/xdgutils.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018-2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef XDGUTILS_H
6 | #define XDGUTILS_H
7 |
8 | #include
9 |
10 | QStringList xdgApplicationsPaths();
11 |
12 | #endif // XDGUTILS_H
13 |
--------------------------------------------------------------------------------
/src/imports/shell/StatusAreaExtension.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import Fluid.Core as FluidCore
7 |
8 | FluidCore.Object {
9 | property Component indicator
10 | property Component menu
11 | }
12 |
--------------------------------------------------------------------------------
/src/compositor/images/chrome/window-maximize.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | liri_add_statusareaextension(Storage
2 | QML_FILES
3 | contents/main.qml
4 | contents/images/disk.svg
5 | contents/images/eject.svg
6 | contents/images/harddisk.svg
7 | TRANSLATIONS_PATH
8 | "${CMAKE_CURRENT_SOURCE_DIR}/../../../../translations/statusarea/storage"
9 | )
10 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/contents/images/eject.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/sddm/dummydata/keyboard.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 |
3 | Item {
4 | property bool numLock: true
5 | property bool capsLock: false
6 | property var currentLayout: 0
7 | property var layouts: [
8 | {"shortName": "it", "longName": "Italiano"},
9 | {"shortName": "en", "longName": "English (US)"}
10 | ]
11 | property bool enabled: true
12 | }
13 |
--------------------------------------------------------------------------------
/src/compositor/qml/desktop/Keyboard.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.VirtualKeyboard
7 |
8 | InputPanel {
9 | id: keyboard
10 |
11 | anchors.left: parent.left
12 | anchors.right: parent.right
13 | visible: active
14 | }
15 |
--------------------------------------------------------------------------------
/tools/dropshadow/README.md:
--------------------------------------------------------------------------------
1 | Drop Shadow
2 | ===========
3 |
4 | These are a couple of simple QML files that make a dropshadow with
5 | 8dp elevation and 24dp elevation.
6 |
7 | Run each QML file with the `qml` command and make a screenshot of it.
8 | Then open the screenshot with an image editor and cut the purple part.
9 | Save the resulting image into `src/compositor/images/chrome`.
10 |
--------------------------------------------------------------------------------
/src/compositor/images/chrome/window-restore.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/compositor/qml/desktop/HardwareLayerSurfaceItem.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import Aurora.Compositor
7 |
8 | LayerSurfaceItem {
9 | property alias stackingLevel: hwLayer.stackingLevel
10 |
11 | WaylandHardwareLayer {
12 | id: hwLayer
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/compositor/qml/windows/DecorationButton.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 |
8 | ToolButton {
9 | display: ToolButton.IconOnly
10 | padding: 0
11 | spacing: 0
12 |
13 | background: Item {
14 | anchors.fill: parent
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/helper/qml/panel/ShutdownIndicator.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import Fluid.Controls as FluidControls
7 | import Liri.Shell as Shell
8 |
9 | Shell.Indicator {
10 | title: qsTr("Shut down")
11 | iconSource: FluidControls.Utils.iconUrl("action/power_settings_new")
12 | }
13 |
--------------------------------------------------------------------------------
/src/compositor/images/chrome/window-close.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/lockscreen/qml/main.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQml
6 | import QtQuick
7 |
8 | Item {
9 | /*
10 | * UI
11 | */
12 |
13 | Instantiator {
14 | model: Qt.application.screens
15 |
16 | LockScreenWindow {
17 | screen: modelData
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/sddm/images/logout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/helper/images/logout.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/sddm/metadata.desktop:
--------------------------------------------------------------------------------
1 | [SddmGreeterTheme]
2 | Type=sddm-theme
3 | Name=Liri OS
4 | Description=Official theme for Liri OS
5 | Author=Pier Luigi Fiorini
6 | Email=pierluigi.fiorini@gmail.com
7 | Copyright=(C) 2014-2016 Pier Luigi Fiorini
8 | License=GPLv3
9 | Version=0.1
10 | Website=http://liri.io
11 | Screenshot=screenshot.png
12 | ConfigFile=theme.conf
13 | MainScript=Main.qml
14 | TranslationsDirectory=translations
15 | Theme-Id=lirios
16 | Theme-API=2.0
17 |
--------------------------------------------------------------------------------
/data/systemd/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | set(ABSOLUTE_BINDIR "${KDE_INSTALL_FULL_BINDIR}")
2 | set(ABSOLUTE_LIBEXECDIR "${KDE_INSTALL_FULL_LIBEXECDIR}")
3 | configure_file(
4 | "liri-shell.service.in"
5 | "${CMAKE_CURRENT_BINARY_DIR}/liri-shell.service"
6 | @ONLY
7 | )
8 |
9 | install(
10 | FILES
11 | liri-shell.target
12 | "${CMAKE_CURRENT_BINARY_DIR}/liri-shell.service"
13 | DESTINATION
14 | "${KDE_INSTALL_SYSTEMDUSERUNITDIR}"
15 | )
16 |
--------------------------------------------------------------------------------
/data/settings/io.liri.hardware.screens.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ''
6 | Primary screen
7 |
8 | The name of the screen where the panel is shown.
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/contents/images/disk.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsimageutils.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | // SPDX-FileCopyrightText: 2008 Dmitry Suzdalev
3 | //
4 | // SPDX-License-Identifier: LGPL-3.0-or-later
5 |
6 | #ifndef NOTIFICATIONSIMAGEUTILS_H
7 | #define NOTIFICATIONSIMAGEUTILS_H
8 |
9 | #include
10 | #include
11 |
12 | QImage decodeImageHint(const QDBusArgument &arg);
13 |
14 | #endif // NOTIFICATIONSIMAGEUTILS_H
15 |
--------------------------------------------------------------------------------
/src/helper/qml/panel/IndicatorsRow.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 |
7 | Row {
8 | height: parent.height
9 |
10 | Repeater {
11 | model: indicatorsModel
12 |
13 | Loader {
14 | asynchronous: true
15 | sourceComponent: model.component
16 | height: parent.height
17 | }
18 | }
19 |
20 | ShutdownIndicator {}
21 | }
22 |
--------------------------------------------------------------------------------
/src/imports/compositor/keyeventfilter.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #pragma once
6 |
7 | #include
8 | #include
9 |
10 | class KeyEventFilter : public QQuickItem
11 | {
12 | Q_OBJECT
13 | public:
14 | KeyEventFilter(QQuickItem *parent = nullptr);
15 |
16 | protected:
17 | bool eventFilter(QObject *, QEvent *);
18 |
19 | private:
20 | QPointer m_window;
21 | };
22 |
--------------------------------------------------------------------------------
/data/settings/io.liri.system.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | false
6 | Developer mode
7 |
8 | Developer mode allows access to advanced features that
9 | are not meant for normal users.
10 | Set this to TRUE to enable developer mode.
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/sddm/images/reload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/helper/images/reload.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/sddm/images/keyboard-variant.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/compositor/qml/images/lan-connect.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsimageprovider.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef NOTIFICATIONSIMAGEPROVIDER_H
6 | #define NOTIFICATIONSIMAGEPROVIDER_H
7 |
8 | #include
9 |
10 | class NotificationsImageProvider : public QQuickImageProvider
11 | {
12 | public:
13 | explicit NotificationsImageProvider();
14 |
15 | QPixmap requestPixmap(const QString &id, QSize *realSize, const QSize &requestedSize);
16 | };
17 |
18 | #endif // NOTIFICATIONSIMAGEPROVIDER_H
19 |
--------------------------------------------------------------------------------
/src/compositor/sessionmanager/sessionmanager.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef SESSIONMANAGER_H
6 | #define SESSIONMANAGER_H
7 |
8 | #include
9 | #include
10 |
11 | Q_DECLARE_LOGGING_CATEGORY(SESSION_MANAGER)
12 |
13 | class SessionManager : public QObject
14 | {
15 | Q_OBJECT
16 | public:
17 | SessionManager(QObject *parent = nullptr);
18 | virtual ~SessionManager();
19 |
20 | public Q_SLOTS:
21 | void registerService();
22 | };
23 |
24 | #endif // SESSIONMANAGER_H
25 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/datetime/contents/main.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import Liri.Shell as Shell
7 |
8 | Shell.StatusAreaExtension {
9 | indicator: Shell.Indicator {
10 | property var now: new Date()
11 |
12 | text: Qt.formatTime(now)
13 |
14 | Timer {
15 | interval: 1000
16 | repeat: true
17 | running: true
18 | onTriggered: {
19 | now = new Date();
20 | }
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/imports/utils/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | ecm_add_qml_module(ShellUtilsQmlPlugin
5 | URI Liri.Shell.Utils
6 | VERSION 1.0
7 | CLASS_NAME ShellUtilsPlugin
8 | GENERATE_PLUGIN_SOURCE
9 | DEPENDENCIES QtQuick
10 | )
11 |
12 | target_sources(ShellUtilsQmlPlugin
13 | PRIVATE
14 | qqmlsortfilterproxymodel.cpp qqmlsortfilterproxymodel.h
15 | )
16 |
17 | target_link_libraries(ShellUtilsQmlPlugin
18 | PRIVATE
19 | Qt6::Qml
20 | )
21 |
22 | ecm_finalize_qml_module(ShellUtilsQmlPlugin)
23 |
--------------------------------------------------------------------------------
/src/imports/shell-private/dbus/multimediakeysserver.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "logging.h"
8 | #include "multimediakeysserver.h"
9 |
10 | MultimediaKeysServer::MultimediaKeysServer(QObject *parent)
11 | : QObject(parent)
12 | {
13 | auto bus = QDBusConnection::sessionBus();
14 | if (!bus.registerObject(QStringLiteral("/MultimediaKeysServer"), this, QDBusConnection::ExportAllSignals))
15 | qCWarning(lcShell, "Unable to register /MultimediaKeysServer D-Bus object");
16 | }
17 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/user/metadata.desktop.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | _Name=User
4 | _Comment=Current user picture
5 | _Keywords=User;
6 | OnlyShowIn=X-Liri;
7 | X-Liri-ServiceType=StatusAreaExtension
8 | X-Liri-StatusAreaExtension-Script=contents/main.qml
9 | X-Liri-StatusAreaExtension-Order=0
10 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.User
11 | X-Liri-PluginInfo-Category=StatusAreaExtensions
12 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
13 | X-Liri-PluginInfo-Version=1.0.0
14 | X-Liri-PluginInfo-Website=https://liri.io
15 | X-Liri-PluginInfo-License=GPL-3.0-or-later
16 | X-Liri-PluginInfo-EnabledByDefault=true
17 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/appusage.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2017 Michael Spencer
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef APPUSAGE_H
6 | #define APPUSAGE_H
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | class AppUsage : QObject
13 | {
14 | Q_OBJECT
15 | public:
16 | AppUsage(const QString &appId, QObject *parent = nullptr);
17 |
18 | QString appId;
19 | QDateTime lastSeen;
20 | int score = 0;
21 |
22 | void save() const;
23 | void destroy() const;
24 |
25 | private:
26 | QSqlDatabase m_db;
27 | };
28 |
29 | #endif // APPUSAGE_H
30 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/datetime/metadata.desktop.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | _Name=Date and time
4 | _Comment=Current date and time
5 | _Keywords=Date;Time;
6 | OnlyShowIn=X-Liri;
7 | X-Liri-ServiceType=StatusAreaExtension
8 | X-Liri-StatusAreaExtension-Script=contents/main.qml
9 | X-Liri-StatusAreaExtension-Order=1
10 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.DateTime
11 | X-Liri-PluginInfo-Category=StatusAreaExtensions
12 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
13 | X-Liri-PluginInfo-Version=1.0.0
14 | X-Liri-PluginInfo-Website=https://liri.io
15 | X-Liri-PluginInfo-License=GPL-3.0-or-later
16 | X-Liri-PluginInfo-EnabledByDefault=true
17 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/metadata.desktop.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | _Name=Storage
4 | _Comment=Access storage volumes
5 | _Keywords=Storage;Disk;
6 | OnlyShowIn=X-Liri;
7 | X-Liri-ServiceType=StatusAreaExtension
8 | X-Liri-StatusAreaExtension-Script=contents/main.qml
9 | X-Liri-StatusAreaExtension-Order=3
10 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.Storage
11 | X-Liri-PluginInfo-Category=StatusAreaExtensions
12 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
13 | X-Liri-PluginInfo-Version=1.0.0
14 | X-Liri-PluginInfo-Website=https://liri.io
15 | X-Liri-PluginInfo-License=GPL-3.0-or-later
16 | X-Liri-PluginInfo-EnabledByDefault=true
17 |
--------------------------------------------------------------------------------
/src/imports/loginmanager/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "usersmodel.h"
8 |
9 | class LoginManagerPlugin : public QQmlExtensionPlugin
10 | {
11 | Q_OBJECT
12 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
13 | public:
14 | void registerTypes(const char *uri)
15 | {
16 | // @uri Liri.LoginManager
17 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.LoginManager"));
18 |
19 | qmlRegisterType(uri, 1, 0, "UsersModel");
20 | }
21 | };
22 |
23 | #include "plugin.moc"
24 |
--------------------------------------------------------------------------------
/src/compositor/qml/images/lan-disconnect.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/policykit/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "policykitagent.h"
8 |
9 | class PolicyKitPlugin : public QQmlExtensionPlugin
10 | {
11 | Q_OBJECT
12 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
13 | public:
14 | void registerTypes(const char *uri)
15 | {
16 | // @uri Liri.PolicyKit
17 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.PolicyKit"));
18 |
19 | qmlRegisterType(uri, 1, 0, "PolicyKitAgent");
20 | }
21 | };
22 |
23 | #include "plugin.moc"
24 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/notifications/metadata.desktop.in:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | _Name=Notifications
4 | _Comment=Show notifications
5 | _Keywords=Notifications;
6 | OnlyShowIn=X-Liri;
7 | X-Liri-ServiceType=StatusAreaExtension
8 | X-Liri-StatusAreaExtension-Script=contents/main.qml
9 | X-Liri-StatusAreaExtension-Order=2
10 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.Notifications
11 | X-Liri-PluginInfo-Category=StatusAreaExtensions
12 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
13 | X-Liri-PluginInfo-Version=1.0.0
14 | X-Liri-PluginInfo-Website=https://liri.io
15 | X-Liri-PluginInfo-License=GPL-3.0-or-later
16 | X-Liri-PluginInfo-EnabledByDefault=true
17 |
--------------------------------------------------------------------------------
/src/imports/shell/osdclient.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef OSDCLIENT_H
6 | #define OSDCLIENT_H
7 |
8 | #include
9 | #include
10 |
11 | class OsdClient : public QObject
12 | {
13 | Q_OBJECT
14 | QML_ELEMENT
15 | QML_SINGLETON
16 | public:
17 | explicit OsdClient(QObject *parent = nullptr);
18 |
19 | Q_INVOKABLE void showText(const QString &iconName, const QString &text = QString());
20 | Q_INVOKABLE void showProgress(const QString &iconName, int value);
21 |
22 | static OsdClient *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine);
23 | };
24 |
25 | #endif // OSDCLIENT_H
26 |
--------------------------------------------------------------------------------
/src/imports/shell-private/dbus/multimediakeysserver.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef MULTIMEDIAKEYSSERVER_H
6 | #define MULTIMEDIAKEYSSERVER_H
7 |
8 | #include
9 |
10 | class MultimediaKeysServer : public QObject
11 | {
12 | Q_OBJECT
13 | Q_CLASSINFO("D-Bus Interface", "io.liri.Shell.MultimediaKeysServer")
14 | public:
15 | explicit MultimediaKeysServer(QObject *parent = nullptr);
16 |
17 | Q_SIGNALS:
18 | void VolumeMute();
19 | void VolumeUp();
20 | void VolumeDown();
21 | void MediaPlay();
22 | void MediaPrevious();
23 | void MediaNext();
24 | };
25 |
26 | #endif // MULTIMEDIAKEYSSERVER_H
27 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/user/contents/main.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import Fluid.Controls as FluidControls
7 | import QtAccountsService as Accounts
8 | import Liri.Shell as Shell
9 |
10 | Shell.StatusAreaExtension {
11 | Accounts.UserAccount {
12 | id: currentUser
13 | }
14 |
15 | indicator: Shell.Indicator {
16 | title: currentUser.displayName
17 |
18 | FluidControls.CircleImage {
19 | anchors.centerIn: parent
20 | source: "file://" + currentUser.iconFileName
21 | width: iconSize
22 | height: iconSize
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/imports/storage/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | find_package(KF6Solid REQUIRED)
5 |
6 | ecm_add_qml_module(StorageQmlPlugin
7 | URI Liri.Storage
8 | VERSION 1.0
9 | CLASS_NAME StoragePlugin
10 | NO_GENERATE_PLUGIN_SOURCE
11 | DEPENDENCIES QtQuick
12 | )
13 |
14 | target_sources(StorageQmlPlugin
15 | PRIVATE
16 | plugin.cpp
17 | storagedevice.cpp storagedevice.h
18 | storagemodel.cpp storagemodel.h
19 | )
20 |
21 | target_link_libraries(StorageQmlPlugin
22 | PRIVATE
23 | Qt6::Qml
24 | Qt6::Quick
25 | KF6::Solid
26 | )
27 |
28 | ecm_finalize_qml_module(StorageQmlPlugin)
29 |
30 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/contents/images/harddisk.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/policykit/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | find_package(PolkitQt6-1 REQUIRED)
5 |
6 | ecm_add_qml_module(PolkitQmlPlugin
7 | URI Liri.PolicyKit
8 | VERSION 1.0
9 | CLASS_NAME PolicyKitPlugin
10 | NO_GENERATE_PLUGIN_SOURCE
11 | DEPENDENCIES QtQuick
12 | )
13 |
14 | target_sources(PolkitQmlPlugin
15 | PRIVATE
16 | listener_p.cpp listener_p.h
17 | plugin.cpp
18 | policykitagent.cpp policykitagent.h
19 | )
20 |
21 | target_link_libraries(PolkitQmlPlugin
22 | PRIVATE
23 | Qt6::DBus
24 | Qt6::Qml
25 | Qt6::Quick
26 | PolkitQt6-1::Core
27 | PolkitQt6-1::Agent
28 | )
29 |
30 | ecm_finalize_qml_module(PolkitQmlPlugin)
31 |
--------------------------------------------------------------------------------
/src/imports/shell-private/dbus/osdserver.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef OSDSERVER_H
6 | #define OSDSERVER_H
7 |
8 | #include
9 |
10 | class OsdServer : public QObject
11 | {
12 | Q_OBJECT
13 | Q_CLASSINFO("D-Bus Interface", "io.liri.Shell.Osd")
14 | public:
15 | explicit OsdServer(QObject *parent = nullptr);
16 |
17 | public Q_SLOTS:
18 | void ShowText(const QString &iconName, const QString &text = QString());
19 | void ShowProgress(const QString &iconName, int value);
20 |
21 | Q_SIGNALS:
22 | void textRequested(const QString &iconName, const QString &text);
23 | void progressRequested(const QString &iconName, int value);
24 | };
25 |
26 | #endif // OSDSERVER_H
27 |
--------------------------------------------------------------------------------
/src/imports/loginmanager/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | if(NOT TARGET Liri::Qt6AccountsService)
5 | find_package(Qt6AccountsService REQUIRED)
6 | endif()
7 |
8 | ecm_add_qml_module(LoginManagerQmlPlugin
9 | URI Liri.LoginManager
10 | VERSION 1.0
11 | CLASS_NAME LoginManagerPlugin
12 | NO_GENERATE_PLUGIN_SOURCE
13 | DEPENDENCIES QtQuick
14 | )
15 |
16 | target_sources(LoginManagerQmlPlugin
17 | PRIVATE
18 | plugin.cpp
19 | usersmodel.cpp usersmodel.h
20 | )
21 |
22 | target_link_libraries(LoginManagerQmlPlugin
23 | PRIVATE
24 | Qt6::Qml
25 | Qt6::Quick
26 | Liri::Qt6AccountsService
27 | )
28 |
29 | ecm_finalize_qml_module(LoginManagerQmlPlugin)
30 |
--------------------------------------------------------------------------------
/src/imports/shell/multimediakeysclient.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef MULTIMEDIAKEYSCLIENT_H
6 | #define MULTIMEDIAKEYSCLIENT_H
7 |
8 | #include
9 | #include
10 |
11 | class MultimediaKeysClient : public QObject
12 | {
13 | Q_OBJECT
14 | QML_ELEMENT
15 | QML_SINGLETON
16 | public:
17 | explicit MultimediaKeysClient(QObject *parent = nullptr);
18 |
19 | static MultimediaKeysClient *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine);
20 |
21 | Q_SIGNALS:
22 | void volumeMute();
23 | void volumeUp();
24 | void volumeDown();
25 | void mediaPlay();
26 | void mediaPrevious();
27 | void mediaNext();
28 | };
29 |
30 | #endif // MULTIMEDIAKEYSCLIENT_H
31 |
--------------------------------------------------------------------------------
/src/imports/loginmanager/usersmodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #pragma once
6 |
7 | #include
8 | #include
9 |
10 | class UsersModel : public QtAccountsService::UsersModel
11 | {
12 | Q_OBJECT
13 | public:
14 | enum CustomRoles {
15 | BackgroundModeRole = QtAccountsService::UsersModel::LanguageRole + 1,
16 | PictureUrlRole,
17 | FillModeRole,
18 | PrimaryColorRole,
19 | SecondaryColorRole
20 | };
21 | Q_ENUM(CustomRoles)
22 |
23 | explicit UsersModel(QObject *parent = nullptr);
24 |
25 | QHash roleNames() const;
26 |
27 | QVariant data(const QModelIndex &index, int role) const;
28 | };
29 |
--------------------------------------------------------------------------------
/src/imports/shell-private/dbus/osdserver.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "logging.h"
8 | #include "osdserver.h"
9 |
10 | OsdServer::OsdServer(QObject *parent)
11 | : QObject(parent)
12 | {
13 | auto bus = QDBusConnection::sessionBus();
14 | if (!bus.registerObject(QStringLiteral("/Osd"), this, QDBusConnection::ExportAllSlots))
15 | qCWarning(lcShell, "Unable to register /Osd D-Bus object");
16 | }
17 |
18 | void OsdServer::ShowText(const QString &iconName, const QString &text)
19 | {
20 | emit textRequested(iconName, text);
21 | }
22 |
23 | void OsdServer::ShowProgress(const QString &iconName, int value)
24 | {
25 | emit progressRequested(iconName, value);
26 | }
27 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications_lt.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Notifications
9 | Pranešimai
10 |
11 |
12 |
13 | No notifications
14 | Nėra pranešimų
15 |
16 |
17 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications_nl.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Notifications
9 | Meldingen
10 |
11 |
12 |
13 | No notifications
14 | Geen meldingen
15 |
16 |
17 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications_tr.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Notifications
9 | Bildirimler
10 |
11 |
12 |
13 | No notifications
14 | Bildirim yok
15 |
16 |
17 |
--------------------------------------------------------------------------------
/tools/dropshadow/dropshadow-24.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import Fluid.Effects as FluidEffects
8 |
9 | ApplicationWindow {
10 | width: 150
11 | height: 150
12 | color: "transparent"
13 | flags: Qt.Window | Qt.FramelessWindowHint
14 | visible: true
15 |
16 | Rectangle {
17 | anchors.centerIn: parent
18 | width: parent.width / 3
19 | height: parent.height / 3
20 | color: "purple"
21 | radius: 4
22 |
23 | Rectangle {
24 | anchors.fill: parent
25 | color: "purple"
26 | }
27 |
28 | layer.enabled: true
29 | layer.effect: FluidEffects.Elevation {
30 | elevation: 24
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/tools/dropshadow/dropshadow-8.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import Fluid.Effects as FluidEffects
8 |
9 | ApplicationWindow {
10 | width: 150
11 | height: 150
12 | color: "transparent"
13 | flags: Qt.Window | Qt.FramelessWindowHint
14 | visible: true
15 |
16 | Rectangle {
17 | anchors.centerIn: parent
18 | width: parent.width / 3
19 | height: parent.height / 3
20 | color: "purple"
21 | radius: 4
22 |
23 | Rectangle {
24 | anchors.fill: parent
25 | color: "purple"
26 | }
27 |
28 | layer.enabled: true
29 | layer.effect: FluidEffects.Elevation {
30 | elevation: 8
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/data/systemd/liri-shell.service.in:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Liri Shell
3 | PartOf=liri-shell.target
4 | # Don't manually start/stop
5 | RefuseManualStart=on
6 | RefuseManualStop=on
7 | # Force a session shutdown when this exits for a logout or a crash,
8 | # because we are a display server
9 | OnFailure=liri-session-shutdown.service
10 | OnFailureJobMode=replace-irreversibly
11 | CollectMode=inactive-or-failed
12 |
13 | [Service]
14 | Type=notify
15 | ExecStart=@ABSOLUTE_LIBEXECDIR@/liri-shell
16 | ExecStopPost=@ABSOLUTE_BINDIR@/liri-session-ctl --logout
17 | # Don't restart, this is a display server
18 | Restart=no
19 | # Avoid hangup at startup
20 | TimeoutStartSec=15
21 | # Make sure any child process is gone after this long
22 | TimeoutStopSec=5
23 | # Keep-alive every 20 seconds
24 | WatchdogSec=20
25 | # Clean the environment
26 | UnsetEnvironment=QT_QPA_PLATFORM QT_WAYLAND_SHELL_INTEGRATION
27 |
--------------------------------------------------------------------------------
/src/compositor/qml/desktop/Flash.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 |
7 | Rectangle {
8 | id: flash
9 |
10 | anchors.fill: parent
11 |
12 | color: "white"
13 | opacity: 0.0
14 |
15 | SequentialAnimation {
16 | id: flashAnimation
17 |
18 | OpacityAnimator {
19 | easing.type: Easing.OutQuad
20 | target: flash
21 | from: 0.0
22 | to: 1.0
23 | duration: 250
24 | }
25 | OpacityAnimator {
26 | easing.type: Easing.OutQuad
27 | target: flash
28 | from: 1.0
29 | to: 0.0
30 | duration: 250
31 | }
32 | }
33 |
34 | function flash() {
35 | flashAnimation.start();
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/imports/mpris2/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "mpris2engine.h"
8 | #include "mpris2player.h"
9 |
10 | class Mpris2Plugin : public QQmlExtensionPlugin
11 | {
12 | Q_OBJECT
13 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
14 | public:
15 | void registerTypes(const char *uri)
16 | {
17 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.Mpris"));
18 |
19 | // @uri Liri.Mpris
20 | qmlRegisterType(uri, 1, 0, "Mpris");
21 | qmlRegisterUncreatableType(uri, 1, 0, "MprisPlayer",
22 | QStringLiteral("Cannot create MprisPlayer object"));
23 | }
24 | };
25 |
26 | #include "plugin.moc"
27 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications_pt_BR.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Notifications
9 | Notificações
10 |
11 |
12 |
13 | No notifications
14 | Nenhuma notificação
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/compositor/qml/desktop/ModalOverlay.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls.Material
7 |
8 | Rectangle {
9 | id: modalOverlay
10 |
11 | Material.theme: Material.Light
12 |
13 | anchors.fill: parent
14 | color: Material.backgroundDimColor
15 | opacity: liriCompositor.showModalOverlay ? 1.0 : 0.0
16 | enabled: liriCompositor.showModalOverlay
17 |
18 | Behavior on opacity {
19 | NumberAnimation { duration: 150 }
20 | }
21 |
22 | HoverHandler {
23 | grabPermissions: HoverHandler.CanTakeOverFromAnything
24 | }
25 |
26 | TapHandler {
27 | grabPermissions: TapHandler.CanTakeOverFromAnything
28 | onTapped: {
29 | liriModal.sendDone();
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/imports/storage/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "storagedevice.h"
8 | #include "storagemodel.h"
9 |
10 | class StoragePlugin : public QQmlExtensionPlugin
11 | {
12 | Q_OBJECT
13 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
14 | public:
15 | void registerTypes(const char *uri)
16 | {
17 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.Storage"));
18 |
19 | // @uri Liri.Storage
20 | qmlRegisterType(uri, 1, 0, "StorageModel");
21 | qmlRegisterUncreatableType(uri, 1, 0, "StorageDevice",
22 | QLatin1String("Cannot create StorageDevice object"));
23 | }
24 | };
25 |
26 | #include "plugin.moc"
27 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/frequentmodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 Pier Luigi Fiorini
2 | // SPDX-FileCopyrightText: 2017 Michael Spencer
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-or-later
5 |
6 | #ifndef FREQUENTMODEL_H
7 | #define FREQUENTMODEL_H
8 |
9 | #include
10 | #include
11 |
12 | class FrequentAppsModel : public QSortFilterProxyModel
13 | {
14 | Q_OBJECT
15 | public:
16 | explicit FrequentAppsModel(QObject *parent = nullptr);
17 |
18 | int startIndex() const;
19 | int limitCount() const;
20 |
21 | bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
22 |
23 | bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
24 | };
25 |
26 | QML_DECLARE_TYPE(FrequentAppsModel)
27 |
28 | #endif // FREQUENTMODEL_H
29 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications_de.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Notifications
9 | Benachrichtigungen
10 |
11 |
12 |
13 | No notifications
14 | Keine Benachrichtigungen
15 |
16 |
17 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/notifications.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | main
6 |
7 |
8 |
9 |
10 | Notifications
11 |
12 |
13 |
14 |
15 | No notifications
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/compositor/qml/windows/MoveItem.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 |
7 | Item {
8 | id: moveItem
9 |
10 | property bool moving: false
11 |
12 | ParallelAnimation {
13 | id: moveAnimation
14 |
15 | alwaysRunToEnd: true
16 |
17 | SmoothedAnimation {
18 | id: xAnimator
19 |
20 | target: moveItem
21 | property: "x"
22 | duration: 250
23 | }
24 |
25 | SmoothedAnimation {
26 | id: yAnimator
27 |
28 | target: moveItem
29 | property: "y"
30 | duration: 250
31 | }
32 | }
33 |
34 | function animateTo(dx, dy) {
35 | xAnimator.to = dx;
36 | yAnimator.to = dy;
37 | moveAnimation.start();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsimagesstorage.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef NOTIFICATIONSIMAGESSTORAGE_H
6 | #define NOTIFICATIONSIMAGESSTORAGE_H
7 |
8 | #include
9 | #include
10 |
11 | struct NotificationImage {
12 | QPixmap image;
13 | QString iconName;
14 | QString entryIconName;
15 | };
16 |
17 | class NotificationsImagesStorage
18 | {
19 | public:
20 | NotificationsImagesStorage();
21 | ~NotificationsImagesStorage();
22 |
23 | NotificationImage *get(uint id) const;
24 |
25 | void add(uint id, NotificationImage *image);
26 | void remove(uint id);
27 |
28 | static NotificationsImagesStorage *instance();
29 |
30 | private:
31 | QHash m_images;
32 | };
33 |
34 | #endif // NOTIFICATIONSIMAGESSTORAGE_H
35 |
--------------------------------------------------------------------------------
/src/sddm/images/sleep.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/helper/images/sleep.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/shell/Indicator.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import QtQuick.Controls.Material
8 | import Fluid.Controls as FluidControls
9 |
10 | Item {
11 | property string title
12 | property alias text: label.text
13 | property alias iconName: icon.name
14 | property alias iconSource: icon.source
15 |
16 | readonly property int iconSize: height >= 40 ? 56 * 0.36 : height * 0.45
17 |
18 | width: visible ? text ? label.paintedWidth + 16 : 32 : 0
19 | height: parent.height
20 |
21 | FluidControls.Icon {
22 | id: icon
23 |
24 | size: iconSize
25 | anchors.centerIn: parent
26 | }
27 |
28 | Label {
29 | id: label
30 |
31 | anchors.centerIn: parent
32 | font.pixelSize: 15
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/helper/qml/launcher/CategoriesView.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import Fluid.Controls as FluidControls
8 | import Liri.Shell.TaskManager as TaskManager
9 |
10 | ListView {
11 | signal selected(string category)
12 |
13 | currentIndex: 0
14 | model: TaskManager.CategoriesModel {
15 | id: categoriesModel
16 | }
17 | delegate: FluidControls.ListItem {
18 | property string category: model.category
19 |
20 | text: model.display
21 | highlighted: currentIndex === index
22 | onClicked: {
23 | currentIndex = index;
24 | }
25 | }
26 | onCurrentIndexChanged: {
27 | if (currentItem)
28 | selected(currentItem.category);
29 | }
30 |
31 | ScrollBar.vertical: ScrollBar {}
32 | }
33 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage_tr.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Storage
9 | Depolama
10 |
11 |
12 |
13 | Eject
14 | Ayır
15 |
16 |
17 |
18 | Mount
19 | Bağla
20 |
21 |
22 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage_de.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Storage
9 | Speicher
10 |
11 |
12 |
13 | Eject
14 | Auswerfen
15 |
16 |
17 |
18 | Mount
19 | Einhängen
20 |
21 |
22 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage_lt.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Storage
9 | Kaupiklis
10 |
11 |
12 |
13 | Eject
14 | Išstumti
15 |
16 |
17 |
18 | Mount
19 | Prijungti
20 |
21 |
22 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage_nl.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Storage
9 | Opslag
10 |
11 |
12 |
13 | Eject
14 | Uitwerpen
15 |
16 |
17 |
18 | Mount
19 | Aankoppelen
20 |
21 |
22 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage_pt_BR.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | main
4 |
5 |
6 |
7 |
8 | Storage
9 | Armazenamento
10 |
11 |
12 |
13 | Eject
14 | Ejetar
15 |
16 |
17 |
18 | Mount
19 | Montar
20 |
21 |
22 |
--------------------------------------------------------------------------------
/translations/statusarea/user/metadata.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 | "Language: \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #. (desktop-to-pot) "Name" entry
20 | #: metadata.desktop.in:3
21 | msgctxt "Name entry"
22 | msgid "User"
23 | msgstr ""
24 |
25 | #. (desktop-to-pot) "Comment" entry
26 | #: metadata.desktop.in:4
27 | msgctxt "Comment entry"
28 | msgid "Current user picture"
29 | msgstr ""
30 |
31 | #. (desktop-to-pot) "Keywords" entry
32 | #: metadata.desktop.in:5
33 | msgctxt "Keywords entry"
34 | msgid "User;"
35 | msgstr ""
36 |
--------------------------------------------------------------------------------
/src/imports/compositor/appidandicon.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef APPIDANDICON_H
6 | #define APPIDANDICON_H
7 |
8 | #include
9 |
10 | class AppIdAndIcon : public QObject
11 | {
12 | Q_OBJECT
13 | Q_PROPERTY(QString appId READ appId WRITE setAppId NOTIFY appIdChanged)
14 | Q_PROPERTY(QString canonicalAppId READ canonicalAppId NOTIFY appIdChanged)
15 | Q_PROPERTY(QString iconName READ iconName NOTIFY iconNameChanged)
16 | public:
17 | explicit AppIdAndIcon(QObject *parent = nullptr);
18 |
19 | QString appId() const;
20 | void setAppId(const QString &appId);
21 |
22 | QString canonicalAppId() const;
23 | QString iconName() const;
24 |
25 | Q_SIGNALS:
26 | void appIdChanged();
27 | void iconNameChanged();
28 |
29 | private:
30 | QString m_appId;
31 | QString m_canonicalAppId;
32 | QString m_iconName;
33 |
34 | void updateIconName();
35 | };
36 |
37 | #endif // APPIDANDICON_H
38 |
--------------------------------------------------------------------------------
/src/imports/mpris2/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | ecm_add_qml_module(MprisQmlPlugin
5 | URI Liri.Mpris
6 | VERSION 1.0
7 | CLASS_NAME Mpris2Plugin
8 | NO_GENERATE_PLUGIN_SOURCE
9 | DEPENDENCIES QtQuick
10 | )
11 |
12 | set_source_files_properties(
13 | org.mpris.MediaPlayer2.Player.xml
14 | org.mpris.MediaPlayer2.xml
15 | PROPERTIES NO_NAMESPACE ON
16 | )
17 |
18 | qt_add_dbus_interfaces(_dbus_sources
19 | org.freedesktop.DBus.Properties.xml
20 | org.mpris.MediaPlayer2.Player.xml
21 | org.mpris.MediaPlayer2.xml
22 | )
23 |
24 | target_sources(MprisQmlPlugin
25 | PRIVATE
26 | mpris2engine.cpp mpris2engine.h
27 | mpris2player.cpp mpris2player.h
28 | plugin.cpp
29 | ${_dbus_sources}
30 | )
31 |
32 | target_link_libraries(MprisQmlPlugin
33 | PRIVATE
34 | Qt6::DBus
35 | Qt6::Qml
36 | Qt6::Quick
37 | )
38 |
39 | ecm_finalize_qml_module(MprisQmlPlugin)
40 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsimagesstorage.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "notificationsimagesstorage.h"
8 |
9 | Q_GLOBAL_STATIC(NotificationsImagesStorage, globalStorage)
10 |
11 | NotificationsImagesStorage::NotificationsImagesStorage()
12 | {
13 | }
14 |
15 | NotificationsImagesStorage::~NotificationsImagesStorage()
16 | {
17 | qDeleteAll(m_images);
18 | }
19 |
20 | NotificationImage *NotificationsImagesStorage::get(uint id) const
21 | {
22 | return m_images.value(id);
23 | }
24 |
25 | void NotificationsImagesStorage::add(uint id, NotificationImage *image)
26 | {
27 | remove(id);
28 | m_images[id] = image;
29 | }
30 |
31 | void NotificationsImagesStorage::remove(uint id)
32 | {
33 | if (m_images.contains(id))
34 | delete m_images.take(id);
35 | }
36 |
37 | NotificationsImagesStorage *NotificationsImagesStorage::instance()
38 | {
39 | return globalStorage;
40 | }
41 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/metadata.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 | "Language: \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #. (desktop-to-pot) "Name" entry
20 | #: metadata.desktop.in:3
21 | msgctxt "Name entry"
22 | msgid "Storage"
23 | msgstr ""
24 |
25 | #. (desktop-to-pot) "Comment" entry
26 | #: metadata.desktop.in:4
27 | msgctxt "Comment entry"
28 | msgid "Access storage volumes"
29 | msgstr ""
30 |
31 | #. (desktop-to-pot) "Keywords" entry
32 | #: metadata.desktop.in:5
33 | msgctxt "Keywords entry"
34 | msgid "Storage;Disk;"
35 | msgstr ""
36 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/metadata.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 | "Language: \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #. (desktop-to-pot) "Name" entry
20 | #: metadata.desktop.in:3
21 | msgctxt "Name entry"
22 | msgid "Date and time"
23 | msgstr ""
24 |
25 | #. (desktop-to-pot) "Comment" entry
26 | #: metadata.desktop.in:4
27 | msgctxt "Comment entry"
28 | msgid "Current date and time"
29 | msgstr ""
30 |
31 | #. (desktop-to-pot) "Keywords" entry
32 | #: metadata.desktop.in:5
33 | msgctxt "Keywords entry"
34 | msgid "Date;Time;"
35 | msgstr ""
36 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/metadata.pot:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 | "Language: \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #. (desktop-to-pot) "Name" entry
20 | #: metadata.desktop.in:3
21 | msgctxt "Name entry"
22 | msgid "Notifications"
23 | msgstr ""
24 |
25 | #. (desktop-to-pot) "Comment" entry
26 | #: metadata.desktop.in:4
27 | msgctxt "Comment entry"
28 | msgid "Show notifications"
29 | msgstr ""
30 |
31 | #. (desktop-to-pot) "Keywords" entry
32 | #: metadata.desktop.in:5
33 | msgctxt "Keywords entry"
34 | msgid "Notifications;"
35 | msgstr ""
36 |
--------------------------------------------------------------------------------
/data/settings/io.liri.shell.gschema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | true
6 | XWayland support
7 |
8 | If set to true, XWayland support is enabled.
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | 'Meta'
17 | Modifier to use for extended window management operations
18 |
19 | This key is used for extended window management operations, for example
20 | dragging windows from the contents rather than their decoration.
21 |
22 | The default is intended to be the "Windows" key on PC hardware or the
23 | "Command" key on Mac hardware.
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/storage.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | main
6 |
7 |
8 |
9 |
10 | Storage
11 |
12 |
13 |
14 |
15 | Eject
16 |
17 |
18 |
19 |
20 | Mount
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/imports/compositor/quickoutput.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef QUICKOUTPUT_H
6 | #define QUICKOUTPUT_H
7 |
8 | #include
9 |
10 | #include "screenmodel.h"
11 |
12 | class QuickOutput : public Aurora::Compositor::WaylandQuickOutput
13 | {
14 | Q_OBJECT
15 | Q_PROPERTY(ScreenItem *screen READ screen WRITE setScreen NOTIFY screenChanged)
16 | public:
17 | explicit QuickOutput();
18 |
19 | ScreenItem *screen() const;
20 | void setScreen(ScreenItem *screen);
21 |
22 | Q_SIGNALS:
23 | void screenChanged(ScreenItem *screen);
24 |
25 | protected:
26 | void componentComplete() override;
27 |
28 | private:
29 | bool m_initialized = false;
30 | ScreenItem *m_screen = nullptr;
31 |
32 | void addModes();
33 | void addScreenMode(ScreenMode *mode);
34 |
35 | private Q_SLOTS:
36 | void handleCurrentModeChanged(const QSize &resolution, int refreshRate);
37 | };
38 |
39 | #endif // QUICKOUTPUT_H
40 |
--------------------------------------------------------------------------------
/src/imports/shell-private/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 |
7 | #ifndef QT_WAYLAND_COMPOSITOR_QUICK
8 | # define QT_WAYLAND_COMPOSITOR_QUICK
9 | #endif
10 |
11 | #include "dbus/multimediakeysserver.h"
12 | #include "dbus/osdserver.h"
13 |
14 | class ShellPrivatePlugin : public QQmlExtensionPlugin
15 | {
16 | Q_OBJECT
17 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
18 | public:
19 | void registerTypes(const char *uri)
20 | {
21 | // @uri Liri.private.shell
22 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.private.shell"));
23 |
24 | const int versionMajor = 1;
25 | const int versionMinor = 0;
26 |
27 | // D-Bus interfaces
28 |
29 | qmlRegisterType(uri, versionMajor, versionMinor, "OsdServer");
30 | qmlRegisterType(uri, versionMajor, versionMinor, "MultimediaKeysServer");
31 | }
32 | };
33 |
34 | #include "plugin.moc"
35 |
--------------------------------------------------------------------------------
/data/settings/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | install(
2 | FILES
3 | io.liri.desktop.interface.gschema.xml
4 | io.liri.desktop.keybindings.gschema.xml
5 | io.liri.desktop.panel.gschema.xml
6 | io.liri.desktop.peripherals.gschema.xml
7 | io.liri.shell.gschema.xml
8 | io.liri.hardware.screens.gschema.xml
9 | io.liri.system.gschema.xml
10 | DESTINATION
11 | "${KDE_INSTALL_DATADIR}/glib-2.0/schemas"
12 | )
13 |
14 | set(DATADIR "${KDE_INSTALL_FULL_DATADIR}")
15 | configure_file(
16 | "io.liri.desktop.background.gschema.xml.in"
17 | "${CMAKE_CURRENT_BINARY_DIR}/io.liri.desktop.background.gschema.xml"
18 | @ONLY
19 | )
20 | configure_file(
21 | "io.liri.desktop.lockscreen.gschema.xml.in"
22 | "${CMAKE_CURRENT_BINARY_DIR}/io.liri.desktop.lockscreen.gschema.xml"
23 | @ONLY
24 | )
25 | install(
26 | FILES
27 | "${CMAKE_CURRENT_BINARY_DIR}/io.liri.desktop.background.gschema.xml"
28 | "${CMAKE_CURRENT_BINARY_DIR}/io.liri.desktop.lockscreen.gschema.xml"
29 | DESTINATION
30 | "${KDE_INSTALL_DATADIR}/glib-2.0/schemas"
31 | )
32 |
--------------------------------------------------------------------------------
/src/imports/compositor/fpscounter.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef FPSCOUNTER_H
6 | #define FPSCOUNTER_H
7 |
8 | #include
9 | #include
10 | #include
11 | #include
12 |
13 | class FpsCounter : public QQuickItem
14 | {
15 | Q_OBJECT
16 | Q_PROPERTY(qreal framesPerSecond READ framesPerSecond NOTIFY framesPerSecondChanged)
17 | public:
18 | explicit FpsCounter(QQuickItem *parent = nullptr);
19 |
20 | qreal framesPerSecond() const;
21 |
22 | Q_SIGNALS:
23 | void framesPerSecondChanged();
24 |
25 | protected:
26 | void timerEvent(QTimerEvent *) override;
27 |
28 | private:
29 | QPointer m_lastWindow;
30 | QMetaObject::Connection m_lastWindowConnection;
31 | QElapsedTimer m_timer;
32 | int m_counter = 0;
33 | qreal m_fps = 0;
34 |
35 | void resetFramesPerSecond();
36 |
37 | private Q_SLOTS:
38 | void handleWindowChanged(QQuickWindow *window);
39 | };
40 |
41 | #endif // FPSCOUNTER_H
42 |
--------------------------------------------------------------------------------
/src/imports/mpris2/mpris2engine.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef LIRI_MPRIS2ENGINE_H
6 | #define LIRI_MPRIS2ENGINE_H
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | class QDBusServiceWatcher;
13 | class Mpris2Player;
14 |
15 | Q_DECLARE_LOGGING_CATEGORY(MPRIS2)
16 |
17 | class Mpris2Engine : public QObject
18 | {
19 | Q_OBJECT
20 | Q_PROPERTY(QQmlListProperty players READ players NOTIFY playersChanged)
21 | public:
22 | Mpris2Engine(QObject *parent = 0);
23 | ~Mpris2Engine();
24 |
25 | QQmlListProperty players();
26 | static qsizetype playersCount(QQmlListProperty *prop);
27 | static Mpris2Player *playersAt(QQmlListProperty *prop, qsizetype index);
28 |
29 | Q_SIGNALS:
30 | void playersChanged();
31 |
32 | private:
33 | QDBusServiceWatcher *m_watcher;
34 | QList m_players;
35 | };
36 |
37 | #endif // LIRI_MPRIS2ENGINE_H
38 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/user/metadata.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | Name=User
4 | Name[de]=Benutzer
5 | Name[lt]=Naudotojas
6 | Name[nl]=Gebruiker
7 | Name[pt_BR]=Usuário
8 | Name[tr]=Kullanıcı
9 | Comment=Current user picture
10 | Comment[de]=Aktuelles Benutzerbild
11 | Comment[lt]=Dabartinio naudotojo paveikslas
12 | Comment[nl]=Huidige gebruikersfoto
13 | Comment[pt_BR]=Imagem atual do usuário
14 | Comment[tr]=Geçerli kullanıcı resmi
15 | Keywords=User;
16 | Keywords[de]=Benutzer;
17 | Keywords[lt]=Naudotojas;naudotojai;
18 | Keywords[nl]=Gebruiker;
19 | Keywords[pt_BR]=Usuário;
20 | Keywords[tr]=Kullanıcı;
21 | OnlyShowIn=X-Liri;
22 | X-Liri-ServiceType=StatusAreaExtension
23 | X-Liri-StatusAreaExtension-Script=contents/main.qml
24 | X-Liri-StatusAreaExtension-Order=0
25 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.User
26 | X-Liri-PluginInfo-Category=StatusAreaExtensions
27 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
28 | X-Liri-PluginInfo-Version=1.0.0
29 | X-Liri-PluginInfo-Website=https://liri.io
30 | X-Liri-PluginInfo-License=GPL-3.0-or-later
31 | X-Liri-PluginInfo-EnabledByDefault=true
32 |
--------------------------------------------------------------------------------
/src/sddm/images/hibernate.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/helper/images/hibernate.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/pagemodel.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2017 Michael Spencer
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "pagemodel.h"
8 |
9 | PageModel::PageModel(QObject *parent)
10 | : QSortFilterProxyModel(parent)
11 | {
12 | }
13 |
14 | bool PageModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
15 | {
16 | Q_UNUSED(sourceParent)
17 |
18 | return sourceRow >= m_startIndex && sourceRow < m_startIndex + m_limitCount;
19 | }
20 |
21 | int PageModel::startIndex() const { return m_startIndex; }
22 |
23 | int PageModel::limitCount() const { return m_limitCount; }
24 |
25 | void PageModel::setStartIndex(int startIndex)
26 | {
27 | if (startIndex != m_startIndex) {
28 | m_startIndex = startIndex;
29 | invalidateFilter();
30 | emit startIndexChanged();
31 | }
32 | }
33 |
34 | void PageModel::setLimitCount(int limitCount)
35 | {
36 | if (limitCount != m_limitCount) {
37 | m_limitCount = limitCount;
38 | invalidateFilter();
39 | emit limitCountChanged();
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/compositor/qml/desktop/SessionLocker.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import QtQuick.Layouts
8 | import Fluid.Controls as FluidControls
9 |
10 | Rectangle {
11 | color: "black"
12 |
13 | TapHandler {
14 | acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
15 | cursorShape: Qt.ArrowCursor
16 | }
17 |
18 | HoverHandler {
19 | cursorShape: Qt.ArrowCursor
20 | }
21 |
22 | ColumnLayout {
23 | anchors.centerIn: parent
24 |
25 | FluidControls.Placeholder {
26 | Layout.alignment: Qt.AlignVCenter
27 |
28 | icon.source: FluidControls.Utils.iconUrl("action/lock")
29 | text: qsTr("Session Locked")
30 | subText: qsTr("The session has been locked")
31 | }
32 |
33 | Button {
34 | Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
35 |
36 | text: qsTr("Log Out")
37 |
38 | onClicked: liriCompositor.quit()
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/imports/notifications/plugin.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include
6 |
7 | #include "notificationsimageprovider.h"
8 | #include "notificationsmodel.h"
9 |
10 | class LiriShellNotificationsPlugin : public QQmlExtensionPlugin
11 | {
12 | Q_OBJECT
13 | Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
14 | public:
15 | void initializeEngine(QQmlEngine *engine, const char *uri) override
16 | {
17 | // @uri Liri.Shell.Notifications
18 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.Shell.Notifications"));
19 |
20 | engine->addImageProvider(QStringLiteral("notifications"),
21 | new NotificationsImageProvider());
22 | }
23 |
24 | void registerTypes(const char *uri) override
25 | {
26 | // @uri Liri.Shell.Notifications
27 | Q_ASSERT(QLatin1String(uri) == QLatin1String("Liri.Shell.Notifications"));
28 |
29 | qmlRegisterType(uri, 1, 0, "NotificationsModel");
30 | }
31 | };
32 |
33 | #include "plugin.moc"
34 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/datetime/metadata.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | Name=Date and time
4 | Name[de]=Datum und Uhrzeit
5 | Name[lt]=Data ir laikas
6 | Name[nl]=Datum en tijd
7 | Name[pt_BR]=Data e hora
8 | Name[tr]=Tarih ve saat
9 | Comment=Current date and time
10 | Comment[de]=Aktuelles Datum und Uhrzeit
11 | Comment[lt]=Dabartinė data ir laikas
12 | Comment[nl]=Huidige datum en tijd
13 | Comment[pt_BR]=Data e hora atual
14 | Comment[tr]=Geçerli tarih ve saat
15 | Keywords=Date;Time;
16 | Keywords[de]=Datum;Zeit;
17 | Keywords[lt]=Data;Laikas;
18 | Keywords[nl]=Datum;Tijd;
19 | Keywords[pt_BR]=Data;Hora;
20 | Keywords[tr]=Tarih;Saat;
21 | OnlyShowIn=X-Liri;
22 | X-Liri-ServiceType=StatusAreaExtension
23 | X-Liri-StatusAreaExtension-Script=contents/main.qml
24 | X-Liri-StatusAreaExtension-Order=1
25 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.DateTime
26 | X-Liri-PluginInfo-Category=StatusAreaExtensions
27 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
28 | X-Liri-PluginInfo-Version=1.0.0
29 | X-Liri-PluginInfo-Website=https://liri.io
30 | X-Liri-PluginInfo-License=GPL-3.0-or-later
31 | X-Liri-PluginInfo-EnabledByDefault=true
32 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/notifications/metadata.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | Name=Notifications
4 | Name[de]=Benachrichtigungen
5 | Name[lt]=Pranešimai
6 | Name[nl]=Meldingen
7 | Name[pt_BR]=Notificações
8 | Name[tr]=Bildirimler
9 | Comment=Show notifications
10 | Comment[de]=Benachrichtigungen anzeigen
11 | Comment[lt]=Rodyti pranešimus
12 | Comment[nl]=Meldingen tonen
13 | Comment[pt_BR]=Exibir notificações
14 | Comment[tr]=Bildirimleri göster
15 | Keywords=Notifications;
16 | Keywords[de]=Benachrichtigungen;
17 | Keywords[lt]=Pranešimai;
18 | Keywords[nl]=Meldingen;
19 | Keywords[pt_BR]=Notificações;
20 | Keywords[tr]=Bildirimler;
21 | OnlyShowIn=X-Liri;
22 | X-Liri-ServiceType=StatusAreaExtension
23 | X-Liri-StatusAreaExtension-Script=contents/main.qml
24 | X-Liri-StatusAreaExtension-Order=2
25 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.Notifications
26 | X-Liri-PluginInfo-Category=StatusAreaExtensions
27 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
28 | X-Liri-PluginInfo-Version=1.0.0
29 | X-Liri-PluginInfo-Website=https://liri.io
30 | X-Liri-PluginInfo-License=GPL-3.0-or-later
31 | X-Liri-PluginInfo-EnabledByDefault=true
32 |
--------------------------------------------------------------------------------
/src/sddm/dummydata/sddm.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 |
3 | QtObject {
4 | property bool canPowerOff: true
5 | property bool canReboot: true
6 | property bool canSuspend: true
7 | property bool canHibernate: true
8 | property bool canHybridSleep: true
9 | property string hostname: "MyHostname"
10 |
11 | signal loginFailed()
12 | signal loginSucceeded()
13 |
14 | function powerOff() {
15 | console.log("SDDM - POWERING OFF");
16 | }
17 | function reboot() {
18 | console.log("SDDM - REBOOTING");
19 | }
20 | function suspend() {
21 | console.log("SDDM - SUSPEND");
22 | }
23 | function hibernate() {
24 | console.log("SDDM - HIBERNATE");
25 | }
26 | function hybridSleep() {
27 | console.log("SDDM - HYBRID SLEEP");
28 | }
29 |
30 | function login(user, password, sessionIndex) {
31 | console.log("SDDM - logging into session index " + sessionIndex + " as [" + user + "] [" + password + "]");
32 |
33 | // Login
34 | if (user == "plfiorini" && password == "password")
35 | loginSucceeded();
36 | else
37 | loginFailed();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsserver.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #include "notificationsadaptor.h"
6 | #include "notificationsserver.h"
7 |
8 | Q_GLOBAL_STATIC(NotificationsServer, globalServer)
9 |
10 | NotificationsServer::NotificationsServer(QObject *parent)
11 | : QObject(parent)
12 | , m_adaptor(new NotificationsAdaptor(this))
13 | {
14 | qRegisterMetaType("NotificationItem*");
15 |
16 | m_adaptor->registerService();
17 | }
18 |
19 | NotificationsServer::~NotificationsServer()
20 | {
21 | if (m_adaptor) {
22 | m_adaptor->unregisterService();
23 | m_adaptor->deleteLater();
24 | m_adaptor = nullptr;
25 | }
26 | }
27 |
28 | void NotificationsServer::invokeAction(uint id, const QString &actionId)
29 | {
30 | Q_EMIT m_adaptor->ActionInvoked(id, actionId);
31 | }
32 |
33 | void NotificationsServer::closeNotification(uint id)
34 | {
35 | m_adaptor->CloseNotification(id);
36 | }
37 |
38 | NotificationsServer *NotificationsServer::instance()
39 | {
40 | return globalServer;
41 | }
42 |
--------------------------------------------------------------------------------
/src/imports/storage/storagemodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef STORAGEMODEL_H
6 | #define STORAGEMODEL_H
7 |
8 | #include
9 |
10 | class StorageDevice;
11 |
12 | class StorageModel : public QAbstractListModel
13 | {
14 | Q_OBJECT
15 | Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
16 | public:
17 | enum Roles {
18 | StorageDeviceRole = Qt::UserRole + 1,
19 | UdiRole,
20 | NameRole,
21 | IconNameRole,
22 | FilePathRole,
23 | IsMountedRole,
24 | IsIgnoredRole
25 | };
26 |
27 | explicit StorageModel(QObject *parent = nullptr);
28 |
29 | QHash roleNames() const override;
30 | int rowCount(const QModelIndex &parent = QModelIndex()) const override;
31 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
32 |
33 | Q_SIGNALS:
34 | void countChanged();
35 |
36 | private:
37 | QVector m_devices;
38 | QMap m_devicesMap;
39 | };
40 |
41 | #endif // STORAGEMODEL_H
42 |
--------------------------------------------------------------------------------
/src/imports/notifications/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | ecm_add_qml_module(NotificationsServerQmlPlugin
5 | URI Liri.Shell.Notifications
6 | VERSION 1.0
7 | CLASS_NAME LiriShellNotificationsPlugin
8 | NO_GENERATE_PLUGIN_SOURCE
9 | DEPENDENCIES QtQuick
10 | )
11 |
12 | target_compile_definitions(NotificationsServerQmlPlugin
13 | PRIVATE PROJECT_VERSION="${PROJECT_VERSION}"
14 | )
15 |
16 | target_sources(NotificationsServerQmlPlugin
17 | PRIVATE
18 | notificationsadaptor.cpp notificationsadaptor.h
19 | notificationsmodel.cpp notificationsmodel.h
20 | notificationsimageprovider.cpp notificationsimageprovider.h
21 | notificationsimagesstorage.cpp notificationsimagesstorage.h
22 | notificationsimageutils.cpp notificationsimageutils.h
23 | notificationsserver.cpp notificationsserver.h
24 | plugin.cpp
25 | )
26 |
27 | target_link_libraries(NotificationsServerQmlPlugin
28 | PRIVATE
29 | Qt6::DBus
30 | Qt6::Qml
31 | Qt6::Quick
32 | )
33 |
34 | ecm_finalize_qml_module(NotificationsServerQmlPlugin)
35 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/appusage.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2017 Michael Spencer
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include
6 | #include
7 |
8 | #include "appusage.h"
9 |
10 | AppUsage::AppUsage(const QString &appId, QObject *parent)
11 | : QObject(parent)
12 | , appId(appId)
13 | {
14 | m_db = QSqlDatabase::database(QStringLiteral("app_usage"));
15 | }
16 |
17 | void AppUsage::save() const
18 | {
19 | if (!m_db.isOpen())
20 | return;
21 |
22 | QSqlQuery query(m_db);
23 | query.prepare(QStringLiteral("INSERT OR REPLACE INTO app_usage VALUES (:id, :last_seen, :score)"));
24 | query.bindValue(QStringLiteral(":id"), appId);
25 | query.bindValue(QStringLiteral(":last_seen"), lastSeen.toSecsSinceEpoch());
26 | query.bindValue(QStringLiteral(":score"), score);
27 | query.exec();
28 | }
29 |
30 | void AppUsage::destroy() const
31 | {
32 | if (!m_db.isOpen())
33 | return;
34 |
35 | QSqlQuery query(m_db);
36 | query.prepare(QStringLiteral("DELETE FROM app_usage WHERE app_id = :id"));
37 | query.bindValue(QStringLiteral(":id"), appId);
38 | query.exec();
39 | }
40 |
--------------------------------------------------------------------------------
/src/compositor/application.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #pragma once
6 |
7 | #include
8 | #include
9 | #include
10 |
11 | QT_FORWARD_DECLARE_CLASS(QQmlApplicationEngine)
12 |
13 | class ScreenSaver;
14 | class SessionManager;
15 |
16 | class Application : public QObject
17 | {
18 | Q_OBJECT
19 | public:
20 | explicit Application(QObject *parent = nullptr);
21 |
22 | QString screenConfigurationFileName() const;
23 | void setScreenConfigurationFileName(const QString &fileName);
24 |
25 | void setUrl(const QUrl &url);
26 |
27 | protected:
28 | void customEvent(QEvent *event) override;
29 |
30 | private:
31 | QUrl m_url;
32 | QQmlApplicationEngine *m_appEngine;
33 | SessionManager *m_sessionManager;
34 | bool m_failSafe;
35 | bool m_started;
36 | QString m_screenConfigFileName;
37 |
38 | void verifyXdgRuntimeDir();
39 |
40 | private Q_SLOTS:
41 | void startup();
42 | void shutdown();
43 | void objectCreated(QObject *object, const QUrl &);
44 | };
45 |
46 | class StartupEvent : public QEvent
47 | {
48 | public:
49 | StartupEvent();
50 | };
51 |
--------------------------------------------------------------------------------
/src/imports/compositor/screencast.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef SCREENCAST_H
6 | #define SCREENCAST_H
7 |
8 | #include
9 |
10 | QT_FORWARD_DECLARE_CLASS(QScreen)
11 |
12 | class ScreenCast : public QObject
13 | {
14 | Q_OBJECT
15 | public:
16 | explicit ScreenCast(QObject *parent = nullptr);
17 |
18 | Q_INVOKABLE void enable(QScreen *screen);
19 | Q_INVOKABLE void disable(QScreen *screen);
20 |
21 | Q_SIGNALS:
22 | void frameAvailable(QScreen *screen,
23 | const QSize &size, const QPoint &offset,
24 | quint32 drmFormat, quint64 modifier,
25 | quint32 numObjects);
26 | void objectAvailable(QScreen *screen,
27 | quint32 index, quint32 fd, quint32 size,
28 | quint32 offset, quint32 stride,
29 | quint32 planeIndex);
30 | void captureReady(QScreen *screen, quint64 tv_sec, quint32 tv_nsec);
31 |
32 | protected:
33 | bool eventFilter(QObject *obj, QEvent *event) override;
34 | };
35 |
36 | #endif // SCREENCAST_H
37 |
--------------------------------------------------------------------------------
/src/sddm/dummydata/userModel.qml:
--------------------------------------------------------------------------------
1 | import QtQuick
2 |
3 | ListModel {
4 | id: userModel
5 |
6 | property int lastIndex: 1
7 |
8 | ListElement {
9 | name: "plfiorini"
10 | realName: "Pier Luigi Fiorini"
11 | icon: "/usr/share/pixmaps/faces/grapes.jpg"
12 | homeDir: "/home/plfiorini"
13 | }
14 | ListElement {
15 | name: "ned"
16 | realName: "Eddard Stark"
17 | icon: "/home/ned/.face.icon"
18 | homeDir: "/home/ned"
19 | }
20 | ListElement {
21 | name: "kinginthenorth"
22 | realName: "Robb Stark"
23 | icon: ""
24 | homeDir: ""
25 | }
26 | ListElement {
27 | name: "jon"
28 | realName: "Jon Snow"
29 | icon: ""
30 | homeDir:""
31 | }
32 | ListElement {
33 | name: "imp"
34 | realName: "Tyrion Lannister"
35 | icon: ""
36 | homeDir: ""
37 | }
38 |
39 | Component.onCompleted: {
40 | for (var i = 0; i < userModel.count; i++) {
41 | if (userModel.get(i).name == "imp") {
42 | userModel.get(i).icon = Qt.resolvedUrl("tyrion.png")
43 | break
44 | }
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/translations/statusarea/user/tr.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Emin Tufan Çetin , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Emin Tufan Çetin , 2021\n"
16 | "Language-Team: Turkish (https://app.transifex.com/lirios/teams/71982/tr/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: tr\n"
21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "User"
27 | msgstr "Kullanıcı"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current user picture"
33 | msgstr "Geçerli kullanıcı resmi"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "User;"
39 | msgstr "Kullanıcı;"
40 |
--------------------------------------------------------------------------------
/src/imports/shell/LoginGreeter.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Layouts
7 | import QtQuick.Controls
8 | import Fluid.Controls
9 | import Liri.Shell
10 |
11 | ListView {
12 | id: usersListView
13 |
14 | property size itemSize: Qt.size(200, 220)
15 | property size itemSelectedSize: Qt.size(230, 280)
16 |
17 | signal loginRequested(string userName, string password)
18 | signal loginSucceeded()
19 | signal loginFailed(string message)
20 |
21 | ScrollIndicator.horizontal: ScrollIndicator {}
22 |
23 | width: count > 1 ? itemSelectedSize.width + ((itemSize.width + spacing) * Math.min(count - 1, 3)) : itemSelectedSize.width + (spacing * 2)
24 | height: itemSelectedSize.height + spacing
25 | orientation: ListView.Horizontal
26 | spacing: Units.smallSpacing
27 | keyNavigationWraps: true
28 | focus: true
29 | clip: true
30 | highlightMoveVelocity: 800
31 | currentIndex: -1
32 | delegate: UserDelegate {
33 | id: userDelegate
34 | onAccepted: usersListView.loginRequested(userName, field.text)
35 | }
36 |
37 | Component.onCompleted: currentIndex = 0
38 | }
39 |
--------------------------------------------------------------------------------
/src/sddm/components/Indicator.qml:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | * This file is part of Liri.
3 | *
4 | * Copyright (C) 2014-2016 Pier Luigi Fiorini
5 | *
6 | * Author(s):
7 | * Pier Luigi Fiorini
8 | *
9 | * $BEGIN_LICENSE:GPL3+$
10 | *
11 | * This program is free software: you can redistribute it and/or modify
12 | * it under the terms of the GNU General Public License as published by
13 | * the Free Software Foundation, either version 3 of the License, or
14 | * (at your option) any later version.
15 | *
16 | * This program is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 | * GNU General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU General Public License
22 | * along with this program. If not, see .
23 | *
24 | * $END_LICENSE$
25 | ***************************************************************************/
26 |
27 | import QtQuick
28 | import QtQuick.Controls
29 |
30 | MouseArea {
31 | hoverEnabled: true
32 |
33 | ToolTip.visible: containsMouse
34 | }
35 |
--------------------------------------------------------------------------------
/translations/statusarea/user/de.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Ettore Atalan , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Ettore Atalan , 2021\n"
16 | "Language-Team: German (https://app.transifex.com/lirios/teams/71982/de/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: de\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "User"
27 | msgstr "Benutzer"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current user picture"
33 | msgstr "Aktuelles Benutzerbild"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "User;"
39 | msgstr "Benutzer;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/user/nl.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Heimen Stoffels , 2022
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Heimen Stoffels , 2022\n"
16 | "Language-Team: Dutch (https://app.transifex.com/lirios/teams/71982/nl/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: nl\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "User"
27 | msgstr "Gebruiker"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current user picture"
33 | msgstr "Huidige gebruikersfoto"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "User;"
39 | msgstr "Gebruiker;"
40 |
--------------------------------------------------------------------------------
/src/imports/storage/storagedevice.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef STORAGEDEVICE_H
6 | #define STORAGEDEVICE_H
7 |
8 | #include
9 |
10 | #include
11 |
12 | class StorageDevice : public QObject
13 | {
14 | Q_OBJECT
15 | Q_PROPERTY(QString udi READ udi CONSTANT)
16 | Q_PROPERTY(QString name READ name CONSTANT)
17 | Q_PROPERTY(QString iconName READ iconName CONSTANT)
18 | Q_PROPERTY(QString filePath READ filePath CONSTANT)
19 | Q_PROPERTY(bool mounted READ isMounted NOTIFY mountedChanged)
20 | Q_PROPERTY(bool ignored READ isIgnored CONSTANT)
21 | public:
22 | explicit StorageDevice(const QString &udi, QObject *parent = nullptr);
23 |
24 | QString udi() const;
25 | QString name() const;
26 | QString iconName() const;
27 | QString filePath() const;
28 |
29 | bool isMounted() const;
30 | Q_INVOKABLE void mount();
31 | Q_INVOKABLE void unmount();
32 |
33 | bool isIgnored() const;
34 |
35 | Q_SIGNALS:
36 | void mountedChanged();
37 |
38 | private:
39 | Solid::Device m_device;
40 | QString m_filePath;
41 | bool m_ignored;
42 | };
43 |
44 | #endif // STORAGEDEVICE_H
45 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/tasksmodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018-2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef TASKSMODEL_H
6 | #define TASKSMODEL_H
7 |
8 | #include
9 | #include
10 |
11 | class Application;
12 | class ApplicationsModel;
13 |
14 | class TasksModel : public QSortFilterProxyModel
15 | {
16 | Q_OBJECT
17 | Q_PROPERTY(bool hasMaximizedWindow READ hasMaximizedWindow NOTIFY hasMaximizedWindowChanged)
18 | public:
19 | explicit TasksModel(QObject *parent = nullptr);
20 |
21 | void setSourceModel(QAbstractItemModel *sourceModel) override;
22 |
23 | bool hasMaximizedWindow() const;
24 |
25 | Q_INVOKABLE Application *get(int row) const;
26 | Q_INVOKABLE int indexFromAppId(const QString &appId) const;
27 |
28 | Q_SIGNALS:
29 | void hasMaximizedWindowChanged();
30 |
31 | protected:
32 | bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
33 | bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
34 |
35 | private:
36 | ApplicationsModel *m_appsModel = nullptr;
37 | };
38 |
39 | QML_DECLARE_TYPE(TasksModel)
40 |
41 | #endif // TASKSMODEL_H
42 |
--------------------------------------------------------------------------------
/src/plugins/statusarea/storage/metadata.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=X-Liri-Service
3 | Name=Storage
4 | Name[de]=Speicher
5 | Name[lt]=Kaupiklis
6 | Name[nl]=Opslag
7 | Name[pt_BR]=Armazenamento
8 | Name[tr]=Depolama
9 | Comment=Access storage volumes
10 | Comment[de]=Auf Speichervolumen zugreifen
11 | Comment[lt]=Gauti prieigą prie kaupiklio tomų
12 | Comment[nl]=Toegang tot schijven
13 | Comment[pt_BR]=Acessar volumes de armazenamento
14 | Comment[tr]=Depolama birimlerine eriş
15 | Keywords=Storage;Disk;
16 | Keywords[de]=Speicher;Festplatte;
17 | Keywords[lt]=Kaupiklis;Saugykla;Diskas;Atminties įrenginys;Atminties irenginys;
18 | Keywords[nl]=Opslag;Schijf;
19 | Keywords[pt_BR]=Armazenamento;Disco;
20 | Keywords[tr]=Depolama;Biriktirme;Saklama;Disk;Teker;
21 | OnlyShowIn=X-Liri;
22 | X-Liri-ServiceType=StatusAreaExtension
23 | X-Liri-StatusAreaExtension-Script=contents/main.qml
24 | X-Liri-StatusAreaExtension-Order=3
25 | X-Liri-PluginInfo-Name=io.liri.StatusAreaExtensions.Storage
26 | X-Liri-PluginInfo-Category=StatusAreaExtensions
27 | X-Liri-PluginInfo-Author=Pier Luigi Fiorini
28 | X-Liri-PluginInfo-Version=1.0.0
29 | X-Liri-PluginInfo-Website=https://liri.io
30 | X-Liri-PluginInfo-License=GPL-3.0-or-later
31 | X-Liri-PluginInfo-EnabledByDefault=true
32 |
--------------------------------------------------------------------------------
/src/compositor/qml/windows/ChromeMenu.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Controls
7 | import Fluid.Controls
8 |
9 | Menu {
10 | focus: false
11 |
12 | MenuItem {
13 | focusPolicy: Qt.NoFocus
14 | text: qsTr("Minimize")
15 | onClicked: chrome.window.minimized = true
16 | }
17 |
18 | MenuItem {
19 | focusPolicy: Qt.NoFocus
20 | text: qsTr("Restore")
21 | height: chrome.window.maximized ? implicitHeight : 0
22 | onClicked: chrome.window.sendUnmaximized()
23 | }
24 |
25 | MenuItem {
26 | focusPolicy: Qt.NoFocus
27 | text: qsTr("Maximize")
28 | height: chrome.window.maximized ? 0 : implicitHeight
29 | onClicked: chrome.window.sendMaximized(shellSurfaceItem.output)
30 | }
31 |
32 | MenuSeparator {}
33 |
34 | MenuItem {
35 | focusPolicy: Qt.NoFocus
36 | text: qsTr("Move")
37 | }
38 |
39 | MenuItem {
40 | focusPolicy: Qt.NoFocus
41 | text: qsTr("Resize")
42 | }
43 |
44 | MenuSeparator {}
45 |
46 | MenuItem {
47 | text: qsTr("Close")
48 | onClicked: chrome.window.sendClose()
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/tr.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Emin Tufan Çetin , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Emin Tufan Çetin , 2021\n"
16 | "Language-Team: Turkish (https://app.transifex.com/lirios/teams/71982/tr/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: tr\n"
21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Date and time"
27 | msgstr "Tarih ve saat"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current date and time"
33 | msgstr "Geçerli tarih ve saat"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Date;Time;"
39 | msgstr "Tarih;Saat;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/nl.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Heimen Stoffels , 2022
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Heimen Stoffels , 2022\n"
16 | "Language-Team: Dutch (https://app.transifex.com/lirios/teams/71982/nl/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: nl\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Notifications"
27 | msgstr "Meldingen"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Show notifications"
33 | msgstr "Meldingen tonen"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Notifications;"
39 | msgstr "Meldingen;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/nl.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Heimen Stoffels , 2022
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Heimen Stoffels , 2022\n"
16 | "Language-Team: Dutch (https://app.transifex.com/lirios/teams/71982/nl/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: nl\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Storage"
27 | msgstr "Opslag"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Access storage volumes"
33 | msgstr "Toegang tot schijven"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Storage;Disk;"
39 | msgstr "Opslag;Schijf;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/nl.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Heimen Stoffels , 2022
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Heimen Stoffels , 2022\n"
16 | "Language-Team: Dutch (https://app.transifex.com/lirios/teams/71982/nl/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: nl\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Date and time"
27 | msgstr "Datum en tijd"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current date and time"
33 | msgstr "Huidige datum en tijd"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Date;Time;"
39 | msgstr "Datum;Tijd;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/tr.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Emin Tufan Çetin , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Emin Tufan Çetin , 2021\n"
16 | "Language-Team: Turkish (https://app.transifex.com/lirios/teams/71982/tr/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: tr\n"
21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Notifications"
27 | msgstr "Bildirimler"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Show notifications"
33 | msgstr "Bildirimleri göster"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Notifications;"
39 | msgstr "Bildirimler;"
40 |
--------------------------------------------------------------------------------
/src/imports/compositor/desktoplayout.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef DESKTOPLAYOUT_H
6 | #define DESKTOPLAYOUT_H
7 |
8 | #include
9 |
10 | using namespace Aurora::Compositor;
11 |
12 | class DesktopLayout : public WaylandSurfaceLayout
13 | {
14 | Q_OBJECT
15 | public:
16 | enum SurfaceRole {
17 | NoRole = 0,
18 | OsdRole,
19 | RunDialogRole,
20 | AuthDialogRole,
21 | LogoutDialogRole,
22 | PowerOffDialogRole,
23 | WindowSwitcherRole,
24 | };
25 | Q_ENUM(SurfaceRole)
26 |
27 | enum Layer {
28 | NoLayer = 0,
29 | BackgroundLayer,
30 | BottomLayer,
31 | WindowsLayer,
32 | TopLayer,
33 | DialogLayer,
34 | FullscreenLayer,
35 | LockScreenLayer,
36 | OverlayLayer
37 | };
38 | Q_ENUM(Layer);
39 |
40 | DesktopLayout(QQuickItem *parent = nullptr);
41 |
42 | SurfaceRole getSurfaceRole(QQuickItem *item) const;
43 |
44 | protected:
45 | Layer getLayer(QQuickItem *item) const;
46 | bool sortItems(QQuickItem *left, QQuickItem *right) override;
47 | };
48 |
49 | #endif // DESKTOPLAYOUT_H
50 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsmodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef NOTIFICATIONSMODEL_H
6 | #define NOTIFICATIONSMODEL_H
7 |
8 | #include
9 |
10 | #include "notificationsserver.h"
11 |
12 | class NotificationsModel : public QAbstractListModel
13 | {
14 | Q_OBJECT
15 | public:
16 | enum Role {
17 | IdRole = Qt::UserRole,
18 | AppNameRole,
19 | AppIconRole,
20 | IconUrlRole,
21 | HasIconRole,
22 | SummaryRole,
23 | BodyRole,
24 | ActionsRole,
25 | IsPersistentRole,
26 | ExpireTimeoutRole,
27 | HintsRole
28 | };
29 |
30 | explicit NotificationsModel(QObject *parent = nullptr);
31 |
32 | int rowCount(const QModelIndex &parent = QModelIndex()) const override;
33 | virtual QHash roleNames() const override;
34 | QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
35 |
36 | Q_INVOKABLE void invokeAction(uint id, const QString &actionId);
37 | Q_INVOKABLE void closeNotification(uint id);
38 |
39 | private:
40 | QList m_items;
41 | };
42 |
43 | #endif // NOTIFICATIONSMODEL_H
44 |
--------------------------------------------------------------------------------
/src/sddm/components/VirtualKeyboard.qml:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | * This file is part of Liri.
3 | *
4 | * Copyright (C) 2018 Pier Luigi Fiorini
5 | *
6 | * $BEGIN_LICENSE:GPL3+$
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License for more details.
17 | *
18 | * You should have received a copy of the GNU General Public License
19 | * along with this program. If not, see .
20 | *
21 | * $END_LICENSE$
22 | ***************************************************************************/
23 |
24 | import QtQuick
25 | import QtQuick.VirtualKeyboard
26 |
27 | InputPanel {
28 | property bool activated: false
29 |
30 | width: parent.width
31 | active: activated && Qt.inputMethod.visible
32 | visible: active
33 | }
34 |
--------------------------------------------------------------------------------
/src/imports/compositor/waylandlirimodalv1.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020-2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef LIRI_SHELL_COMPOSITOR_WAYLANDLIRIMODALV1_H
6 | #define LIRI_SHELL_COMPOSITOR_WAYLANDLIRIMODALV1_H
7 |
8 | #include
9 |
10 | using namespace Aurora::Compositor;
11 |
12 | class WaylandLiriModalManagerV1Private;
13 |
14 | class WaylandLiriModalManagerV1
15 | : public WaylandCompositorExtensionTemplate
16 | {
17 | Q_OBJECT
18 | Q_DECLARE_PRIVATE(WaylandLiriModalManagerV1)
19 | Q_PROPERTY(bool grabbed READ isGrabbed NOTIFY grabbedChanged)
20 | public:
21 | WaylandLiriModalManagerV1();
22 | WaylandLiriModalManagerV1(WaylandCompositor *compositor);
23 | ~WaylandLiriModalManagerV1();
24 |
25 | void initialize() override;
26 |
27 | bool isGrabbed() const;
28 |
29 | Q_INVOKABLE void sendDone();
30 |
31 | static const wl_interface *interface();
32 | static QByteArray interfaceName();
33 |
34 | Q_SIGNALS:
35 | void grabbedChanged();
36 |
37 | private:
38 | QScopedPointer const d_ptr;
39 | };
40 |
41 | #endif // LIRI_SHELL_COMPOSITOR_WAYLANDLIRIMODALV1_H
42 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/de.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Ettore Atalan , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Ettore Atalan , 2021\n"
16 | "Language-Team: German (https://app.transifex.com/lirios/teams/71982/de/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: de\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Date and time"
27 | msgstr "Datum und Uhrzeit"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current date and time"
33 | msgstr "Aktuelles Datum und Uhrzeit"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Date;Time;"
39 | msgstr "Datum;Zeit;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/de.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Ettore Atalan , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Ettore Atalan , 2021\n"
16 | "Language-Team: German (https://app.transifex.com/lirios/teams/71982/de/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: de\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Storage"
27 | msgstr "Speicher"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Access storage volumes"
33 | msgstr "Auf Speichervolumen zugreifen"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Storage;Disk;"
39 | msgstr "Speicher;Festplatte;"
40 |
--------------------------------------------------------------------------------
/src/imports/compositor/fpscounter.cpp:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #include "fpscounter.h"
6 |
7 | FpsCounter::FpsCounter(QQuickItem *parent)
8 | : QQuickItem(parent)
9 | {
10 | setFlag(QQuickItem::ItemHasContents, false);
11 |
12 | handleWindowChanged(window());
13 | connect(this, &QQuickItem::windowChanged, this, &FpsCounter::handleWindowChanged);
14 |
15 | startTimer(1000);
16 | m_timer.start();
17 | }
18 |
19 | qreal FpsCounter::framesPerSecond() const
20 | {
21 | return m_fps;
22 | }
23 |
24 | void FpsCounter::timerEvent(QTimerEvent *)
25 | {
26 | resetFramesPerSecond();
27 | m_counter = 0;
28 | m_timer.start();
29 | }
30 |
31 | void FpsCounter::resetFramesPerSecond()
32 | {
33 | m_fps = m_counter * 1000.0 / m_timer.elapsed();
34 | Q_EMIT framesPerSecondChanged();
35 | }
36 |
37 | void FpsCounter::handleWindowChanged(QQuickWindow *window)
38 | {
39 | if (!m_lastWindow.isNull())
40 | disconnect(m_lastWindowConnection);
41 |
42 | if (!window)
43 | return;
44 |
45 | m_lastWindow = window;
46 | m_lastWindowConnection = connect(window, &QQuickWindow::frameSwapped, this, [this] {
47 | m_counter++;
48 | });
49 | }
50 |
--------------------------------------------------------------------------------
/src/imports/mpris2/org.freedesktop.DBus.Properties.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/tr.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Emin Tufan Çetin , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Emin Tufan Çetin , 2021\n"
16 | "Language-Team: Turkish (https://app.transifex.com/lirios/teams/71982/tr/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: tr\n"
21 | "Plural-Forms: nplurals=2; plural=(n > 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Storage"
27 | msgstr "Depolama"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Access storage volumes"
33 | msgstr "Depolama birimlerine eriş"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Storage;Disk;"
39 | msgstr "Depolama;Biriktirme;Saklama;Disk;Teker;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/de.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Ettore Atalan , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Ettore Atalan , 2021\n"
16 | "Language-Team: German (https://app.transifex.com/lirios/teams/71982/de/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: de\n"
21 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Notifications"
27 | msgstr "Benachrichtigungen"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Show notifications"
33 | msgstr "Benachrichtigungen anzeigen"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Notifications;"
39 | msgstr "Benachrichtigungen;"
40 |
--------------------------------------------------------------------------------
/src/compositor/qml/error/ErrorOutput.qml:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | import QtQuick
6 | import QtQuick.Window
7 | import Aurora.Compositor
8 | import Liri.Shell.Compositor as LS
9 |
10 | LS.WaylandOutput {
11 | id: output
12 |
13 | readonly property bool primary: liriCompositor.defaultOutput === this
14 |
15 | window: Window {
16 | id: outputWindow
17 |
18 | x: output.position.x
19 | y: output.position.y
20 | width: output.geometry.width
21 | height: output.geometry.height
22 | flags: Qt.Window | Qt.FramelessWindowHint
23 | screen: output.screen ? Qt.application.screens[output.screen.screenIndex] : null
24 | color: "black"
25 | visible: true
26 |
27 | WaylandMouseTracker {
28 | id: mouseTracker
29 |
30 | anchors.fill: parent
31 | windowSystemCursorEnabled: containsMouse
32 |
33 | ErrorScreenView {
34 | id: screenView
35 | anchors.fill: parent
36 | }
37 |
38 | LS.WaylandCursorGrabber {
39 | seat: output.compositor.defaultSeat
40 | grab: mouseTracker.containsMouse
41 | }
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/pagemodel.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2017 Michael Spencer
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef PAGEMODEL_H
6 | #define PAGEMODEL_H
7 |
8 | #include
9 | #include
10 |
11 | /**
12 | * Provides a simple proxy model for accessing a subset, or "page," of data from a source model.
13 | * This is used by PagedGrid to provide models to each page with the appropriate subset of data.
14 | */
15 | class PageModel : public QSortFilterProxyModel
16 | {
17 | Q_OBJECT
18 | Q_PROPERTY(int startIndex READ startIndex WRITE setStartIndex NOTIFY startIndexChanged)
19 | Q_PROPERTY(int limitCount READ limitCount WRITE setLimitCount NOTIFY limitCountChanged)
20 | public:
21 | PageModel(QObject *parent = nullptr);
22 |
23 | int startIndex() const;
24 | int limitCount() const;
25 |
26 | bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
27 |
28 | public Q_SLOTS:
29 | void setStartIndex(int startIndex);
30 | void setLimitCount(int limitCount);
31 |
32 | Q_SIGNALS:
33 | void startIndexChanged();
34 | void limitCountChanged();
35 |
36 | private:
37 | int m_startIndex = 0;
38 | int m_limitCount = 0;
39 | };
40 |
41 | QML_DECLARE_TYPE(PageModel)
42 |
43 | #endif // PAGEMODEL_H
44 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/lt.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Moo, 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Moo, 2021\n"
16 | "Language-Team: Lithuanian (https://app.transifex.com/lirios/teams/71982/lt/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: lt\n"
21 | "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Notifications"
27 | msgstr "Pranešimai"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Show notifications"
33 | msgstr "Rodyti pranešimus"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Notifications;"
39 | msgstr "Pranešimai;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/user/lt.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Moo, 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Moo, 2021\n"
16 | "Language-Team: Lithuanian (https://app.transifex.com/lirios/teams/71982/lt/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: lt\n"
21 | "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "User"
27 | msgstr "Naudotojas"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current user picture"
33 | msgstr "Dabartinio naudotojo paveikslas"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "User;"
39 | msgstr "Naudotojas;naudotojai;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/user/pt_BR.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Luiz Fernando Ranghetti , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Luiz Fernando Ranghetti , 2021\n"
16 | "Language-Team: Portuguese (Brazil) (https://app.transifex.com/lirios/teams/71982/pt_BR/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: pt_BR\n"
21 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "User"
27 | msgstr "Usuário"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current user picture"
33 | msgstr "Imagem atual do usuário"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "User;"
39 | msgstr "Usuário;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/lt.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Moo, 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Moo, 2021\n"
16 | "Language-Team: Lithuanian (https://app.transifex.com/lirios/teams/71982/lt/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: lt\n"
21 | "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Date and time"
27 | msgstr "Data ir laikas"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current date and time"
33 | msgstr "Dabartinė data ir laikas"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Date;Time;"
39 | msgstr "Data;Laikas;"
40 |
--------------------------------------------------------------------------------
/src/lockscreen/authenticator.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2018-2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef AUTHENTICATOR_H
6 | #define AUTHENTICATOR_H
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | extern "C" {
13 | struct pam_message;
14 | struct pam_response;
15 | }
16 |
17 | class Authenticator : public QObject
18 | {
19 | Q_OBJECT
20 | QML_ELEMENT
21 | QML_SINGLETON
22 | public:
23 | Authenticator(QObject *parent = nullptr);
24 | ~Authenticator();
25 |
26 | Q_INVOKABLE void authenticate(const QString &password, const QJSValue &callback);
27 |
28 | static Authenticator *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine);
29 |
30 | public Q_SLOTS:
31 |
32 | Q_SIGNALS:
33 | void authenticationSucceded();
34 | void authenticationFailed();
35 | void authenticationError();
36 |
37 | private:
38 | bool m_authRequested = false;
39 | QJSValue m_callback;
40 | pam_response *m_response = nullptr;
41 |
42 | void actualAuthentication(const QString &password);
43 | void sendReply(bool succeeded);
44 |
45 | static int conversationHandler(int num, const pam_message **message,
46 | pam_response **response, void *data);
47 | };
48 |
49 | #endif // AUTHENTICATOR_H
50 |
--------------------------------------------------------------------------------
/translations/statusarea/datetime/pt_BR.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Luiz Fernando Ranghetti , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Luiz Fernando Ranghetti , 2021\n"
16 | "Language-Team: Portuguese (Brazil) (https://app.transifex.com/lirios/teams/71982/pt_BR/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: pt_BR\n"
21 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Date and time"
27 | msgstr "Data e hora"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Current date and time"
33 | msgstr "Data e hora atual"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Date;Time;"
39 | msgstr "Data;Hora;"
40 |
--------------------------------------------------------------------------------
/translations/statusarea/notifications/pt_BR.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Luiz Fernando Ranghetti , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Luiz Fernando Ranghetti , 2021\n"
16 | "Language-Team: Portuguese (Brazil) (https://app.transifex.com/lirios/teams/71982/pt_BR/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: pt_BR\n"
21 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Notifications"
27 | msgstr "Notificações"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Show notifications"
33 | msgstr "Exibir notificações"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Notifications;"
39 | msgstr "Notificações;"
40 |
--------------------------------------------------------------------------------
/src/imports/storage/plugins.qmltypes:
--------------------------------------------------------------------------------
1 | import QtQuick.tooling 1.2
2 |
3 | // This file describes the plugin-supplied types contained in the library.
4 | // It is used for QML tooling purposes only.
5 | //
6 | // This file was auto-generated by:
7 | // 'qmlplugindump-qt5 -v -noinstantiate -notrelocatable Liri.Storage 1.0'
8 |
9 | Module {
10 | dependencies: ["QtQuick 2.8"]
11 | Component {
12 | name: "StorageDevice"
13 | prototype: "QObject"
14 | exports: ["Liri.Storage/StorageDevice 1.0"]
15 | isCreatable: false
16 | exportMetaObjectRevisions: [0]
17 | Property { name: "udi"; type: "string"; isReadonly: true }
18 | Property { name: "name"; type: "string"; isReadonly: true }
19 | Property { name: "iconName"; type: "string"; isReadonly: true }
20 | Property { name: "filePath"; type: "string"; isReadonly: true }
21 | Property { name: "mounted"; type: "bool"; isReadonly: true }
22 | Property { name: "ignored"; type: "bool"; isReadonly: true }
23 | Method { name: "mount" }
24 | Method { name: "unmount" }
25 | }
26 | Component {
27 | name: "StorageModel"
28 | prototype: "QAbstractListModel"
29 | exports: ["Liri.Storage/StorageModel 1.0"]
30 | exportMetaObjectRevisions: [0]
31 | Property { name: "count"; type: "int"; isReadonly: true }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/pt_BR.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Luiz Fernando Ranghetti , 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Luiz Fernando Ranghetti , 2021\n"
16 | "Language-Team: Portuguese (Brazil) (https://app.transifex.com/lirios/teams/71982/pt_BR/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: pt_BR\n"
21 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Storage"
27 | msgstr "Armazenamento"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Access storage volumes"
33 | msgstr "Acessar volumes de armazenamento"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Storage;Disk;"
39 | msgstr "Armazenamento;Disco;"
40 |
--------------------------------------------------------------------------------
/src/imports/compositor/waylandliricolorpickerv1.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020-2021 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef LIRI_SHELL_COMPOSITOR_WAYLANDLIRICOLORPICKERV1_H
6 | #define LIRI_SHELL_COMPOSITOR_WAYLANDLIRICOLORPICKERV1_H
7 |
8 | #include
9 |
10 | class WaylandLiriColorPickerManagerV1Private;
11 |
12 | using namespace Aurora::Compositor;
13 |
14 | class WaylandLiriColorPickerManagerV1
15 | : public WaylandCompositorExtensionTemplate
16 | {
17 | Q_OBJECT
18 | Q_DECLARE_PRIVATE(WaylandLiriColorPickerManagerV1)
19 | Q_PROPERTY(QString layerName READ layerName WRITE setLayerName NOTIFY layerNameChanged)
20 | public:
21 | WaylandLiriColorPickerManagerV1();
22 | WaylandLiriColorPickerManagerV1(WaylandCompositor *compositor);
23 | ~WaylandLiriColorPickerManagerV1();
24 |
25 | QString layerName() const;
26 | void setLayerName(const QString &layer);
27 |
28 | void initialize() override;
29 |
30 | static const wl_interface *interface();
31 | static QByteArray interfaceName();
32 |
33 | Q_SIGNALS:
34 | void layerNameChanged();
35 |
36 | private:
37 | QScopedPointer const d_ptr;
38 | };
39 |
40 | #endif // LIRI_SHELL_COMPOSITOR_WAYLANDLIRICOLORPICKERV1_H
41 |
--------------------------------------------------------------------------------
/translations/statusarea/storage/lt.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | # Translators:
7 | # Moo, 2021
8 | #
9 | #, fuzzy
10 | msgid ""
11 | msgstr ""
12 | "Project-Id-Version: PACKAGE VERSION\n"
13 | "Report-Msgid-Bugs-To: \n"
14 | "PO-Revision-Date: 2021-01-03 09:25+0000\n"
15 | "Last-Translator: Moo, 2021\n"
16 | "Language-Team: Lithuanian (https://app.transifex.com/lirios/teams/71982/lt/)\n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 | "Language: lt\n"
21 | "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
22 |
23 | #. (desktop-to-pot) "Name" entry
24 | #: metadata.desktop.in:3
25 | msgctxt "Name entry"
26 | msgid "Storage"
27 | msgstr "Kaupiklis"
28 |
29 | #. (desktop-to-pot) "Comment" entry
30 | #: metadata.desktop.in:4
31 | msgctxt "Comment entry"
32 | msgid "Access storage volumes"
33 | msgstr "Gauti prieigą prie kaupiklio tomų"
34 |
35 | #. (desktop-to-pot) "Keywords" entry
36 | #: metadata.desktop.in:5
37 | msgctxt "Keywords entry"
38 | msgid "Storage;Disk;"
39 | msgstr "Kaupiklis;Saugykla;Diskas;Atminties įrenginys;Atminties irenginys;"
40 |
--------------------------------------------------------------------------------
/src/imports/notifications/notificationsserver.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Pier Luigi Fiorini
2 | //
3 | // SPDX-License-Identifier: LGPL-3.0-or-later
4 |
5 | #ifndef NOTIFICATIONSSERVER_H
6 | #define NOTIFICATIONSSERVER_H
7 |
8 | #include
9 | #include
10 | #include
11 |
12 | class NotificationsAdaptor;
13 |
14 | class NotificationItem
15 | {
16 | public:
17 | explicit NotificationItem() = default;
18 |
19 | uint notificationId;
20 | QString appName;
21 | QString appIcon;
22 | QUrl iconUrl;
23 | bool hasIcon;
24 | QString summary;
25 | QString body;
26 | QVariantList actions;
27 | bool isPersistent;
28 | int expireTimeout;
29 | QVariantMap hints;
30 | };
31 |
32 | class NotificationsServer : public QObject
33 | {
34 | Q_OBJECT
35 | public:
36 | explicit NotificationsServer(QObject *parent = nullptr);
37 | ~NotificationsServer();
38 |
39 | void invokeAction(uint id, const QString &actionId);
40 | void closeNotification(uint id);
41 |
42 | static NotificationsServer *instance();
43 |
44 | Q_SIGNALS:
45 | void notificationAdded(NotificationItem *item);
46 | void notificationReplaced(NotificationItem *item);
47 | void notificationRemoved(uint id);
48 |
49 | private:
50 | NotificationsAdaptor *m_adaptor = nullptr;
51 | };
52 |
53 | #endif // NOTIFICATIONSSERVER_H
54 |
--------------------------------------------------------------------------------
/src/sddm/DesktopStill.qml:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | * This file is part of Liri.
3 | *
4 | * Copyright (C) 2014-2016 Pier Luigi Fiorini
5 | *
6 | * Author(s):
7 | * Pier Luigi Fiorini
8 | *
9 | * $BEGIN_LICENSE:GPL3+$
10 | *
11 | * This program is free software: you can redistribute it and/or modify
12 | * it under the terms of the GNU General Public License as published by
13 | * the Free Software Foundation, either version 3 of the License, or
14 | * (at your option) any later version.
15 | *
16 | * This program is distributed in the hope that it will be useful,
17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 | * GNU General Public License for more details.
20 | *
21 | * You should have received a copy of the GNU General Public License
22 | * along with this program. If not, see .
23 | *
24 | * $END_LICENSE$
25 | ***************************************************************************/
26 |
27 | import QtQuick
28 | import QtQuick.Controls.Material
29 |
30 | Rectangle {
31 | // TODO: We would show the last screenshot of the desktop, or
32 | // at least the user wallpaper if there wasn't a problem with
33 | // permissions
34 | color: Material.color(Material.Blue, Material.Shade800)
35 | }
36 |
--------------------------------------------------------------------------------
/src/imports/shell-private/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # SPDX-FileCopyrightText: 2024 Pier Luigi Fiorini
2 | # SPDX-License-Identifier: BSD-3-Clause
3 |
4 | find_package(Wayland REQUIRED)
5 |
6 | if(NOT TARGET Liri::Xdg)
7 | find_package(Liri1Xdg REQUIRED)
8 | endif()
9 | if(NOT TARGET Liri::AuroraPlatformHeaders)
10 | find_package(Liri1AuroraPlatformHeaders REQUIRED)
11 | endif()
12 | if(NOT TARGET Liri::AuroraCompositor)
13 | find_package(Liri1AuroraCompositor REQUIRED)
14 | endif()
15 |
16 | ecm_add_qml_module(ShellPrivateQmlPlugin
17 | URI Liri.private.shell
18 | VERSION 1.0
19 | CLASS_NAME ShellPlugin
20 | NO_GENERATE_PLUGIN_SOURCE
21 | DEPENDENCIES QtQuick
22 | )
23 |
24 | target_compile_definitions(ShellPrivateQmlPlugin PRIVATE LIBEXECDIR="${KDE_INSTALL_FULL_LIBEXECDIR}")
25 |
26 | target_sources(ShellPrivateQmlPlugin
27 | PRIVATE
28 | dbus/multimediakeysserver.cpp dbus/multimediakeysserver.h
29 | dbus/osdserver.cpp dbus/osdserver.h
30 | logging.cpp logging.h
31 | plugin.cpp
32 | )
33 |
34 | target_link_libraries(ShellPrivateQmlPlugin
35 | PRIVATE
36 | Qt6::Core
37 | Qt6::DBus
38 | Qt6::Gui
39 | Qt6::GuiPrivate
40 | Qt6::Qml
41 | Qt6::Quick
42 | Liri::Xdg
43 | Liri::AuroraPlatformHeaders
44 | Liri::AuroraCompositor
45 | )
46 |
47 | ecm_finalize_qml_module(ShellPrivateQmlPlugin)
48 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/utils_p.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2023 Pier Luigi Fiorini
2 | // SPDX-License-Identifier: LGPL-3.0-or-later
3 |
4 | #pragma once
5 |
6 | #include
7 | #include
8 | #include
9 | #include
10 |
11 | #include
12 |
13 | static inline struct ::wl_seat *getWlSeat()
14 | {
15 | void *seat = QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("wl_seat");
16 | return static_cast(seat);
17 | }
18 |
19 | static inline struct ::wl_surface *getWlSurface(QWindow *window)
20 | {
21 | if (!window)
22 | return nullptr;
23 | void *surface = QGuiApplication::platformNativeInterface()->nativeResourceForWindow("surface", window);
24 | return static_cast(surface);
25 | }
26 |
27 | static inline struct ::wl_output *getWlOutput(QScreen *screen)
28 | {
29 | if (!screen)
30 | return nullptr;
31 | void *output = QGuiApplication::platformNativeInterface()->nativeResourceForScreen("output", screen);
32 | return static_cast(output);
33 | }
34 |
35 | static inline QScreen *getScreen(struct ::wl_output *output)
36 | {
37 | const auto screens = QGuiApplication::screens();
38 | for (auto screen : screens) {
39 | if (getWlOutput(screen) == output)
40 | return screen;
41 | }
42 |
43 | return nullptr;
44 | }
45 |
--------------------------------------------------------------------------------
/src/imports/taskmanager/usagetracker.h:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2017 Michael Spencer
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-or-later
4 |
5 | #ifndef USAGETRACKER_H
6 | #define USAGETRACKER_H
7 |
8 | #include
9 | #include