Use XDG/Flatpak standard directories for data storage

- Update history_manager to use GLib.get_user_config_dir()
- Update project_manager to use GLib.get_user_data_dir()
- Remove old filesystem permission from Flatpak manifest
- Fix Flatpak manifest: runtime version 49→47, correct git source URL

Data now stored in:
- Flatpak: ~/.var/app/cz.vesp.roster/{config,data}/cz.vesp.roster/
- Native: ~/.{config,local/share}/cz.vesp.roster/
This commit is contained in:
vesp 2025-12-22 11:13:45 +01:00
parent 7a45c4d576
commit 16b746adfa
3 changed files with 17 additions and 7 deletions

View File

@ -1,7 +1,7 @@
{ {
"id" : "cz.vesp.roster", "id" : "cz.vesp.roster",
"runtime" : "org.gnome.Platform", "runtime" : "org.gnome.Platform",
"runtime-version" : "master", "runtime-version" : "47",
"sdk" : "org.gnome.Sdk", "sdk" : "org.gnome.Sdk",
"command" : "roster", "command" : "roster",
"finish-args" : [ "finish-args" : [
@ -9,8 +9,7 @@
"--share=ipc", "--share=ipc",
"--socket=fallback-x11", "--socket=fallback-x11",
"--device=dri", "--device=dri",
"--socket=wayland", "--socket=wayland"
"--filesystem=xdg-config/roster:create"
], ],
"cleanup" : [ "cleanup" : [
"/include", "/include",
@ -43,7 +42,7 @@
"sources" : [ "sources" : [
{ {
"type" : "git", "type" : "git",
"url" : "file:///home/pavelb/GnomeBuilderProjects" "url" : "file:///home/pavelb/GnomeBuilderProjects/Roster"
} }
], ],
"config-opts" : [ "config-opts" : [

View File

@ -21,6 +21,9 @@ import json
import os import os
from pathlib import Path from pathlib import Path
from typing import List from typing import List
import gi
gi.require_version('GLib', '2.0')
from gi.repository import GLib
from .models import HistoryEntry from .models import HistoryEntry
@ -28,7 +31,10 @@ class HistoryManager:
"""Manages request history persistence to JSON file.""" """Manages request history persistence to JSON file."""
def __init__(self): def __init__(self):
self.config_dir = Path.home() / '.config' / 'roster' # Use XDG config directory (works for both Flatpak and native)
# Flatpak: ~/.var/app/cz.vesp.roster/config/cz.vesp.roster
# Native: ~/.config/cz.vesp.roster
self.config_dir = Path(GLib.get_user_config_dir()) / 'cz.vesp.roster'
self.history_file = self.config_dir / 'history.json' self.history_file = self.config_dir / 'history.json'
self._ensure_config_dir() self._ensure_config_dir()

View File

@ -22,6 +22,9 @@ import uuid
from pathlib import Path from pathlib import Path
from typing import List, Optional from typing import List, Optional
from datetime import datetime, timezone from datetime import datetime, timezone
import gi
gi.require_version('GLib', '2.0')
from gi.repository import GLib
from .models import Project, SavedRequest, HttpRequest from .models import Project, SavedRequest, HttpRequest
@ -29,8 +32,10 @@ class ProjectManager:
"""Manages project and saved request persistence.""" """Manages project and saved request persistence."""
def __init__(self): def __init__(self):
# Store in ~/.roster/ (not ~/.config/) for git versioning # Use XDG data directory (works for both Flatpak and native)
self.data_dir = Path.home() / '.roster' # Flatpak: ~/.var/app/cz.vesp.roster/data/cz.vesp.roster
# Native: ~/.local/share/cz.vesp.roster
self.data_dir = Path(GLib.get_user_data_dir()) / 'cz.vesp.roster'
self.projects_file = self.data_dir / 'requests.json' self.projects_file = self.data_dir / 'requests.json'
self._ensure_data_dir() self._ensure_data_dir()