1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-06 05:25:41 -05:00

switch to state dir and dock fixes

This commit is contained in:
bbedward
2025-08-06 12:00:09 -04:00
parent 18aa557ef1
commit 055fee576c
5 changed files with 40 additions and 35 deletions

View File

@@ -12,9 +12,6 @@ Singleton {
property var appUsageRanking: {} property var appUsageRanking: {}
readonly property string _configUrl: StandardPaths.writableLocation(StandardPaths.ConfigLocation)
readonly property string _configDir: _configUrl.startsWith("file://") ? _configUrl.substring(7) : _configUrl
Component.onCompleted: { Component.onCompleted: {
loadSettings(); loadSettings();
} }
@@ -115,7 +112,7 @@ Singleton {
FileView { FileView {
id: settingsFile id: settingsFile
path: StandardPaths.writableLocation(StandardPaths.ConfigLocation) + "/DankMaterialShell/appusage.json" path: StandardPaths.writableLocation(StandardPaths.GenericStateLocation) + "/DankMaterialShell/appusage.json"
blockLoading: true blockLoading: true
blockWrites: true blockWrites: true
watchChanges: true watchChanges: true

View File

@@ -17,9 +17,6 @@ Singleton {
property bool doNotDisturb: false property bool doNotDisturb: false
property var pinnedApps: [] property var pinnedApps: []
readonly property string _configUrl: StandardPaths.writableLocation(StandardPaths.ConfigLocation)
readonly property string _configDir: _configUrl.startsWith("file://") ? _configUrl.substring(7) : _configUrl
Component.onCompleted: { Component.onCompleted: {
loadSettings(); loadSettings();
} }
@@ -115,7 +112,7 @@ Singleton {
FileView { FileView {
id: settingsFile id: settingsFile
path: StandardPaths.writableLocation(StandardPaths.ConfigLocation) + "/DankMaterialShell/session.json" path: StandardPaths.writableLocation(StandardPaths.GenericStateLocation) + "/DankMaterialShell/session.json"
blockLoading: true blockLoading: true
blockWrites: true blockWrites: true
watchChanges: true watchChanges: true

View File

@@ -29,7 +29,7 @@ Item {
property var categoryIcons: categories.map((category) => { property var categoryIcons: categories.map((category) => {
return AppSearchService.getCategoryIcon(category); return AppSearchService.getCategoryIcon(category);
}) })
property var appUsageRanking: AppUsageHistoryData.appUsageRanking property var appUsageRanking: AppUsageHistoryData.appUsageRanking || {}
property alias model: filteredModel property alias model: filteredModel
property var _watchApplications: AppSearchService.applications property var _watchApplications: AppSearchService.applications

View File

@@ -19,7 +19,7 @@ Item {
function movePinnedApp(fromIndex, toIndex) { function movePinnedApp(fromIndex, toIndex) {
if (fromIndex === toIndex) return if (fromIndex === toIndex) return
var currentPinned = [...SessionData.pinnedApps] var currentPinned = [...(SessionData.pinnedApps || [])]
if (fromIndex < 0 || fromIndex >= currentPinned.length || toIndex < 0 || toIndex >= currentPinned.length) return if (fromIndex < 0 || fromIndex >= currentPinned.length || toIndex < 0 || toIndex >= currentPinned.length) return
var movedApp = currentPinned.splice(fromIndex, 1)[0] var movedApp = currentPinned.splice(fromIndex, 1)[0]
@@ -46,9 +46,10 @@ Item {
var items = [] var items = []
var runningApps = NiriService.getRunningAppIds() var runningApps = NiriService.getRunningAppIds()
var pinnedApps = [...SessionData.pinnedApps] var pinnedApps = [...(SessionData.pinnedApps || [])]
var addedApps = new Set() var addedApps = new Set()
pinnedApps.forEach(appId => { pinnedApps.forEach(appId => {
var lowerAppId = appId.toLowerCase() var lowerAppId = appId.toLowerCase()
if (!addedApps.has(lowerAppId)) { if (!addedApps.has(lowerAppId)) {
@@ -64,28 +65,39 @@ Item {
}) })
root.pinnedAppCount = pinnedApps.length root.pinnedAppCount = pinnedApps.length
var appUsageRanking = AppUsageHistoryData.appUsageRanking || {} var appUsageRanking = AppUsageHistoryData.appUsageRanking || {}
var allUnpinnedApps = []
for (var appId in appUsageRanking) {
var lowerAppId = appId.toLowerCase()
if (!addedApps.has(lowerAppId)) {
allUnpinnedApps.push({
appId: appId,
lastUsed: appUsageRanking[appId].lastUsed || 0,
usageCount: appUsageRanking[appId].usageCount || 0
})
}
}
allUnpinnedApps.sort((a, b) => b.lastUsed - a.lastUsed)
var unpinnedApps = [] var unpinnedApps = []
var recentToAdd = Math.min(3, allUnpinnedApps.length) var unpinnedAppsSet = new Set()
for (var i = 0; i < recentToAdd; i++) {
var appId = allUnpinnedApps[i].appId // First: Add ALL currently running apps that aren't pinned
runningApps.forEach(appId => {
var lowerAppId = appId.toLowerCase() var lowerAppId = appId.toLowerCase()
unpinnedApps.push(appId) if (!addedApps.has(lowerAppId)) {
addedApps.add(lowerAppId) unpinnedApps.push(appId)
unpinnedAppsSet.add(lowerAppId)
}
})
// Then: Fill remaining slots up to 3 with recently used apps
var remainingSlots = Math.max(0, 3 - unpinnedApps.length)
if (remainingSlots > 0) {
// Sort recent apps by usage
var recentApps = []
for (var appId in appUsageRanking) {
var lowerAppId = appId.toLowerCase()
if (!addedApps.has(lowerAppId) && !unpinnedAppsSet.has(lowerAppId)) {
recentApps.push({
appId: appId,
lastUsed: appUsageRanking[appId].lastUsed || 0
})
}
}
recentApps.sort((a, b) => b.lastUsed - a.lastUsed)
var recentToAdd = Math.min(remainingSlots, recentApps.length)
for (var i = 0; i < recentToAdd; i++) {
unpinnedApps.push(recentApps[i].appId)
}
} }
if (pinnedApps.length > 0 && unpinnedApps.length > 0) { if (pinnedApps.length > 0 && unpinnedApps.length > 0) {
items.push({ items.push({

View File

@@ -262,8 +262,8 @@ ScrollView {
property var rankedAppsModel: { property var rankedAppsModel: {
var apps = []; var apps = [];
for (var appId in AppUsageHistoryData.appUsageRanking) { for (var appId in (AppUsageHistoryData.appUsageRanking || {})) {
var appData = AppUsageHistoryData.appUsageRanking[appId]; var appData = (AppUsageHistoryData.appUsageRanking || {})[appId];
apps.push({ apps.push({
"id": appId, "id": appId,
"name": appData.name, "name": appData.name,
@@ -320,8 +320,7 @@ ScrollView {
hoverColor: Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.12) hoverColor: Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.12)
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
onClicked: { onClicked: {
AppUsageHistoryData.appUsageRanking = { AppUsageHistoryData.appUsageRanking = {};
};
SettingsData.saveSettings(); SettingsData.saveSettings();
} }
} }
@@ -438,7 +437,7 @@ ScrollView {
hoverColor: Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.12) hoverColor: Qt.rgba(Theme.error.r, Theme.error.g, Theme.error.b, 0.12)
onClicked: { onClicked: {
var currentRanking = Object.assign({ var currentRanking = Object.assign({
}, AppUsageHistoryData.appUsageRanking); }, AppUsageHistoryData.appUsageRanking || {});
delete currentRanking[modelData.id]; delete currentRanking[modelData.id];
AppUsageHistoryData.appUsageRanking = currentRanking; AppUsageHistoryData.appUsageRanking = currentRanking;
SettingsData.saveSettings(); SettingsData.saveSettings();