This commit is contained in:
Valeria Fadeeva 2026-01-22 14:40:06 +05:00
parent ccf478c5aa
commit 83f87e0bca
33 changed files with 480 additions and 353 deletions

View File

@ -91,5 +91,13 @@
<entry name="viewUser" type="Bool"> <entry name="viewUser" type="Bool">
<default>true</default> <default>true</default>
</entry> </entry>
<entry name="showRecentDocuments" type="Bool">
<label>Show recent documents</label>
<default>true</default>
</entry>
<entry name="showDescriptions" type="Bool">
<label>Show application descriptions</label>
<default>true</default>
</entry>
</group> </group>
</kcfg> </kcfg>

View File

@ -56,14 +56,18 @@ Item {
hoverEnabled: true hoverEnabled: true
onClicked: { onClicked: {
dashWindow.visible = !dashWindow.visible; if (dashWindow) {
dashWindow.visible = !dashWindow.visible;
}
} }
} }
Component.onCompleted: { Component.onCompleted: {
dashWindow = Qt.createQmlObject("MenuRepresentation {}", root); dashWindow = Qt.createQmlObject("MenuRepresentation {}", root);
plasmoid.activated.connect(function() { plasmoid.activated.connect(function() {
dashWindow.visible = !dashWindow.visible; if (dashWindow) {
dashWindow.visible = !dashWindow.visible;
}
}); });
} }
} }

View File

@ -56,6 +56,8 @@ KCM.SimpleKCM {
property alias cfg_appsIconSize: appsIconSize.currentIndex property alias cfg_appsIconSize: appsIconSize.currentIndex
property alias cfg_docsIconSize: docsIconSize.currentIndex property alias cfg_docsIconSize: docsIconSize.currentIndex
property alias cfg_displayPosition: displayPosition.currentIndex property alias cfg_displayPosition: displayPosition.currentIndex
property alias cfg_showRecentDocuments: showRecentDocuments.checked
property alias cfg_showDescriptions: showDescriptions.checked
Kirigami.FormLayout { Kirigami.FormLayout {
anchors.left: parent.left anchors.left: parent.left
@ -177,6 +179,18 @@ KCM.SimpleKCM {
model: [i18n("Small"),i18n("Medium"),i18n("Large"), i18n("Huge")] model: [i18n("Small"),i18n("Medium"),i18n("Large"), i18n("Huge")]
} }
CheckBox {
id: showRecentDocuments
Kirigami.FormData.label: i18n("Show recent documents:")
text: i18n("Enable")
}
CheckBox {
id: showDescriptions
Kirigami.FormData.label: i18n("Show descriptions:")
text: i18n("Enable")
}
ComboBox { ComboBox {

View File

@ -1,31 +1,24 @@
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Controls import QtQuick.Controls
import QtCore
import org.kde.plasma.plasmoid import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.private.kicker 0.1 as Kicker import org.kde.plasma.private.kicker as Kicker
import org.kde.coreaddons 1.0 as KCoreAddons // kuser import org.kde.coreaddons as KCoreAddons
import org.kde.plasma.private.shell 2.0 import org.kde.plasma.private.shell
import org.kde.kwindowsystem import org.kde.kwindowsystem
import Qt5Compat.GraphicalEffects
import org.kde.kquickcontrolsaddons import org.kde.kquickcontrolsaddons
import org.kde.plasma.components as PlasmaComponents3 import org.kde.plasma.components as PlasmaComponents3
import org.kde.plasma.private.quicklaunch
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.plasma.plasma5support as P5Support import org.kde.plasma.private.sessions
import org.kde.plasma.private.sessions as Sessions
import org.kde.ksvg as KSvg
import org.kde.kcmutils as KCM
import org.kde.plasma.plasmoid
RowLayout{ RowLayout{
@ -34,88 +27,51 @@ RowLayout{
KCoreAddons.KUser { id: kuser } KCoreAddons.KUser { id: kuser }
Logic { id: logic } Logic { id: logic }
Sessions.SessionManagement { SessionManagement {
id: sessionManager id: sessionManager
} }
Sessions.SessionsModel { RowLayout{
id: sessionsModel Image {
} id: iconUser
source: {
P5Support.DataSource { var faceUrl = kuser.faceIconUrl.toString()
id: pmEngine if (faceUrl !== "") {
engine: "powermanagement" return faceUrl
connectedSources: ["PowerDevil", "Sleep States"] }
function performOperation(what) { return "user-identity"
var service = serviceForSource("PowerDevil") }
var operation = service.operationDescription(what) cache: false
service.startOperationCall(operation) visible: source !== ""
} sourceSize.height: 24
} sourceSize.width: 24
fillMode: Image.PreserveAspectFit
Image { Layout.alignment: Qt.AlignVCenter
id: iconUser layer.enabled: true
source: kuser.faceIconUrl.toString() || "user-identity"
cache: false MouseArea {
visible: source !== "" cursorShape: Qt.PointingHandCursor
sourceSize.height: parent.height * 0.9 anchors.fill: parent
sourceSize.width: parent.height * 0.9 onClicked: logic.runCommand("systemsettings kcm_users")
fillMode: Image.PreserveAspectFit
Layout.alignment: Qt.AlignVCenter
// Crop the avatar to fit in a circle, like the lock and login screens
// but don't on software rendering where this won't render
layer.enabled:true // iconUser.GraphicsInfo.api !== GraphicsInfo.Software
layer.effect: OpacityMask {
// this Rectangle is a circle due to radius size
maskSource: Rectangle {
width: iconUser.width
height: iconUser.height
radius: height / 2
visible: false
} }
} }
state: "hide"
states: [ PlasmaExtras.Heading {
State { wrapMode: Text.NoWrap
name: "show" color: Kirigami.Theme.textColor
when: parent.visible level: 3
PropertyChanges { target: iconUser; opacity: 1; } font.bold: true
}, text: qsTr(kuser.fullName)
State {
name: "hide" MouseArea {
when: !parent.visible cursorShape: Qt.PointingHandCursor
PropertyChanges { target: iconUser; opacity: 0; } anchors.fill: parent
onClicked: logic.runCommand("systemsettings kcm_users")
} }
] }
transitions: Transition {
PropertyAnimation { properties: "opacity"; easing.type: Easing.InOutQuad; }
}
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: KCM.KCMLauncher.openSystemSettings("kcm_users")
}
}
PlasmaExtras.Heading {
wrapMode: Text.NoWrap
color: Kirigami.Theme.textColor
level: 3
font.bold: true
//font.weight: Font.Bold
text: qsTr(kuser.fullName)
} }
PlasmaComponents3.ToolButton { PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.openUrl("file:///usr/share/applications/org.kde.dolphin.desktop")
}
icon.width: 24 icon.width: 24
icon.height: 24 icon.height: 24
icon.name: "user-home" icon.name: "user-home"
@ -125,14 +81,14 @@ RowLayout{
PlasmaComponents3.ToolTip.timeout: 1000 PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("User Home") PlasmaComponents3.ToolTip.text: i18n("User Home")
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.openUrl(StandardPaths.writableLocation(StandardPaths.HomeLocation).toString())
}
} }
PlasmaComponents3.ToolButton { PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.openUrl("file:///usr/share/applications/systemsettings.desktop")
}
icon.width: 24 icon.width: 24
icon.height: 24 icon.height: 24
icon.name: "configure" icon.name: "configure"
@ -141,6 +97,11 @@ RowLayout{
PlasmaComponents3.ToolTip.timeout: 1000 PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("System Preferences") PlasmaComponents3.ToolTip.text: i18n("System Preferences")
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.runCommand("systemsettings")
}
} }
Item{ Item{
@ -148,29 +109,23 @@ RowLayout{
} }
PlasmaComponents3.ToolButton { PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
//onClicked: pmEngine.performOperation("lockScreen")
//enabled: pmEngine.data["Sleep States"]["LockScreen"]
onClicked: sessionManager.lock()
}
icon.width: 24 icon.width: 24
icon.height: 24 icon.height: 24
icon.name: "system-lock-screen" icon.name: "system-lock-screen"
Layout.rightMargin: 10 Layout.rightMargin: 10
PlasmaComponents3.ToolTip.delay: 1000 PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000 PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Lock Screen") PlasmaComponents3.ToolTip.text: i18n("Lock Screen")
} visible: sessionManager.canLock
PlasmaComponents3.ToolButton {
MouseArea { MouseArea {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
anchors.fill: parent anchors.fill: parent
onClicked: sessionManager.switchUser() onClicked: sessionManager.lock()
} }
}
PlasmaComponents3.ToolButton {
icon.width: 24 icon.width: 24
icon.height: 24 icon.height: 24
icon.name: "system-switch-user" icon.name: "system-switch-user"
@ -179,15 +134,14 @@ RowLayout{
PlasmaComponents3.ToolTip.timeout: 1000 PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Switch User") PlasmaComponents3.ToolTip.text: i18n("Switch User")
}
PlasmaComponents3.ToolButton {
MouseArea { MouseArea {
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
anchors.fill: parent anchors.fill: parent
// onClicked: sessionManager.requestShutdown() onClicked: sessionManager.switchUser()
onClicked: sessionManager.requestLogoutPrompt()
} }
}
PlasmaComponents3.ToolButton {
icon.width: 24 icon.width: 24
icon.height: 24 icon.height: 24
icon.name: "system-shutdown" icon.name: "system-shutdown"
@ -196,5 +150,11 @@ RowLayout{
PlasmaComponents3.ToolTip.timeout: 1000 PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Shutdown") PlasmaComponents3.ToolTip.text: i18n("Shutdown")
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
// onClicked: sessionManager.requestShutdown()
onClicked: sessionManager.requestLogoutPrompt()
}
} }
} }

