id = "nomacs" name = "nomacs" homepage = "https://nomacs.org" description = "a free, open source image viewer, which supports multiple platforms." # The apple-touch-icon from nomacs.org. icon = "https://nomacs.org/apple-touch-icon.png" executables = ["nomacs"] [dotfiles] # ImageLounge/src/DkCore/DkSettings.cpp, the DefaultSettings constructors, which # carry the paths in their own comments: # # #if defined(Q_OS_WIN) # QSettings(DkSettingsManager::instance().param().settingsPath(), IniFormat) # #elif defined(Q_OS_DARWIN) # // ~/.config/nomacs/Image Lounge.ini # QSettings(IniFormat, UserScope, organizationName(), applicationName()) # #else # QSettings() // Unix: ~/.config/nomacs/Image Lounge.conf # #endif # # — organisation "nomacs", application "Image Lounge". Qt resolves those two # constructors under $XDG_CONFIG_HOME (else ~/.config) on macOS and Linux # alike, which is [configHome]; only the extension differs, because macOS is # pinned to IniFormat while the Unix default is Qt's native format. On Windows # settingsPath() falls back to `QFileInfo(DkUtils::getAppDataPath(), # "settings.ini")` and getAppDataPath() is # `QStandardPaths::writableLocation(AppDataLocation)` — %APPDATA%\\, # a different file name in a different directory, so it gets its own line. paths = [ "[configHome]/nomacs/Image Lounge.ini", "[configHome]/nomacs/Image Lounge.conf", "%APPDATA%/nomacs/Image Lounge/settings.ini", ] # A portable install reads settings.ini from beside nomacs.exe instead # (`isPortable()` compares settingsPath() with applicationDirPath()); that is # not under the user's home at all, so there is nothing to exclude. exclude = [] # nomacs signs in to nothing; none of these files is a credential. secret = [] # Every spelling of the settings file on both rules, because a machine has # whichever its platform writes and the three names share no last segment, so # the sibling check cannot pair them — this list is by hand, the way # apps/pip.toml's is. # # The keys are the [GlobalSettings] group in DkSettings.cpp's save(). Everything # else in the file — language, sort mode, zoom behaviour, the display and # slideshow groups — is a preference the user wants carried. # # recentFiles and recentFolders are lists of absolute paths into this machine's # disk, tmpPath and setupPath are single ones, and all four are rewritten by # nomacs itself every time the user opens or saves a file. That is session # state, worth nothing to a human once the session is over, so nothing is kept. [[dotfiles.machine_lines]] file = [ "[configHome]/nomacs/Image Lounge.ini", "[configHome]/nomacs/Image Lounge.conf", "%APPDATA%/nomacs/Image Lounge/settings.ini", ] match = { prefix = [ "recentFiles", "recentFolders", "tmpPath", "setupPath", ] } # pinnedFiles is the one key in that group the user fills in on purpose — those # are the images they chose to pin — so unlike the recent lists above it is # worth keeping, so the user can see what was pinned when they rebuild this # machine. It is a list of absolute paths into this disk and means nothing on # another, hence a rule of its own rather than a scope on all five keys. [[dotfiles.machine_lines]] file = [ "[configHome]/nomacs/Image Lounge.ini", "[configHome]/nomacs/Image Lounge.conf", "%APPDATA%/nomacs/Image Lounge/settings.ini", ] match = { prefix = ["pinnedFiles"] } scope = "backup"