View File

@ -32,11 +32,15 @@ Item {
|| (("hasActionList" in model) && (model.hasActionList === true))) || (("hasActionList" in model) && (model.hasActionList === true)))
property int itemColumns property int itemColumns
property bool handleTriggerManually: false
Accessible.role: Accessible.MenuItem Accessible.role: Accessible.MenuItem
Accessible.name: model.display Accessible.name: model.display
function openActionMenu(x, y) { function openActionMenu(x, y) {
var actionList = hasActionList ? model.actionList : []; var actionList = [];
if (hasActionList && model.actionList !== undefined) {
actionList = model.actionList;
}
Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId); Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId);
actionMenu.visualParent = item; actionMenu.visualParent = item;
actionMenu.open(x, y); actionMenu.open(x, y);
@ -120,7 +124,7 @@ Item {
} else if ((event.key === Qt.Key_Enter || event.key === Qt.Key_Return)) { } else if ((event.key === Qt.Key_Enter || event.key === Qt.Key_Return)) {
event.accepted = true; event.accepted = true;
if ("trigger" in GridView.view.model) { if (!handleTriggerManually && "trigger" in GridView.view.model) {
GridView.view.model.trigger(index, "", null); GridView.view.model.trigger(index, "", null);
root.toggle(); root.toggle();
} }

View File

@ -31,11 +31,15 @@ Item {
|| (("hasActionList" in model) && (model.hasActionList === true))) || (("hasActionList" in model) && (model.hasActionList === true)))
property int itemColumns property int itemColumns
property bool handleTriggerManually: false
Accessible.role: Accessible.MenuItem Accessible.role: Accessible.MenuItem
Accessible.name: model.display Accessible.name: model.display
function openActionMenu(x, y) { function openActionMenu(x, y) {
var actionList = hasActionList ? model.actionList : []; var actionList = [];
if (hasActionList && model.actionList !== undefined) {
actionList = model.actionList;
}
Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId); Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId);
actionMenu.visualParent = item; actionMenu.visualParent = item;
actionMenu.open(x, y); actionMenu.open(x, y);
@ -49,72 +53,103 @@ Item {
} }
} }
property bool showDescriptions: true
Kirigami.Icon { RowLayout {
id: icon anchors.fill: parent
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: Kirigami.Units.largeSpacing anchors.leftMargin: Kirigami.Units.largeSpacing
anchors.rightMargin: Kirigami.Units.largeSpacing
spacing: Kirigami.Units.largeSpacing
width: iconSize Kirigami.Icon {
height: width id: icon
Layout.preferredWidth: iconSize
animated: false Layout.preferredHeight: iconSize
Layout.alignment: Qt.AlignVCenter
source: model.decoration source: model.decoration
} animated: false
PlasmaComponents3.Label {
id: label
visible: item.showLabel
anchors {
left: icon.right
leftMargin: Kirigami.Units.largeSpacing
right: itemColumns == 2 ? parent.right : desc.left
rightMargin: Kirigami.Units.largeSpacing
verticalCenter: icon.verticalCenter
} }
anchors.verticalCenterOffset: itemColumns == 2 ? -Kirigami.Units.largeSpacing : 0
horizontalAlignment: Text.AlignLeft
maximumLineCount: 1
elide: Text.ElideMiddle
//wrapMode: Text.Wrap
color: Kirigami.Theme.textColor
font.pointSize: Kirigami.Theme.defaultFont.pointSize
text: ("name" in model ? model.name : model.display)
textFormat: Text.PlainText
}
PlasmaComponents3.Label { Item {
id: desc Layout.fillWidth: true
anchors { Layout.fillHeight: true
top: itemColumns == 2 ? label.bottom: undefined
left: itemColumns == 2 ? icon.right : undefined // List View Layout (itemColumns == 1)
leftMargin: Kirigami.Units.largeSpacing RowLayout {
right: parent.right anchors.fill: parent
rightMargin: Kirigami.Units.largeSpacing visible: itemColumns == 1
verticalCenter: itemColumns == 2 ? undefined : icon.verticalCenter spacing: Kirigami.Units.smallSpacing
PlasmaComponents3.Label {
id: labelList
text: ("name" in model ? model.name : model.display)
// Name takes 65% of space ideally
Layout.fillWidth: true
Layout.preferredWidth: parent.width * 0.65
elide: Text.ElideRight
maximumLineCount: 1
color: Kirigami.Theme.textColor
font.pointSize: Kirigami.Theme.defaultFont.pointSize
horizontalAlignment: Text.AlignLeft
}
PlasmaComponents3.Label {
id: descList
text: ("description" in model ? model.description : "")
visible: item.showDescriptions && text.length > 0 && text !== model.display
// Description takes 35% of space ideally
Layout.fillWidth: true
Layout.preferredWidth: parent.width * 0.35
Layout.minimumWidth: 0
elide: Text.ElideRight
maximumLineCount: 1
color: colorWithAlpha(Kirigami.Theme.textColor, 0.6)
font.pointSize: Kirigami.Theme.defaultFont.pointSize - 1
horizontalAlignment: Text.AlignRight
}
}
// Grid View Layout (itemColumns == 2)
ColumnLayout {
anchors.fill: parent
visible: itemColumns == 2
spacing: 0
PlasmaComponents3.Label {
id: labelGrid
text: ("name" in model ? model.name : model.display)
Layout.fillWidth: true
elide: Text.ElideRight
maximumLineCount: 1
color: Kirigami.Theme.textColor
font.pointSize: Kirigami.Theme.defaultFont.pointSize
horizontalAlignment: Text.AlignLeft
}
PlasmaComponents3.Label {
id: descGrid
text: ("description" in model ? model.description : "")
visible: text.length > 0 && text !== model.display
Layout.fillWidth: true
elide: Text.ElideRight
maximumLineCount: 1
color: colorWithAlpha(Kirigami.Theme.textColor, 0.6)
font.pointSize: Kirigami.Theme.defaultFont.pointSize - 1
horizontalAlignment: Text.AlignLeft
}
}
} }
horizontalAlignment: itemColumns == 2 ? Text.AlignLeft : Text.AlignRight
maximumLineCount: 1
elide: Text.ElideMiddle
//wrapMode: Text.Wrap
color: colorWithAlpha(Kirigami.Theme.textColor,0.4)
font.pointSize: Kirigami.Theme.defaultFont.pointSize - 1
text: ("description" in model ? model.description : "")
textFormat: Text.PlainText
} }
property Item currentLabel: itemColumns == 1 ? labelList : labelGrid
PlasmaCore.ToolTipArea { PlasmaCore.ToolTipArea {
id: toolTip id: toolTip
property string text: model.display property string text: model.display
anchors.fill: parent anchors.fill: parent
active: root.visible && label.truncated active: root.visible && currentLabel.truncated
mainItem: toolTipDelegate mainItem: toolTipDelegate
onContainsMouseChanged: item.GridView.view.itemContainsMouseChanged(containsMouse) onContainsMouseChanged: item.GridView.view.itemContainsMouseChanged(containsMouse)
@ -127,7 +162,7 @@ Item {
} else if ((event.key === Qt.Key_Enter || event.key === Qt.Key_Return)) { } else if ((event.key === Qt.Key_Enter || event.key === Qt.Key_Return)) {
event.accepted = true; event.accepted = true;
if ("trigger" in GridView.view.model) { if (!handleTriggerManually && "trigger" in GridView.view.model) {
GridView.view.model.trigger(index, "", null); GridView.view.model.trigger(index, "", null);
root.toggle(); root.toggle();
} }

View File

@ -35,7 +35,10 @@ Item {
Accessible.name: model.display Accessible.name: model.display
function openActionMenu(x, y) { function openActionMenu(x, y) {
var actionList = hasActionList ? model.actionList : []; var actionList = [];
if (hasActionList && model.actionList !== undefined) {
actionList = model.actionList;
}
Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId); Tools.fillActionMenu(i18n, actionMenu, actionList, GridView.view.model.favoritesModel, model.favoriteId);
actionMenu.visualParent = item; actionMenu.visualParent = item;
actionMenu.open(x, y); actionMenu.open(x, y);

View File

@ -37,9 +37,14 @@ FocusScope {
property alias cellHeight: gridView.cellHeight property alias cellHeight: gridView.cellHeight
property int iconSize property int iconSize
property bool forceListDelegate: false
property bool showDescriptions: true
property var horizontalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff property var horizontalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff
property var verticalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff property var verticalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff
property bool bypassArrowNav: false property bool bypassArrowNav: false
property bool handleTriggerManually: false
onDropEnabledChanged: { onDropEnabledChanged: {
if (!dropEnabled && "dropPlaceHolderIndex" in model) { if (!dropEnabled && "dropPlaceHolderIndex" in model) {
model.dropPlaceHolderIndex = -1; model.dropPlaceHolderIndex = -1;
@ -119,7 +124,7 @@ FocusScope {
if (item) { if (item) {
if (kicker.dragSource.parent === gridView.contentItem) { if (kicker.dragSource.parent === gridView.contentItem) {
if (item !== kicker.dragSource) { if (item !== kicker.dragSource) {
item.GridView.view.model.moveRow(dragSource.itemIndex, item.itemIndex); item.GridView.view.model.moveRow(kicker.dragSource.itemIndex, item.itemIndex);
} }
} else if (kicker.dragSource.GridView.view.model.favoritesModel === itemGrid.model } else if (kicker.dragSource.GridView.view.model.favoritesModel === itemGrid.model
&& !itemGrid.model.isFavorite(kicker.dragSource.favoriteId)) { && !itemGrid.model.isFavorite(kicker.dragSource.favoriteId)) {
@ -178,6 +183,8 @@ FocusScope {
showLabel: showLabels showLabel: showLabels
itemColumns: itemGrid.itemColumns itemColumns: itemGrid.itemColumns
iconSize: itemGrid.iconSize iconSize: itemGrid.iconSize
showDescriptions: itemGrid.showDescriptions
handleTriggerManually: itemGrid.handleTriggerManually
} }
} }
Component{ Component{
@ -186,6 +193,7 @@ FocusScope {
showLabel: itemGrid.showLabels showLabel: itemGrid.showLabels
itemColumns: itemGrid.itemColumns itemColumns: itemGrid.itemColumns
iconSize: itemGrid.iconSize iconSize: itemGrid.iconSize
handleTriggerManually: itemGrid.handleTriggerManually
} }
} }
@ -254,7 +262,7 @@ FocusScope {
keyNavigationWraps: false keyNavigationWraps: false
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
delegate: itemColumns == 1 ? aItemGridDelegate : aItemGridDelegate2 delegate: (itemColumns == 1 && !forceListDelegate) ? aItemGridDelegate : aItemGridDelegate2
highlight: Rectangle { color: Qt.rgba(0.9, 0.9, 0.9, 0.1); radius: 6 } highlight: Rectangle { color: Qt.rgba(0.9, 0.9, 0.9, 0.1); radius: 6 }
highlightFollowsCurrentItem: true highlightFollowsCurrentItem: true
@ -422,7 +430,7 @@ FocusScope {
if (!dragHelper.dragging) { if (!dragHelper.dragging) {
if (pressedItem) { if (pressedItem) {
if ("trigger" in gridView.model) { if (!itemGrid.handleTriggerManually && "trigger" in gridView.model) {
gridView.model.trigger(pressedItem.itemIndex, "", null); gridView.model.trigger(pressedItem.itemIndex, "", null);
root.toggle(); root.toggle();
} }

View File

@ -195,7 +195,7 @@ PlasmaComponents.ScrollView {
width: parent.width width: parent.width
height: count * itemMultiGrid.cellHeight height: count * itemMultiGrid.cellHeight
itemColumns: 3 //itemMultiGrid.itemColumns itemColumns: 2 //itemMultiGrid.itemColumns
cellWidth: itemMultiGrid.cellWidth cellWidth: itemMultiGrid.cellWidth
cellHeight: itemMultiGrid.cellHeight cellHeight: itemMultiGrid.cellHeight

View File

@ -0,0 +1,25 @@
import QtQuick
import org.kde.plasma.plasma5support as Plasma5Support
Item {
Plasma5Support.DataSource {
id: executable
engine: "executable"
connectedSources: []
onNewData: function(source, data) {
disconnectSource(source)
}
}
function openUrl(url) {
if (url.toString().endsWith(".desktop")) {
executable.connectSource("kioclient exec " + url)
} else {
executable.connectSource("xdg-open " + url)
}
}
function runCommand(cmd) {
executable.connectSource(cmd)
}
}

View File

@ -27,13 +27,13 @@ import org.kde.plasma.components as PC3
import org.kde.plasma.extras as PlasmaExtras import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.private.kicker as Kicker import org.kde.plasma.private.kicker as Kicker
import org.kde.kquickcontrolsaddons import org.kde.kquickcontrolsaddons
import org.kde.plasma.private.quicklaunch
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
import org.kde.plasma.plasma5support as Plasma5Support import org.kde.plasma.plasma5support as Plasma5Support
PlasmaCore.Dialog { PlasmaCore.Dialog {
id: root id: root
backgroundHints: PlasmaCore.Types.SolidBackground | PlasmaCore.Types.ConfigurableBackground
objectName: "popupWindow" objectName: "popupWindow"
flags: Qt.WindowStaysOnTopHint flags: Qt.WindowStaysOnTopHint
@ -147,7 +147,7 @@ PlasmaCore.Dialog {
var vertMidPoint = screen.y + (screen.height / 2); var vertMidPoint = screen.y + (screen.height / 2);
var appletTopLeft = parent.mapToGlobal(0, 0); var appletTopLeft = parent.mapToGlobal(0, 0);
var offset = Kirigami.Units.smallSpacing * 2; var offset = Kirigami.Units.smallSpacing;
if (Plasmoid.configuration.displayPosition === 1) { if (Plasmoid.configuration.displayPosition === 1) {
horizMidPoint = screen.x + (screen.width / 2); horizMidPoint = screen.x + (screen.width / 2);
@ -161,8 +161,8 @@ PlasmaCore.Dialog {
vertMidPoint = screen.y + (screen.height / 2); vertMidPoint = screen.y + (screen.height / 2);
x = horizMidPoint - width / 2; x = horizMidPoint - width / 2;
// y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.gridUnit; // y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.gridUnit;
// y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.gridUnit / 2; y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.gridUnit / 2;
y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.largeSpacing * 1.5; //y = screen.y + screen.height - height - offset - panelH - Kirigami.Units.largeSpacing * 1.5;
} }
else { else {
@ -209,8 +209,8 @@ PlasmaCore.Dialog {
Layout.minimumWidth: width Layout.minimumWidth: width
Layout.maximumWidth: width Layout.maximumWidth: width
Layout.minimumHeight: view.height + searchField.height + footer.height + Kirigami.Units.gridUnit * 3 Layout.minimumHeight: height
Layout.maximumHeight: view.height + searchField.height + footer.height + Kirigami.Units.gridUnit * 3 Layout.maximumHeight: height
focus: true focus: true
onFocusChanged: searchField.focus = true onFocusChanged: searchField.focus = true
@ -427,10 +427,9 @@ PlasmaCore.Dialog {
// PAGE 1 // PAGE 1
// //
Column { Column {
width: rootItem.widthComputed width: view.width // Ensure Column fills SwipeView
height: view.height height: view.height
spacing: Kirigami.Units.largeSpacing * 2 spacing: Kirigami.Units.largeSpacing
function tryActivate(row, col) { function tryActivate(row, col) {
globalFavoritesGrid.tryActivate(row, col); globalFavoritesGrid.tryActivate(row, col);
} }
@ -441,7 +440,7 @@ PlasmaCore.Dialog {
height: butttonActionAllApps.implicitHeight height: butttonActionAllApps.implicitHeight
Kirigami.Icon { Kirigami.Icon {
source: 'favorite' source: 'bookmarks'
implicitHeight: Kirigami.Units.iconSizes.smallMedium implicitHeight: Kirigami.Units.iconSizes.smallMedium
implicitWidth: Kirigami.Units.iconSizes.smallMedium implicitWidth: Kirigami.Units.iconSizes.smallMedium
} }
@ -458,14 +457,14 @@ PlasmaCore.Dialog {
Layout.fillWidth: true Layout.fillWidth: true
} }
AToolButton { PC3.ToolButton {
id: butttonActionAllApps id: butttonActionAllApps
flat: false icon.name: "go-next"
iconName: "go-next"
text: i18n("All apps") text: i18n("All apps")
buttonHeight: 25 MouseArea {
onClicked: { cursorShape: Qt.PointingHandCursor
view.currentIndex = 1; anchors.fill: parent
onClicked: view.currentIndex = 1;
} }
} }
} }
@ -473,7 +472,13 @@ PlasmaCore.Dialog {
ItemGridView { ItemGridView {
id: globalFavoritesGrid id: globalFavoritesGrid
width: parent.width width: parent.width
height: root.cellSizeHeight * Plasmoid.configuration.numberRows height: {
if (Plasmoid.configuration.showRecentDocuments) {
return root.cellSizeHeight * Plasmoid.configuration.numberRows;
} else {
return view.height - topRow.height - Kirigami.Units.largeSpacing - Kirigami.Units.gridUnit;
}
}
itemColumns: 1 itemColumns: 1
dragEnabled: true dragEnabled: true
dropEnabled: true dropEnabled: true
@ -486,7 +491,9 @@ PlasmaCore.Dialog {
} }
onKeyNavDown: { onKeyNavDown: {
globalFavoritesGrid.focus = false; globalFavoritesGrid.focus = false;
documentsGrid.tryActivate(0, 0); if (Plasmoid.configuration.showRecentDocuments) {
documentsGrid.tryActivate(0, 0);
}
} }
Keys.onPressed: event => { Keys.onPressed: event => {
if (event.key === Qt.Key_Tab) { if (event.key === Qt.Key_Tab) {
@ -498,6 +505,7 @@ PlasmaCore.Dialog {
} }
RowLayout { RowLayout {
visible: Plasmoid.configuration.showRecentDocuments
width: parent.width width: parent.width
height: butttonActionAllApps.implicitHeight height: butttonActionAllApps.implicitHeight
@ -519,37 +527,47 @@ PlasmaCore.Dialog {
Layout.fillWidth: true Layout.fillWidth: true
} }
AToolButton { PC3.ToolButton {
id: butttonActionRecentMore id: butttonActionRecentMore
flat: false icon.name: "go-next"
iconName: "go-next"
text: i18n("Show more") text: i18n("Show more")
buttonHeight: 25 MouseArea {
onClicked: { cursorShape: Qt.PointingHandCursor
executable.checkDolphin(); anchors.fill: parent
if (executable.dolphinRunning) { onClicked: {
console.log("dolphin is running"); executable.checkDolphin();
executable.exec("dolphin 'recentlyused:/files/'"); if (executable.dolphinRunning) {
} else { console.log("dolphin is running");
console.log("dolphin is not running"); executable.exec("dolphin 'recentlyused:/files/'");
executable.exec("dolphin --new-window 'recentlyused:/files/'"); } else {
console.log("dolphin is not running");
executable.exec("dolphin --new-window 'recentlyused:/files/'");
}
root.toggle();
} }
root.toggle();
} }
} }
} }
ItemGridView { ItemGridView {
visible: Plasmoid.configuration.showRecentDocuments
id: documentsGrid id: documentsGrid
width: rootItem.widthComputed width: parent.width
height: cellHeight * 3 height: cellHeight * 3
itemColumns: 2 itemColumns: 2
dragEnabled: true dragEnabled: true
dropEnabled: true dropEnabled: true
cellWidth: rootItem.widthComputed * 0.48 cellWidth: (width - Kirigami.Units.gridUnit) / 2
cellHeight: docsIconSize + Kirigami.Units.largeSpacing * 2 cellHeight: docsIconSize + Kirigami.Units.largeSpacing * 2
iconSize: docsIconSize iconSize: docsIconSize
clip: true clip: true
handleTriggerManually: true
onItemActivated: (index, actionId, argument) => {
var url = documentsGrid.currentItem.url.toString();
console.log("Opening URL:", url);
executable.exec("xdg-open '" + url.replace(/'/g, "'\\''") + "'");
root.toggle();
}
onKeyNavUp: { onKeyNavUp: {
globalFavoritesGrid.tryActivate(0, 0); globalFavoritesGrid.tryActivate(0, 0);
documentsGrid.focus = false; documentsGrid.focus = false;
@ -568,19 +586,20 @@ PlasmaCore.Dialog {
// PAGE 2 // PAGE 2
// //
Column { Column {
width: rootItem.widthComputed width: view.width // Ensure Column fills SwipeView
height: view.height height: view.height
spacing: Kirigami.Units.largeSpacing * 2 spacing: Kirigami.Units.largeSpacing
function tryActivate(row, col) { function tryActivate(row, col) {
allAppsGrid.tryActivate(row, col); allAppsGrid.tryActivate(row, col);
} }
RowLayout { RowLayout {
id: allAppsTopRow
width: parent.width width: parent.width
height: butttonActionAllApps.implicitHeight height: butttonActionAllApps.implicitHeight
Kirigami.Icon { Kirigami.Icon {
source: 'application-menu' source: 'view-grid'
implicitHeight: Kirigami.Units.iconSizes.smallMedium implicitHeight: Kirigami.Units.iconSizes.smallMedium
implicitWidth: Kirigami.Units.iconSizes.smallMedium implicitWidth: Kirigami.Units.iconSizes.smallMedium
} }
@ -597,29 +616,29 @@ PlasmaCore.Dialog {
Layout.fillWidth: true Layout.fillWidth: true
} }
AToolButton { PC3.ToolButton {
flat: false icon.name: 'go-previous'
iconName: 'go-previous'
text: i18n("Pinned") text: i18n("Pinned")
buttonHeight: 25 MouseArea {
mirror: true cursorShape: Qt.PointingHandCursor
onClicked: { anchors.fill: parent
view.currentIndex = 0; onClicked: view.currentIndex = 0;
} }
} }
} }
ItemGridView { ItemGridView {
id: allAppsGrid id: allAppsGrid
width: rootItem.widthComputed width: parent.width
height: Math.floor((view.height - topRow.height - Kirigami.Units.largeSpacing) / cellHeight) * cellHeight height: view.height - allAppsTopRow.height - Kirigami.Units.largeSpacing - Kirigami.Units.gridUnit
itemColumns: 2 itemColumns: 1
forceListDelegate: true
showDescriptions: Plasmoid.configuration.showDescriptions
dragEnabled: false dragEnabled: false
dropEnabled: false dropEnabled: false
cellWidth: rootItem.widthComputed - Kirigami.Units.gridUnit * 2 cellWidth: width
cellHeight: root.iconSize + Kirigami.Units.largeSpacing cellHeight: root.iconSize + Kirigami.Units.largeSpacing
iconSize: root.iconSize iconSize: root.iconSize
clip: true
onKeyNavUp: { onKeyNavUp: {
searchField.focus = true; searchField.focus = true;
allAppsGrid.focus = false; allAppsGrid.focus = false;

View File

@ -9,9 +9,6 @@
.pragma library .pragma library
function fillActionMenu(i18n, actionMenu, actionList, favoriteModel, favoriteId) { function fillActionMenu(i18n, actionMenu, actionList, favoriteModel, favoriteId) {
// Accessing actionList can be a costly operation, so we don't
// access it until we need the menu.
var actions = createFavoriteActions(i18n, favoriteModel, favoriteId); var actions = createFavoriteActions(i18n, favoriteModel, favoriteId);
if (actions) { if (actions) {
@ -19,13 +16,16 @@ function fillActionMenu(i18n, actionMenu, actionList, favoriteModel, favoriteId)
var actionListCopy = Array.from(actionList); var actionListCopy = Array.from(actionList);
var separator = { "type": "separator" }; var separator = { "type": "separator" };
actionListCopy.push(separator); actionListCopy.push(separator);
// actionList = actions.concat(actionList); // this crashes Qt O.o
actionListCopy.push.apply(actionListCopy, actions); actionListCopy.push.apply(actionListCopy, actions);
actionList = actionListCopy; actionList = actionListCopy;
} else { } else {
actionList = actions; actionList = actions;
} }
} }
if (!actionList || actionList.length === 0) {
actionList = [];
}
actionMenu.actionList = actionList; actionMenu.actionList = actionList;
} }
@ -37,6 +37,8 @@ function createFavoriteActions(i18n, favoriteModel, favoriteId) {
if (favoriteModel.activities === undefined || if (favoriteModel.activities === undefined ||
!favoriteModel.activities ||
!favoriteModel.activities.runningActivities ||
favoriteModel.activities.runningActivities.length <= 1) { favoriteModel.activities.runningActivities.length <= 1) {
var action = {}; var action = {};

View File

@ -24,6 +24,7 @@ import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components as PC3 import org.kde.plasma.components as PC3
import org.kde.plasma.plasma5support as Plasma5Support
import org.kde.plasma.private.kicker as Kicker import org.kde.plasma.private.kicker as Kicker
import org.kde.kirigami as Kirigami import org.kde.kirigami as Kirigami
@ -46,6 +47,10 @@ PlasmoidItem {
function action_menuedit() { function action_menuedit() {
processRunner.runMenuEditor(); processRunner.runMenuEditor();
} }
function openKMenuEdit() {
executable.exec("kmenuedit");
}
Component { Component {
id: compactRepresentation id: compactRepresentation
@ -166,6 +171,18 @@ PlasmoidItem {
Kicker.ProcessRunner { Kicker.ProcessRunner {
id: processRunner; id: processRunner;
} }
Plasma5Support.DataSource {
id: executable
engine: "executable"
connectedSources: []
onNewData: function(source, data) {
disconnectSource(source);
}
function exec(cmd) {
connectSource(cmd);
}
}
Kicker.WindowSystem { Kicker.WindowSystem {
id: windowSystem id: windowSystem
@ -229,7 +246,13 @@ PlasmoidItem {
text: i18n("Edit Applications…") text: i18n("Edit Applications…")
icon.name: "kmenuedit" icon.name: "kmenuedit"
visible: Plasmoid.immutability !== PlasmaCore.Types.SystemImmutable visible: Plasmoid.immutability !== PlasmaCore.Types.SystemImmutable
onTriggered: processRunner.runMenuEditor() onTriggered: {
if (processRunner && processRunner.runMenuEditor) {
processRunner.runMenuEditor();
} else {
openKMenuEdit();
}
}
} }
] ]

View File

@ -1,25 +1,25 @@
{ {
"KPackageStructure": "Plasma/Applet", "KPackageStructure": "Plasma/Applet",
"KPlugin": { "KPlugin": {
"Authors": [ "Authors": [
{ {
"Email": "adhemarks@gmail.com", "Email": "hello@eisteed.com",
"Name": "Ademir" "Name": "Eisteed"
} }
], ],
"Category": "Application Launchers", "BugReportUrl": "https://github.com/kurojs/Menu-11-Enhanced/issues",
"Description": "Configurable grid of application icons", "Category": "Application Launchers",
"Description[x-test]": "xxConfigurable grid of application iconsxx", "Description": "Enhanced configurable grid application launcher for Plasma 6.5+",
"EnabledByDefault": true, "Description[x-test]": "xxCEnhanced configurable grid application launcher for Plasma 6.5+xx",
"Icon": "start-here-kde", "EnabledByDefault": true,
"Id": "com.github.adhec.Menu11", "Icon": "start-here-kde",
"License": "GPL-2.0+", "Id": "com.github.adhec.Menu11",
"Name": "Menu 11", "License": "GPL-2.0+",
"Name[x-test]": "xxMenu 11xx", "Name": "Menu 11 Enhanced",
"Website": "https://kde.org/plasma-desktop" "Name[x-test]": "xxMenu 11 Enhancedxx",
}, "Version": "1.1.2",
"X-Plasma-API-Minimum-Version": "6.0", "Website": "https://github.com/kurojs/Menu-11-Enhanced"
"X-Plasma-Provides": [ },
"org.kde.plasma.launchermenu" "X-Plasma-API-Minimum-Version": "6.0",
] "X-Plasma-Provides": ["org.kde.plasma.launchermenu"]
} }

View File

@ -8,7 +8,7 @@ Go to `~/.local/share/plasma/plasmoids/com.github.adhec.Menu11/translate/` and r
## New Translations ## New Translations
1. Fill out [`template.pot`](template.pot) with your translations then open a [new issue](https://github.com/prateekmedia/Menu11/issues/new), name the file `spanish.txt`, attach the txt file to the issue (drag and drop). 1. Fill out [`template.pot`](template.pot) with your translations then open a [new issue](https://github.com/kurojs/Menu-11-Enhanced/issues/new), name the file `spanish.txt`, attach the txt file to the issue (drag and drop).
Or if you know how to make a pull request Or if you know how to make a pull request
@ -35,11 +35,11 @@ Or if you know how to make a pull request
## Status ## Status
| Locale | Lines | % Done| | Locale | Lines | % Done|
|----------|---------|-------| |----------|---------|-------|
| Template | 35 | | | Template | 38 | |
| fr | 20/35 | 57% | | fr | 20/38 | 52% |
| ko | 17/35 | 48% | | ko | 17/38 | 44% |
| nl | 13/35 | 37% | | nl | 13/38 | 34% |
| pl | 15/35 | 42% | | pl | 15/38 | 39% |
| pt_BR | 20/35 | 57% | | pt_BR | 20/38 | 52% |
| ru | 34/35 | 97% | | ru | 38/38 | 100% |
| tr | 15/35 | 42% | | tr | 15/38 | 39% |

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
# Version: 6 # Version: 6
# This script will convert the *.po files to *.mo files, rebuilding the package/contents/locale folder. # This script will convert the *.po files to *.mo files, rebuilding the package/contents/locale folder.
@ -8,7 +8,7 @@
DIR=`cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd` DIR=`cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd`
plasmoidName=com.github.adhec.Menu11 plasmoidName=com.github.adhec.Menu11
widgetName="${plasmoidName##*.}" # Strip namespace widgetName="${plasmoidName##*.}" # Strip namespace
website=https://github.com/prateekmedia/Menu11 website=https://github.com/kurojs/Menu-11-Enhanced
bugAddress="$website" bugAddress="$website"
packageRoot=".." # Root of translatable sources packageRoot=".." # Root of translatable sources
projectName="plasma_applet_${plasmoidName}" # project name projectName="plasma_applet_${plasmoidName}" # project name

View File

@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: omano\n" "Last-Translator: omano\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,6 +79,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "Position du menu" msgstr "Position du menu"

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: 2021-09-29 09:43+0900\n" "PO-Revision-Date: 2021-09-29 09:43+0900\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -76,6 +76,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "" msgstr ""

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
# Version: 22 # Version: 22
# https://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems # https://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems
@ -8,7 +8,7 @@
DIR=`cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd` DIR=`cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd`
plasmoidName=com.github.adhec.Menu11 plasmoidName=com.github.adhec.Menu11
widgetName="${plasmoidName##*.}" # Strip namespace widgetName="${plasmoidName##*.}" # Strip namespace
website=https://github.com/prateekmedia/Menu11 website=https://github.com/kurojs/Menu-11-Enhanced
bugAddress="$website" bugAddress="$website"
packageRoot=".." # Root of translatable sources packageRoot=".." # Root of translatable sources
projectName="plasma_applet_${plasmoidName}" # project name projectName="plasma_applet_${plasmoidName}" # project name

View File

@ -6,8 +6,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: 2022-01-01 20:09+0100\n" "PO-Revision-Date: 2022-01-01 20:09+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n" "Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -80,6 +80,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "" msgstr ""

View File

@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: 2022-04-05 10:40+0100\n" "PO-Revision-Date: 2022-04-05 10:40+0100\n"
"Last-Translator: Krzysztof Korab <korapps@outlook.com>\n" "Last-Translator: Krzysztof Korab <korapps@outlook.com>\n"
"Language-Team: \n" "Language-Team: \n"
@ -79,6 +79,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "" msgstr ""

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
# Version 9 # Version 9
# Requires plasmoidviewer v5.13.0 # Requires plasmoidviewer v5.13.0

View File

@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,6 +79,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "Posição do menu" msgstr "Posição do menu"

View File

@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Edward Karate <edward.karate@ya.ru>\n" "Last-Translator: Edward Karate <edward.karate@ya.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,6 +79,18 @@ msgstr "Огромный"
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "Размер знаков документов" msgstr "Размер знаков документов"
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr "Показать последние документы"
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr "Разрешить"
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr "Показать описание"
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "Положение меню" msgstr "Положение меню"
@ -158,77 +170,3 @@ msgstr "Последние документы"
#: ../contents/ui/MenuRepresentation.qml #: ../contents/ui/MenuRepresentation.qml
msgid "Show more" msgid "Show more"
msgstr "Показать больше" msgstr "Показать больше"
#~ msgid "Ditto Menu"
#~ msgstr "Ditto Menu"
#~ msgid "A configurable launcher menu"
#~ msgstr "Настраиваемое меню приложений"
#~ msgid "On The Current Activity"
#~ msgstr "О текущей деятельности"
#~ msgid "Show In Favorites"
#~ msgstr "Показать в Избранных"
#~ msgctxt "@item:inmenu Open icon chooser dialog"
#~ msgid "Choose..."
#~ msgstr "Выбрать..."
#~ msgid "Show favorites first"
#~ msgstr "Сначала показать избранные"
#~ msgid "Edit Applications..."
#~ msgstr "Редактировать меню..."
#~ msgid "Leave ..."
#~ msgstr "Выход ..."
#~ msgid "Hi, "
#~ msgstr "Привет, "
#~ msgid "Favorites"
#~ msgstr "Избранные"
#~ msgctxt "@action"
#~ msgid "Lock Screen"
#~ msgstr "Заблокировать"
#~ msgid "Behavior"
#~ msgstr "Поведение"
#~ msgid "Show applications as:"
#~ msgstr "Показывать приложения в виде:"
#~ msgid "Name only"
#~ msgstr "Только имя"
#~ msgid "Description only"
#~ msgstr "Только описание"
#~ msgid "Name (Description)"
#~ msgstr "Имя (Описание)"
#~ msgid "Description (Name)"
#~ msgstr "Описание (Имя)"
#~ msgid "Menu position:"
#~ msgstr "Позиция меню"
#~ msgid "Search"
#~ msgstr "Поиск"
#~ msgid "Expand search to bookmarks, files and emails"
#~ msgstr "Расширить поиск по закладкам, файлам и почте"
#~ msgid "Show user icon"
#~ msgstr "Показать иконку пользователя"
#~ msgid "Grid"
#~ msgstr "Сетка"
#~ msgid "Number of columns in grid"
#~ msgstr "Количество колонок в сетке"
#~ msgid "Number of rows in grid"
#~ msgstr "Количество строк в сетке"

View File

@ -1,5 +1,5 @@
# Translation of Menu11 in LANGUAGE # Translation of Menu11 in LANGUAGE
# Copyright (C) 2025 # Copyright (C) 2026
# This file is distributed under the same license as the Menu11 package. # This file is distributed under the same license as the Menu11 package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Menu11\n" "Project-Id-Version: Menu11\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -79,6 +79,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "" msgstr ""

View File

@ -7,8 +7,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: dittomenu\n" "Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n" "Report-Msgid-Bugs-To: https://github.com/kurojs/Menu-11-Enhanced\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n" "POT-Creation-Date: 2026-01-22 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -82,6 +82,18 @@ msgstr ""
msgid "Docs icon size:" msgid "Docs icon size:"
msgstr "" msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show recent documents:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Enable"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml
msgid "Show descriptions:"
msgstr ""
#: ../contents/ui/ConfigGeneral.qml #: ../contents/ui/ConfigGeneral.qml
msgid "Menu position" msgid "Menu position"
msgstr "" msgstr ""