mirror of
https://github.com/lhns/steam-frame-nix.git
synced 2026-10-06 06:00:22 +02:00
Launchers: apps' own desktop entries, rewritten; keyring moves into them
steamFrame.launchers.<desktop ID> takes the app's own entry (a Flatpak's
export, a Nix package's or a host file) and rewrites only its command lines
(hostEnv, env, flatpakArgs, args, wrappers) and the keys asked for
(mimeTypes, defaultFor, settings), so name, icon, translations and actions
stay the app's and follow its updates.
- Package entries are rewritten at build time; Flatpak/host file entries at
runtime by steam-frame-nix-launchers into
<session.runtimeDir>/steam-frame-nix/applications (tmpfs), on switch, at
login and when Flatpak installs/updates apps (path unit); the Home Manager
links point there.
- keyring.{enable,electron} replaces steamFrame.keyring.{flatpaks,programs}
(clean break: the old options fail with the new form).
- Firefox's launcher is the Flatpak's entry with the profile wrapper in
front (no --profile for the profile manager); Jellyfin's hardware
decoding sets flatpakArgs and env.
- cleanup --all removes the tmpfs entries.
- Check on copies of the real Element, KRDC, Firefox, gedit, Jellyfin and
Claude entries, quoting and generator behaviour.
This commit is contained in:
1 parent
5d15902ba1
commit
0d9a238e5a
37 files changed
+4140
-577
No files matched your search
@@ -53,6 +53,10 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
|
||||
touch $S/steamvr-debugger # marker of the first version
|
||||
mkdir -p $root/run/steam-frame-nix $root/run/systemd/user/steamvr.service.d
|
||||
echo old > $root/run/steam-frame-nix/steamvr-debugger-restore
|
||||
mkdir -p $root/run/steam-frame-nix/applications # steamFrame.launchers
|
||||
echo '[Desktop Entry]' > $root/run/steam-frame-nix/applications/im.riot.Riot.desktop
|
||||
echo x > $root/run/steam-frame-nix/applications/.im.riot.Riot.desktop.sum
|
||||
: > $root/run/steam-frame-nix/applications/.lock
|
||||
echo old > $root/run/systemd/user/steamvr.service.d/50-steam-frame-nix-debugger.conf
|
||||
echo keep > $root/run/systemd/user/steamvr.service.d/other.conf
|
||||
ln -s /nix/store/00000000000000000000000000000000-breeze-icons-6.30.0/share/icons/breeze/apps/64/utilities-terminal.svg $I/utilities-terminal.svg
|
||||
@@ -156,7 +160,7 @@ pkgs.runCommand "cleanup-check" { nativeBuildInputs = [ cleanup pkgs.jq ]; } ''
|
||||
echo absent > $S/steamvr-debugger.armed
|
||||
mkdir -p $F/desktop $F/x.default
|
||||
ln -s /app/etc/firefox/steam-frame-nix-desktop-user.js $F/desktop/user.js
|
||||
touch $F/desktop/.parentlock; exec 8< $F/desktop/.parentlock # the launcher's, Firefox running
|
||||
touch $F/desktop/.parentlock; exec 8< $F/desktop/.parentlock # the wrapper's, Firefox running
|
||||
ln -s /app/etc/firefox/steam-frame-nix-desktop-user.js $F/x.default/user.js
|
||||
printf '[Context]\ndevices=all;\nfilesystems=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro;\n\n[Environment]\nLD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so\nSFN_MPV_HWDEC=x\n' > $O/org.jellyfin.JellyfinDesktop
|
||||
mkdir -p $HOME/.var/app/org.jellyfin.JellyfinDesktop
|
||||
|
||||
+17
-42
@@ -11,10 +11,10 @@
|
||||
# fullscreen inside the window.
|
||||
# - desktopProfile: the sessions have separate buses/displays, so a second
|
||||
# Firefox can't reach the running one and hits the profile lock; the nested
|
||||
# desktop gets its own profile, where fullscreen works: the launcher undoes
|
||||
# the fix there while its Firefox runs (firefox/launcher.nix).
|
||||
# The entry shadows the Flatpak's (same ID), keeping MIME associations, and is
|
||||
# seen by the "+" menu (which reads only ~/.local/share/applications).
|
||||
# desktop gets its own profile, where fullscreen works: the wrapper undoes
|
||||
# the fix there while its Firefox runs (firefox/wrapper.nix).
|
||||
# The launcher (launchers.nix) is the Flatpak's own entry with the wrapper in
|
||||
# front, same ID, so MIME associations keep working and the "+" menu sees it.
|
||||
# defaultBrowser: without a default the portal picks the first installed
|
||||
# https handler (e.g. Chromium) in both sessions.
|
||||
{ config, pkgs, lib, ... }:
|
||||
@@ -41,13 +41,12 @@ let
|
||||
(k: "user_pref(${builtins.toJSON k}, false);\n") desktopKeys)} $out/${desktopUserJsName}
|
||||
'');
|
||||
|
||||
firefox = pkgs.callPackage ./firefox/launcher.nix {
|
||||
profileDir = if cfg.desktopProfile == null then null else profileDir;
|
||||
inherit desktopFix desktopKeys;
|
||||
wrapper = pkgs.callPackage ./firefox/wrapper.nix {
|
||||
inherit profileDir desktopFix desktopKeys;
|
||||
desktopJs = "/app/etc/firefox/${desktopUserJsName}";
|
||||
};
|
||||
in {
|
||||
imports = [ ./cleanup.nix ];
|
||||
imports = [ ./launchers.nix ];
|
||||
|
||||
options.steamFrame.firefox = {
|
||||
enable = lib.mkEnableOption ''
|
||||
@@ -97,49 +96,25 @@ in {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Make the launcher the default for http, https and text/html (in
|
||||
Home Manager's ~/.config/mimeapps.list). Without a default the
|
||||
portal opens links with the first installed https handler, in both
|
||||
sessions.
|
||||
Make the launcher the default for http, https and text/html (its
|
||||
`defaultFor`, in Home Manager's ~/.config/mimeapps.list). Without a
|
||||
default the portal opens links with the first installed https
|
||||
handler, in both sessions.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
xdg.mimeApps = lib.mkIf cfg.defaultBrowser {
|
||||
enable = true;
|
||||
defaultApplications = lib.genAttrs
|
||||
[ "x-scheme-handler/http" "x-scheme-handler/https" "text/html" ]
|
||||
(_: "org.mozilla.firefox.desktop");
|
||||
steamFrame.launchers."org.mozilla.firefox" = {
|
||||
wrappers = lib.optional (cfg.desktopProfile != null) "${wrapper}";
|
||||
defaultFor = lib.optionals cfg.defaultBrowser
|
||||
[ "x-scheme-handler/http" "x-scheme-handler/https" "text/html" ];
|
||||
};
|
||||
|
||||
# stable: the branch the launcher runs (the extension point has no
|
||||
# stable: the branch the Flatpak's entry runs (the extension point has no
|
||||
# version, so it takes the app's branch).
|
||||
xdg.dataFile = lib.optionalAttrs (defaultPrefs != { }) { # desktopFix implies a pref
|
||||
xdg.dataFile = lib.mkIf (defaultPrefs != { }) { # desktopFix implies a pref
|
||||
"flatpak/extension/org.mozilla.firefox.systemconfig/aarch64/stable".source = sysconfig;
|
||||
} // {
|
||||
"applications/org.mozilla.firefox.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Firefox
|
||||
GenericName=Web Browser
|
||||
Icon=org.mozilla.firefox
|
||||
Exec=${firefox} @@u %u @@
|
||||
StartupWMClass=firefox
|
||||
StartupNotify=true
|
||||
Terminal=false
|
||||
Categories=Network;WebBrowser;
|
||||
MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/x-xpinstall;application/xhtml+xml;application/xml;audio/flac;audio/ogg;audio/webm;image/avif;image/gif;image/jpeg;image/png;image/svg+xml;image/webp;text/html;text/xml;video/ogg;video/webm;x-scheme-handler/chrome;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/mailto;
|
||||
Actions=new-window;new-private-window;
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name=New Window
|
||||
Exec=${firefox} --new-window @@u %u @@
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Name=New Private Window
|
||||
Exec=${firefox} --private-window @@u %u @@
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,9 @@
|
||||
# Checks of the Firefox launcher's desktop profile user.js (launcher.nix)
|
||||
# Checks of the Firefox wrapper's desktop profile user.js (wrapper.nix)
|
||||
# against a fake flatpak: the link exists only while Firefox runs, a second
|
||||
# launch that hands over to the running Firefox doesn't remove it, the value
|
||||
# Firefox stored from it leaves prefs.js once the profile is unlocked, and a
|
||||
# user.js of the user's own is never touched.
|
||||
# Firefox stored from it leaves prefs.js once the profile is unlocked, a
|
||||
# user.js of the user's own is never touched, the profile manager action and
|
||||
# the Steam session get no --profile.
|
||||
{ pkgs }:
|
||||
let
|
||||
# Fake `flatpak run … org.mozilla.firefox --profile DIR …`: with the
|
||||
@@ -22,11 +23,12 @@ let
|
||||
while [ ! -e $FAKE/release ]; do sleep 0.1; done
|
||||
exit 3
|
||||
'';
|
||||
launcher = pkgs.callPackage ./launcher.nix {
|
||||
flatpakBin = fakeFlatpak;
|
||||
wrapper = pkgs.callPackage ./wrapper.nix {
|
||||
profileDir = "$HOME/ff/desktop";
|
||||
desktopFix = true;
|
||||
};
|
||||
# What the launcher's Exec= runs: the wrapper, then the Flatpak's command.
|
||||
launcher = "${wrapper} ${fakeFlatpak} run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox";
|
||||
in
|
||||
pkgs.runCommand "firefox-check" { nativeBuildInputs = [ pkgs.findutils pkgs.gnugrep ]; } ''
|
||||
set -euo pipefail
|
||||
@@ -36,7 +38,7 @@ pkgs.runCommand "firefox-check" { nativeBuildInputs = [ pkgs.findutils pkgs.gnug
|
||||
p=$HOME/ff/desktop
|
||||
|
||||
# first launch: link made, Firefox runs
|
||||
${launcher} https://example.org & first=$!
|
||||
${launcher} @@u https://example.org @@ & first=$!
|
||||
for i in $(seq 100); do grep -q started $FAKE/log && break; sleep 0.1; done
|
||||
grep -qx 'started /app/etc/firefox/steam-frame-nix-desktop-user.js' $FAKE/log || fail "not linked at start"
|
||||
echo 'user_pref("other", 1);' >> $p/prefs.js
|
||||
@@ -59,6 +61,12 @@ pkgs.runCommand "firefox-check" { nativeBuildInputs = [ pkgs.findutils pkgs.gnug
|
||||
grep -q ignore-widgets $p/prefs.js || fail "prefs.js changed with an own user.js"
|
||||
rm $p/user.js
|
||||
|
||||
# profile manager action: no --profile, no link
|
||||
: > $FAKE/log
|
||||
${launcher} --ProfileManager || true
|
||||
grep -qx 'default profile' $FAKE/log || fail "--profile with --ProfileManager"
|
||||
[ ! -e $p/user.js ] || fail "linked for the profile manager"
|
||||
|
||||
# Steam session: default profile, no link
|
||||
: > $FAKE/log
|
||||
XDG_CURRENT_DESKTOP=gamescope ${launcher} || true
|
||||
|
||||
@@ -1,25 +1,24 @@
|
||||
# The Firefox Flatpak launcher (firefox.nix). In the nested desktop (KDE) it
|
||||
# uses the desktop profile; with the fullscreen fix it links that profile's
|
||||
# user.js to the sandbox path desktopJs (undoing the fix there) right before
|
||||
# Firefox starts, and once Firefox has exited and the profile is no longer in
|
||||
# use (a second launch that only hands its URL to the running Firefox returns
|
||||
# at once) removes the link and the value Firefox stored from it in
|
||||
# prefs.js. A user.js of the user's own is never touched. After a crash the
|
||||
# next launch or steam-frame-nix-cleanup finishes the removal.
|
||||
# The Firefox Flatpak wrapper (firefox.nix, a steamFrame.launchers wrapper):
|
||||
# gets the entry's full command line (`flatpak run … org.mozilla.firefox …`)
|
||||
# as its arguments. Outside the nested desktop it just runs it. In the nested
|
||||
# desktop (KDE) it adds `--profile <desktop profile>` (not to the profile
|
||||
# manager action, --ProfileManager); with the fullscreen fix it links that
|
||||
# profile's user.js to the sandbox path desktopJs (undoing the fix there)
|
||||
# right before Firefox starts, and once Firefox has exited and the profile is
|
||||
# no longer in use (a second launch that only hands its URL to the running
|
||||
# Firefox returns at once) removes the link and the value Firefox stored from
|
||||
# it in prefs.js. A user.js of the user's own is never touched. After a crash
|
||||
# the next launch or steam-frame-nix-cleanup finishes the removal.
|
||||
{ lib, writeShellScript, coreutils, findutils, gnugrep
|
||||
, flatpakBin ? "/usr/bin/flatpak" # (not `flatpak`: callPackage would pass pkgs.flatpak)
|
||||
, profileDir ? null # shell word, e.g. "$HOME/.var/app/…/desktop"; null: no desktop profile
|
||||
, profileDir # shell word, e.g. "$HOME/.var/app/…/desktop"
|
||||
, desktopFix ? false
|
||||
, desktopJs ? "/app/etc/firefox/steam-frame-nix-desktop-user.js"
|
||||
, desktopKeys ? [ "full-screen-api.ignore-widgets" ]
|
||||
}:
|
||||
writeShellScript "firefox-launcher" (''
|
||||
writeShellScript "firefox-wrapper" (''
|
||||
PATH=${lib.makeBinPath [ coreutils findutils gnugrep ]}:$PATH
|
||||
run=(${flatpakBin} run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox)
|
||||
'' + (if profileDir == null then ''
|
||||
exec "''${run[@]}" "$@"
|
||||
'' else ''
|
||||
if [ "$XDG_CURRENT_DESKTOP" != KDE ]; then exec "''${run[@]}" "$@"; fi
|
||||
if [ "$XDG_CURRENT_DESKTOP" != KDE ]; then exec "$@"; fi
|
||||
for a; do [ "$a" = --ProfileManager ] && exec "$@"; done
|
||||
prof="${profileDir}"
|
||||
# Firefox exits (status 1) if the --profile dir doesn't exist yet.
|
||||
mkdir -p "$prof"
|
||||
@@ -45,10 +44,10 @@ writeShellScript "firefox-launcher" (''
|
||||
else
|
||||
ln -s "$js" "$u"
|
||||
fi
|
||||
"''${run[@]}" --profile "$prof" "$@"
|
||||
"$@" --profile "$prof"
|
||||
status=$?
|
||||
sfn_unlink
|
||||
exit $status
|
||||
'' + lib.optionalString (!desktopFix) ''
|
||||
exec "''${run[@]}" --profile "$prof" "$@"
|
||||
''))
|
||||
exec "$@" --profile "$prof"
|
||||
'')
|
||||
+26
-48
@@ -7,11 +7,11 @@
|
||||
# - an LD_PRELOAD shim (jellyfin/mpv-hwdec-shim.c) rewrites an "auto*" hwdec
|
||||
# to $SFN_MPV_HWDEC. Preloaded from the store: only its store path is
|
||||
# exposed (read-only) to the sandbox.
|
||||
# - a desktop entry shadowing the Flatpak's (same ID, also seen by the "+"
|
||||
# menu) starts it with those permissions as `flatpak run` options
|
||||
# (--device=all, --filesystem, --env): nothing is written to Flatpak's
|
||||
# override files, so they apply only to launches from this entry and
|
||||
# disappear with it.
|
||||
# - a launcher (launchers.nix: the Flatpak's own entry, same ID, also seen
|
||||
# by the "+" menu) starts it with those permissions as `flatpak run`
|
||||
# options (--device=all, --filesystem, --env): nothing is written to
|
||||
# Flatpak's override files, so they apply only to launches from the entry
|
||||
# and disappear with it.
|
||||
# Earlier versions used an override file (nix-flatpak or Home Manager);
|
||||
# steam-frame-nix-cleanup removes their entries.
|
||||
{ config, lib, pkgs, ... }:
|
||||
@@ -21,16 +21,16 @@ let
|
||||
|
||||
shim = pkgs.callPackage ./jellyfin/shim.nix { };
|
||||
|
||||
run = lib.concatStringsSep " " [
|
||||
"flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop"
|
||||
"--device=all"
|
||||
"--filesystem=${shim}:ro"
|
||||
"--env=LD_PRELOAD=${shim}/lib/mpv-hwdec-shim.so"
|
||||
"--env=SFN_MPV_HWDEC=${cfg.hwdec}"
|
||||
app
|
||||
];
|
||||
launcher = {
|
||||
flatpakArgs = [ "--device=all" "--filesystem=${shim}:ro" ];
|
||||
env = {
|
||||
LD_PRELOAD = "${shim}/lib/mpv-hwdec-shim.so";
|
||||
SFN_MPV_HWDEC = cfg.hwdec;
|
||||
};
|
||||
};
|
||||
L = import ./launchers/lib.nix { inherit lib pkgs; };
|
||||
in {
|
||||
imports = [ ./cleanup.nix ];
|
||||
imports = [ ./launchers.nix ];
|
||||
|
||||
options.steamFrame.jellyfin.hardwareDecoding = {
|
||||
enable = lib.mkOption {
|
||||
@@ -38,7 +38,7 @@ in {
|
||||
default = false;
|
||||
description = ''
|
||||
Hardware video decoding (the Frame's V4L2 decoder) in the Jellyfin
|
||||
Desktop Flatpak: a desktop entry (shadowing the Flatpak's) that
|
||||
Desktop Flatpak: a launcher (the Flatpak's entry, rewritten) that
|
||||
starts it with device access (devices=all) and an LD_PRELOAD shim
|
||||
that makes mpv try hwdec's value below. Only launches from that
|
||||
entry (menus, the "+" menu) get it; nothing is written to Flatpak's
|
||||
@@ -58,43 +58,21 @@ in {
|
||||
command = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
readOnly = true;
|
||||
default = run;
|
||||
# Its launcher's, which exists only when enabled.
|
||||
default = if cfg.enable then config.steamFrame.launchers.${app}.command
|
||||
else L.command (launcher // {
|
||||
id = app; source = { flatpak = null; package = null; file = null; };
|
||||
hostEnv = { }; wrappers = [ ]; args = [ ];
|
||||
});
|
||||
defaultText = lib.literalMD "`flatpak run … org.jellyfin.JellyfinDesktop` with the options";
|
||||
description = "The command line the desktop entry runs (for a terminal).";
|
||||
description = ''
|
||||
About the command line the launcher runs (for a terminal; the same
|
||||
as `steamFrame.launchers."org.jellyfin.JellyfinDesktop".command`).
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
# Fields as in the Flatpak's own entry (1.x), which has no MimeType.
|
||||
config = lib.mkIf cfg.enable {
|
||||
xdg.dataFile."applications/${app}.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Jellyfin
|
||||
Comment=Desktop client for Jellyfin
|
||||
Exec=${run}
|
||||
Icon=${app}
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupWMClass=${app}
|
||||
Categories=AudioVideo;Video;Player;TV;
|
||||
Actions=DesktopF;DesktopW;TVF;TVW
|
||||
X-Flatpak=${app}
|
||||
|
||||
[Desktop Action DesktopF]
|
||||
Name=Desktop [Fullscreen]
|
||||
Exec=${run} --fullscreen --desktop
|
||||
|
||||
[Desktop Action DesktopW]
|
||||
Name=Desktop [Windowed]
|
||||
Exec=${run} --windowed --desktop
|
||||
|
||||
[Desktop Action TVF]
|
||||
Name=TV [Fullscreen]
|
||||
Exec=${run} --fullscreen --tv
|
||||
|
||||
[Desktop Action TVW]
|
||||
Name=TV [Windowed]
|
||||
Exec=${run} --windowed --tv
|
||||
'';
|
||||
steamFrame.launchers.${app} = launcher;
|
||||
};
|
||||
}
|
||||
@@ -1,264 +0,0 @@
|
||||
# Launchers for apps that keep secrets in the KDE wallet, so both sessions
|
||||
# share them.
|
||||
# - One kwalletd6, on the outer bus: the nested desktop has its own D-Bus,
|
||||
# where an app would start a second kwalletd6 whose secrets the Steam
|
||||
# session never sees. The launchers run with session.busEnv.
|
||||
# - Electron picks its keyring from XDG_CURRENT_DESKTOP; in the Steam session
|
||||
# (gamescope) it falls back to "basic" (a local file) and the login made in
|
||||
# the desktop is gone. `electron` passes --password-store=kwallet6.
|
||||
# - Flatpaks: the wallet's D-Bus names (kwalletd6 and the Secret Service,
|
||||
# served by ksecretd) as `flatpak run --talk-name` options, not Flatpak
|
||||
# override files: they apply only to launches from the entry and are gone
|
||||
# with it.
|
||||
# - schemeHandlers: login callbacks (claude://, io.element.desktop://) go
|
||||
# through the portal, which opens an app chooser (invisible in VR) unless
|
||||
# the app is the default and a recommended handler (Added Associations).
|
||||
# Each entry is written to ~/.local/share/applications with the app's own
|
||||
# desktop ID: it shadows the Flatpak's/package's entry and is seen by the "+"
|
||||
# menu (which reads only that directory).
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.steamFrame.keyring;
|
||||
busEnv = config.steamFrame.session.busEnv;
|
||||
|
||||
walletNames = [ "org.kde.kwalletd6" "org.freedesktop.secrets" ];
|
||||
|
||||
actionModule = lib.types.submodule {
|
||||
options = {
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Name of the action (Name=).";
|
||||
};
|
||||
args = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ ''"claude://claude.ai/new"'' ];
|
||||
description = ''
|
||||
Arguments after the app's (in desktop entry Exec syntax: quote
|
||||
yourself).
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Shared by flatpaks and programs; `flatpak` switches the defaults and the
|
||||
# command.
|
||||
appModule = flatpak: { name, config, ... }: {
|
||||
options = {
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = "Element";
|
||||
description = "Name shown in menus (Name=).";
|
||||
};
|
||||
genericName = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "GenericName=.";
|
||||
};
|
||||
comment = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "Comment=.";
|
||||
};
|
||||
icon = lib.mkOption ({
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = if flatpak then name else null;
|
||||
description = "Icon name (Icon=).";
|
||||
} // lib.optionalAttrs flatpak { defaultText = lib.literalMD "the app ID"; });
|
||||
categories = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "Network" "InstantMessaging" ];
|
||||
description = "Categories=.";
|
||||
};
|
||||
startupWMClass = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = "StartupWMClass=.";
|
||||
};
|
||||
mimeTypes = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "x-scheme-handler/rdp" ];
|
||||
description = ''
|
||||
Further MIME types listed in the entry (MimeType=), without making
|
||||
the app their default.
|
||||
'';
|
||||
};
|
||||
schemeHandlers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "element" "io.element.desktop" ];
|
||||
description = ''
|
||||
URL schemes (without `x-scheme-handler/`) the app handles and is
|
||||
made the default and a recommended handler for, e.g. login
|
||||
callbacks: otherwise the portal asks with an app chooser, which
|
||||
isn't shown in VR. Listed in MimeType= too.
|
||||
'';
|
||||
};
|
||||
electron = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Pass `--password-store=kwallet6`: Electron picks its keyring from
|
||||
XDG_CURRENT_DESKTOP and in the Steam session (gamescope) would use
|
||||
an unencrypted local store instead of the wallet.
|
||||
'';
|
||||
};
|
||||
args = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
description = ''
|
||||
Further arguments to the app (desktop entry Exec syntax), before
|
||||
the field code.
|
||||
'';
|
||||
};
|
||||
fieldCode = lib.mkOption {
|
||||
type = lib.types.enum [ "%U" "%u" "%F" "%f" "" ];
|
||||
default = "%U";
|
||||
description = ''
|
||||
How the entry passes URLs/files: `%U` several URLs, `%u` one,
|
||||
`%F`/`%f` local files, `""` none.
|
||||
'';
|
||||
};
|
||||
actions = lib.mkOption {
|
||||
type = lib.types.attrsOf actionModule;
|
||||
default = { };
|
||||
example = lib.literalExpression
|
||||
''{ NewChat = { name = "New Chat"; args = [ '''"claude://claude.ai/new"''' ]; }; }'';
|
||||
description = ''
|
||||
Desktop actions (right-click menu entries); each runs the command
|
||||
with its args.
|
||||
'';
|
||||
};
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
example = { StartupNotify = "true"; Keywords = "Matrix;chat;"; };
|
||||
description = "Further keys of the [Desktop Entry] group.";
|
||||
};
|
||||
command = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
readOnly = true;
|
||||
description = ''
|
||||
The command line the entry runs, without args and field code (for
|
||||
a terminal).
|
||||
'';
|
||||
};
|
||||
} // lib.optionalAttrs flatpak {
|
||||
flatpakArgs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "--branch=stable" "--command=/app/bin/element" ];
|
||||
description = "Further `flatpak run` options.";
|
||||
};
|
||||
} // lib.optionalAttrs (!flatpak) {
|
||||
executable = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
example = lib.literalExpression ''"''${pkgs.claude-desktop}/bin/claude-desktop"'';
|
||||
description = "The program to run (a path, e.g. into a package).";
|
||||
};
|
||||
};
|
||||
|
||||
config.command = lib.concatStringsSep " " ([ busEnv ]
|
||||
++ (if flatpak
|
||||
then [ "flatpak run" ] ++ map (n: "--talk-name=${n}") walletNames
|
||||
++ config.flatpakArgs ++ [ name ]
|
||||
else [ config.executable ])
|
||||
++ lib.optional config.electron "--password-store=kwallet6");
|
||||
};
|
||||
|
||||
entry = id: app: let
|
||||
exec = args: lib.concatStringsSep " " ([ app.command ] ++ args);
|
||||
mime = map (s: "x-scheme-handler/${s}") app.schemeHandlers ++ app.mimeTypes;
|
||||
list = xs: lib.concatMapStrings (x: "${x};") xs;
|
||||
line = k: v: lib.optionalString (v != null && v != "") "${k}=${v}\n";
|
||||
in ''
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
'' + line "Name" app.name
|
||||
+ line "GenericName" app.genericName
|
||||
+ line "Comment" app.comment
|
||||
+ line "Icon" app.icon
|
||||
+ line "Exec" (exec (app.args ++ lib.optional (app.fieldCode != "") app.fieldCode))
|
||||
+ line "StartupWMClass" app.startupWMClass
|
||||
+ line "Categories" (list app.categories)
|
||||
+ line "MimeType" (list mime)
|
||||
+ line "Actions" (list (lib.attrNames app.actions))
|
||||
+ line "X-Flatpak" (if app ? flatpakArgs then id else null)
|
||||
+ lib.concatStrings (lib.mapAttrsToList line app.settings)
|
||||
+ lib.concatStrings (lib.mapAttrsToList (a: act: ''
|
||||
|
||||
[Desktop Action ${a}]
|
||||
Name=${act.name}
|
||||
Exec=${exec act.args}
|
||||
'') app.actions);
|
||||
|
||||
apps = cfg.flatpaks // cfg.programs;
|
||||
handlers = lib.concatLists (lib.mapAttrsToList (id: app:
|
||||
map (s: lib.nameValuePair "x-scheme-handler/${s}" "${id}.desktop") app.schemeHandlers) apps);
|
||||
in {
|
||||
imports = [ ./cleanup.nix ];
|
||||
|
||||
options.steamFrame.keyring = {
|
||||
flatpaks = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule (appModule true));
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
"im.riot.Riot" = {
|
||||
name = "Element";
|
||||
electron = true;
|
||||
schemeHandlers = [ "element" "io.element.desktop" ];
|
||||
};
|
||||
"org.kde.krdc" = { name = "KRDC"; fieldCode = "%u"; };
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Flatpaks (by app ID) that keep secrets in the KDE wallet: a desktop
|
||||
entry shadowing the Flatpak's runs it on the outer bus, allowed to
|
||||
talk to the wallet (`flatpak run --talk-name=...`).
|
||||
'';
|
||||
};
|
||||
programs = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule (appModule false));
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
"com.anthropic.Claude" = {
|
||||
name = "Claude";
|
||||
executable = "''${pkgs.claude-desktop}/bin/claude-desktop";
|
||||
icon = "claude-desktop";
|
||||
electron = true;
|
||||
schemeHandlers = [ "claude" ];
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Other programs (e.g. from Nix packages), by desktop ID without
|
||||
`.desktop` (use the package's own, so the entry replaces it): a
|
||||
desktop entry that runs them on the outer bus.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf (apps != { }) {
|
||||
assertions = map (id: {
|
||||
assertion = false;
|
||||
message = "steamFrame.keyring: \"${id}\" is in both flatpaks and programs.";
|
||||
}) (lib.intersectLists (lib.attrNames cfg.flatpaks) (lib.attrNames cfg.programs))
|
||||
++ lib.mapAttrsToList (mime: ids: {
|
||||
assertion = lib.length ids == 1;
|
||||
message = "steamFrame.keyring: ${lib.removePrefix "x-scheme-handler/" mime} is in the schemeHandlers of ${lib.concatStringsSep " and " ids}.";
|
||||
}) (lib.zipAttrs (map (h: { ${h.name} = lib.removeSuffix ".desktop" h.value; }) handlers));
|
||||
|
||||
xdg.dataFile = lib.mapAttrs' (id: app:
|
||||
lib.nameValuePair "applications/${id}.desktop" { text = entry id app; }) apps;
|
||||
|
||||
xdg.mimeApps = lib.mkIf (handlers != [ ]) {
|
||||
enable = true;
|
||||
defaultApplications = lib.listToAttrs handlers;
|
||||
associations.added = lib.listToAttrs handlers;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,167 @@
|
||||
# Launchers: an app's own desktop entry (from its Flatpak, Nix package or a
|
||||
# host file), rewritten with extra environment, options, wrappers, MIME
|
||||
# defaults and wallet access, under the same desktop ID in
|
||||
# ~/.local/share/applications, so it replaces the original in the KDE menu
|
||||
# and the "+" menu (which reads only that directory).
|
||||
# - Flatpak/host file entries only exist at runtime: steam-frame-nix-launchers
|
||||
# (launchers/generate.sh + rewrite.awk) writes them to
|
||||
# <session.runtimeDir>/steam-frame-nix/applications (tmpfs), on switch, at
|
||||
# login and when Flatpak installs/updates apps (path unit); the Home
|
||||
# Manager links point there.
|
||||
# - Package entries are rewritten at build time.
|
||||
# - keyring: one kwalletd6 for both sessions (the outer bus), the wallet's
|
||||
# D-Bus names for Flatpaks, --password-store=kwallet6 for Electron.
|
||||
# Replaces the keyring module (steamFrame.keyring.*), whose options fail with
|
||||
# the new form.
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
cfg = config.steamFrame.launchers;
|
||||
session = config.steamFrame.session;
|
||||
L = import ./launchers/lib.nix { inherit lib pkgs; };
|
||||
|
||||
all = lib.mapAttrs (id: l: l // { inherit id; }) cfg;
|
||||
runtimeLaunchers = lib.filterAttrs (_: l: L.kindOf l != "package") all;
|
||||
packageLaunchers = lib.filterAttrs (_: l: L.kindOf l == "package") all;
|
||||
|
||||
outDir = "${session.runtimeDir}/steam-frame-nix/applications";
|
||||
exportDirs = [
|
||||
"${config.xdg.dataHome}/flatpak/exports/share/applications"
|
||||
"/var/lib/flatpak/exports/share/applications"
|
||||
];
|
||||
generator = L.generator {
|
||||
launchers = runtimeLaunchers;
|
||||
runtimeDir = session.runtimeDir;
|
||||
applicationsDir = "${config.xdg.dataHome}/applications";
|
||||
inherit exportDirs;
|
||||
};
|
||||
exe = lib.getExe generator;
|
||||
|
||||
defaults = lib.concatLists (lib.mapAttrsToList (id: l:
|
||||
map (m: { inherit m id; }) (lib.unique l.defaultFor)) all);
|
||||
byMime = lib.groupBy (d: d.m) defaults;
|
||||
mimeAttrs = lib.mapAttrs (_: ds: "${(lib.head ds).id}.desktop") byMime;
|
||||
|
||||
removed = what: lib.mkRemovedOptionModule [ "steamFrame" "keyring" what ] ''
|
||||
Keyring launchers are now steamFrame.launchers.<desktop ID>, made from the
|
||||
app's own desktop entry (name, icon, actions come from it), e.g.
|
||||
steamFrame.launchers."im.riot.Riot" = {
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/element" "x-scheme-handler/io.element.desktop" ];
|
||||
};
|
||||
steamFrame.launchers."com.anthropic.Claude" = {
|
||||
source.package = pkgs.claude-desktop;
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/claude" ];
|
||||
};
|
||||
(schemeHandlers = [ "x" ] -> defaultFor = [ "x-scheme-handler/x" ];
|
||||
flatpakArgs, args, mimeTypes, settings keep their meaning; name, icon,
|
||||
categories, actions, executable, fieldCode, ... are gone.)
|
||||
See docs/launchers.md.'';
|
||||
in {
|
||||
imports = [ ./cleanup.nix (removed "flatpaks") (removed "programs") ];
|
||||
|
||||
options.steamFrame.launchers = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule (L.launcherModule { bus = session.bus; }));
|
||||
default = { };
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
"im.riot.Riot" = {
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/element" "x-scheme-handler/io.element.desktop" ];
|
||||
};
|
||||
"org.kde.krdc".keyring.enable = true;
|
||||
"com.anthropic.Claude" = {
|
||||
source.package = pkgs.claude-desktop;
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/claude" ];
|
||||
};
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Desktop entries by desktop ID (without `.desktop`), made from the app's
|
||||
own entry (a Flatpak by default) with extra environment, options,
|
||||
wrappers and MIME defaults, replacing the original in the KDE menu and
|
||||
the "+" menu. See docs/launchers.md.
|
||||
'';
|
||||
};
|
||||
|
||||
config = lib.mkMerge [ (lib.mkIf (cfg != { }) {
|
||||
assertions = lib.concatLists (lib.mapAttrsToList (id: l: [
|
||||
{
|
||||
assertion = builtins.match "[A-Za-z0-9._-]+" id != null;
|
||||
message = "steamFrame.launchers.\"${id}\": not a desktop ID (letters, digits, . _ -; without .desktop).";
|
||||
}
|
||||
{
|
||||
assertion = lib.count (x: x != null) [ l.source.flatpak l.source.package l.source.file ] <= 1;
|
||||
message = "steamFrame.launchers.\"${id}\": set only one of source.flatpak, source.package, source.file.";
|
||||
}
|
||||
{
|
||||
assertion = L.kindOf l == "flatpak" || l.flatpakArgs == [ ];
|
||||
message = "steamFrame.launchers.\"${id}\": flatpakArgs is only for Flatpaks (use args, env or wrappers).";
|
||||
}
|
||||
{
|
||||
assertion = !l.keyring.electron || l.keyring.enable;
|
||||
message = "steamFrame.launchers.\"${id}\": keyring.electron needs keyring.enable.";
|
||||
}
|
||||
{
|
||||
assertion = lib.all (k: builtins.match "[A-Za-z0-9-]+" k != null) (lib.attrNames l.settings)
|
||||
&& lib.all (v: v == null || !lib.hasInfix "\n" v) (lib.attrValues l.settings);
|
||||
message = "steamFrame.launchers.\"${id}\".settings: keys are plain key names (no [locale]), values one line.";
|
||||
}
|
||||
]) all)
|
||||
++ lib.mapAttrsToList (m: ds: {
|
||||
assertion = lib.length ds == 1;
|
||||
message = "steamFrame.launchers: ${m} is in defaultFor of ${lib.concatMapStringsSep " and " (d: "\"${d.id}\"") ds}.";
|
||||
}) byMime;
|
||||
|
||||
xdg.dataFile = lib.mapAttrs' (id: _: lib.nameValuePair "applications/${id}.desktop" {
|
||||
source = config.lib.file.mkOutOfStoreSymlink "${outDir}/${id}.desktop";
|
||||
}) runtimeLaunchers // lib.mapAttrs' (id: l: lib.nameValuePair "applications/${id}.desktop" {
|
||||
source = L.packageEntry l;
|
||||
}) packageLaunchers;
|
||||
|
||||
xdg.mimeApps = lib.mkIf (defaults != [ ]) {
|
||||
enable = true;
|
||||
defaultApplications = mimeAttrs;
|
||||
associations.added = mimeAttrs;
|
||||
};
|
||||
|
||||
home.packages = lib.mkIf (runtimeLaunchers != { }) [ generator ];
|
||||
|
||||
systemd.user.services.steam-frame-nix-launchers = lib.mkIf (runtimeLaunchers != { }) {
|
||||
Unit.Description = "steam-frame-nix: desktop entries of steamFrame.launchers";
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = exe;
|
||||
};
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
};
|
||||
# Flatpak touches .changed after installs, updates and removals.
|
||||
systemd.user.paths.steam-frame-nix-launchers = lib.mkIf (runtimeLaunchers != { }) {
|
||||
Unit.Description = "steam-frame-nix: rewrite launchers when their sources change";
|
||||
Path = {
|
||||
PathChanged = [
|
||||
"${config.xdg.dataHome}/flatpak/.changed"
|
||||
"/var/lib/flatpak/.changed"
|
||||
] ++ exportDirs ++ lib.unique (lib.filter (f: f != null)
|
||||
(lib.mapAttrsToList (_: l: l.source.file) runtimeLaunchers));
|
||||
Unit = "steam-frame-nix-launchers.service";
|
||||
};
|
||||
Install.WantedBy = [ "default.target" ];
|
||||
};
|
||||
steamFrame.session.services.start =
|
||||
lib.mkIf (runtimeLaunchers != { }) [ "steam-frame-nix-launchers.path" ];
|
||||
}) {
|
||||
# Also without launchers, to remove entries of ones no longer configured.
|
||||
home.activation.steamFrameLaunchers = lib.hm.dag.entryAfter [ "linkGeneration" ] ''
|
||||
if [[ ! -d ${lib.escapeShellArg session.runtimeDir} ]]; then
|
||||
${lib.optionalString (runtimeLaunchers != { }) ''echo "steam-frame-nix: ${session.runtimeDir} doesn't exist (outer session not running?); launchers are written at its next login" >&2''}
|
||||
:
|
||||
elif [[ -v DRY_RUN ]]; then
|
||||
echo "would run: STEAM_FRAME_NIX_RUNTIME_DIR=${session.runtimeDir} ${exe}"
|
||||
else
|
||||
STEAM_FRAME_NIX_RUNTIME_DIR=${lib.escapeShellArg session.runtimeDir} ${exe}
|
||||
fi
|
||||
'';
|
||||
} ];
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
# Checks of steamFrame.launchers (lib.nix, rewrite.awk, generate.sh) on
|
||||
# copies of real entries (fixtures/sources: Element, KRDC, Firefox, gedit
|
||||
# (DBusActivatable) from /var/lib/flatpak, Jellyfin from the user
|
||||
# installation, Claude from the claude-desktop package) and two made-up ones
|
||||
# (quoting, an Exec without anchor):
|
||||
# - the rewritten entries equal fixtures/expected (X-SteamFrameNix-Source
|
||||
# compared separately) and pass desktop-file-validate;
|
||||
# - the generator: unchanged sources change nothing (mtimes kept, no touch of
|
||||
# the applications dir), a changed source is rewritten and touches it,
|
||||
# entries of removed launchers and of missing sources are removed, an
|
||||
# unknown Exec format gives the original entry with a warning, edits and
|
||||
# replaced links are reported, no outer runtime dir is a no-op;
|
||||
# - a package without the entry fails to build.
|
||||
# The rewritten entries end up in $out/actual (to update fixtures/expected).
|
||||
{ pkgs }:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
L = import ./lib.nix { inherit lib pkgs; };
|
||||
src = ./fixtures/sources;
|
||||
shim = "/nix/store/00000000000000000000000000000000-mpv-hwdec-shim";
|
||||
|
||||
fakeClaude = pkgs.runCommand "claude-desktop-fixture" { } ''
|
||||
mkdir -p $out/share/applications
|
||||
cp ${src}/com.anthropic.Claude.desktop $out/share/applications/
|
||||
'';
|
||||
noEntry = pkgs.runCommand "no-entry-fixture" { } "mkdir -p $out/share/applications";
|
||||
|
||||
launchers = (lib.evalModules {
|
||||
modules = [ {
|
||||
options.launchers = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule
|
||||
(L.launcherModule { bus = "unix:path=/run/user/1000/bus"; }));
|
||||
};
|
||||
config.launchers = {
|
||||
"im.riot.Riot" = {
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/element" "x-scheme-handler/io.element.desktop" ];
|
||||
};
|
||||
"org.kde.krdc".keyring.enable = true;
|
||||
"org.mozilla.firefox" = {
|
||||
wrappers = [ "/nix/store/00000000000000000000000000000000-firefox-wrapper" ];
|
||||
defaultFor = [ "x-scheme-handler/http" "x-scheme-handler/https" "text/html" ];
|
||||
};
|
||||
"org.jellyfin.JellyfinDesktop" = {
|
||||
flatpakArgs = [ "--device=all" "--filesystem=${shim}:ro" ];
|
||||
env = { LD_PRELOAD = "${shim}/lib/mpv-hwdec-shim.so"; SFN_MPV_HWDEC = "v4l2m2m-copy,auto-copy"; };
|
||||
};
|
||||
"org.gnome.gedit" = {
|
||||
mimeTypes = [ "text/x-nix" "text/plain" ];
|
||||
settings = { Name = "gedit (test)"; Keywords = null; StartupWMClass = "gedit"; };
|
||||
};
|
||||
"org.example.NoAnchor" = { };
|
||||
"org.example.Quoting" = {
|
||||
source.file = "${src}/org.example.Quoting.desktop";
|
||||
wrappers = [ "/w/outer" "/w/in ner" ];
|
||||
hostEnv.A = "x y";
|
||||
env.B = "100%";
|
||||
args = [ "a b" "50%" "q\"uote" "$HOME" "back\\slash" "back`tick" "" ];
|
||||
settings.Keywords = "x;";
|
||||
};
|
||||
"com.anthropic.Claude" = {
|
||||
source.package = fakeClaude;
|
||||
keyring = { enable = true; electron = true; };
|
||||
defaultFor = [ "x-scheme-handler/claude" ];
|
||||
};
|
||||
};
|
||||
} ];
|
||||
}).config.launchers;
|
||||
all = lib.mapAttrs (id: l: l // { inherit id; }) launchers;
|
||||
runtime = lib.filterAttrs (_: l: L.kindOf l != "package") all;
|
||||
|
||||
generator = L.generator {
|
||||
launchers = runtime;
|
||||
runtimeDir = "/nonexistent"; # overridden below
|
||||
applicationsDir = "/nonexistent";
|
||||
exportDirs = [ "/nonexistent" ];
|
||||
};
|
||||
empty = L.generator {
|
||||
launchers = { };
|
||||
runtimeDir = "/nonexistent";
|
||||
applicationsDir = "/nonexistent";
|
||||
exportDirs = [ "/nonexistent" ];
|
||||
};
|
||||
claude = L.packageEntry all."com.anthropic.Claude";
|
||||
missing = pkgs.testers.testBuildFailure (L.packageEntry (all."com.anthropic.Claude" // {
|
||||
source = all."com.anthropic.Claude".source // { package = noEntry; };
|
||||
}));
|
||||
in
|
||||
pkgs.runCommand "launchers-check" {
|
||||
nativeBuildInputs = [ generator pkgs.desktop-file-utils pkgs.diffutils ];
|
||||
passthru = { inherit generator claude; };
|
||||
} ''
|
||||
set -euo pipefail
|
||||
fail() { echo "FAIL: $*" >&2; exit 1; }
|
||||
root=$PWD
|
||||
export STEAM_FRAME_NIX_RUNTIME_DIR=$root/run
|
||||
export STEAM_FRAME_NIX_APPLICATIONS_DIR=$root/apps
|
||||
export STEAM_FRAME_NIX_FLATPAK_EXPORTS=$root/user:$root/system
|
||||
out_dir=$root/run/steam-frame-nix/applications
|
||||
mkdir -p $root/user $root/system $root/apps
|
||||
for id in im.riot.Riot org.kde.krdc org.mozilla.firefox org.gnome.gedit org.example.NoAnchor; do
|
||||
cp ${src}/$id.desktop $root/system/
|
||||
done
|
||||
cp ${src}/org.jellyfin.JellyfinDesktop.desktop $root/user/
|
||||
# a user installation wins over the system one
|
||||
cp ${src}/org.jellyfin.JellyfinDesktop.desktop $root/system/
|
||||
chmod u+w $root/system/* $root/user/*
|
||||
sed -i 's/^Name=Jellyfin$/Name=system copy/' $root/system/org.jellyfin.JellyfinDesktop.desktop
|
||||
|
||||
run() { steam-frame-nix-launchers 2> $root/log || fail "status $?: $(cat $root/log)"; cat $root/log >&2; }
|
||||
logged() { grep -qF -- "$1" $root/log || fail "log lacks '$1': $(cat $root/log)"; }
|
||||
mt() { stat -c %Y "$1"; }
|
||||
old() { touch -d @1000000000 "$@"; }
|
||||
|
||||
# no outer runtime dir: nothing happens
|
||||
run; logged "doesn't exist"; [ ! -e $root/run ] || fail "created the runtime dir"
|
||||
|
||||
mkdir -p $root/run
|
||||
old $root/apps
|
||||
run
|
||||
[ "$(mt $root/apps)" != 1000000000 ] || fail "applications dir not touched"
|
||||
logged "org.example.NoAnchor: unknown Exec format"
|
||||
cmp -s ${src}/org.example.NoAnchor.desktop $out_dir/org.example.NoAnchor.desktop || fail "unknown Exec format: not the original"
|
||||
|
||||
mkdir -p $out/actual
|
||||
for id in ${lib.concatStringsSep " " (lib.attrNames runtime)}; do
|
||||
[ $id = org.example.NoAnchor ] && continue
|
||||
cp $out_dir/$id.desktop $out/actual/
|
||||
done
|
||||
cp ${claude} $out/actual/com.anthropic.Claude.desktop
|
||||
grep -qx "X-SteamFrameNix-Source=$root/user/org.jellyfin.JellyfinDesktop.desktop" $out/actual/org.jellyfin.JellyfinDesktop.desktop \
|
||||
|| fail "Jellyfin not from the user installation"
|
||||
grep -qx "X-SteamFrameNix-Source=$root/system/org.kde.krdc.desktop" $out/actual/org.kde.krdc.desktop || fail "KRDC source"
|
||||
grep -qx "X-SteamFrameNix-Source=${src}/org.example.Quoting.desktop" $out/actual/org.example.Quoting.desktop || fail "file source"
|
||||
grep -qx "X-SteamFrameNix-Source=${fakeClaude}/share/applications/com.anthropic.Claude.desktop" $out/actual/com.anthropic.Claude.desktop || fail "package source"
|
||||
sed -i 's|^X-SteamFrameNix-Source=.*|X-SteamFrameNix-Source=@SOURCE@|' $out/actual/*.desktop
|
||||
desktop-file-validate --no-hints $out/actual/*.desktop || fail "desktop-file-validate"
|
||||
for f in ${./fixtures/expected}/*.desktop; do
|
||||
diff -u $f $out/actual/''${f##*/} || fail "''${f##*/} differs from fixtures/expected"
|
||||
done
|
||||
[ "$(ls ${./fixtures/expected} | wc -l)" = "$(ls $out/actual | wc -l)" ] || fail "expected/actual count"
|
||||
|
||||
# unchanged: nothing written, applications dir untouched
|
||||
old $root/apps $out_dir/*.desktop
|
||||
run
|
||||
[ "$(mt $root/apps)" = 1000000000 ] || fail "unchanged run touched the applications dir"
|
||||
for f in $out_dir/*.desktop; do [ "$(mt $f)" = 1000000000 ] || fail "unchanged run rewrote $f"; done
|
||||
|
||||
# changed source: rewritten, dir touched
|
||||
echo '# changed' >> $root/system/org.kde.krdc.desktop
|
||||
run
|
||||
logged "org.kde.krdc: entry written"
|
||||
[ "$(mt $out_dir/org.kde.krdc.desktop)" != 1000000000 ] || fail "changed source not rewritten"
|
||||
[ "$(mt $out_dir/im.riot.Riot.desktop)" = 1000000000 ] || fail "other entry rewritten"
|
||||
[ "$(mt $root/apps)" != 1000000000 ] || fail "changed run didn't touch the applications dir"
|
||||
grep -qx '# changed' $out_dir/org.kde.krdc.desktop || fail "comment not kept"
|
||||
|
||||
# launcher no longer configured, source gone: removed
|
||||
echo stale > $out_dir/org.example.Old.desktop; echo x > $out_dir/.org.example.Old.desktop.sum
|
||||
rm $root/system/org.gnome.gedit.desktop
|
||||
old $root/apps
|
||||
run
|
||||
[ ! -e $out_dir/org.example.Old.desktop ] && [ ! -e $out_dir/.org.example.Old.desktop.sum ] || fail "stale entry kept"
|
||||
[ ! -e $out_dir/org.gnome.gedit.desktop ] || fail "entry without source kept"
|
||||
logged "org.gnome.gedit: entry removed (no source entry"
|
||||
[ "$(mt $root/apps)" != 1000000000 ] || fail "removal didn't touch the applications dir"
|
||||
|
||||
# edited entry (e.g. KDE's editor writing through the link): overwritten
|
||||
cp $out_dir/im.riot.Riot.desktop $root/riot
|
||||
echo 'Name[de]=Edited' >> $out_dir/im.riot.Riot.desktop
|
||||
run
|
||||
logged "im.riot.Riot.desktop was edited"
|
||||
cmp -s $root/riot $out_dir/im.riot.Riot.desktop || fail "edit not overwritten"
|
||||
# replaced link: reported; our own link: not
|
||||
ln -s $out_dir/im.riot.Riot.desktop $root/apps/im.riot.Riot.desktop
|
||||
echo '[Desktop Entry]' > $root/apps/org.kde.krdc.desktop
|
||||
run
|
||||
logged "org.kde.krdc.desktop no longer leads to"
|
||||
! grep -q "im.riot.Riot.desktop no longer" $root/log || fail "own link reported"
|
||||
|
||||
# no launchers left (the activation runs it anyway): all entries removed
|
||||
old $root/apps
|
||||
${lib.getExe empty} 2> $root/log || fail "empty: $(cat $root/log)"
|
||||
[ -z "$(ls $out_dir)" ] || fail "entries left: $(ls $out_dir)"
|
||||
[ "$(mt $root/apps)" != 1000000000 ] || fail "removal didn't touch the applications dir"
|
||||
|
||||
# a package without the entry: the build fails
|
||||
[ -e ${missing}/testBuildFailure.log ] && grep -q "has no share/applications/com.anthropic.Claude.desktop" ${missing}/testBuildFailure.log \
|
||||
|| fail "package without the entry built"
|
||||
echo ok
|
||||
''
|
||||
@@ -0,0 +1,26 @@
|
||||
[Desktop Entry]
|
||||
Name=Claude
|
||||
Comment=Desktop application for Claude.ai
|
||||
GenericName=AI Assistant
|
||||
Keywords=AI;Chat;Assistant;Claude;Code;LLM;
|
||||
Exec=env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop --password-store=kwallet6 %U
|
||||
Icon=claude-desktop
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
# Matches the Wayland app_id / X11 WM_CLASS Chromium derives from
|
||||
# package.json desktopName, so docks group windows under this entry.
|
||||
StartupWMClass=com.anthropic.Claude
|
||||
# second-instance just focuses mainWindow; suppress GNOME's default "New Window" item
|
||||
SingleMainWindow=true
|
||||
Categories=Utility;Development;
|
||||
MimeType=x-scheme-handler/claude;
|
||||
Actions=NewChat;NewCode;
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
|
||||
[Desktop Action NewChat]
|
||||
Name=New Chat
|
||||
Exec=env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop --password-store=kwallet6 "claude://claude.ai/new?surface=chat&source=desktop_action"
|
||||
|
||||
[Desktop Action NewCode]
|
||||
Name=New Claude Code Session
|
||||
Exec=env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop --password-store=kwallet6 "claude://code/new?source=desktop_action"
|
||||
@@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Element
|
||||
Comment=A Matrix-based instant messaging client
|
||||
Icon=im.riot.Riot
|
||||
Exec=env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/element --file-forwarding --talk-name=org.kde.kwalletd6 --talk-name=org.freedesktop.secrets im.riot.Riot --password-store=kwallet6 @@u %U @@
|
||||
Categories=Network;InstantMessaging;Chat;VideoConference;
|
||||
MimeType=x-scheme-handler/element;x-scheme-handler/io.element.desktop;
|
||||
StartupWMClass=element
|
||||
Keywords=Matrix;matrix.org;chat;irc;communications;talk;riot;vector;
|
||||
X-Flatpak=im.riot.Riot
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
@@ -0,0 +1,18 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Quoting test
|
||||
Name[de]=Zitiertest
|
||||
# a comment
|
||||
Exec=env "A=x y" "B=100%%" /w/outer "/w/in ner" env FOO=1 "/opt/My App/bin/app" "a b" "50%%" "q\\"uote" "\\$HOME" "back\\\\slash" "back\\`tick" "" --flag "with \\"quote\\"" %F
|
||||
Icon=app
|
||||
Actions=second;
|
||||
Keywords=x;
|
||||
X-Unknown-Key=kept\sas is
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
|
||||
[Desktop Action second]
|
||||
Name=Second
|
||||
Exec=env "A=x y" "B=100%%" /w/outer "/w/in ner" "/opt/My App/bin/app" "a b" "50%%" "q\\"uote" "\\$HOME" "back\\\\slash" "back\\`tick" "" --second
|
||||
|
||||
[X-Other Group]
|
||||
Exec=untouched
|
||||
@@ -0,0 +1,246 @@
|
||||
[Desktop Entry]
|
||||
Name=gedit (test)
|
||||
Comment[af]=Redigeer tekslêers
|
||||
Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
|
||||
Comment[an]=Edita fichers de texto
|
||||
Comment[ar]=حرّر الملفات النصية
|
||||
Comment[as]=লিখনি ফাইল সম্পাদনা
|
||||
Comment[ast]=Editar ficheros de testu
|
||||
Comment[az]=Mətn fayllarını redaktə edin
|
||||
Comment[be]=Рэдагаванне тэкставых файлаў
|
||||
Comment[be@latin]=Redahuj tekstavyja fajły
|
||||
Comment[bg]=Редактиране на текстови файлове
|
||||
Comment[bn]=টেক্সট ফাইল সম্পাদনা করুন
|
||||
Comment[bn_IN]=টেক্সট ফাইল সম্পাদনা
|
||||
Comment[br]=Embann restroù testenn
|
||||
Comment[bs]=Izmijeni tekstualne datoteke
|
||||
Comment[ca]=Editeu fitxers de text
|
||||
Comment[ca@valencia]=Editeu fitxers de text
|
||||
Comment[ckb]=دەق دەستکاریبکە
|
||||
Comment[crh]=Metin dosyelerini tahrir et
|
||||
Comment[cs]=Upravujte textové soubory
|
||||
Comment[cy]=Golygu ffeiliau testun
|
||||
Comment[da]=Redigér tekstfiler
|
||||
Comment[de]=Textdateien bearbeiten
|
||||
Comment[dz]=ཚིག་ཡིག་ཡིག་སྣོད་ཚུ་ ཞུན་དག་རྐྱབས་
|
||||
Comment[el]=Επεξεργασία αρχείων κειμένου
|
||||
Comment[en_CA]=Edit text files
|
||||
Comment[en_GB]=Edit text files
|
||||
Comment[en@shaw]=𐑧𐑛𐑦𐑑 𐑑𐑧𐑒𐑕𐑑 𐑓𐑲𐑤𐑟
|
||||
Comment[eo]=Redakti tekstdosierojn
|
||||
Comment[es]=Edite archivos de texto
|
||||
Comment[et]=Tekstifailide redigeerimine
|
||||
Comment[eu]=Editatu testu-fitxategiak
|
||||
Comment[fa]=ویرایش پروندههای متنی
|
||||
Comment[fi]=Muokkaa tekstitiedostoja
|
||||
Comment[fr]=Éditer des fichiers texte
|
||||
Comment[fur]=Modifiche file di test
|
||||
Comment[ga]=Cuir comhaid téacs in eagar
|
||||
Comment[gd]=Deasaich faidhlichean teacsa
|
||||
Comment[gl]=Editar ficheiros de texto
|
||||
Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
|
||||
Comment[he]=עריכת קובצי טקסט
|
||||
Comment[hi]=पाठ फ़ाइलें संपादित करें
|
||||
Comment[hr]=Uređivanje tekstovnih datoteka
|
||||
Comment[hu]=Szövegfájlok szerkesztése
|
||||
Comment[ia]=Rediger files de texto
|
||||
Comment[id]=Menyunting berkas teks
|
||||
Comment[ie]=Redacte files textual
|
||||
Comment[is]=Sýsla með textaskrár
|
||||
Comment[it]=Modifica file di testo
|
||||
Comment[ja]=テキストファイルを編集します
|
||||
Comment[ka]=ფაილების რედაქტირება
|
||||
Comment[kab]=Ẓreg ifuyla n uḍris
|
||||
Comment[kk]=Мәтіндік файлдарды түзету
|
||||
Comment[km]=កែសម្រួលឯកសារអត្ថបទ
|
||||
Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು
|
||||
Comment[ko]=텍스트 파일을 편집합니다
|
||||
Comment[ku]=Pelên nivîsê sererast bike
|
||||
Comment[ln]=Bɔngisa kásá ya nkomá
|
||||
Comment[lt]=Redaguoti tekstinius failus
|
||||
Comment[lv]=Rediģēt teksta datnes
|
||||
Comment[mai]=पाठ फाइलकेँ संपादित करू
|
||||
Comment[mg]=Hanova raki-dahabolana
|
||||
Comment[mk]=Уредувај текстуални датотеки
|
||||
Comment[ml]=പദാവലി ഫയലുകളില് മാറ്റം വരുത്തുക
|
||||
Comment[mn]=Текст файл боловсруулах
|
||||
Comment[mr]=मजकूर फाइल्स् संपादीत करा
|
||||
Comment[ms]=Sunting fail teks
|
||||
Comment[my]=စာသားဖိုင်များပြင်ဆင်ရန်
|
||||
Comment[nb]=Rediger tekstfiler
|
||||
Comment[nds]=Textdateien bewarken
|
||||
Comment[ne]=पाठ फाइल सम्पादन गर्नुहोस्
|
||||
Comment[nl]=Bewerk tekstbestanden
|
||||
Comment[nn]=Rediger tekstfiler
|
||||
Comment[oc]=Editar de fichièrs tèxte
|
||||
Comment[or]=ପାଠ୍ଯ ଫାଇଲଗୁଡ଼ିକୁ ସମ୍ପାଦନ କରନ୍ତୁ
|
||||
Comment[pa]=ਲਿਖਤ ਫਾਇਲਾਂ ਸੋਧੋ
|
||||
Comment[pl]=Edytor plików tekstowych
|
||||
Comment[ps]=ليکن دوتنې سمول
|
||||
Comment[pt]=Editar ficheiros de texto
|
||||
Comment[pt_BR]=Edite arquivos de texto
|
||||
Comment[ro]=Editare fișiere text
|
||||
Comment[ru]=Редактор текстовых файлов
|
||||
Comment[si]=පෙළ ගොනු සකසන්න
|
||||
Comment[sk]=Úprava textových súborov
|
||||
Comment[sl]=Enostavni urejevalnik besedilnih datotek
|
||||
Comment[sq]=Ndrysho file teksti
|
||||
Comment[sr]=Уређујте текстуалне документе
|
||||
Comment[sr@latin]=Uređujte tekstualne dokumente
|
||||
Comment[sv]=Redigera textfiler
|
||||
Comment[ta]=உரை கோப்புகளை திருத்தவும்
|
||||
Comment[te]=పాఠ్య ఫైళ్ళను సవరించు
|
||||
Comment[th]=แก้ไขไฟล์ข้อความ
|
||||
Comment[tk]=Metin faýllary editle
|
||||
Comment[tr]=Metin dosyalarını düzenle
|
||||
Comment[ug]=تېكىست ھۆججەتلىرىنى تەھرىرلەش
|
||||
Comment[uk]=Редактор текстових файлів
|
||||
Comment[vi]=Soạn thảo tập tin văn bản
|
||||
Comment[wa]=Asspougnî des fitchîs tecses
|
||||
Comment[xh]=Hlela iifayili zombhalo
|
||||
Comment[zh_CN]=编辑文本文件
|
||||
Comment[zh_HK]=編輯文字檔
|
||||
Comment[zh_TW]=編輯文字檔
|
||||
Comment=Edit text files
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit --file-forwarding org.gnome.gedit @@u %U @@
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
MimeType=text/plain;application/x-zerosize;text/x-nix;
|
||||
Icon=org.gnome.gedit
|
||||
Categories=GNOME;GTK;Utility;TextEditor;
|
||||
Actions=new-window;new-document;
|
||||
DBusActivatable=false
|
||||
X-Flatpak=org.gnome.gedit
|
||||
StartupWMClass=gedit
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name[af]=Nuwe venster
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn_IN]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[ca@valencia]=_Finestra nova
|
||||
Name[ckb]=پەنجەریەکی نوێ
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es]=Ventana nueva
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fur]=Gnûf barcon
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=_Xanela nova
|
||||
Name[he]=חלון חדש
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[ia]=Nove fenestra
|
||||
Name[id]=Jendela Baru
|
||||
Name[ie]=Nov fenestre
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[mjw]=Kimi Window
|
||||
Name[ml]=പുതിയ ജാലകം
|
||||
Name[ms]=Tetingkap Baharu
|
||||
Name[nb]=Nytt vindu
|
||||
Name[ne]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[oc]=Novèla fenèstra
|
||||
Name[pa]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Создать окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sr@latin]=Novi prozor
|
||||
Name[sv]=Nytt fönster
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Створити вікно
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=新增視窗
|
||||
Name=New Window
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit org.gnome.gedit --new-window
|
||||
|
||||
[Desktop Action new-document]
|
||||
Name[af]=Nuwe dokument
|
||||
Name[ar]=مستند جديد
|
||||
Name[be]=Новы дакумент
|
||||
Name[bg]=Нов документ
|
||||
Name[bn_IN]=নতুন ডকুমেন্ট
|
||||
Name[ca]=Crea un document nou
|
||||
Name[ca@valencia]=Crea un document nou
|
||||
Name[ckb]=بەڵگەنامەی نوێ
|
||||
Name[cs]=Nový dokument
|
||||
Name[da]=Nyt dokument
|
||||
Name[de]=Neues Dokument
|
||||
Name[el]=Νέο έγγραφο
|
||||
Name[en_GB]=New Document
|
||||
Name[eo]=Nova dokumento
|
||||
Name[es]=Documento nuevo
|
||||
Name[eu]=Dokumentu berria
|
||||
Name[fa]=سند جدید
|
||||
Name[fi]=Uusi asiakirja
|
||||
Name[fr]=Nouveau document
|
||||
Name[fur]=Gnûf document
|
||||
Name[gd]=Sgrìobhainn ùr
|
||||
Name[gl]=Novo documento
|
||||
Name[he]=מסמך חדש
|
||||
Name[hr]=Novi dokument
|
||||
Name[hu]=Új dokumentum
|
||||
Name[ia]=Nove documento
|
||||
Name[id]=Dokumen Baru
|
||||
Name[ie]=Nov document
|
||||
Name[is]=Nýtt skjal
|
||||
Name[it]=Nuovo documento
|
||||
Name[ja]=新しいドキュメント
|
||||
Name[ka]=ახალი დოკუმენტი
|
||||
Name[kab]=Isemli amaynut
|
||||
Name[kk]=Жаңа құжат
|
||||
Name[ko]=새 문서
|
||||
Name[lt]=Naujas dokumentas
|
||||
Name[lv]=Jauns dokuments
|
||||
Name[mjw]=Kimi Document
|
||||
Name[ml]=പൂതിയ രേഖ
|
||||
Name[ms]=Dokumen Baharu
|
||||
Name[nb]=Nytt dokument
|
||||
Name[ne]=नयाँ कागजात
|
||||
Name[nl]=Nieuw document
|
||||
Name[oc]=Novèl document
|
||||
Name[pa]=ਨਵਾਂ ਡੌਕੂਮੈਂਟ
|
||||
Name[pl]=Nowy dokument
|
||||
Name[pt]=Novo documento
|
||||
Name[pt_BR]=Novo documento
|
||||
Name[ro]=Document nou
|
||||
Name[ru]=Создать документ
|
||||
Name[sk]=Nový dokument
|
||||
Name[sl]=Nov dokument
|
||||
Name[sr]=Нови документ
|
||||
Name[sr@latin]=Novi dokument
|
||||
Name[sv]=Nytt dokument
|
||||
Name[th]=เอกสารใหม่
|
||||
Name[tr]=Yeni Belge
|
||||
Name[uk]=Створити документ
|
||||
Name[vi]=Tài liệu mới
|
||||
Name[zh_CN]=新建文档
|
||||
Name[zh_TW]=新增文件
|
||||
Name=New Document
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit org.gnome.gedit --new-document
|
||||
@@ -0,0 +1,29 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Jellyfin
|
||||
Comment=Desktop client for Jellyfin
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop --device=all --filesystem=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro --env=LD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so --env=SFN_MPV_HWDEC=v4l2m2m-copy,auto-copy org.jellyfin.JellyfinDesktop
|
||||
Icon=org.jellyfin.JellyfinDesktop
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupWMClass=org.jellyfin.JellyfinDesktop
|
||||
Categories=AudioVideo;Video;Player;TV;
|
||||
Actions=DesktopF;DesktopW;TVF;TVW
|
||||
X-Flatpak=org.jellyfin.JellyfinDesktop
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
|
||||
[Desktop Action DesktopF]
|
||||
Name=Desktop [Fullscreen]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop --device=all --filesystem=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro --env=LD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so --env=SFN_MPV_HWDEC=v4l2m2m-copy,auto-copy org.jellyfin.JellyfinDesktop --fullscreen --desktop
|
||||
|
||||
[Desktop Action DesktopW]
|
||||
Name=Desktop [Windowed]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop --device=all --filesystem=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro --env=LD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so --env=SFN_MPV_HWDEC=v4l2m2m-copy,auto-copy org.jellyfin.JellyfinDesktop --windowed --desktop
|
||||
|
||||
[Desktop Action TVF]
|
||||
Name=TV [Fullscreen]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop --device=all --filesystem=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro --env=LD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so --env=SFN_MPV_HWDEC=v4l2m2m-copy,auto-copy org.jellyfin.JellyfinDesktop --fullscreen --tv
|
||||
|
||||
[Desktop Action TVW]
|
||||
Name=TV [Windowed]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop --device=all --filesystem=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim:ro --env=LD_PRELOAD=/nix/store/00000000000000000000000000000000-mpv-hwdec-shim/lib/mpv-hwdec-shim.so --env=SFN_MPV_HWDEC=v4l2m2m-copy,auto-copy org.jellyfin.JellyfinDesktop --windowed --tv
|
||||
@@ -0,0 +1,182 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=env DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/krdc --file-forwarding --talk-name=org.kde.kwalletd6 --talk-name=org.freedesktop.secrets org.kde.krdc -qwindowtitle %c @@u %u @@
|
||||
Icon=org.kde.krdc
|
||||
Terminal=false
|
||||
Name=KRDC
|
||||
Name[ar]=كردس
|
||||
Name[az]=KRDC
|
||||
Name[bg]=KRDC
|
||||
Name[bs]=KRDC
|
||||
Name[ca]=KRDC
|
||||
Name[ca@valencia]=KRDC
|
||||
Name[cs]=KRDC
|
||||
Name[da]=KRDC
|
||||
Name[de]=KRDC
|
||||
Name[el]=KRDC
|
||||
Name[en_GB]=KRDC
|
||||
Name[eo]=KRDC
|
||||
Name[es]=KRDC
|
||||
Name[et]=KRDC
|
||||
Name[eu]=KRDC
|
||||
Name[fi]=KRDC
|
||||
Name[fr]=KRDC
|
||||
Name[ga]=KRDC
|
||||
Name[gl]=KRDC
|
||||
Name[he]=KRDC
|
||||
Name[hne]=केआरडीसी
|
||||
Name[hr]=KRDC
|
||||
Name[hu]=KRDC
|
||||
Name[ia]=KRDC
|
||||
Name[is]=KRDC
|
||||
Name[it]=KRDC
|
||||
Name[ja]=KRDC
|
||||
Name[ka]=KRDC
|
||||
Name[kk]=KRDC
|
||||
Name[km]=KRDC
|
||||
Name[ko]=KRDC
|
||||
Name[lt]=KRDC
|
||||
Name[lv]=KRDC
|
||||
Name[ml]=കെആര്ഡിസി
|
||||
Name[mr]=के-आर-डी-सी
|
||||
Name[nb]=KRDC
|
||||
Name[nds]=KRDC
|
||||
Name[nl]=KRDC
|
||||
Name[nn]=KRDC
|
||||
Name[pa]=KRDC
|
||||
Name[pl]=KRDC
|
||||
Name[pt]=KRDC
|
||||
Name[pt_BR]=KRDC
|
||||
Name[ro]=KRDC
|
||||
Name[ru]=KRDC
|
||||
Name[sa]=केआरडीसी
|
||||
Name[si]=KRDC
|
||||
Name[sk]=KRDC
|
||||
Name[sl]=KRDC
|
||||
Name[sq]=KRDC
|
||||
Name[sr]=КРДЦ
|
||||
Name[sr@ijekavian]=КРДЦ
|
||||
Name[sr@ijekavianlatin]=KRDC
|
||||
Name[sr@latin]=KRDC
|
||||
Name[sv]=KRDC
|
||||
Name[tr]=KRDC
|
||||
Name[ug]=KRDC
|
||||
Name[uk]=KRDC
|
||||
Name[wa]=KRDC
|
||||
Name[zh_CN]=KRDC
|
||||
Name[zh_TW]=遠端桌面_KRDC
|
||||
GenericName=Remote Desktop Client
|
||||
GenericName[ar]=عميل سطح المكتب البعيد
|
||||
GenericName[az]=İş masasının uzaqdan idarə olunması
|
||||
GenericName[bg]=Отдалечен работен плот
|
||||
GenericName[bs]=Klijent udaljene radne površine
|
||||
GenericName[ca]=Client d'escriptori remot
|
||||
GenericName[ca@valencia]=Client d'escriptori remot
|
||||
GenericName[cs]=Klient vzdálené pracovní plochy
|
||||
GenericName[da]=Klient til fjernskrivebord
|
||||
GenericName[de]=Verbindung zu entferntem Rechner
|
||||
GenericName[el]=Πελάτης απομακρυσμένης επιφάνειας εργασίας
|
||||
GenericName[en_GB]=Remote Desktop Client
|
||||
GenericName[eo]=Kliento por fora labortablo
|
||||
GenericName[es]=Cliente de escritorio remoto
|
||||
GenericName[et]=Kaugtöölaua klient
|
||||
GenericName[eu]=Urruneko mahaigainaren bezeroa
|
||||
GenericName[fi]=Etätyöpöytäasiakas
|
||||
GenericName[fr]=Connexion à un bureau distant
|
||||
GenericName[ga]=Cliant Deisce Cianda
|
||||
GenericName[gl]=Cliente de escritorio remoto
|
||||
GenericName[he]=לקוח שולחן עבודה מרוחק
|
||||
GenericName[hne]=रिमोट डेस्कटाप क्लाएंट
|
||||
GenericName[hr]=Klijent za udaljeno povezivanje
|
||||
GenericName[hu]=Távoli asztal kliens
|
||||
GenericName[ia]=Cliente de scriptorio remote
|
||||
GenericName[is]=Tengingar við fjarlæg skjáborð
|
||||
GenericName[it]=Client per connessione a desktop remoto
|
||||
GenericName[ja]=リモートデスクトップクライアント
|
||||
GenericName[ka]=დისტანციური სამუშაო მაგიდის კლიენტი
|
||||
GenericName[kk]=Қашықтан үстелге қосылу клиенті
|
||||
GenericName[km]=កម្មវិធីមើលផ្ទៃតុពីចម្ងាយ
|
||||
GenericName[ko]=원격 데스크톱 클라이언트
|
||||
GenericName[lt]=Nuotolinio darbalaukio kliento programa
|
||||
GenericName[lv]=Attālās darbvirsmas klients
|
||||
GenericName[ml]=വിദൂര പണിയിട ക്ലയന്റ്
|
||||
GenericName[mr]=दूरस्थ डेस्कटॉप ग्राहक
|
||||
GenericName[nb]=Tilkobling til annet skrivebord
|
||||
GenericName[nds]=Schriefdisch-Feernverbinnen
|
||||
GenericName[nl]=Client voor verbinding met extern bureaublad
|
||||
GenericName[nn]=Tilkopling til eksternt skrivebord
|
||||
GenericName[pa]=ਰਿਮੋਟ ਡੈਸਕਟਾਪ ਕਲਾਈਟ
|
||||
GenericName[pl]=Klient zdalnego dostępu do pulpitu
|
||||
GenericName[pt]=Cliente de Ecrãs Remotos
|
||||
GenericName[pt_BR]=Cliente de área de trabalho remota
|
||||
GenericName[ro]=Client pentru birou la distanță
|
||||
GenericName[ru]=Удалённый доступ к рабочему столу
|
||||
GenericName[sa]=दूरस्थ डेस्कटॉप क्लायन्ट
|
||||
GenericName[si]=දුරස්ථ වැඩතල යෙදුම
|
||||
GenericName[sk]=Klient vzdialenej pracovnej plochy
|
||||
GenericName[sl]=Odjemalec za oddaljena namizja
|
||||
GenericName[sr]=Клијент удаљене површи
|
||||
GenericName[sr@ijekavian]=Клијент удаљене површи
|
||||
GenericName[sr@ijekavianlatin]=Klijent udaljene površi
|
||||
GenericName[sr@latin]=Klijent udaljene površi
|
||||
GenericName[sv]=Fjärranslutning till skrivbord
|
||||
GenericName[th]=ไคลเอนต์เชื่อมต่อพื้นที่ทำงานทางไกล
|
||||
GenericName[tr]=Uzak Masaüstü İstemcisi
|
||||
GenericName[ug]=يىراقتىكى ئۈستەلئۈستى خېرىدارى
|
||||
GenericName[uk]=Клієнт з'єднання з віддаленою стільницею
|
||||
GenericName[zh_CN]=远程桌面客户端
|
||||
GenericName[zh_TW]=遠端桌面用戶端
|
||||
Comment=Connect with RDP or VNC to another computer
|
||||
Comment[ar]=اتصل حاسوب آخر بواسطة RDP أو VNC
|
||||
Comment[az]=RDP və ya VNC ilə başqa kompüterə qoşulun
|
||||
Comment[bg]=Свързване чрез RDP or VNC с друг компютър
|
||||
Comment[ca]=Connecta amb RDP o VNC a un altre ordinador
|
||||
Comment[ca@valencia]=Connecta amb RDP o VNC a un altre ordinador
|
||||
Comment[cs]=Připojte se k jinému počítači pomocí RDP nebo VNC
|
||||
Comment[da]=Opret forbindelse til en anden computer med RDP eller VNC
|
||||
Comment[de]=Verbindung mit RDP oder VNC zu einem anderen Rechner
|
||||
Comment[el]=Σύνδεση με RDP ή VNC σε άλλον υπολογιστή
|
||||
Comment[en_GB]=Connect with RDP or VNC to another computer
|
||||
Comment[eo]=Konektiĝi per RDP aŭ VNC al alia komputilo
|
||||
Comment[es]=Conectar con RDP o VNC a otro equipo
|
||||
Comment[et]=Ühendumine RDP või VNC vahendusel teise arvutiga
|
||||
Comment[eu]=Konektatu RDP edo VNC bidez beste ordenagailu batera
|
||||
Comment[fi]=Yhdistä RDP:llä tai VNC:llä toiseen tietokoneeseen
|
||||
Comment[fr]=Se connecter à un autre ordinateur avec RDP ou VNC
|
||||
Comment[gl]=Conectarse por RDP ou VNC a outro computador.
|
||||
Comment[he]=התחברות ל־RDP או ל־VNC במחשב אחר
|
||||
Comment[hu]=Csatlakozás másik számítógéphez RDP-vel vagy VNC-vel
|
||||
Comment[ia]=Connecte con RDP o VNC a un altere computator
|
||||
Comment[is]=Tengstu með RDP eða VNC við aðrar tölvur
|
||||
Comment[it]=Connessione via RDP o VNC ad un altro computer
|
||||
Comment[ka]=მიუერთდით მოშორებულ კომპიუტერზე RDP ან VNC პროტოკოლით
|
||||
Comment[ko]=다른 컴퓨터에 RDP나 VNC로 연결
|
||||
Comment[lt]=Prisijungti prie kito kompiuterio naudojant RDP ar VNC
|
||||
Comment[lv]=Izmantojiet RDP vai VNC, lai pievienotos citam datoram
|
||||
Comment[nl]=Met RDP of VNC naar een andere computer verbinden
|
||||
Comment[nn]=Kopla til ei anna datamaskin via RDP eller VNC
|
||||
Comment[pl]=Połącz się przy użyciu RDP lub VNC do innego komputera
|
||||
Comment[pt]=Ligar-se com RDP ou VNC a outro computador
|
||||
Comment[pt_BR]=Conecte com RDP ou VNC em outro computador
|
||||
Comment[ro]=Conectare la alt calculator prin RDP sau VNC
|
||||
Comment[ru]=Подключение к другому компьютеру по RDP или VNC
|
||||
Comment[sa]=RDP अथवा VNC इत्यनेन सह अन्यसङ्गणकेन सह सम्बद्धं कुर्वन्तु
|
||||
Comment[sk]=Pripojiť pomocou RDP alebo VNC k inému počítaču
|
||||
Comment[sl]=Povežite se preko RDP-ja ali VNC-ja z drugim računalnikom
|
||||
Comment[sq]=Lidhu me një kompjuter tjetër përmes RDP ose VNC
|
||||
Comment[sr]=Повежите се РДП‑ом или ВНЦ‑ом са другим рачунаром
|
||||
Comment[sr@ijekavian]=Повежите се РДП‑ом или ВНЦ‑ом са другим рачунаром
|
||||
Comment[sr@ijekavianlatin]=Povežite se RDP‑om ili VNC‑om sa drugim računarom
|
||||
Comment[sr@latin]=Povežite se RDP‑om ili VNC‑om sa drugim računarom
|
||||
Comment[sv]=Anslut till en annan dator med RDP eller VNC
|
||||
Comment[tr]=Başka bir bilgisayara RDP veya VNC ile bağlan
|
||||
Comment[uk]=З'єднання з іншим комп'ютером за допомогою RDP або VNC
|
||||
Comment[zh_CN]=通过 RDP 或 VNC 连接到另一台计算机
|
||||
Comment[zh_TW]=以 RDP 或 VNC 連線到其他電腦
|
||||
X-DocPath=krdc/index.html
|
||||
StartupWMClass=krdc
|
||||
MimeType=x-scheme-handler/vnc;x-scheme-handler/rdp;application/x-krdc;
|
||||
Categories=Qt;KDE;Network;RemoteAccess;
|
||||
X-KDE-Wayland-Interfaces=org_kde_kwin_keystate
|
||||
X-Flatpak=org.kde.krdc
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
@@ -0,0 +1,848 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Exec=/nix/store/00000000000000000000000000000000-firefox-wrapper /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox @@u %u @@
|
||||
Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Icon=org.mozilla.firefox
|
||||
StartupWMClass=firefox
|
||||
DBusActivatable=false
|
||||
Categories=GNOME;GTK;Network;WebBrowser;
|
||||
MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/x-xpinstall;application/xhtml+xml;application/xml;audio/flac;audio/ogg;audio/webm;image/avif;image/gif;image/jpeg;image/png;image/svg+xml;image/webp;text/html;text/xml;video/ogg;video/webm;x-scheme-handler/chrome;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/mailto;
|
||||
StartupNotify=true
|
||||
Actions=new-window;new-private-window;open-profile-manager;
|
||||
Name=Firefox
|
||||
Name[ach]=Firefox
|
||||
Name[af]=Firefox
|
||||
Name[an]=Firefox
|
||||
Name[ar]=Firefox
|
||||
Name[ast]=Firefox
|
||||
Name[az]=Firefox
|
||||
Name[be]=Firefox
|
||||
Name[bg]=Firefox
|
||||
Name[bn]=Firefox
|
||||
Name[br]=Firefox
|
||||
Name[bs]=Firefox
|
||||
Name[ca]=Firefox
|
||||
Name[ca_valencia]=Firefox
|
||||
Name[cak]=Firefox
|
||||
Name[cs]=Firefox
|
||||
Name[cy]=Firefox
|
||||
Name[da]=Firefox
|
||||
Name[de]=Firefox
|
||||
Name[dsb]=Firefox
|
||||
Name[el]=Firefox
|
||||
Name[en_CA]=Firefox
|
||||
Name[en_GB]=Firefox
|
||||
Name[eo]=Firefox
|
||||
Name[es_AR]=Firefox
|
||||
Name[es_CL]=Firefox
|
||||
Name[es_ES]=Firefox
|
||||
Name[es_MX]=Firefox
|
||||
Name[et]=Firefox
|
||||
Name[eu]=Firefox
|
||||
Name[fa]=Firefox
|
||||
Name[ff]=Firefox
|
||||
Name[fi]=Firefox
|
||||
Name[fr]=Firefox
|
||||
Name[fur]=Firefox
|
||||
Name[fy_NL]=Firefox
|
||||
Name[ga_IE]=Firefox
|
||||
Name[gd]=Firefox
|
||||
Name[gl]=Firefox
|
||||
Name[gn]=Firefox
|
||||
Name[gu_IN]=Firefox
|
||||
Name[he]=Firefox
|
||||
Name[hi_IN]=Firefox
|
||||
Name[hr]=Firefox
|
||||
Name[hsb]=Firefox
|
||||
Name[hu]=Firefox
|
||||
Name[hy_AM]=Firefox
|
||||
Name[ia]=Firefox
|
||||
Name[id]=Firefox
|
||||
Name[is]=Firefox
|
||||
Name[it]=Firefox
|
||||
Name[ja]=Firefox
|
||||
Name[ka]=Firefox
|
||||
Name[kab]=Firefox
|
||||
Name[kk]=Firefox
|
||||
Name[km]=Firefox
|
||||
Name[kn]=Firefox
|
||||
Name[ko]=Firefox
|
||||
Name[lij]=Firefox
|
||||
Name[lt]=Firefox
|
||||
Name[lv]=Firefox
|
||||
Name[mk]=Firefox
|
||||
Name[mr]=Firefox
|
||||
Name[ms]=Firefox
|
||||
Name[my]=Firefox
|
||||
Name[nb_NO]=Firefox
|
||||
Name[ne_NP]=Firefox
|
||||
Name[nl]=Firefox
|
||||
Name[nn_NO]=Firefox
|
||||
Name[oc]=Firefox
|
||||
Name[pa_IN]=Firefox
|
||||
Name[pl]=Firefox
|
||||
Name[pt_BR]=Firefox
|
||||
Name[pt_PT]=Firefox
|
||||
Name[rm]=Firefox
|
||||
Name[ro]=Firefox
|
||||
Name[ru]=Firefox
|
||||
Name[sat]=Firefox
|
||||
Name[sc]=Firefox
|
||||
Name[sco]=Firefox
|
||||
Name[si]=Firefox
|
||||
Name[sk]=Firefox
|
||||
Name[skr]=Firefox
|
||||
Name[sl]=Firefox
|
||||
Name[son]=Firefox
|
||||
Name[sq]=Firefox
|
||||
Name[sr]=Firefox
|
||||
Name[sv_SE]=Firefox
|
||||
Name[szl]=Firefox
|
||||
Name[ta]=Firefox
|
||||
Name[te]=Firefox
|
||||
Name[tg]=Firefox
|
||||
Name[th]=Firefox
|
||||
Name[tl]=Firefox
|
||||
Name[tr]=Firefox
|
||||
Name[trs]=Firefox
|
||||
Name[uk]=Firefox
|
||||
Name[ur]=Firefox
|
||||
Name[uz]=Firefox
|
||||
Name[vi]=Firefox
|
||||
Name[xh]=Firefox
|
||||
Name[zh_CN]=Firefox
|
||||
Name[zh_TW]=Firefox
|
||||
Comment=Fast and private browser
|
||||
Comment[ach]=Fast and private browser
|
||||
Comment[af]=Fast and private browser
|
||||
Comment[an]=Fast and private browser
|
||||
Comment[ar]=متصفح سريع وخاص
|
||||
Comment[ast]=Fast and private browser
|
||||
Comment[az]=Fast and private browser
|
||||
Comment[be]=Хуткі і прыватны браўзер
|
||||
Comment[bg]=Fast and private browser
|
||||
Comment[bn]=Fast and private browser
|
||||
Comment[br]=Fast and private browser
|
||||
Comment[bs]=Fast and private browser
|
||||
Comment[ca]=Navegador ràpid i privat
|
||||
Comment[ca_valencia]=Fast and private browser
|
||||
Comment[cak]=Fast and private browser
|
||||
Comment[cs]=Rychlý a soukromý prohlížeč
|
||||
Comment[cy]=Porwr cyflym a phreifat
|
||||
Comment[da]=Hurtig og privat browser
|
||||
Comment[de]=Schneller und privater Browser
|
||||
Comment[dsb]=Malsny a priwatny wobglědowak
|
||||
Comment[el]=Γρήγορο και ιδιωτικό πρόγραμμα περιήγησης
|
||||
Comment[en_CA]=Fast and private browser
|
||||
Comment[en_GB]=Fast and private browser
|
||||
Comment[eo]=Rapida kaj privata retumilo
|
||||
Comment[es_AR]=Navegador rápido y privado
|
||||
Comment[es_CL]=Navegador rápido y privado
|
||||
Comment[es_ES]=Navegador rápido y privado
|
||||
Comment[es_MX]=Navegación web rápida y privada
|
||||
Comment[et]=Fast and private browser
|
||||
Comment[eu]=Nabigatzaile bizkor eta pribatua
|
||||
Comment[fa]=Fast and private browser
|
||||
Comment[ff]=Fast and private browser
|
||||
Comment[fi]=Nopea ja yksityinen selain
|
||||
Comment[fr]=Navigateur rapide et privé
|
||||
Comment[fur]=Navigadôr svelt e riservât
|
||||
Comment[fy_NL]=Flugge en priveebrowser
|
||||
Comment[ga_IE]=Fast and private browser
|
||||
Comment[gd]=Fast and private browser
|
||||
Comment[gl]=Fast and private browser
|
||||
Comment[gn]=Kundahára ipya’e ha hekoñemíva
|
||||
Comment[gu_IN]=Fast and private browser
|
||||
Comment[he]=דפדפן מהיר ופרטי
|
||||
Comment[hi_IN]=Fast and private browser
|
||||
Comment[hr]=Brz i privatan preglednik
|
||||
Comment[hsb]=Spěšny a priwatny wobhladowak
|
||||
Comment[hu]=Gyors és privát böngésző
|
||||
Comment[hy_AM]=Արագ և գաղտնի դիտարկիչ
|
||||
Comment[ia]=Navigator veloce e private
|
||||
Comment[id]=Fast and private browser
|
||||
Comment[is]=Hraður og persónulegur vafri
|
||||
Comment[it]=Browser veloce e riservato
|
||||
Comment[ja]=高速プライベートブラウザー
|
||||
Comment[ka]=სწრაფი და პირადი ბრაუზერი
|
||||
Comment[kab]=Iminig arurad, uslig
|
||||
Comment[kk]=Жылдам және жеке браузер
|
||||
Comment[km]=Fast and private browser
|
||||
Comment[kn]=Fast and private browser
|
||||
Comment[ko]=빠르고 사생활을 보호하는 브라우저
|
||||
Comment[lij]=Fast and private browser
|
||||
Comment[lt]=Fast and private browser
|
||||
Comment[lv]=Fast and private browser
|
||||
Comment[mk]=Fast and private browser
|
||||
Comment[mr]=Fast and private browser
|
||||
Comment[ms]=Fast and private browser
|
||||
Comment[my]=Fast and private browser
|
||||
Comment[nb_NO]=Rask og privat nettleser
|
||||
Comment[ne_NP]=Fast and private browser
|
||||
Comment[nl]=Snelle en privébrowser
|
||||
Comment[nn_NO]=Rask og privat nettlesar
|
||||
Comment[oc]=Fast and private browser
|
||||
Comment[pa_IN]=ਤੇਜ਼ ਅਤੇ ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਰ
|
||||
Comment[pl]=Szybka i prywatna przeglądarka
|
||||
Comment[pt_BR]=Navegador rápido e privativo
|
||||
Comment[pt_PT]=Navegador rápido e privado
|
||||
Comment[rm]=Navigatur svelt e privat
|
||||
Comment[ro]=Browser rapid și privat
|
||||
Comment[ru]=Быстрый и приватный браузер
|
||||
Comment[sat]=Fast and private browser
|
||||
Comment[sc]=Navigadore lestru e privadu
|
||||
Comment[sco]=Fast and private browser
|
||||
Comment[si]=Fast and private browser
|
||||
Comment[sk]=Rýchly a súkromný prehliadač
|
||||
Comment[skr]=Fast and private browser
|
||||
Comment[sl]=Hiter in zaseben brskalnik
|
||||
Comment[son]=Fast and private browser
|
||||
Comment[sq]=Shfletues i shpejtë dhe privat
|
||||
Comment[sr]=Брз и приватан веб прегледач
|
||||
Comment[sv_SE]=Snabb och privat webbläsare
|
||||
Comment[szl]=Fast and private browser
|
||||
Comment[ta]=Fast and private browser
|
||||
Comment[te]=Fast and private browser
|
||||
Comment[tg]=Браузери тезкор ва хусусӣ
|
||||
Comment[th]=เบราว์เซอร์ที่รวดเร็วและเป็นส่วนตัว
|
||||
Comment[tl]=Fast and private browser
|
||||
Comment[tr]=Hızlı ve gizli tarayıcı
|
||||
Comment[trs]=Fast and private browser
|
||||
Comment[uk]=Швидкий і приватний браузер
|
||||
Comment[ur]=Fast and private browser
|
||||
Comment[uz]=Fast and private browser
|
||||
Comment[vi]=Trình duyệt nhanh và riêng tư
|
||||
Comment[xh]=Fast and private browser
|
||||
Comment[zh_CN]=快速且私密的浏览器
|
||||
Comment[zh_TW]=快速又有隱私的瀏覽器
|
||||
GenericName=Web Browser
|
||||
GenericName[ach]=Web Browser
|
||||
GenericName[af]=Web Browser
|
||||
GenericName[an]=Web Browser
|
||||
GenericName[ar]=متصفح الوِب
|
||||
GenericName[ast]=Web Browser
|
||||
GenericName[az]=Web Browser
|
||||
GenericName[be]=Вэб-браўзер
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[br]=Merdeer Web
|
||||
GenericName[bs]=Web pretraživač
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[ca_valencia]=Web Browser
|
||||
GenericName[cak]=Web Okik'amaya'l
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[cy]=Porwr Gwe
|
||||
GenericName[da]=Webbrowser
|
||||
GenericName[de]=Internet-Browser
|
||||
GenericName[dsb]=Webwobglědowak
|
||||
GenericName[el]=Πρόγραμμα περιήγησης
|
||||
GenericName[en_CA]=Web Browser
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[eo]=Retumilo
|
||||
GenericName[es_AR]=Navegador web
|
||||
GenericName[es_CL]=Navegador Web
|
||||
GenericName[es_ES]=Navegador web
|
||||
GenericName[es_MX]=Navegador Web
|
||||
GenericName[et]=Web Browser
|
||||
GenericName[eu]=Web nabigatzailea
|
||||
GenericName[fa]=مرورگر وب
|
||||
GenericName[ff]=Web Browser
|
||||
GenericName[fi]=Verkkoselain
|
||||
GenericName[fr]=Navigateur web
|
||||
GenericName[fur]=Navigadôr Web
|
||||
GenericName[fy_NL]=Webbrowser
|
||||
GenericName[ga_IE]=Web Browser
|
||||
GenericName[gd]=Brabhsair-lìn
|
||||
GenericName[gl]=Navegador web
|
||||
GenericName[gn]=Ñanduti Kundahára
|
||||
GenericName[gu_IN]=Web Browser
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi_IN]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[hsb]=Webwobhladowak
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[hy_AM]=Վեբ դիտարկիչ
|
||||
GenericName[ia]=Navigator web
|
||||
GenericName[id]=Peramban Web
|
||||
GenericName[is]=Vafri
|
||||
GenericName[it]=Browser web
|
||||
GenericName[ja]=ウェブブラウザー
|
||||
GenericName[ka]=ბრაუზერი
|
||||
GenericName[kab]=Iminig web
|
||||
GenericName[kk]=Веб-браузері
|
||||
GenericName[km]=Web Browser
|
||||
GenericName[kn]=Web Browser
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lij]=Navegatô Web
|
||||
GenericName[lt]=Web Browser
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[mk]=Web Browser
|
||||
GenericName[mr]=Web Browser
|
||||
GenericName[ms]=Web Browser
|
||||
GenericName[my]=Web Browser
|
||||
GenericName[nb_NO]=Nettleser
|
||||
GenericName[ne_NP]=वेब ब्राउजर
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn_NO]=Nettlesar
|
||||
GenericName[oc]=Navegador Web
|
||||
GenericName[pa_IN]=ਵੈੱਬ ਬਰਾਊਜ਼ਰ
|
||||
GenericName[pl]=Przeglądarka internetowa
|
||||
GenericName[pt_BR]=Navegador web
|
||||
GenericName[pt_PT]=Navegador Web
|
||||
GenericName[rm]=Navigatur web
|
||||
GenericName[ro]=Browser web
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sat]=ᱣᱮᱵᱽ ᱵᱽᱨᱟᱣᱡᱚᱨ
|
||||
GenericName[sc]=Navigadore web
|
||||
GenericName[sco]=Web Browser
|
||||
GenericName[si]=වියමන අතිරික්සුව
|
||||
GenericName[sk]=Webový prehliadač
|
||||
GenericName[skr]=ویب براؤزر
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[son]=Web Browser
|
||||
GenericName[sq]=Shfletues
|
||||
GenericName[sr]=Веб прегледач
|
||||
GenericName[sv_SE]=Webbläsare
|
||||
GenericName[szl]=Web Browser
|
||||
GenericName[ta]=Web Browser
|
||||
GenericName[te]=జాల విహారిణి
|
||||
GenericName[tg]=Браузери веб
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tl]=Web Browser
|
||||
GenericName[tr]=Web Tarayıcısı
|
||||
GenericName[trs]=Web riña gāchē nu’
|
||||
GenericName[uk]=Браузер
|
||||
GenericName[ur]=Web Browser
|
||||
GenericName[uz]=Web Browser
|
||||
GenericName[vi]=Trình duyệt web
|
||||
GenericName[xh]=Web Browser
|
||||
GenericName[zh_CN]=Web 浏览器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ach]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[af]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[an]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ar]=إنترنت;WWW;متصفح;ويب;مستكشف;
|
||||
Keywords[ast]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[az]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[be]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bg]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bn]=ইন্টারনেট;WWW;ব্রাউজার;ওয়েব;এক্সপ্লোরার;
|
||||
Keywords[br]=Internet;WWW;Merdeer;Web;Ergerzhout;
|
||||
Keywords[bs]=Internet;WWW;Pretraživač;Web;Istraživač;
|
||||
Keywords[ca]=Internet;WWW;Browser;Web;Explorador;Navegador;
|
||||
Keywords[ca_valencia]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[cak]=K'amaya'l;WWW;Okik'amaya'l;Kanob'äl;
|
||||
Keywords[cs]=internet;WWW;prohlížeč;web;
|
||||
Keywords[cy]=Rhyngrwyd;WWW;Porwr;Gwe;Archwiliwr;
|
||||
Keywords[da]=Internet;WWW;Browser;Nettet;Explorer;
|
||||
Keywords[de]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[dsb]=Internet;WWW;wobglědowak;Web;Explorer;
|
||||
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Ιστός;Ίντερνετ;
|
||||
Keywords[en_CA]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[en_GB]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eo]=Interreto;Retumilo;TTT;Teksaĵo;Reto;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[es_AR]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_CL]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_ES]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_MX]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[et]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eu]=Internet;WWW;Nabigatzailea;Web;Arakatzailea;
|
||||
Keywords[fa]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ff]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;netti;webbi;selain;
|
||||
Keywords[fr]=Internet;WWW;Navigateur;Web;Explorer;
|
||||
Keywords[fur]=Internet;WWW;Browser;Navigadôr;Web;Esploradôr;Explorer;
|
||||
Keywords[fy_NL]=Ynternet;WWW;Browser;Web;Ferkenner;
|
||||
Keywords[ga_IE]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gd]=Internet;WWW;Browser;Web;Explorer;eadar-lìon;brabhsair;brobhsair;lìon;taisgealaiche;
|
||||
Keywords[gl]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[gn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gu_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[he]=אינטרנט;WWW;דפדפן;רשת;סייר;מרשתת;
|
||||
Keywords[hi_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[hr]=Internet;WWW;Preglednik;Web;Istraživač;
|
||||
Keywords[hsb]=Internet;WWW;wobhladowak;Web;Explorer;
|
||||
Keywords[hu]=Internet;WWW;Böngésző;Web;Világháló;
|
||||
Keywords[hy_AM]=Համացանց,WWW,Զննիչ,Վեբ,Ցանցախույզ:
|
||||
Keywords[ia]=Internet;WWW;Navigator;Web;Explorator;
|
||||
Keywords[id]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[is]=Internet;WWW; Vafri; Vefur; Explorer;
|
||||
Keywords[it]=Internet;WWW;Browser;Web;Explorer;Navigatore;
|
||||
Keywords[ja]=Internet;WWW;Browser;Web;Explorer;インターネット;ブラウザー;ウェブ;
|
||||
Keywords[ka]=ინტერნეტი;WWW;ბრაუზერი;ქსელი;ქსელთან წვდომა;
|
||||
Keywords[kab]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kk]=Internet;WWW;Browser;Web;Explorer;Интернет;Ғаламтор;Браузер;Желі;Шолғыш;
|
||||
Keywords[km]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ko]=인터넷;브라우저;웹;탐색기;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lij]=Internet;WWW;Browser;Web;Explorer;Navegatô;
|
||||
Keywords[lt]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lv]=Internets;WWW;Pārlūkprogramma;Tīmeklis;
|
||||
Keywords[mk]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[mr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ms]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[my]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nb_NO]=Internett;WWW;Nettleser;Web;Utforsker;
|
||||
Keywords[ne_NP]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nl]=Internet;WWW;Browser;Web;Verkenner;
|
||||
Keywords[nn_NO]=Internett;WWW;Nettlesar;Web;Utforskar;
|
||||
Keywords[oc]=Internet;WWW;Navegador;Navigador;Navegator;Navigator;Web;Explorer;
|
||||
Keywords[pa_IN]=ਇੰਟਰਨੈੱਟ;WWW;ਬਰਾਊਜ਼ਰ;ਵੈੱਬ;ਐਕਸਪਲਰੋਰ;ਵੈਬ;ਇੰਟਰਨੈਟ;
|
||||
Keywords[pl]=Internet;WWW;Przeglądarka;Browser;Wyszukiwarka;Web;Sieć;Explorer;Eksplorer;Strony;Witryny;internetowe;
|
||||
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorer;Navegador;
|
||||
Keywords[pt_PT]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[rm]=Internet;WWW;Browser;Web;Explorer;navigatur;
|
||||
Keywords[ro]=Internet; WWW; Browser; Web; Explorer;
|
||||
Keywords[ru]=Сеть;Интернет;Браузер;Доступ в Интернет;
|
||||
Keywords[sat]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sc]=Internet;WWW;Navigadore;Web;Explorer;
|
||||
Keywords[sco]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[si]=අන්තර්ජාලය;අතිරික්සුව;පිරික්සන්න;ගවේශකය;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sk]=Internet;WWW;Prehliadač;Web;Prieskumník;
|
||||
Keywords[skr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sl]=internet;www;brskalnik;splet;
|
||||
Keywords[son]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sq]=Internet;WWW;Shfletues;Web;Eksplorues;
|
||||
Keywords[sr]=Internet;WWW;Browser;Web;Explorer;интернет;њњњ;веб;мрежа;прегледач;експлорер;internet;pregledač;veb;mreža;pregledač;eksplorer;
|
||||
Keywords[sv_SE]=Internet;WWW;Webbläsare;Webb;Utforskare;
|
||||
Keywords[szl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ta]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[te]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tg]=Интернет;WWW;Браузер;Сомона;Ҷустуҷӯгар;
|
||||
Keywords[th]=อินเทอร์เน็ต;เบราว์เซอร์;เว็บ;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tr]=Internet;WWW;Browser;Web;Explorer;İnternet;Tarayıcı;
|
||||
Keywords[trs]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uk]=Інтернет;WWW;Браузер;Веб;Переглядач;
|
||||
Keywords[ur]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uz]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[vi]=Internet;WWW;Trình duyệt;Web;Duyệt web;
|
||||
Keywords[xh]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_TW]=網際網路;網路;瀏覽器;網頁;上網;Internet;WWW;Browser;Web;Explorer;
|
||||
X-GNOME-FullName=Mozilla Firefox
|
||||
X-GNOME-FullName[ach]=Mozilla Firefox
|
||||
X-GNOME-FullName[af]=Mozilla Firefox
|
||||
X-GNOME-FullName[an]=Mozilla Firefox
|
||||
X-GNOME-FullName[ar]=Mozilla Firefox
|
||||
X-GNOME-FullName[ast]=Mozilla Firefox
|
||||
X-GNOME-FullName[az]=Mozilla Firefox
|
||||
X-GNOME-FullName[be]=Mozilla Firefox
|
||||
X-GNOME-FullName[bg]=Mozilla Firefox
|
||||
X-GNOME-FullName[bn]=Mozilla Firefox
|
||||
X-GNOME-FullName[br]=Mozilla Firefox
|
||||
X-GNOME-FullName[bs]=Mozilla Firefox
|
||||
X-GNOME-FullName[ca]=Mozilla Firefox
|
||||
X-GNOME-FullName[ca_valencia]=Mozilla Firefox
|
||||
X-GNOME-FullName[cak]=Mozilla Firefox
|
||||
X-GNOME-FullName[cs]=Mozilla Firefox
|
||||
X-GNOME-FullName[cy]=Mozilla Firefox
|
||||
X-GNOME-FullName[da]=Mozilla Firefox
|
||||
X-GNOME-FullName[de]=Mozilla Firefox
|
||||
X-GNOME-FullName[dsb]=Mozilla Firefox
|
||||
X-GNOME-FullName[el]=Mozilla Firefox
|
||||
X-GNOME-FullName[en_CA]=Mozilla Firefox
|
||||
X-GNOME-FullName[en_GB]=Mozilla Firefox
|
||||
X-GNOME-FullName[eo]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_AR]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_CL]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_ES]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_MX]=Mozilla Firefox
|
||||
X-GNOME-FullName[et]=Mozilla Firefox
|
||||
X-GNOME-FullName[eu]=Mozilla Firefox
|
||||
X-GNOME-FullName[fa]=Mozilla Firefox
|
||||
X-GNOME-FullName[ff]=Mozilla Firefox
|
||||
X-GNOME-FullName[fi]=Mozilla Firefox
|
||||
X-GNOME-FullName[fr]=Mozilla Firefox
|
||||
X-GNOME-FullName[fur]=Mozilla Firefox
|
||||
X-GNOME-FullName[fy_NL]=Mozilla Firefox
|
||||
X-GNOME-FullName[ga_IE]=Mozilla Firefox
|
||||
X-GNOME-FullName[gd]=Mozilla Firefox
|
||||
X-GNOME-FullName[gl]=Mozilla Firefox
|
||||
X-GNOME-FullName[gn]=Mozilla Firefox
|
||||
X-GNOME-FullName[gu_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[he]=Mozilla Firefox
|
||||
X-GNOME-FullName[hi_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[hr]=Mozilla Firefox
|
||||
X-GNOME-FullName[hsb]=Mozilla Firefox
|
||||
X-GNOME-FullName[hu]=Mozilla Firefox
|
||||
X-GNOME-FullName[hy_AM]=Mozilla Firefox
|
||||
X-GNOME-FullName[ia]=Mozilla Firefox
|
||||
X-GNOME-FullName[id]=Mozilla Firefox
|
||||
X-GNOME-FullName[is]=Mozilla Firefox
|
||||
X-GNOME-FullName[it]=Mozilla Firefox
|
||||
X-GNOME-FullName[ja]=Mozilla Firefox
|
||||
X-GNOME-FullName[ka]=Mozilla Firefox
|
||||
X-GNOME-FullName[kab]=Mozilla Firefox
|
||||
X-GNOME-FullName[kk]=Mozilla Firefox
|
||||
X-GNOME-FullName[km]=Mozilla Firefox
|
||||
X-GNOME-FullName[kn]=Mozilla Firefox
|
||||
X-GNOME-FullName[ko]=Mozilla Firefox
|
||||
X-GNOME-FullName[lij]=Mozilla Firefox
|
||||
X-GNOME-FullName[lt]=Mozilla Firefox
|
||||
X-GNOME-FullName[lv]=Mozilla Firefox
|
||||
X-GNOME-FullName[mk]=Mozilla Firefox
|
||||
X-GNOME-FullName[mr]=Mozilla Firefox
|
||||
X-GNOME-FullName[ms]=Mozilla Firefox
|
||||
X-GNOME-FullName[my]=Mozilla Firefox
|
||||
X-GNOME-FullName[nb_NO]=Mozilla Firefox
|
||||
X-GNOME-FullName[ne_NP]=Mozilla Firefox
|
||||
X-GNOME-FullName[nl]=Mozilla Firefox
|
||||
X-GNOME-FullName[nn_NO]=Mozilla Firefox
|
||||
X-GNOME-FullName[oc]=Mozilla Firefox
|
||||
X-GNOME-FullName[pa_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[pl]=Mozilla Firefox
|
||||
X-GNOME-FullName[pt_BR]=Mozilla Firefox
|
||||
X-GNOME-FullName[pt_PT]=Mozilla Firefox
|
||||
X-GNOME-FullName[rm]=Mozilla Firefox
|
||||
X-GNOME-FullName[ro]=Mozilla Firefox
|
||||
X-GNOME-FullName[ru]=Mozilla Firefox
|
||||
X-GNOME-FullName[sat]=Mozilla Firefox
|
||||
X-GNOME-FullName[sc]=Mozilla Firefox
|
||||
X-GNOME-FullName[sco]=Mozilla Firefox
|
||||
X-GNOME-FullName[si]=Mozilla Firefox
|
||||
X-GNOME-FullName[sk]=Mozilla Firefox
|
||||
X-GNOME-FullName[skr]=Mozilla Firefox
|
||||
X-GNOME-FullName[sl]=Mozilla Firefox
|
||||
X-GNOME-FullName[son]=Mozilla Firefox
|
||||
X-GNOME-FullName[sq]=Mozilla Firefox
|
||||
X-GNOME-FullName[sr]=Mozilla Firefox
|
||||
X-GNOME-FullName[sv_SE]=Mozilla Firefox
|
||||
X-GNOME-FullName[szl]=Mozilla Firefox
|
||||
X-GNOME-FullName[ta]=Mozilla Firefox
|
||||
X-GNOME-FullName[te]=Mozilla Firefox
|
||||
X-GNOME-FullName[tg]=Mozilla Firefox
|
||||
X-GNOME-FullName[th]=Mozilla Firefox
|
||||
X-GNOME-FullName[tl]=Mozilla Firefox
|
||||
X-GNOME-FullName[tr]=Mozilla Firefox
|
||||
X-GNOME-FullName[trs]=Mozilla Firefox
|
||||
X-GNOME-FullName[uk]=Mozilla Firefox
|
||||
X-GNOME-FullName[ur]=Mozilla Firefox
|
||||
X-GNOME-FullName[uz]=Mozilla Firefox
|
||||
X-GNOME-FullName[vi]=Mozilla Firefox
|
||||
X-GNOME-FullName[xh]=Mozilla Firefox
|
||||
X-GNOME-FullName[zh_CN]=Mozilla Firefox
|
||||
X-GNOME-FullName[zh_TW]=Mozilla Firefox
|
||||
X-Flatpak=org.mozilla.firefox
|
||||
X-SteamFrameNix-Source=@SOURCE@
|
||||
|
||||
[Desktop Action new-window]
|
||||
Exec=/nix/store/00000000000000000000000000000000-firefox-wrapper /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox --new-window @@u %u @@
|
||||
Name=New Window
|
||||
Name[ach]=New Window
|
||||
Name[af]=New Window
|
||||
Name[an]=New Window
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[ast]=New Window
|
||||
Name[az]=New Window
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[br]=Prenestr nevez
|
||||
Name[bs]=Novi prozor
|
||||
Name[ca]=Finestra nova
|
||||
Name[ca_valencia]=New Window
|
||||
Name[cak]=K'ak'a' Tzuwäch
|
||||
Name[cs]=Nové okno
|
||||
Name[cy]=Ffenestr Newydd
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[dsb]=Nowe wokno
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_CA]=New Window
|
||||
Name[en_GB]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es_AR]=Nueva ventana
|
||||
Name[es_CL]=Nueva ventana
|
||||
Name[es_ES]=Nueva ventana
|
||||
Name[es_MX]=Nueva ventana
|
||||
Name[et]=New Window
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[ff]=New Window
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fur]=Gnûf barcon
|
||||
Name[fy_NL]=Nij finster
|
||||
Name[ga_IE]=New Window
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=Nova xanela
|
||||
Name[gn]=Ovetã pyahu
|
||||
Name[gu_IN]=New Window
|
||||
Name[he]=חלון חדש
|
||||
Name[hi_IN]=New Window
|
||||
Name[hr]=Novi prozor
|
||||
Name[hsb]=Nowe wokno
|
||||
Name[hu]=Új ablak
|
||||
Name[hy_AM]=Նոր պատուհան
|
||||
Name[ia]=Nove fenestra
|
||||
Name[id]=Jendela Baru
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[km]=បង្អួចថ្មី
|
||||
Name[kn]=New Window
|
||||
Name[ko]=새 창
|
||||
Name[lij]=Neuvo Barcon
|
||||
Name[lt]=New Window
|
||||
Name[lv]=Jauns logs
|
||||
Name[mk]=New Window
|
||||
Name[mr]=New Window
|
||||
Name[ms]=New Window
|
||||
Name[my]=New Window
|
||||
Name[nb_NO]=Nytt vindu
|
||||
Name[ne_NP]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[nn_NO]=Nytt vindauge
|
||||
Name[oc]=Fenèstra novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[pt_PT]=Nova janela
|
||||
Name[rm]=Nova fanestra
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana noa
|
||||
Name[sco]=New Window
|
||||
Name[si]=නව කවුළුව
|
||||
Name[sk]=Nové okno
|
||||
Name[skr]=نویں ونڈو
|
||||
Name[sl]=Novo okno
|
||||
Name[son]=New Window
|
||||
Name[sq]=Dritare e Re
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv_SE]=Nytt fönster
|
||||
Name[szl]=New Window
|
||||
Name[ta]=New Window
|
||||
Name[te]=కొత్త కిటికీ
|
||||
Name[tg]=Равзанаи нав
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tl]=New Window
|
||||
Name[tr]=Yeni pencere
|
||||
Name[trs]=Bēntanâ nākàa
|
||||
Name[uk]=Нове вікно
|
||||
Name[ur]=New Window
|
||||
Name[uz]=New Window
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[xh]=New Window
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Exec=/nix/store/00000000000000000000000000000000-firefox-wrapper /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox --private-window @@u %u @@
|
||||
Name=New Private Window
|
||||
Name[ach]=New Private Window
|
||||
Name[af]=New Private Window
|
||||
Name[an]=New Private Window
|
||||
Name[ar]=نافذة خاصة جديدة
|
||||
Name[ast]=New Private Window
|
||||
Name[az]=New Private Window
|
||||
Name[be]=Новае прыватнае акно
|
||||
Name[bg]=Нов личен прозорец
|
||||
Name[bn]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr prevez nevez
|
||||
Name[bs]=Novi privatni prozor
|
||||
Name[ca]=Finestra privada nova
|
||||
Name[ca_valencia]=New Private Window
|
||||
Name[cak]=K'ak'a' Ichinan Tzuwäch
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[cy]=Ffenestr Breifat Newydd
|
||||
Name[da]=Nyt privat vindue
|
||||
Name[de]=Neues privates Fenster
|
||||
Name[dsb]=Nowe priwatne wokno
|
||||
Name[el]=Νέο ιδιωτικό παράθυρο
|
||||
Name[en_CA]=New Private Window
|
||||
Name[en_GB]=New Private Window
|
||||
Name[eo]=Nova privata fenestro
|
||||
Name[es_AR]=Nueva ventana privada
|
||||
Name[es_CL]=Nueva ventana privada
|
||||
Name[es_ES]=Nueva ventana privada
|
||||
Name[es_MX]=Nueva ventana privada
|
||||
Name[et]=New Private Window
|
||||
Name[eu]=Leiho pribatu berria
|
||||
Name[fa]=پنجره ناشناس جدید
|
||||
Name[ff]=New Private Window
|
||||
Name[fi]=Uusi yksityinen ikkuna
|
||||
Name[fr]=Nouvelle fenêtre privée
|
||||
Name[fur]=Gnûf barcon privât
|
||||
Name[fy_NL]=Nij priveefinster
|
||||
Name[ga_IE]=New Private Window
|
||||
Name[gd]=Uinneag phrìobhaideach ùr
|
||||
Name[gl]=Nova xanela privada
|
||||
Name[gn]=Ovetã ñemi pyahu
|
||||
Name[gu_IN]=New Private Window
|
||||
Name[he]=חלון פרטי חדש
|
||||
Name[hi_IN]=New Private Window
|
||||
Name[hr]=Novi privatni prozor
|
||||
Name[hsb]=Nowe priwatne wokno
|
||||
Name[hu]=Új privát ablak
|
||||
Name[hy_AM]=Նոր գաղտնի պատուհան
|
||||
Name[ia]=Nove fenestra private
|
||||
Name[id]=Jendela Mode Pribadi Baru
|
||||
Name[is]=Nýr huliðsgluggi
|
||||
Name[it]=Nuova finestra anonima
|
||||
Name[ja]=新しいプライベートウィンドウ
|
||||
Name[ka]=ახალი პირადი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut n tunigin tusligt
|
||||
Name[kk]=Жаңа жекелік терезе
|
||||
Name[km]=បង្អួចឯកជនថ្មី
|
||||
Name[kn]=New Private Window
|
||||
Name[ko]=새 사생활 보호 창
|
||||
Name[lij]=Neuvo Barcon Privòu
|
||||
Name[lt]=New Private Window
|
||||
Name[lv]=Jauns privātais logs
|
||||
Name[mk]=New Private Window
|
||||
Name[mr]=New Private Window
|
||||
Name[ms]=New Private Window
|
||||
Name[my]=New Private Window
|
||||
Name[nb_NO]=Nytt privat vindu
|
||||
Name[ne_NP]=नयाँ निजी सञ्झ्याल
|
||||
Name[nl]=Nieuw privévenster
|
||||
Name[nn_NO]=Nytt privat vindauge
|
||||
Name[oc]=Fenèstra privada novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno prywatne
|
||||
Name[pt_BR]=Nova janela privativa
|
||||
Name[pt_PT]=Nova janela privada
|
||||
Name[rm]=Nova fanestra privata
|
||||
Name[ro]=Fereastră privată nouă
|
||||
Name[ru]=Новое приватное окно
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱱᱤᱡᱮᱨᱟᱜ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana privada noa
|
||||
Name[sco]=New Private Window
|
||||
Name[si]=නව පෞද්. කවුළුව
|
||||
Name[sk]=Nové súkromné okno
|
||||
Name[skr]=نویں نجی ونڈو
|
||||
Name[sl]=Novo zasebno okno
|
||||
Name[son]=New Private Window
|
||||
Name[sq]=Dritare e Re Private
|
||||
Name[sr]=Нови приватни прозор
|
||||
Name[sv_SE]=Nytt privat fönster
|
||||
Name[szl]=New Private Window
|
||||
Name[ta]=New Private Window
|
||||
Name[te]=కొత్త ఆంతరంగిక కిటికీ
|
||||
Name[tg]=Равзанаи хусусии нав
|
||||
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||
Name[tl]=New Private Window
|
||||
Name[tr]=Yeni gizli pencere
|
||||
Name[trs]=Bēntanâ huì nākàa
|
||||
Name[uk]=Приватне вікно
|
||||
Name[ur]=New Private Window
|
||||
Name[uz]=New Private Window
|
||||
Name[vi]=Cửa sổ riêng tư mới
|
||||
Name[xh]=New Private Window
|
||||
Name[zh_CN]=新建隐私窗口
|
||||
Name[zh_TW]=開新隱私視窗
|
||||
|
||||
[Desktop Action open-profile-manager]
|
||||
Exec=/nix/store/00000000000000000000000000000000-firefox-wrapper /usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox org.mozilla.firefox --ProfileManager
|
||||
Name=Open Profile Manager
|
||||
Name[ach]=Open Profile Manager
|
||||
Name[af]=Open Profile Manager
|
||||
Name[an]=Open Profile Manager
|
||||
Name[ar]=افتح مدير الملف الشخصي
|
||||
Name[ast]=Open Profile Manager
|
||||
Name[az]=Open Profile Manager
|
||||
Name[be]=Адкрыць менеджар профіляў
|
||||
Name[bg]=Отваряне на мениджъра на профили
|
||||
Name[bn]=Open Profile Manager
|
||||
Name[br]=Digeriñ an ardoer aeladoù
|
||||
Name[bs]=Otvori Menadžera profila
|
||||
Name[ca]=Obre el gestor de perfils
|
||||
Name[ca_valencia]=Open Profile Manager
|
||||
Name[cak]=Open Profile Manager
|
||||
Name[cs]=Otevřít Správce profilů
|
||||
Name[cy]=Agorwch y Rheolwr Proffil
|
||||
Name[da]=Åbn profilhåndtering
|
||||
Name[de]=Profilverwaltung öffnen
|
||||
Name[dsb]=Profilowy zastojnik wócyniś
|
||||
Name[el]=Άνοιγμα Διαχείρισης προφίλ
|
||||
Name[en_CA]=Open Profile Manager
|
||||
Name[en_GB]=Open Profile Manager
|
||||
Name[eo]=Malfermi administranton de profiloj
|
||||
Name[es_AR]=Abrir administrador de perfiles
|
||||
Name[es_CL]=Abrir administrador de perfiles
|
||||
Name[es_ES]=Abrir administrador de perfiles
|
||||
Name[es_MX]=Abrir administrador de perfiles
|
||||
Name[et]=Open Profile Manager
|
||||
Name[eu]=Ireki profilen kudeatzailea
|
||||
Name[fa]=گشودن مدیر نمایه
|
||||
Name[ff]=Open Profile Manager
|
||||
Name[fi]=Avaa profiilien hallinta
|
||||
Name[fr]=Ouvrir le gestionnaire de profils
|
||||
Name[fur]=Vierç gjestôr profîi
|
||||
Name[fy_NL]=Profylbehearder iepenje
|
||||
Name[ga_IE]=Open Profile Manager
|
||||
Name[gd]=Fosgail manaidsear nam pròifilean
|
||||
Name[gl]=Abrir o xestor de perfís
|
||||
Name[gn]=Embojuruja mba’ete ñangarekoha
|
||||
Name[gu_IN]=Open Profile Manager
|
||||
Name[he]=פתיחת מנהל הפרופילים
|
||||
Name[hi_IN]=Open Profile Manager
|
||||
Name[hr]=Otvori upravljač profila
|
||||
Name[hsb]=Zrjadowak profilow wočinić
|
||||
Name[hu]=Profilkezelő megnyitása
|
||||
Name[hy_AM]=Բացեք պրոֆիլի կառավարիչը
|
||||
Name[ia]=Aperir le gestor de profilo
|
||||
Name[id]=Buka Pengelola Profil
|
||||
Name[is]=Opna umsýslu notandasniða
|
||||
Name[it]=Apri gestore profili
|
||||
Name[ja]=プロファイルマネージャーを開く
|
||||
Name[ka]=პროფილის მმართველის გახსნა
|
||||
Name[kab]=Ldi amsefrak n umaɣnu
|
||||
Name[kk]=Профильдер бақарушысын ашу
|
||||
Name[km]=Open Profile Manager
|
||||
Name[kn]=Open Profile Manager
|
||||
Name[ko]=프로필 관리자 열기
|
||||
Name[lij]=Open Profile Manager
|
||||
Name[lt]=Open Profile Manager
|
||||
Name[lv]=Atvērt profilu pārvaldnieku
|
||||
Name[mk]=Open Profile Manager
|
||||
Name[mr]=Open Profile Manager
|
||||
Name[ms]=Open Profile Manager
|
||||
Name[my]=Open Profile Manager
|
||||
Name[nb_NO]=Åpne profilbehandler
|
||||
Name[ne_NP]=Open Profile Manager
|
||||
Name[nl]=Profielbeheerder openen
|
||||
Name[nn_NO]=Opne profilhandsaming
|
||||
Name[oc]=Dobrir lo gestionari de perfils
|
||||
Name[pa_IN]=ਪਰੋਫ਼ਾਈਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ
|
||||
Name[pl]=Menedżer profili
|
||||
Name[pt_BR]=Abrir gerenciador de perfis
|
||||
Name[pt_PT]=Abrir o Gestor de Perfis
|
||||
Name[rm]=Avrir l'administraziun da profils
|
||||
Name[ro]=Deschide managerul de profiluri
|
||||
Name[ru]=Открыть менеджер профилей
|
||||
Name[sat]=ᱢᱮᱫᱦᱟᱸ ᱢᱮᱱᱮᱡᱚᱨ ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ
|
||||
Name[sc]=Aberi su gestore de profilos
|
||||
Name[sco]=Open Profile Manager
|
||||
Name[si]=පැතිකඩ කළමනාකරු අරින්න
|
||||
Name[sk]=Otvoriť Správcu profilov
|
||||
Name[skr]=پروفائل منیجر کھولو
|
||||
Name[sl]=Odpri upravitelja profilov
|
||||
Name[son]=Open Profile Manager
|
||||
Name[sq]=Hapni Përgjegjës Profilesh
|
||||
Name[sr]=Отворите управљач профила
|
||||
Name[sv_SE]=Öppna Profilhanteraren
|
||||
Name[szl]=Open Profile Manager
|
||||
Name[ta]=Open Profile Manager
|
||||
Name[te]=Open Profile Manager
|
||||
Name[tg]=Кушодани мудири профилҳо
|
||||
Name[th]=เปิดตัวจัดการโปรไฟล์
|
||||
Name[tl]=Open Profile Manager
|
||||
Name[tr]=Profil yöneticisini aç
|
||||
Name[trs]=Sa nīkāj ñu’ūnj nej perfî huā nì’nï̀nj ïn
|
||||
Name[uk]=Відкрити менеджер профілів
|
||||
Name[ur]=Open Profile Manager
|
||||
Name[uz]=Open Profile Manager
|
||||
Name[vi]=Mở trình quản lý hồ sơ
|
||||
Name[xh]=Open Profile Manager
|
||||
Name[zh_CN]=打开配置文件管理器
|
||||
Name[zh_TW]=開啟設定檔管理員
|
||||
@@ -0,0 +1,25 @@
|
||||
[Desktop Entry]
|
||||
Name=Claude
|
||||
Comment=Desktop application for Claude.ai
|
||||
GenericName=AI Assistant
|
||||
Keywords=AI;Chat;Assistant;Claude;Code;LLM;
|
||||
Exec=/nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop %U
|
||||
Icon=claude-desktop
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
# Matches the Wayland app_id / X11 WM_CLASS Chromium derives from
|
||||
# package.json desktopName, so docks group windows under this entry.
|
||||
StartupWMClass=com.anthropic.Claude
|
||||
# second-instance just focuses mainWindow; suppress GNOME's default "New Window" item
|
||||
SingleMainWindow=true
|
||||
Categories=Utility;Development;
|
||||
MimeType=x-scheme-handler/claude;
|
||||
Actions=NewChat;NewCode;
|
||||
|
||||
[Desktop Action NewChat]
|
||||
Name=New Chat
|
||||
Exec=/nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop "claude://claude.ai/new?surface=chat&source=desktop_action"
|
||||
|
||||
[Desktop Action NewCode]
|
||||
Name=New Claude Code Session
|
||||
Exec=/nix/store/8cc1cplpbdlsqy4x0v1c9w66w3dq80w4-claude-desktop-2.7032.0/bin/claude-desktop "claude://code/new?source=desktop_action"
|
||||
@@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Element
|
||||
Comment=A Matrix-based instant messaging client
|
||||
Icon=im.riot.Riot
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/element --file-forwarding im.riot.Riot @@u %U @@
|
||||
Categories=Network;InstantMessaging;Chat;VideoConference;
|
||||
MimeType=x-scheme-handler/element;x-scheme-handler/io.element.desktop;
|
||||
StartupWMClass=element
|
||||
Keywords=Matrix;matrix.org;chat;irc;communications;talk;riot;vector;
|
||||
X-Flatpak=im.riot.Riot
|
||||
@@ -0,0 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=No anchor
|
||||
Exec=/app/bin/noanchor %U
|
||||
X-Flatpak=org.example.NoAnchor
|
||||
@@ -0,0 +1,18 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=Quoting test
|
||||
Name[de]=Zitiertest
|
||||
# a comment
|
||||
Exec=env FOO=1 "/opt/My App/bin/app" --flag "with \\"quote\\"" %F
|
||||
Icon=app
|
||||
Actions=second;
|
||||
Keywords=a;b;
|
||||
Keywords[de]=c;d;
|
||||
X-Unknown-Key=kept\sas is
|
||||
|
||||
[Desktop Action second]
|
||||
Name=Second
|
||||
Exec="/opt/My App/bin/app" --second
|
||||
|
||||
[X-Other Group]
|
||||
Exec=untouched
|
||||
@@ -0,0 +1,373 @@
|
||||
[Desktop Entry]
|
||||
Name[af]=gedit
|
||||
Name[am]=gedit
|
||||
Name[an]=gedit
|
||||
Name[as]=gedit
|
||||
Name[ast]=gedit
|
||||
Name[az]=gedit
|
||||
Name[be]=gedit
|
||||
Name[bg]=gedit
|
||||
Name[bn_IN]=gedit
|
||||
Name[br]=gedit
|
||||
Name[bs]=gedit
|
||||
Name[ca]=gedit
|
||||
Name[ckb]=gedit
|
||||
Name[crh]=gedit
|
||||
Name[cs]=gedit
|
||||
Name[da]=gedit
|
||||
Name[de]=gedit
|
||||
Name[el]=gedit
|
||||
Name[en_CA]=gedit
|
||||
Name[en_GB]=gedit
|
||||
Name[eo]=gedit
|
||||
Name[es]=gedit
|
||||
Name[et]=gedit
|
||||
Name[eu]=gedit
|
||||
Name[fa]=جیادیت
|
||||
Name[fi]=gedit
|
||||
Name[fr]=gedit
|
||||
Name[fur]=gedit
|
||||
Name[ga]=gedit
|
||||
Name[gl]=gedit
|
||||
Name[he]=gedit
|
||||
Name[hr]=gedit
|
||||
Name[hu]=gedit
|
||||
Name[id]=gedit
|
||||
Name[is]=gedit
|
||||
Name[it]=gedit
|
||||
Name[ja]=gedit
|
||||
Name[ka]=gedit
|
||||
Name[kab]=gedit
|
||||
Name[kk]=gedit
|
||||
Name[km]=gedit
|
||||
Name[kn]=gedit
|
||||
Name[ko]=지에디트
|
||||
Name[lt]=gedit
|
||||
Name[lv]=gedit
|
||||
Name[mjw]=gedit
|
||||
Name[mk]=gedit
|
||||
Name[ms]=gedit
|
||||
Name[my]=gedit
|
||||
Name[nb]=gedit
|
||||
Name[nds]=gedit
|
||||
Name[ne]=जिइडिट
|
||||
Name[nl]=gedit
|
||||
Name[nn]=gedit
|
||||
Name[oc]=gedit
|
||||
Name[or]=gedit
|
||||
Name[pa]=ਜੀ-ਸੰਪਾਦਕ
|
||||
Name[pl]=gedit
|
||||
Name[pt]=gedit
|
||||
Name[pt_BR]=gedit
|
||||
Name[ro]=gedit
|
||||
Name[ru]=gedit
|
||||
Name[sk]=gedit
|
||||
Name[sl]=gedit
|
||||
Name[sr]=Вилењакова бележница
|
||||
Name[sv]=gedit
|
||||
Name[ta]=gedit
|
||||
Name[th]=gedit
|
||||
Name[tk]=gedit
|
||||
Name[tr]=gedit
|
||||
Name[ug]=gedit
|
||||
Name[uk]=gedit
|
||||
Name[vi]=gedit
|
||||
Name[wa]=gedit
|
||||
Name[zh_CN]=gedit
|
||||
Name[zh_HK]=gedit
|
||||
Name[zh_TW]=gedit
|
||||
Name=gedit
|
||||
Comment[af]=Redigeer tekslêers
|
||||
Comment[am]=የጽሑፍ ፋይሎች ያስተካክሉ
|
||||
Comment[an]=Edita fichers de texto
|
||||
Comment[ar]=حرّر الملفات النصية
|
||||
Comment[as]=লিখনি ফাইল সম্পাদনা
|
||||
Comment[ast]=Editar ficheros de testu
|
||||
Comment[az]=Mətn fayllarını redaktə edin
|
||||
Comment[be]=Рэдагаванне тэкставых файлаў
|
||||
Comment[be@latin]=Redahuj tekstavyja fajły
|
||||
Comment[bg]=Редактиране на текстови файлове
|
||||
Comment[bn]=টেক্সট ফাইল সম্পাদনা করুন
|
||||
Comment[bn_IN]=টেক্সট ফাইল সম্পাদনা
|
||||
Comment[br]=Embann restroù testenn
|
||||
Comment[bs]=Izmijeni tekstualne datoteke
|
||||
Comment[ca]=Editeu fitxers de text
|
||||
Comment[ca@valencia]=Editeu fitxers de text
|
||||
Comment[ckb]=دەق دەستکاریبکە
|
||||
Comment[crh]=Metin dosyelerini tahrir et
|
||||
Comment[cs]=Upravujte textové soubory
|
||||
Comment[cy]=Golygu ffeiliau testun
|
||||
Comment[da]=Redigér tekstfiler
|
||||
Comment[de]=Textdateien bearbeiten
|
||||
Comment[dz]=ཚིག་ཡིག་ཡིག་སྣོད་ཚུ་ ཞུན་དག་རྐྱབས་
|
||||
Comment[el]=Επεξεργασία αρχείων κειμένου
|
||||
Comment[en_CA]=Edit text files
|
||||
Comment[en_GB]=Edit text files
|
||||
Comment[en@shaw]=𐑧𐑛𐑦𐑑 𐑑𐑧𐑒𐑕𐑑 𐑓𐑲𐑤𐑟
|
||||
Comment[eo]=Redakti tekstdosierojn
|
||||
Comment[es]=Edite archivos de texto
|
||||
Comment[et]=Tekstifailide redigeerimine
|
||||
Comment[eu]=Editatu testu-fitxategiak
|
||||
Comment[fa]=ویرایش پروندههای متنی
|
||||
Comment[fi]=Muokkaa tekstitiedostoja
|
||||
Comment[fr]=Éditer des fichiers texte
|
||||
Comment[fur]=Modifiche file di test
|
||||
Comment[ga]=Cuir comhaid téacs in eagar
|
||||
Comment[gd]=Deasaich faidhlichean teacsa
|
||||
Comment[gl]=Editar ficheiros de texto
|
||||
Comment[gu]=લખાણ ફાઇલોમાં ફેરફાર કરો
|
||||
Comment[he]=עריכת קובצי טקסט
|
||||
Comment[hi]=पाठ फ़ाइलें संपादित करें
|
||||
Comment[hr]=Uređivanje tekstovnih datoteka
|
||||
Comment[hu]=Szövegfájlok szerkesztése
|
||||
Comment[ia]=Rediger files de texto
|
||||
Comment[id]=Menyunting berkas teks
|
||||
Comment[ie]=Redacte files textual
|
||||
Comment[is]=Sýsla með textaskrár
|
||||
Comment[it]=Modifica file di testo
|
||||
Comment[ja]=テキストファイルを編集します
|
||||
Comment[ka]=ფაილების რედაქტირება
|
||||
Comment[kab]=Ẓreg ifuyla n uḍris
|
||||
Comment[kk]=Мәтіндік файлдарды түзету
|
||||
Comment[km]=កែសម្រួលឯកសារអត្ថបទ
|
||||
Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು
|
||||
Comment[ko]=텍스트 파일을 편집합니다
|
||||
Comment[ku]=Pelên nivîsê sererast bike
|
||||
Comment[ln]=Bɔngisa kásá ya nkomá
|
||||
Comment[lt]=Redaguoti tekstinius failus
|
||||
Comment[lv]=Rediģēt teksta datnes
|
||||
Comment[mai]=पाठ फाइलकेँ संपादित करू
|
||||
Comment[mg]=Hanova raki-dahabolana
|
||||
Comment[mk]=Уредувај текстуални датотеки
|
||||
Comment[ml]=പദാവലി ഫയലുകളില് മാറ്റം വരുത്തുക
|
||||
Comment[mn]=Текст файл боловсруулах
|
||||
Comment[mr]=मजकूर फाइल्स् संपादीत करा
|
||||
Comment[ms]=Sunting fail teks
|
||||
Comment[my]=စာသားဖိုင်များပြင်ဆင်ရန်
|
||||
Comment[nb]=Rediger tekstfiler
|
||||
Comment[nds]=Textdateien bewarken
|
||||
Comment[ne]=पाठ फाइल सम्पादन गर्नुहोस्
|
||||
Comment[nl]=Bewerk tekstbestanden
|
||||
Comment[nn]=Rediger tekstfiler
|
||||
Comment[oc]=Editar de fichièrs tèxte
|
||||
Comment[or]=ପାଠ୍ଯ ଫାଇଲଗୁଡ଼ିକୁ ସମ୍ପାଦନ କରନ୍ତୁ
|
||||
Comment[pa]=ਲਿਖਤ ਫਾਇਲਾਂ ਸੋਧੋ
|
||||
Comment[pl]=Edytor plików tekstowych
|
||||
Comment[ps]=ليکن دوتنې سمول
|
||||
Comment[pt]=Editar ficheiros de texto
|
||||
Comment[pt_BR]=Edite arquivos de texto
|
||||
Comment[ro]=Editare fișiere text
|
||||
Comment[ru]=Редактор текстовых файлов
|
||||
Comment[si]=පෙළ ගොනු සකසන්න
|
||||
Comment[sk]=Úprava textových súborov
|
||||
Comment[sl]=Enostavni urejevalnik besedilnih datotek
|
||||
Comment[sq]=Ndrysho file teksti
|
||||
Comment[sr]=Уређујте текстуалне документе
|
||||
Comment[sr@latin]=Uređujte tekstualne dokumente
|
||||
Comment[sv]=Redigera textfiler
|
||||
Comment[ta]=உரை கோப்புகளை திருத்தவும்
|
||||
Comment[te]=పాఠ్య ఫైళ్ళను సవరించు
|
||||
Comment[th]=แก้ไขไฟล์ข้อความ
|
||||
Comment[tk]=Metin faýllary editle
|
||||
Comment[tr]=Metin dosyalarını düzenle
|
||||
Comment[ug]=تېكىست ھۆججەتلىرىنى تەھرىرلەش
|
||||
Comment[uk]=Редактор текстових файлів
|
||||
Comment[vi]=Soạn thảo tập tin văn bản
|
||||
Comment[wa]=Asspougnî des fitchîs tecses
|
||||
Comment[xh]=Hlela iifayili zombhalo
|
||||
Comment[zh_CN]=编辑文本文件
|
||||
Comment[zh_HK]=編輯文字檔
|
||||
Comment[zh_TW]=編輯文字檔
|
||||
Comment=Edit text files
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit --file-forwarding org.gnome.gedit @@u %U @@
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
MimeType=text/plain;application/x-zerosize;
|
||||
Icon=org.gnome.gedit
|
||||
Categories=GNOME;GTK;Utility;TextEditor;
|
||||
Actions=new-window;new-document;
|
||||
Keywords[be]=Text;Editor;Plaintext;Write;gedit;;Тэкст;Рэдактар;Тэкставы;Запіс;
|
||||
Keywords[bg]=текст;редактор;обикновен;текст;text;editor;plaintext;write;gedit;
|
||||
Keywords[bn_IN]=পাঠ্য;সম্পাদক;প্লেটেক্সট;লিখুন;gedit;
|
||||
Keywords[ca]=Text;Editor;text simple;escriure;gedit;
|
||||
Keywords[cs]=text;editor;prostý text;psát;psaní;gedit;
|
||||
Keywords[da]=Tekst;Editor;Redigering;Tekstredigering;Skrive;Skriv;gedit;
|
||||
Keywords[de]=Text;Editor;Klartext;Schreiben;gedit;
|
||||
Keywords[el]=Text;Editor;Plaintext;Write;gedit;κείμενο;επεξεργαστής;εγγραφή;γράψιμο;gedit;
|
||||
Keywords[en_GB]=Text;Editor;Plaintext;Write;gedit;
|
||||
Keywords[eo]=Teksto;Redaktilo;Plata teksto;Skribi;gedit;
|
||||
Keywords[es]=texto;editor;plano;escribir;gedit;
|
||||
Keywords[eu]=Testua;Editorea;Testu soila;Idatzi;gedit;
|
||||
Keywords[fa]=Text;Editor;Plaintext;Write;gedit;ویرایشگر متن;متن;ویرایشگر;نوشتار;
|
||||
Keywords[fi]=Text;Editor;Plaintext;Write;gedit;teksti;muokkain;editori;tekstieditori;tekstimuokkain;
|
||||
Keywords[fr]=texte brut;éditeur;écrire;gedit;
|
||||
Keywords[fur]=Text;Editor;Test sempliç;Scrivi;gedit;
|
||||
Keywords[gl]=Texto;Editor;Texto plano;Escribir;gedit;
|
||||
Keywords[he]=טקסט;עורך;עריכה;טקסט פשוט;כתיבה;gedit;
|
||||
Keywords[hr]=Tekst;Uređivač;Izvoran tekst;Piši;gedit;
|
||||
Keywords[hu]=Szöveg;Szerkesztő;Egyszerű szöveg;Írás;gedit;
|
||||
Keywords[id]=Teks;Penyunting;Teks Polos;Tulis;gedit;
|
||||
Keywords[is]=Texti;Ritill;Hreintexti;Skrifa;gedit;
|
||||
Keywords[it]=Editor;Testo;Text;Scrivere;gedit;
|
||||
Keywords[ja]=Text;Editor;Plaintext;Write;gedit;テキスト;エディター;プレーンテキスト;書く;
|
||||
Keywords[ka]=Text;Editor;Plaintext;Write;gedit;
|
||||
Keywords[kab]=Aḍris;Amaẓrag;Plaintext;Aru;gedit;
|
||||
Keywords[kk]=Text;Editor;Plaintext;Write;gedit;Мәтін;Түзеткіш;Ашық мәтін;Жазу;
|
||||
Keywords[ko]=Text;텍스트;Editor;편집기;Plaintext;일반텍스트;Write;글쓰기;작성;gedit;지에디트;
|
||||
Keywords[lt]=Tekstas;Redaktorius;Grynasis tekstas;Rašymas;gedit;
|
||||
Keywords[lv]=Teksts;Redaktors;Vienkāršs teksts;Rakstīt;gedit;
|
||||
Keywords[mjw]=Text;Editor;Plaintext;Write;gedit;
|
||||
Keywords[ms]=Teks;Penyunting;Plaintext;Menulis;gedit;
|
||||
Keywords[nb]=Tekst;Redigering;Vanlig tekst;Skriv;gedit;
|
||||
Keywords[ne]=पाठ;सम्पादक;सादापाठ;लेखाई;जिइडिट;
|
||||
Keywords[nl]=Text;tekst;Editor;teksteditor;tekstverwerker;Plaintext;platte tekst;Write;schrijven;gedit;
|
||||
Keywords[pa]=ਸ਼ਬਦ;ਟੈਕਸਟ;ਸੰਪਾਦਕ;ਐਡੀਟਰ;ਪਲੇਨਟੈਕਸਟ;ਜੀਸੰਪਾਦਕ;
|
||||
Keywords[pl]=Tekst;Text;Edytor;Zwykły tekst;Pisanie;Pisz;Napisz;Write;gedit;
|
||||
Keywords[pt]=Texto;Editor;Texto simples;Escrever;gedit;
|
||||
Keywords[pt_BR]=Texto;Editor;Texto simples;Plaintext;Escrever;Write;gedit;
|
||||
Keywords[ro]=Text;Editor;Plaintext;Write;Text simplu;Scrie;gedit;
|
||||
Keywords[ru]=Text;Editor;Plaintext;Write;gedit;Текст;Редактор;Запись;Текстовый;
|
||||
Keywords[sk]=Text;Editor;Čistý text;Písať;Napísať;Písanie;gedit;
|
||||
Keywords[sl]=Besedilo;Urejevalnik;tekst;Write;gedit;Pisanje;
|
||||
Keywords[sr]=Text;Editor;Plaintext;Write;текст;уређивач;обичан текст;писање;гедит;tekst;uređivač;običan tekst;pisanje;gedit;
|
||||
Keywords[sv]=Text;Redigerare;Vanlig text;Skriv;gedit;
|
||||
Keywords[th]=ข้อความ;เครื่องมือแก้ไข;ข้อความเปล่า;เขียน;gedit;
|
||||
Keywords[tr]=Metin;Düzenleyici;Düzyazı;Yaz;gedit;
|
||||
Keywords[uk]=Текст;Редактор;Запис;Написання;ґедіт;Text;Editor;Plaintext;Write;gedit;
|
||||
Keywords[vi]=Text;văn;bản;van;ban;Editor;sửa;sua;soạn;thảo;soan;thao;chữ;chu;Plaintext;Chữ thường;Chu thuong;Write;Ghi;Lưu;Luu;gedit;
|
||||
Keywords[zh_CN]=Text;Editor;Plaintext;Write;gedit;文本;文字;编辑器;纯文本;编写;
|
||||
Keywords[zh_TW]=Text;Editor;Plaintext;Write;gedit;文字;編輯器;純文字;撰寫;編寫;
|
||||
Keywords=Text;Editor;Plaintext;Write;gedit;
|
||||
DBusActivatable=true
|
||||
X-Flatpak=org.gnome.gedit
|
||||
|
||||
[Desktop Action new-window]
|
||||
Name[af]=Nuwe venster
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn_IN]=নতুন উইন্ডো
|
||||
Name[ca]=Finestra nova
|
||||
Name[ca@valencia]=_Finestra nova
|
||||
Name[ckb]=پەنجەریەکی نوێ
|
||||
Name[cs]=Nové okno
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_GB]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es]=Ventana nueva
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fur]=Gnûf barcon
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=_Xanela nova
|
||||
Name[he]=חלון חדש
|
||||
Name[hr]=Novi prozor
|
||||
Name[hu]=Új ablak
|
||||
Name[ia]=Nove fenestra
|
||||
Name[id]=Jendela Baru
|
||||
Name[ie]=Nov fenestre
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[ko]=새 창
|
||||
Name[lt]=Naujas langas
|
||||
Name[lv]=Jauns logs
|
||||
Name[mjw]=Kimi Window
|
||||
Name[ml]=പുതിയ ജാലകം
|
||||
Name[ms]=Tetingkap Baharu
|
||||
Name[nb]=Nytt vindu
|
||||
Name[ne]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[oc]=Novèla fenèstra
|
||||
Name[pa]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt]=Nova janela
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Создать окно
|
||||
Name[sk]=Nové okno
|
||||
Name[sl]=Novo okno
|
||||
Name[sr]=Нови прозор
|
||||
Name[sr@latin]=Novi prozor
|
||||
Name[sv]=Nytt fönster
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tr]=Yeni Pencere
|
||||
Name[uk]=Створити вікно
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=新增視窗
|
||||
Name=New Window
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit org.gnome.gedit --new-window
|
||||
|
||||
[Desktop Action new-document]
|
||||
Name[af]=Nuwe dokument
|
||||
Name[ar]=مستند جديد
|
||||
Name[be]=Новы дакумент
|
||||
Name[bg]=Нов документ
|
||||
Name[bn_IN]=নতুন ডকুমেন্ট
|
||||
Name[ca]=Crea un document nou
|
||||
Name[ca@valencia]=Crea un document nou
|
||||
Name[ckb]=بەڵگەنامەی نوێ
|
||||
Name[cs]=Nový dokument
|
||||
Name[da]=Nyt dokument
|
||||
Name[de]=Neues Dokument
|
||||
Name[el]=Νέο έγγραφο
|
||||
Name[en_GB]=New Document
|
||||
Name[eo]=Nova dokumento
|
||||
Name[es]=Documento nuevo
|
||||
Name[eu]=Dokumentu berria
|
||||
Name[fa]=سند جدید
|
||||
Name[fi]=Uusi asiakirja
|
||||
Name[fr]=Nouveau document
|
||||
Name[fur]=Gnûf document
|
||||
Name[gd]=Sgrìobhainn ùr
|
||||
Name[gl]=Novo documento
|
||||
Name[he]=מסמך חדש
|
||||
Name[hr]=Novi dokument
|
||||
Name[hu]=Új dokumentum
|
||||
Name[ia]=Nove documento
|
||||
Name[id]=Dokumen Baru
|
||||
Name[ie]=Nov document
|
||||
Name[is]=Nýtt skjal
|
||||
Name[it]=Nuovo documento
|
||||
Name[ja]=新しいドキュメント
|
||||
Name[ka]=ახალი დოკუმენტი
|
||||
Name[kab]=Isemli amaynut
|
||||
Name[kk]=Жаңа құжат
|
||||
Name[ko]=새 문서
|
||||
Name[lt]=Naujas dokumentas
|
||||
Name[lv]=Jauns dokuments
|
||||
Name[mjw]=Kimi Document
|
||||
Name[ml]=പൂതിയ രേഖ
|
||||
Name[ms]=Dokumen Baharu
|
||||
Name[nb]=Nytt dokument
|
||||
Name[ne]=नयाँ कागजात
|
||||
Name[nl]=Nieuw document
|
||||
Name[oc]=Novèl document
|
||||
Name[pa]=ਨਵਾਂ ਡੌਕੂਮੈਂਟ
|
||||
Name[pl]=Nowy dokument
|
||||
Name[pt]=Novo documento
|
||||
Name[pt_BR]=Novo documento
|
||||
Name[ro]=Document nou
|
||||
Name[ru]=Создать документ
|
||||
Name[sk]=Nový dokument
|
||||
Name[sl]=Nov dokument
|
||||
Name[sr]=Нови документ
|
||||
Name[sr@latin]=Novi dokument
|
||||
Name[sv]=Nytt dokument
|
||||
Name[th]=เอกสารใหม่
|
||||
Name[tr]=Yeni Belge
|
||||
Name[uk]=Створити документ
|
||||
Name[vi]=Tài liệu mới
|
||||
Name[zh_CN]=新建文档
|
||||
Name[zh_TW]=新增文件
|
||||
Name=New Document
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=gedit org.gnome.gedit --new-document
|
||||
@@ -0,0 +1,28 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Name=Jellyfin
|
||||
Comment=Desktop client for Jellyfin
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop org.jellyfin.JellyfinDesktop
|
||||
Icon=org.jellyfin.JellyfinDesktop
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupWMClass=org.jellyfin.JellyfinDesktop
|
||||
Categories=AudioVideo;Video;Player;TV;
|
||||
Actions=DesktopF;DesktopW;TVF;TVW
|
||||
X-Flatpak=org.jellyfin.JellyfinDesktop
|
||||
|
||||
[Desktop Action DesktopF]
|
||||
Name=Desktop [Fullscreen]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop org.jellyfin.JellyfinDesktop --fullscreen --desktop
|
||||
|
||||
[Desktop Action DesktopW]
|
||||
Name=Desktop [Windowed]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop org.jellyfin.JellyfinDesktop --windowed --desktop
|
||||
|
||||
[Desktop Action TVF]
|
||||
Name=TV [Fullscreen]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop org.jellyfin.JellyfinDesktop --fullscreen --tv
|
||||
|
||||
[Desktop Action TVW]
|
||||
Name=TV [Windowed]
|
||||
Exec=flatpak run --branch=stable --arch=aarch64 --command=jellyfin-desktop org.jellyfin.JellyfinDesktop --windowed --tv
|
||||
@@ -0,0 +1,181 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=/app/bin/krdc --file-forwarding org.kde.krdc -qwindowtitle %c @@u %u @@
|
||||
Icon=org.kde.krdc
|
||||
Terminal=false
|
||||
Name=KRDC
|
||||
Name[ar]=كردس
|
||||
Name[az]=KRDC
|
||||
Name[bg]=KRDC
|
||||
Name[bs]=KRDC
|
||||
Name[ca]=KRDC
|
||||
Name[ca@valencia]=KRDC
|
||||
Name[cs]=KRDC
|
||||
Name[da]=KRDC
|
||||
Name[de]=KRDC
|
||||
Name[el]=KRDC
|
||||
Name[en_GB]=KRDC
|
||||
Name[eo]=KRDC
|
||||
Name[es]=KRDC
|
||||
Name[et]=KRDC
|
||||
Name[eu]=KRDC
|
||||
Name[fi]=KRDC
|
||||
Name[fr]=KRDC
|
||||
Name[ga]=KRDC
|
||||
Name[gl]=KRDC
|
||||
Name[he]=KRDC
|
||||
Name[hne]=केआरडीसी
|
||||
Name[hr]=KRDC
|
||||
Name[hu]=KRDC
|
||||
Name[ia]=KRDC
|
||||
Name[is]=KRDC
|
||||
Name[it]=KRDC
|
||||
Name[ja]=KRDC
|
||||
Name[ka]=KRDC
|
||||
Name[kk]=KRDC
|
||||
Name[km]=KRDC
|
||||
Name[ko]=KRDC
|
||||
Name[lt]=KRDC
|
||||
Name[lv]=KRDC
|
||||
Name[ml]=കെആര്ഡിസി
|
||||
Name[mr]=के-आर-डी-सी
|
||||
Name[nb]=KRDC
|
||||
Name[nds]=KRDC
|
||||
Name[nl]=KRDC
|
||||
Name[nn]=KRDC
|
||||
Name[pa]=KRDC
|
||||
Name[pl]=KRDC
|
||||
Name[pt]=KRDC
|
||||
Name[pt_BR]=KRDC
|
||||
Name[ro]=KRDC
|
||||
Name[ru]=KRDC
|
||||
Name[sa]=केआरडीसी
|
||||
Name[si]=KRDC
|
||||
Name[sk]=KRDC
|
||||
Name[sl]=KRDC
|
||||
Name[sq]=KRDC
|
||||
Name[sr]=КРДЦ
|
||||
Name[sr@ijekavian]=КРДЦ
|
||||
Name[sr@ijekavianlatin]=KRDC
|
||||
Name[sr@latin]=KRDC
|
||||
Name[sv]=KRDC
|
||||
Name[tr]=KRDC
|
||||
Name[ug]=KRDC
|
||||
Name[uk]=KRDC
|
||||
Name[wa]=KRDC
|
||||
Name[zh_CN]=KRDC
|
||||
Name[zh_TW]=遠端桌面_KRDC
|
||||
GenericName=Remote Desktop Client
|
||||
GenericName[ar]=عميل سطح المكتب البعيد
|
||||
GenericName[az]=İş masasının uzaqdan idarə olunması
|
||||
GenericName[bg]=Отдалечен работен плот
|
||||
GenericName[bs]=Klijent udaljene radne površine
|
||||
GenericName[ca]=Client d'escriptori remot
|
||||
GenericName[ca@valencia]=Client d'escriptori remot
|
||||
GenericName[cs]=Klient vzdálené pracovní plochy
|
||||
GenericName[da]=Klient til fjernskrivebord
|
||||
GenericName[de]=Verbindung zu entferntem Rechner
|
||||
GenericName[el]=Πελάτης απομακρυσμένης επιφάνειας εργασίας
|
||||
GenericName[en_GB]=Remote Desktop Client
|
||||
GenericName[eo]=Kliento por fora labortablo
|
||||
GenericName[es]=Cliente de escritorio remoto
|
||||
GenericName[et]=Kaugtöölaua klient
|
||||
GenericName[eu]=Urruneko mahaigainaren bezeroa
|
||||
GenericName[fi]=Etätyöpöytäasiakas
|
||||
GenericName[fr]=Connexion à un bureau distant
|
||||
GenericName[ga]=Cliant Deisce Cianda
|
||||
GenericName[gl]=Cliente de escritorio remoto
|
||||
GenericName[he]=לקוח שולחן עבודה מרוחק
|
||||
GenericName[hne]=रिमोट डेस्कटाप क्लाएंट
|
||||
GenericName[hr]=Klijent za udaljeno povezivanje
|
||||
GenericName[hu]=Távoli asztal kliens
|
||||
GenericName[ia]=Cliente de scriptorio remote
|
||||
GenericName[is]=Tengingar við fjarlæg skjáborð
|
||||
GenericName[it]=Client per connessione a desktop remoto
|
||||
GenericName[ja]=リモートデスクトップクライアント
|
||||
GenericName[ka]=დისტანციური სამუშაო მაგიდის კლიენტი
|
||||
GenericName[kk]=Қашықтан үстелге қосылу клиенті
|
||||
GenericName[km]=កម្មវិធីមើលផ្ទៃតុពីចម្ងាយ
|
||||
GenericName[ko]=원격 데스크톱 클라이언트
|
||||
GenericName[lt]=Nuotolinio darbalaukio kliento programa
|
||||
GenericName[lv]=Attālās darbvirsmas klients
|
||||
GenericName[ml]=വിദൂര പണിയിട ക്ലയന്റ്
|
||||
GenericName[mr]=दूरस्थ डेस्कटॉप ग्राहक
|
||||
GenericName[nb]=Tilkobling til annet skrivebord
|
||||
GenericName[nds]=Schriefdisch-Feernverbinnen
|
||||
GenericName[nl]=Client voor verbinding met extern bureaublad
|
||||
GenericName[nn]=Tilkopling til eksternt skrivebord
|
||||
GenericName[pa]=ਰਿਮੋਟ ਡੈਸਕਟਾਪ ਕਲਾਈਟ
|
||||
GenericName[pl]=Klient zdalnego dostępu do pulpitu
|
||||
GenericName[pt]=Cliente de Ecrãs Remotos
|
||||
GenericName[pt_BR]=Cliente de área de trabalho remota
|
||||
GenericName[ro]=Client pentru birou la distanță
|
||||
GenericName[ru]=Удалённый доступ к рабочему столу
|
||||
GenericName[sa]=दूरस्थ डेस्कटॉप क्लायन्ट
|
||||
GenericName[si]=දුරස්ථ වැඩතල යෙදුම
|
||||
GenericName[sk]=Klient vzdialenej pracovnej plochy
|
||||
GenericName[sl]=Odjemalec za oddaljena namizja
|
||||
GenericName[sr]=Клијент удаљене површи
|
||||
GenericName[sr@ijekavian]=Клијент удаљене површи
|
||||
GenericName[sr@ijekavianlatin]=Klijent udaljene površi
|
||||
GenericName[sr@latin]=Klijent udaljene površi
|
||||
GenericName[sv]=Fjärranslutning till skrivbord
|
||||
GenericName[th]=ไคลเอนต์เชื่อมต่อพื้นที่ทำงานทางไกล
|
||||
GenericName[tr]=Uzak Masaüstü İstemcisi
|
||||
GenericName[ug]=يىراقتىكى ئۈستەلئۈستى خېرىدارى
|
||||
GenericName[uk]=Клієнт з'єднання з віддаленою стільницею
|
||||
GenericName[zh_CN]=远程桌面客户端
|
||||
GenericName[zh_TW]=遠端桌面用戶端
|
||||
Comment=Connect with RDP or VNC to another computer
|
||||
Comment[ar]=اتصل حاسوب آخر بواسطة RDP أو VNC
|
||||
Comment[az]=RDP və ya VNC ilə başqa kompüterə qoşulun
|
||||
Comment[bg]=Свързване чрез RDP or VNC с друг компютър
|
||||
Comment[ca]=Connecta amb RDP o VNC a un altre ordinador
|
||||
Comment[ca@valencia]=Connecta amb RDP o VNC a un altre ordinador
|
||||
Comment[cs]=Připojte se k jinému počítači pomocí RDP nebo VNC
|
||||
Comment[da]=Opret forbindelse til en anden computer med RDP eller VNC
|
||||
Comment[de]=Verbindung mit RDP oder VNC zu einem anderen Rechner
|
||||
Comment[el]=Σύνδεση με RDP ή VNC σε άλλον υπολογιστή
|
||||
Comment[en_GB]=Connect with RDP or VNC to another computer
|
||||
Comment[eo]=Konektiĝi per RDP aŭ VNC al alia komputilo
|
||||
Comment[es]=Conectar con RDP o VNC a otro equipo
|
||||
Comment[et]=Ühendumine RDP või VNC vahendusel teise arvutiga
|
||||
Comment[eu]=Konektatu RDP edo VNC bidez beste ordenagailu batera
|
||||
Comment[fi]=Yhdistä RDP:llä tai VNC:llä toiseen tietokoneeseen
|
||||
Comment[fr]=Se connecter à un autre ordinateur avec RDP ou VNC
|
||||
Comment[gl]=Conectarse por RDP ou VNC a outro computador.
|
||||
Comment[he]=התחברות ל־RDP או ל־VNC במחשב אחר
|
||||
Comment[hu]=Csatlakozás másik számítógéphez RDP-vel vagy VNC-vel
|
||||
Comment[ia]=Connecte con RDP o VNC a un altere computator
|
||||
Comment[is]=Tengstu með RDP eða VNC við aðrar tölvur
|
||||
Comment[it]=Connessione via RDP o VNC ad un altro computer
|
||||
Comment[ka]=მიუერთდით მოშორებულ კომპიუტერზე RDP ან VNC პროტოკოლით
|
||||
Comment[ko]=다른 컴퓨터에 RDP나 VNC로 연결
|
||||
Comment[lt]=Prisijungti prie kito kompiuterio naudojant RDP ar VNC
|
||||
Comment[lv]=Izmantojiet RDP vai VNC, lai pievienotos citam datoram
|
||||
Comment[nl]=Met RDP of VNC naar een andere computer verbinden
|
||||
Comment[nn]=Kopla til ei anna datamaskin via RDP eller VNC
|
||||
Comment[pl]=Połącz się przy użyciu RDP lub VNC do innego komputera
|
||||
Comment[pt]=Ligar-se com RDP ou VNC a outro computador
|
||||
Comment[pt_BR]=Conecte com RDP ou VNC em outro computador
|
||||
Comment[ro]=Conectare la alt calculator prin RDP sau VNC
|
||||
Comment[ru]=Подключение к другому компьютеру по RDP или VNC
|
||||
Comment[sa]=RDP अथवा VNC इत्यनेन सह अन्यसङ्गणकेन सह सम्बद्धं कुर्वन्तु
|
||||
Comment[sk]=Pripojiť pomocou RDP alebo VNC k inému počítaču
|
||||
Comment[sl]=Povežite se preko RDP-ja ali VNC-ja z drugim računalnikom
|
||||
Comment[sq]=Lidhu me një kompjuter tjetër përmes RDP ose VNC
|
||||
Comment[sr]=Повежите се РДП‑ом или ВНЦ‑ом са другим рачунаром
|
||||
Comment[sr@ijekavian]=Повежите се РДП‑ом или ВНЦ‑ом са другим рачунаром
|
||||
Comment[sr@ijekavianlatin]=Povežite se RDP‑om ili VNC‑om sa drugim računarom
|
||||
Comment[sr@latin]=Povežite se RDP‑om ili VNC‑om sa drugim računarom
|
||||
Comment[sv]=Anslut till en annan dator med RDP eller VNC
|
||||
Comment[tr]=Başka bir bilgisayara RDP veya VNC ile bağlan
|
||||
Comment[uk]=З'єднання з іншим комп'ютером за допомогою RDP або VNC
|
||||
Comment[zh_CN]=通过 RDP 或 VNC 连接到另一台计算机
|
||||
Comment[zh_TW]=以 RDP 或 VNC 連線到其他電腦
|
||||
X-DocPath=krdc/index.html
|
||||
StartupWMClass=krdc
|
||||
MimeType=x-scheme-handler/vnc;x-scheme-handler/rdp;application/x-krdc;
|
||||
Categories=Qt;KDE;Network;RemoteAccess;
|
||||
X-KDE-Wayland-Interfaces=org_kde_kwin_keystate
|
||||
X-Flatpak=org.kde.krdc
|
||||
@@ -0,0 +1,847 @@
|
||||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox @@u %u @@
|
||||
Terminal=false
|
||||
X-MultipleArgs=false
|
||||
Icon=org.mozilla.firefox
|
||||
StartupWMClass=firefox
|
||||
DBusActivatable=false
|
||||
Categories=GNOME;GTK;Network;WebBrowser;
|
||||
MimeType=application/json;application/pdf;application/rdf+xml;application/rss+xml;application/x-xpinstall;application/xhtml+xml;application/xml;audio/flac;audio/ogg;audio/webm;image/avif;image/gif;image/jpeg;image/png;image/svg+xml;image/webp;text/html;text/xml;video/ogg;video/webm;x-scheme-handler/chrome;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/mailto;
|
||||
StartupNotify=true
|
||||
Actions=new-window;new-private-window;open-profile-manager;
|
||||
Name=Firefox
|
||||
Name[ach]=Firefox
|
||||
Name[af]=Firefox
|
||||
Name[an]=Firefox
|
||||
Name[ar]=Firefox
|
||||
Name[ast]=Firefox
|
||||
Name[az]=Firefox
|
||||
Name[be]=Firefox
|
||||
Name[bg]=Firefox
|
||||
Name[bn]=Firefox
|
||||
Name[br]=Firefox
|
||||
Name[bs]=Firefox
|
||||
Name[ca]=Firefox
|
||||
Name[ca_valencia]=Firefox
|
||||
Name[cak]=Firefox
|
||||
Name[cs]=Firefox
|
||||
Name[cy]=Firefox
|
||||
Name[da]=Firefox
|
||||
Name[de]=Firefox
|
||||
Name[dsb]=Firefox
|
||||
Name[el]=Firefox
|
||||
Name[en_CA]=Firefox
|
||||
Name[en_GB]=Firefox
|
||||
Name[eo]=Firefox
|
||||
Name[es_AR]=Firefox
|
||||
Name[es_CL]=Firefox
|
||||
Name[es_ES]=Firefox
|
||||
Name[es_MX]=Firefox
|
||||
Name[et]=Firefox
|
||||
Name[eu]=Firefox
|
||||
Name[fa]=Firefox
|
||||
Name[ff]=Firefox
|
||||
Name[fi]=Firefox
|
||||
Name[fr]=Firefox
|
||||
Name[fur]=Firefox
|
||||
Name[fy_NL]=Firefox
|
||||
Name[ga_IE]=Firefox
|
||||
Name[gd]=Firefox
|
||||
Name[gl]=Firefox
|
||||
Name[gn]=Firefox
|
||||
Name[gu_IN]=Firefox
|
||||
Name[he]=Firefox
|
||||
Name[hi_IN]=Firefox
|
||||
Name[hr]=Firefox
|
||||
Name[hsb]=Firefox
|
||||
Name[hu]=Firefox
|
||||
Name[hy_AM]=Firefox
|
||||
Name[ia]=Firefox
|
||||
Name[id]=Firefox
|
||||
Name[is]=Firefox
|
||||
Name[it]=Firefox
|
||||
Name[ja]=Firefox
|
||||
Name[ka]=Firefox
|
||||
Name[kab]=Firefox
|
||||
Name[kk]=Firefox
|
||||
Name[km]=Firefox
|
||||
Name[kn]=Firefox
|
||||
Name[ko]=Firefox
|
||||
Name[lij]=Firefox
|
||||
Name[lt]=Firefox
|
||||
Name[lv]=Firefox
|
||||
Name[mk]=Firefox
|
||||
Name[mr]=Firefox
|
||||
Name[ms]=Firefox
|
||||
Name[my]=Firefox
|
||||
Name[nb_NO]=Firefox
|
||||
Name[ne_NP]=Firefox
|
||||
Name[nl]=Firefox
|
||||
Name[nn_NO]=Firefox
|
||||
Name[oc]=Firefox
|
||||
Name[pa_IN]=Firefox
|
||||
Name[pl]=Firefox
|
||||
Name[pt_BR]=Firefox
|
||||
Name[pt_PT]=Firefox
|
||||
Name[rm]=Firefox
|
||||
Name[ro]=Firefox
|
||||
Name[ru]=Firefox
|
||||
Name[sat]=Firefox
|
||||
Name[sc]=Firefox
|
||||
Name[sco]=Firefox
|
||||
Name[si]=Firefox
|
||||
Name[sk]=Firefox
|
||||
Name[skr]=Firefox
|
||||
Name[sl]=Firefox
|
||||
Name[son]=Firefox
|
||||
Name[sq]=Firefox
|
||||
Name[sr]=Firefox
|
||||
Name[sv_SE]=Firefox
|
||||
Name[szl]=Firefox
|
||||
Name[ta]=Firefox
|
||||
Name[te]=Firefox
|
||||
Name[tg]=Firefox
|
||||
Name[th]=Firefox
|
||||
Name[tl]=Firefox
|
||||
Name[tr]=Firefox
|
||||
Name[trs]=Firefox
|
||||
Name[uk]=Firefox
|
||||
Name[ur]=Firefox
|
||||
Name[uz]=Firefox
|
||||
Name[vi]=Firefox
|
||||
Name[xh]=Firefox
|
||||
Name[zh_CN]=Firefox
|
||||
Name[zh_TW]=Firefox
|
||||
Comment=Fast and private browser
|
||||
Comment[ach]=Fast and private browser
|
||||
Comment[af]=Fast and private browser
|
||||
Comment[an]=Fast and private browser
|
||||
Comment[ar]=متصفح سريع وخاص
|
||||
Comment[ast]=Fast and private browser
|
||||
Comment[az]=Fast and private browser
|
||||
Comment[be]=Хуткі і прыватны браўзер
|
||||
Comment[bg]=Fast and private browser
|
||||
Comment[bn]=Fast and private browser
|
||||
Comment[br]=Fast and private browser
|
||||
Comment[bs]=Fast and private browser
|
||||
Comment[ca]=Navegador ràpid i privat
|
||||
Comment[ca_valencia]=Fast and private browser
|
||||
Comment[cak]=Fast and private browser
|
||||
Comment[cs]=Rychlý a soukromý prohlížeč
|
||||
Comment[cy]=Porwr cyflym a phreifat
|
||||
Comment[da]=Hurtig og privat browser
|
||||
Comment[de]=Schneller und privater Browser
|
||||
Comment[dsb]=Malsny a priwatny wobglědowak
|
||||
Comment[el]=Γρήγορο και ιδιωτικό πρόγραμμα περιήγησης
|
||||
Comment[en_CA]=Fast and private browser
|
||||
Comment[en_GB]=Fast and private browser
|
||||
Comment[eo]=Rapida kaj privata retumilo
|
||||
Comment[es_AR]=Navegador rápido y privado
|
||||
Comment[es_CL]=Navegador rápido y privado
|
||||
Comment[es_ES]=Navegador rápido y privado
|
||||
Comment[es_MX]=Navegación web rápida y privada
|
||||
Comment[et]=Fast and private browser
|
||||
Comment[eu]=Nabigatzaile bizkor eta pribatua
|
||||
Comment[fa]=Fast and private browser
|
||||
Comment[ff]=Fast and private browser
|
||||
Comment[fi]=Nopea ja yksityinen selain
|
||||
Comment[fr]=Navigateur rapide et privé
|
||||
Comment[fur]=Navigadôr svelt e riservât
|
||||
Comment[fy_NL]=Flugge en priveebrowser
|
||||
Comment[ga_IE]=Fast and private browser
|
||||
Comment[gd]=Fast and private browser
|
||||
Comment[gl]=Fast and private browser
|
||||
Comment[gn]=Kundahára ipya’e ha hekoñemíva
|
||||
Comment[gu_IN]=Fast and private browser
|
||||
Comment[he]=דפדפן מהיר ופרטי
|
||||
Comment[hi_IN]=Fast and private browser
|
||||
Comment[hr]=Brz i privatan preglednik
|
||||
Comment[hsb]=Spěšny a priwatny wobhladowak
|
||||
Comment[hu]=Gyors és privát böngésző
|
||||
Comment[hy_AM]=Արագ և գաղտնի դիտարկիչ
|
||||
Comment[ia]=Navigator veloce e private
|
||||
Comment[id]=Fast and private browser
|
||||
Comment[is]=Hraður og persónulegur vafri
|
||||
Comment[it]=Browser veloce e riservato
|
||||
Comment[ja]=高速プライベートブラウザー
|
||||
Comment[ka]=სწრაფი და პირადი ბრაუზერი
|
||||
Comment[kab]=Iminig arurad, uslig
|
||||
Comment[kk]=Жылдам және жеке браузер
|
||||
Comment[km]=Fast and private browser
|
||||
Comment[kn]=Fast and private browser
|
||||
Comment[ko]=빠르고 사생활을 보호하는 브라우저
|
||||
Comment[lij]=Fast and private browser
|
||||
Comment[lt]=Fast and private browser
|
||||
Comment[lv]=Fast and private browser
|
||||
Comment[mk]=Fast and private browser
|
||||
Comment[mr]=Fast and private browser
|
||||
Comment[ms]=Fast and private browser
|
||||
Comment[my]=Fast and private browser
|
||||
Comment[nb_NO]=Rask og privat nettleser
|
||||
Comment[ne_NP]=Fast and private browser
|
||||
Comment[nl]=Snelle en privébrowser
|
||||
Comment[nn_NO]=Rask og privat nettlesar
|
||||
Comment[oc]=Fast and private browser
|
||||
Comment[pa_IN]=ਤੇਜ਼ ਅਤੇ ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਰ
|
||||
Comment[pl]=Szybka i prywatna przeglądarka
|
||||
Comment[pt_BR]=Navegador rápido e privativo
|
||||
Comment[pt_PT]=Navegador rápido e privado
|
||||
Comment[rm]=Navigatur svelt e privat
|
||||
Comment[ro]=Browser rapid și privat
|
||||
Comment[ru]=Быстрый и приватный браузер
|
||||
Comment[sat]=Fast and private browser
|
||||
Comment[sc]=Navigadore lestru e privadu
|
||||
Comment[sco]=Fast and private browser
|
||||
Comment[si]=Fast and private browser
|
||||
Comment[sk]=Rýchly a súkromný prehliadač
|
||||
Comment[skr]=Fast and private browser
|
||||
Comment[sl]=Hiter in zaseben brskalnik
|
||||
Comment[son]=Fast and private browser
|
||||
Comment[sq]=Shfletues i shpejtë dhe privat
|
||||
Comment[sr]=Брз и приватан веб прегледач
|
||||
Comment[sv_SE]=Snabb och privat webbläsare
|
||||
Comment[szl]=Fast and private browser
|
||||
Comment[ta]=Fast and private browser
|
||||
Comment[te]=Fast and private browser
|
||||
Comment[tg]=Браузери тезкор ва хусусӣ
|
||||
Comment[th]=เบราว์เซอร์ที่รวดเร็วและเป็นส่วนตัว
|
||||
Comment[tl]=Fast and private browser
|
||||
Comment[tr]=Hızlı ve gizli tarayıcı
|
||||
Comment[trs]=Fast and private browser
|
||||
Comment[uk]=Швидкий і приватний браузер
|
||||
Comment[ur]=Fast and private browser
|
||||
Comment[uz]=Fast and private browser
|
||||
Comment[vi]=Trình duyệt nhanh và riêng tư
|
||||
Comment[xh]=Fast and private browser
|
||||
Comment[zh_CN]=快速且私密的浏览器
|
||||
Comment[zh_TW]=快速又有隱私的瀏覽器
|
||||
GenericName=Web Browser
|
||||
GenericName[ach]=Web Browser
|
||||
GenericName[af]=Web Browser
|
||||
GenericName[an]=Web Browser
|
||||
GenericName[ar]=متصفح الوِب
|
||||
GenericName[ast]=Web Browser
|
||||
GenericName[az]=Web Browser
|
||||
GenericName[be]=Вэб-браўзер
|
||||
GenericName[bg]=Уеб браузър
|
||||
GenericName[bn]=ওয়েব ব্রাউজার
|
||||
GenericName[br]=Merdeer Web
|
||||
GenericName[bs]=Web pretraživač
|
||||
GenericName[ca]=Navegador web
|
||||
GenericName[ca_valencia]=Web Browser
|
||||
GenericName[cak]=Web Okik'amaya'l
|
||||
GenericName[cs]=Webový prohlížeč
|
||||
GenericName[cy]=Porwr Gwe
|
||||
GenericName[da]=Webbrowser
|
||||
GenericName[de]=Internet-Browser
|
||||
GenericName[dsb]=Webwobglědowak
|
||||
GenericName[el]=Πρόγραμμα περιήγησης
|
||||
GenericName[en_CA]=Web Browser
|
||||
GenericName[en_GB]=Web Browser
|
||||
GenericName[eo]=Retumilo
|
||||
GenericName[es_AR]=Navegador web
|
||||
GenericName[es_CL]=Navegador Web
|
||||
GenericName[es_ES]=Navegador web
|
||||
GenericName[es_MX]=Navegador Web
|
||||
GenericName[et]=Web Browser
|
||||
GenericName[eu]=Web nabigatzailea
|
||||
GenericName[fa]=مرورگر وب
|
||||
GenericName[ff]=Web Browser
|
||||
GenericName[fi]=Verkkoselain
|
||||
GenericName[fr]=Navigateur web
|
||||
GenericName[fur]=Navigadôr Web
|
||||
GenericName[fy_NL]=Webbrowser
|
||||
GenericName[ga_IE]=Web Browser
|
||||
GenericName[gd]=Brabhsair-lìn
|
||||
GenericName[gl]=Navegador web
|
||||
GenericName[gn]=Ñanduti Kundahára
|
||||
GenericName[gu_IN]=Web Browser
|
||||
GenericName[he]=דפדפן אינטרנט
|
||||
GenericName[hi_IN]=Web Browser
|
||||
GenericName[hr]=Web preglednik
|
||||
GenericName[hsb]=Webwobhladowak
|
||||
GenericName[hu]=Webböngésző
|
||||
GenericName[hy_AM]=Վեբ դիտարկիչ
|
||||
GenericName[ia]=Navigator web
|
||||
GenericName[id]=Peramban Web
|
||||
GenericName[is]=Vafri
|
||||
GenericName[it]=Browser web
|
||||
GenericName[ja]=ウェブブラウザー
|
||||
GenericName[ka]=ბრაუზერი
|
||||
GenericName[kab]=Iminig web
|
||||
GenericName[kk]=Веб-браузері
|
||||
GenericName[km]=Web Browser
|
||||
GenericName[kn]=Web Browser
|
||||
GenericName[ko]=웹 브라우저
|
||||
GenericName[lij]=Navegatô Web
|
||||
GenericName[lt]=Web Browser
|
||||
GenericName[lv]=Tīmekļa pārlūks
|
||||
GenericName[mk]=Web Browser
|
||||
GenericName[mr]=Web Browser
|
||||
GenericName[ms]=Web Browser
|
||||
GenericName[my]=Web Browser
|
||||
GenericName[nb_NO]=Nettleser
|
||||
GenericName[ne_NP]=वेब ब्राउजर
|
||||
GenericName[nl]=Webbrowser
|
||||
GenericName[nn_NO]=Nettlesar
|
||||
GenericName[oc]=Navegador Web
|
||||
GenericName[pa_IN]=ਵੈੱਬ ਬਰਾਊਜ਼ਰ
|
||||
GenericName[pl]=Przeglądarka internetowa
|
||||
GenericName[pt_BR]=Navegador web
|
||||
GenericName[pt_PT]=Navegador Web
|
||||
GenericName[rm]=Navigatur web
|
||||
GenericName[ro]=Browser web
|
||||
GenericName[ru]=Веб-браузер
|
||||
GenericName[sat]=ᱣᱮᱵᱽ ᱵᱽᱨᱟᱣᱡᱚᱨ
|
||||
GenericName[sc]=Navigadore web
|
||||
GenericName[sco]=Web Browser
|
||||
GenericName[si]=වියමන අතිරික්සුව
|
||||
GenericName[sk]=Webový prehliadač
|
||||
GenericName[skr]=ویب براؤزر
|
||||
GenericName[sl]=Spletni brskalnik
|
||||
GenericName[son]=Web Browser
|
||||
GenericName[sq]=Shfletues
|
||||
GenericName[sr]=Веб прегледач
|
||||
GenericName[sv_SE]=Webbläsare
|
||||
GenericName[szl]=Web Browser
|
||||
GenericName[ta]=Web Browser
|
||||
GenericName[te]=జాల విహారిణి
|
||||
GenericName[tg]=Браузери веб
|
||||
GenericName[th]=เว็บเบราว์เซอร์
|
||||
GenericName[tl]=Web Browser
|
||||
GenericName[tr]=Web Tarayıcısı
|
||||
GenericName[trs]=Web riña gāchē nu’
|
||||
GenericName[uk]=Браузер
|
||||
GenericName[ur]=Web Browser
|
||||
GenericName[uz]=Web Browser
|
||||
GenericName[vi]=Trình duyệt web
|
||||
GenericName[xh]=Web Browser
|
||||
GenericName[zh_CN]=Web 浏览器
|
||||
GenericName[zh_TW]=網頁瀏覽器
|
||||
Keywords=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ach]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[af]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[an]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ar]=إنترنت;WWW;متصفح;ويب;مستكشف;
|
||||
Keywords[ast]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[az]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[be]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bg]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[bn]=ইন্টারনেট;WWW;ব্রাউজার;ওয়েব;এক্সপ্লোরার;
|
||||
Keywords[br]=Internet;WWW;Merdeer;Web;Ergerzhout;
|
||||
Keywords[bs]=Internet;WWW;Pretraživač;Web;Istraživač;
|
||||
Keywords[ca]=Internet;WWW;Browser;Web;Explorador;Navegador;
|
||||
Keywords[ca_valencia]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[cak]=K'amaya'l;WWW;Okik'amaya'l;Kanob'äl;
|
||||
Keywords[cs]=internet;WWW;prohlížeč;web;
|
||||
Keywords[cy]=Rhyngrwyd;WWW;Porwr;Gwe;Archwiliwr;
|
||||
Keywords[da]=Internet;WWW;Browser;Nettet;Explorer;
|
||||
Keywords[de]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[dsb]=Internet;WWW;wobglědowak;Web;Explorer;
|
||||
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Ιστός;Ίντερνετ;
|
||||
Keywords[en_CA]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[en_GB]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eo]=Interreto;Retumilo;TTT;Teksaĵo;Reto;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[es_AR]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_CL]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_ES]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[es_MX]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[et]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[eu]=Internet;WWW;Nabigatzailea;Web;Arakatzailea;
|
||||
Keywords[fa]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ff]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;netti;webbi;selain;
|
||||
Keywords[fr]=Internet;WWW;Navigateur;Web;Explorer;
|
||||
Keywords[fur]=Internet;WWW;Browser;Navigadôr;Web;Esploradôr;Explorer;
|
||||
Keywords[fy_NL]=Ynternet;WWW;Browser;Web;Ferkenner;
|
||||
Keywords[ga_IE]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gd]=Internet;WWW;Browser;Web;Explorer;eadar-lìon;brabhsair;brobhsair;lìon;taisgealaiche;
|
||||
Keywords[gl]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[gn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[gu_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[he]=אינטרנט;WWW;דפדפן;רשת;סייר;מרשתת;
|
||||
Keywords[hi_IN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[hr]=Internet;WWW;Preglednik;Web;Istraživač;
|
||||
Keywords[hsb]=Internet;WWW;wobhladowak;Web;Explorer;
|
||||
Keywords[hu]=Internet;WWW;Böngésző;Web;Világháló;
|
||||
Keywords[hy_AM]=Համացանց,WWW,Զննիչ,Վեբ,Ցանցախույզ:
|
||||
Keywords[ia]=Internet;WWW;Navigator;Web;Explorator;
|
||||
Keywords[id]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[is]=Internet;WWW; Vafri; Vefur; Explorer;
|
||||
Keywords[it]=Internet;WWW;Browser;Web;Explorer;Navigatore;
|
||||
Keywords[ja]=Internet;WWW;Browser;Web;Explorer;インターネット;ブラウザー;ウェブ;
|
||||
Keywords[ka]=ინტერნეტი;WWW;ბრაუზერი;ქსელი;ქსელთან წვდომა;
|
||||
Keywords[kab]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kk]=Internet;WWW;Browser;Web;Explorer;Интернет;Ғаламтор;Браузер;Желі;Шолғыш;
|
||||
Keywords[km]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[kn]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ko]=인터넷;브라우저;웹;탐색기;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lij]=Internet;WWW;Browser;Web;Explorer;Navegatô;
|
||||
Keywords[lt]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[lv]=Internets;WWW;Pārlūkprogramma;Tīmeklis;
|
||||
Keywords[mk]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[mr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ms]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[my]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nb_NO]=Internett;WWW;Nettleser;Web;Utforsker;
|
||||
Keywords[ne_NP]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[nl]=Internet;WWW;Browser;Web;Verkenner;
|
||||
Keywords[nn_NO]=Internett;WWW;Nettlesar;Web;Utforskar;
|
||||
Keywords[oc]=Internet;WWW;Navegador;Navigador;Navegator;Navigator;Web;Explorer;
|
||||
Keywords[pa_IN]=ਇੰਟਰਨੈੱਟ;WWW;ਬਰਾਊਜ਼ਰ;ਵੈੱਬ;ਐਕਸਪਲਰੋਰ;ਵੈਬ;ਇੰਟਰਨੈਟ;
|
||||
Keywords[pl]=Internet;WWW;Przeglądarka;Browser;Wyszukiwarka;Web;Sieć;Explorer;Eksplorer;Strony;Witryny;internetowe;
|
||||
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorer;Navegador;
|
||||
Keywords[pt_PT]=Internet;WWW;Navegador;Web;Explorador;
|
||||
Keywords[rm]=Internet;WWW;Browser;Web;Explorer;navigatur;
|
||||
Keywords[ro]=Internet; WWW; Browser; Web; Explorer;
|
||||
Keywords[ru]=Сеть;Интернет;Браузер;Доступ в Интернет;
|
||||
Keywords[sat]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sc]=Internet;WWW;Navigadore;Web;Explorer;
|
||||
Keywords[sco]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[si]=අන්තර්ජාලය;අතිරික්සුව;පිරික්සන්න;ගවේශකය;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sk]=Internet;WWW;Prehliadač;Web;Prieskumník;
|
||||
Keywords[skr]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sl]=internet;www;brskalnik;splet;
|
||||
Keywords[son]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[sq]=Internet;WWW;Shfletues;Web;Eksplorues;
|
||||
Keywords[sr]=Internet;WWW;Browser;Web;Explorer;интернет;њњњ;веб;мрежа;прегледач;експлорер;internet;pregledač;veb;mreža;pregledač;eksplorer;
|
||||
Keywords[sv_SE]=Internet;WWW;Webbläsare;Webb;Utforskare;
|
||||
Keywords[szl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[ta]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[te]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tg]=Интернет;WWW;Браузер;Сомона;Ҷустуҷӯгар;
|
||||
Keywords[th]=อินเทอร์เน็ต;เบราว์เซอร์;เว็บ;Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tl]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[tr]=Internet;WWW;Browser;Web;Explorer;İnternet;Tarayıcı;
|
||||
Keywords[trs]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uk]=Інтернет;WWW;Браузер;Веб;Переглядач;
|
||||
Keywords[ur]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[uz]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[vi]=Internet;WWW;Trình duyệt;Web;Duyệt web;
|
||||
Keywords[xh]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;
|
||||
Keywords[zh_TW]=網際網路;網路;瀏覽器;網頁;上網;Internet;WWW;Browser;Web;Explorer;
|
||||
X-GNOME-FullName=Mozilla Firefox
|
||||
X-GNOME-FullName[ach]=Mozilla Firefox
|
||||
X-GNOME-FullName[af]=Mozilla Firefox
|
||||
X-GNOME-FullName[an]=Mozilla Firefox
|
||||
X-GNOME-FullName[ar]=Mozilla Firefox
|
||||
X-GNOME-FullName[ast]=Mozilla Firefox
|
||||
X-GNOME-FullName[az]=Mozilla Firefox
|
||||
X-GNOME-FullName[be]=Mozilla Firefox
|
||||
X-GNOME-FullName[bg]=Mozilla Firefox
|
||||
X-GNOME-FullName[bn]=Mozilla Firefox
|
||||
X-GNOME-FullName[br]=Mozilla Firefox
|
||||
X-GNOME-FullName[bs]=Mozilla Firefox
|
||||
X-GNOME-FullName[ca]=Mozilla Firefox
|
||||
X-GNOME-FullName[ca_valencia]=Mozilla Firefox
|
||||
X-GNOME-FullName[cak]=Mozilla Firefox
|
||||
X-GNOME-FullName[cs]=Mozilla Firefox
|
||||
X-GNOME-FullName[cy]=Mozilla Firefox
|
||||
X-GNOME-FullName[da]=Mozilla Firefox
|
||||
X-GNOME-FullName[de]=Mozilla Firefox
|
||||
X-GNOME-FullName[dsb]=Mozilla Firefox
|
||||
X-GNOME-FullName[el]=Mozilla Firefox
|
||||
X-GNOME-FullName[en_CA]=Mozilla Firefox
|
||||
X-GNOME-FullName[en_GB]=Mozilla Firefox
|
||||
X-GNOME-FullName[eo]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_AR]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_CL]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_ES]=Mozilla Firefox
|
||||
X-GNOME-FullName[es_MX]=Mozilla Firefox
|
||||
X-GNOME-FullName[et]=Mozilla Firefox
|
||||
X-GNOME-FullName[eu]=Mozilla Firefox
|
||||
X-GNOME-FullName[fa]=Mozilla Firefox
|
||||
X-GNOME-FullName[ff]=Mozilla Firefox
|
||||
X-GNOME-FullName[fi]=Mozilla Firefox
|
||||
X-GNOME-FullName[fr]=Mozilla Firefox
|
||||
X-GNOME-FullName[fur]=Mozilla Firefox
|
||||
X-GNOME-FullName[fy_NL]=Mozilla Firefox
|
||||
X-GNOME-FullName[ga_IE]=Mozilla Firefox
|
||||
X-GNOME-FullName[gd]=Mozilla Firefox
|
||||
X-GNOME-FullName[gl]=Mozilla Firefox
|
||||
X-GNOME-FullName[gn]=Mozilla Firefox
|
||||
X-GNOME-FullName[gu_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[he]=Mozilla Firefox
|
||||
X-GNOME-FullName[hi_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[hr]=Mozilla Firefox
|
||||
X-GNOME-FullName[hsb]=Mozilla Firefox
|
||||
X-GNOME-FullName[hu]=Mozilla Firefox
|
||||
X-GNOME-FullName[hy_AM]=Mozilla Firefox
|
||||
X-GNOME-FullName[ia]=Mozilla Firefox
|
||||
X-GNOME-FullName[id]=Mozilla Firefox
|
||||
X-GNOME-FullName[is]=Mozilla Firefox
|
||||
X-GNOME-FullName[it]=Mozilla Firefox
|
||||
X-GNOME-FullName[ja]=Mozilla Firefox
|
||||
X-GNOME-FullName[ka]=Mozilla Firefox
|
||||
X-GNOME-FullName[kab]=Mozilla Firefox
|
||||
X-GNOME-FullName[kk]=Mozilla Firefox
|
||||
X-GNOME-FullName[km]=Mozilla Firefox
|
||||
X-GNOME-FullName[kn]=Mozilla Firefox
|
||||
X-GNOME-FullName[ko]=Mozilla Firefox
|
||||
X-GNOME-FullName[lij]=Mozilla Firefox
|
||||
X-GNOME-FullName[lt]=Mozilla Firefox
|
||||
X-GNOME-FullName[lv]=Mozilla Firefox
|
||||
X-GNOME-FullName[mk]=Mozilla Firefox
|
||||
X-GNOME-FullName[mr]=Mozilla Firefox
|
||||
X-GNOME-FullName[ms]=Mozilla Firefox
|
||||
X-GNOME-FullName[my]=Mozilla Firefox
|
||||
X-GNOME-FullName[nb_NO]=Mozilla Firefox
|
||||
X-GNOME-FullName[ne_NP]=Mozilla Firefox
|
||||
X-GNOME-FullName[nl]=Mozilla Firefox
|
||||
X-GNOME-FullName[nn_NO]=Mozilla Firefox
|
||||
X-GNOME-FullName[oc]=Mozilla Firefox
|
||||
X-GNOME-FullName[pa_IN]=Mozilla Firefox
|
||||
X-GNOME-FullName[pl]=Mozilla Firefox
|
||||
X-GNOME-FullName[pt_BR]=Mozilla Firefox
|
||||
X-GNOME-FullName[pt_PT]=Mozilla Firefox
|
||||
X-GNOME-FullName[rm]=Mozilla Firefox
|
||||
X-GNOME-FullName[ro]=Mozilla Firefox
|
||||
X-GNOME-FullName[ru]=Mozilla Firefox
|
||||
X-GNOME-FullName[sat]=Mozilla Firefox
|
||||
X-GNOME-FullName[sc]=Mozilla Firefox
|
||||
X-GNOME-FullName[sco]=Mozilla Firefox
|
||||
X-GNOME-FullName[si]=Mozilla Firefox
|
||||
X-GNOME-FullName[sk]=Mozilla Firefox
|
||||
X-GNOME-FullName[skr]=Mozilla Firefox
|
||||
X-GNOME-FullName[sl]=Mozilla Firefox
|
||||
X-GNOME-FullName[son]=Mozilla Firefox
|
||||
X-GNOME-FullName[sq]=Mozilla Firefox
|
||||
X-GNOME-FullName[sr]=Mozilla Firefox
|
||||
X-GNOME-FullName[sv_SE]=Mozilla Firefox
|
||||
X-GNOME-FullName[szl]=Mozilla Firefox
|
||||
X-GNOME-FullName[ta]=Mozilla Firefox
|
||||
X-GNOME-FullName[te]=Mozilla Firefox
|
||||
X-GNOME-FullName[tg]=Mozilla Firefox
|
||||
X-GNOME-FullName[th]=Mozilla Firefox
|
||||
X-GNOME-FullName[tl]=Mozilla Firefox
|
||||
X-GNOME-FullName[tr]=Mozilla Firefox
|
||||
X-GNOME-FullName[trs]=Mozilla Firefox
|
||||
X-GNOME-FullName[uk]=Mozilla Firefox
|
||||
X-GNOME-FullName[ur]=Mozilla Firefox
|
||||
X-GNOME-FullName[uz]=Mozilla Firefox
|
||||
X-GNOME-FullName[vi]=Mozilla Firefox
|
||||
X-GNOME-FullName[xh]=Mozilla Firefox
|
||||
X-GNOME-FullName[zh_CN]=Mozilla Firefox
|
||||
X-GNOME-FullName[zh_TW]=Mozilla Firefox
|
||||
X-Flatpak=org.mozilla.firefox
|
||||
|
||||
[Desktop Action new-window]
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox --new-window @@u %u @@
|
||||
Name=New Window
|
||||
Name[ach]=New Window
|
||||
Name[af]=New Window
|
||||
Name[an]=New Window
|
||||
Name[ar]=نافذة جديدة
|
||||
Name[ast]=New Window
|
||||
Name[az]=New Window
|
||||
Name[be]=Новае акно
|
||||
Name[bg]=Нов прозорец
|
||||
Name[bn]=নতুন উইন্ডো
|
||||
Name[br]=Prenestr nevez
|
||||
Name[bs]=Novi prozor
|
||||
Name[ca]=Finestra nova
|
||||
Name[ca_valencia]=New Window
|
||||
Name[cak]=K'ak'a' Tzuwäch
|
||||
Name[cs]=Nové okno
|
||||
Name[cy]=Ffenestr Newydd
|
||||
Name[da]=Nyt vindue
|
||||
Name[de]=Neues Fenster
|
||||
Name[dsb]=Nowe wokno
|
||||
Name[el]=Νέο παράθυρο
|
||||
Name[en_CA]=New Window
|
||||
Name[en_GB]=New Window
|
||||
Name[eo]=Nova fenestro
|
||||
Name[es_AR]=Nueva ventana
|
||||
Name[es_CL]=Nueva ventana
|
||||
Name[es_ES]=Nueva ventana
|
||||
Name[es_MX]=Nueva ventana
|
||||
Name[et]=New Window
|
||||
Name[eu]=Leiho berria
|
||||
Name[fa]=پنجره جدید
|
||||
Name[ff]=New Window
|
||||
Name[fi]=Uusi ikkuna
|
||||
Name[fr]=Nouvelle fenêtre
|
||||
Name[fur]=Gnûf barcon
|
||||
Name[fy_NL]=Nij finster
|
||||
Name[ga_IE]=New Window
|
||||
Name[gd]=Uinneag ùr
|
||||
Name[gl]=Nova xanela
|
||||
Name[gn]=Ovetã pyahu
|
||||
Name[gu_IN]=New Window
|
||||
Name[he]=חלון חדש
|
||||
Name[hi_IN]=New Window
|
||||
Name[hr]=Novi prozor
|
||||
Name[hsb]=Nowe wokno
|
||||
Name[hu]=Új ablak
|
||||
Name[hy_AM]=Նոր պատուհան
|
||||
Name[ia]=Nove fenestra
|
||||
Name[id]=Jendela Baru
|
||||
Name[is]=Nýr gluggi
|
||||
Name[it]=Nuova finestra
|
||||
Name[ja]=新しいウィンドウ
|
||||
Name[ka]=ახალი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut
|
||||
Name[kk]=Жаңа терезе
|
||||
Name[km]=បង្អួចថ្មី
|
||||
Name[kn]=New Window
|
||||
Name[ko]=새 창
|
||||
Name[lij]=Neuvo Barcon
|
||||
Name[lt]=New Window
|
||||
Name[lv]=Jauns logs
|
||||
Name[mk]=New Window
|
||||
Name[mr]=New Window
|
||||
Name[ms]=New Window
|
||||
Name[my]=New Window
|
||||
Name[nb_NO]=Nytt vindu
|
||||
Name[ne_NP]=नयाँ सञ्झ्याल
|
||||
Name[nl]=Nieuw venster
|
||||
Name[nn_NO]=Nytt vindauge
|
||||
Name[oc]=Fenèstra novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno
|
||||
Name[pt_BR]=Nova janela
|
||||
Name[pt_PT]=Nova janela
|
||||
Name[rm]=Nova fanestra
|
||||
Name[ro]=Fereastră nouă
|
||||
Name[ru]=Новое окно
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana noa
|
||||
Name[sco]=New Window
|
||||
Name[si]=නව කවුළුව
|
||||
Name[sk]=Nové okno
|
||||
Name[skr]=نویں ونڈو
|
||||
Name[sl]=Novo okno
|
||||
Name[son]=New Window
|
||||
Name[sq]=Dritare e Re
|
||||
Name[sr]=Нови прозор
|
||||
Name[sv_SE]=Nytt fönster
|
||||
Name[szl]=New Window
|
||||
Name[ta]=New Window
|
||||
Name[te]=కొత్త కిటికీ
|
||||
Name[tg]=Равзанаи нав
|
||||
Name[th]=หน้าต่างใหม่
|
||||
Name[tl]=New Window
|
||||
Name[tr]=Yeni pencere
|
||||
Name[trs]=Bēntanâ nākàa
|
||||
Name[uk]=Нове вікно
|
||||
Name[ur]=New Window
|
||||
Name[uz]=New Window
|
||||
Name[vi]=Cửa sổ mới
|
||||
Name[xh]=New Window
|
||||
Name[zh_CN]=新建窗口
|
||||
Name[zh_TW]=開新視窗
|
||||
|
||||
[Desktop Action new-private-window]
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox --file-forwarding org.mozilla.firefox --private-window @@u %u @@
|
||||
Name=New Private Window
|
||||
Name[ach]=New Private Window
|
||||
Name[af]=New Private Window
|
||||
Name[an]=New Private Window
|
||||
Name[ar]=نافذة خاصة جديدة
|
||||
Name[ast]=New Private Window
|
||||
Name[az]=New Private Window
|
||||
Name[be]=Новае прыватнае акно
|
||||
Name[bg]=Нов личен прозорец
|
||||
Name[bn]=নতুন ব্যক্তিগত উইন্ডো
|
||||
Name[br]=Prenestr prevez nevez
|
||||
Name[bs]=Novi privatni prozor
|
||||
Name[ca]=Finestra privada nova
|
||||
Name[ca_valencia]=New Private Window
|
||||
Name[cak]=K'ak'a' Ichinan Tzuwäch
|
||||
Name[cs]=Nové anonymní okno
|
||||
Name[cy]=Ffenestr Breifat Newydd
|
||||
Name[da]=Nyt privat vindue
|
||||
Name[de]=Neues privates Fenster
|
||||
Name[dsb]=Nowe priwatne wokno
|
||||
Name[el]=Νέο ιδιωτικό παράθυρο
|
||||
Name[en_CA]=New Private Window
|
||||
Name[en_GB]=New Private Window
|
||||
Name[eo]=Nova privata fenestro
|
||||
Name[es_AR]=Nueva ventana privada
|
||||
Name[es_CL]=Nueva ventana privada
|
||||
Name[es_ES]=Nueva ventana privada
|
||||
Name[es_MX]=Nueva ventana privada
|
||||
Name[et]=New Private Window
|
||||
Name[eu]=Leiho pribatu berria
|
||||
Name[fa]=پنجره ناشناس جدید
|
||||
Name[ff]=New Private Window
|
||||
Name[fi]=Uusi yksityinen ikkuna
|
||||
Name[fr]=Nouvelle fenêtre privée
|
||||
Name[fur]=Gnûf barcon privât
|
||||
Name[fy_NL]=Nij priveefinster
|
||||
Name[ga_IE]=New Private Window
|
||||
Name[gd]=Uinneag phrìobhaideach ùr
|
||||
Name[gl]=Nova xanela privada
|
||||
Name[gn]=Ovetã ñemi pyahu
|
||||
Name[gu_IN]=New Private Window
|
||||
Name[he]=חלון פרטי חדש
|
||||
Name[hi_IN]=New Private Window
|
||||
Name[hr]=Novi privatni prozor
|
||||
Name[hsb]=Nowe priwatne wokno
|
||||
Name[hu]=Új privát ablak
|
||||
Name[hy_AM]=Նոր գաղտնի պատուհան
|
||||
Name[ia]=Nove fenestra private
|
||||
Name[id]=Jendela Mode Pribadi Baru
|
||||
Name[is]=Nýr huliðsgluggi
|
||||
Name[it]=Nuova finestra anonima
|
||||
Name[ja]=新しいプライベートウィンドウ
|
||||
Name[ka]=ახალი პირადი ფანჯარა
|
||||
Name[kab]=Asfaylu amaynut n tunigin tusligt
|
||||
Name[kk]=Жаңа жекелік терезе
|
||||
Name[km]=បង្អួចឯកជនថ្មី
|
||||
Name[kn]=New Private Window
|
||||
Name[ko]=새 사생활 보호 창
|
||||
Name[lij]=Neuvo Barcon Privòu
|
||||
Name[lt]=New Private Window
|
||||
Name[lv]=Jauns privātais logs
|
||||
Name[mk]=New Private Window
|
||||
Name[mr]=New Private Window
|
||||
Name[ms]=New Private Window
|
||||
Name[my]=New Private Window
|
||||
Name[nb_NO]=Nytt privat vindu
|
||||
Name[ne_NP]=नयाँ निजी सञ्झ्याल
|
||||
Name[nl]=Nieuw privévenster
|
||||
Name[nn_NO]=Nytt privat vindauge
|
||||
Name[oc]=Fenèstra privada novèla
|
||||
Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
|
||||
Name[pl]=Nowe okno prywatne
|
||||
Name[pt_BR]=Nova janela privativa
|
||||
Name[pt_PT]=Nova janela privada
|
||||
Name[rm]=Nova fanestra privata
|
||||
Name[ro]=Fereastră privată nouă
|
||||
Name[ru]=Новое приватное окно
|
||||
Name[sat]=ᱱᱟᱶᱟ ᱱᱤᱡᱮᱨᱟᱜ ᱣᱤᱱᱰᱳ
|
||||
Name[sc]=Ventana privada noa
|
||||
Name[sco]=New Private Window
|
||||
Name[si]=නව පෞද්. කවුළුව
|
||||
Name[sk]=Nové súkromné okno
|
||||
Name[skr]=نویں نجی ونڈو
|
||||
Name[sl]=Novo zasebno okno
|
||||
Name[son]=New Private Window
|
||||
Name[sq]=Dritare e Re Private
|
||||
Name[sr]=Нови приватни прозор
|
||||
Name[sv_SE]=Nytt privat fönster
|
||||
Name[szl]=New Private Window
|
||||
Name[ta]=New Private Window
|
||||
Name[te]=కొత్త ఆంతరంగిక కిటికీ
|
||||
Name[tg]=Равзанаи хусусии нав
|
||||
Name[th]=หน้าต่างส่วนตัวใหม่
|
||||
Name[tl]=New Private Window
|
||||
Name[tr]=Yeni gizli pencere
|
||||
Name[trs]=Bēntanâ huì nākàa
|
||||
Name[uk]=Приватне вікно
|
||||
Name[ur]=New Private Window
|
||||
Name[uz]=New Private Window
|
||||
Name[vi]=Cửa sổ riêng tư mới
|
||||
Name[xh]=New Private Window
|
||||
Name[zh_CN]=新建隐私窗口
|
||||
Name[zh_TW]=開新隱私視窗
|
||||
|
||||
[Desktop Action open-profile-manager]
|
||||
Exec=/usr/bin/flatpak run --branch=stable --arch=aarch64 --command=firefox org.mozilla.firefox --ProfileManager
|
||||
Name=Open Profile Manager
|
||||
Name[ach]=Open Profile Manager
|
||||
Name[af]=Open Profile Manager
|
||||
Name[an]=Open Profile Manager
|
||||
Name[ar]=افتح مدير الملف الشخصي
|
||||
Name[ast]=Open Profile Manager
|
||||
Name[az]=Open Profile Manager
|
||||
Name[be]=Адкрыць менеджар профіляў
|
||||
Name[bg]=Отваряне на мениджъра на профили
|
||||
Name[bn]=Open Profile Manager
|
||||
Name[br]=Digeriñ an ardoer aeladoù
|
||||
Name[bs]=Otvori Menadžera profila
|
||||
Name[ca]=Obre el gestor de perfils
|
||||
Name[ca_valencia]=Open Profile Manager
|
||||
Name[cak]=Open Profile Manager
|
||||
Name[cs]=Otevřít Správce profilů
|
||||
Name[cy]=Agorwch y Rheolwr Proffil
|
||||
Name[da]=Åbn profilhåndtering
|
||||
Name[de]=Profilverwaltung öffnen
|
||||
Name[dsb]=Profilowy zastojnik wócyniś
|
||||
Name[el]=Άνοιγμα Διαχείρισης προφίλ
|
||||
Name[en_CA]=Open Profile Manager
|
||||
Name[en_GB]=Open Profile Manager
|
||||
Name[eo]=Malfermi administranton de profiloj
|
||||
Name[es_AR]=Abrir administrador de perfiles
|
||||
Name[es_CL]=Abrir administrador de perfiles
|
||||
Name[es_ES]=Abrir administrador de perfiles
|
||||
Name[es_MX]=Abrir administrador de perfiles
|
||||
Name[et]=Open Profile Manager
|
||||
Name[eu]=Ireki profilen kudeatzailea
|
||||
Name[fa]=گشودن مدیر نمایه
|
||||
Name[ff]=Open Profile Manager
|
||||
Name[fi]=Avaa profiilien hallinta
|
||||
Name[fr]=Ouvrir le gestionnaire de profils
|
||||
Name[fur]=Vierç gjestôr profîi
|
||||
Name[fy_NL]=Profylbehearder iepenje
|
||||
Name[ga_IE]=Open Profile Manager
|
||||
Name[gd]=Fosgail manaidsear nam pròifilean
|
||||
Name[gl]=Abrir o xestor de perfís
|
||||
Name[gn]=Embojuruja mba’ete ñangarekoha
|
||||
Name[gu_IN]=Open Profile Manager
|
||||
Name[he]=פתיחת מנהל הפרופילים
|
||||
Name[hi_IN]=Open Profile Manager
|
||||
Name[hr]=Otvori upravljač profila
|
||||
Name[hsb]=Zrjadowak profilow wočinić
|
||||
Name[hu]=Profilkezelő megnyitása
|
||||
Name[hy_AM]=Բացեք պրոֆիլի կառավարիչը
|
||||
Name[ia]=Aperir le gestor de profilo
|
||||
Name[id]=Buka Pengelola Profil
|
||||
Name[is]=Opna umsýslu notandasniða
|
||||
Name[it]=Apri gestore profili
|
||||
Name[ja]=プロファイルマネージャーを開く
|
||||
Name[ka]=პროფილის მმართველის გახსნა
|
||||
Name[kab]=Ldi amsefrak n umaɣnu
|
||||
Name[kk]=Профильдер бақарушысын ашу
|
||||
Name[km]=Open Profile Manager
|
||||
Name[kn]=Open Profile Manager
|
||||
Name[ko]=프로필 관리자 열기
|
||||
Name[lij]=Open Profile Manager
|
||||
Name[lt]=Open Profile Manager
|
||||
Name[lv]=Atvērt profilu pārvaldnieku
|
||||
Name[mk]=Open Profile Manager
|
||||
Name[mr]=Open Profile Manager
|
||||
Name[ms]=Open Profile Manager
|
||||
Name[my]=Open Profile Manager
|
||||
Name[nb_NO]=Åpne profilbehandler
|
||||
Name[ne_NP]=Open Profile Manager
|
||||
Name[nl]=Profielbeheerder openen
|
||||
Name[nn_NO]=Opne profilhandsaming
|
||||
Name[oc]=Dobrir lo gestionari de perfils
|
||||
Name[pa_IN]=ਪਰੋਫ਼ਾਈਲ ਮੈਨੇਜਰ ਖੋਲ੍ਹੋ
|
||||
Name[pl]=Menedżer profili
|
||||
Name[pt_BR]=Abrir gerenciador de perfis
|
||||
Name[pt_PT]=Abrir o Gestor de Perfis
|
||||
Name[rm]=Avrir l'administraziun da profils
|
||||
Name[ro]=Deschide managerul de profiluri
|
||||
Name[ru]=Открыть менеджер профилей
|
||||
Name[sat]=ᱢᱮᱫᱦᱟᱸ ᱢᱮᱱᱮᱡᱚᱨ ᱠᱷᱩᱞᱟᱹᱭ ᱢᱮ
|
||||
Name[sc]=Aberi su gestore de profilos
|
||||
Name[sco]=Open Profile Manager
|
||||
Name[si]=පැතිකඩ කළමනාකරු අරින්න
|
||||
Name[sk]=Otvoriť Správcu profilov
|
||||
Name[skr]=پروفائل منیجر کھولو
|
||||
Name[sl]=Odpri upravitelja profilov
|
||||
Name[son]=Open Profile Manager
|
||||
Name[sq]=Hapni Përgjegjës Profilesh
|
||||
Name[sr]=Отворите управљач профила
|
||||
Name[sv_SE]=Öppna Profilhanteraren
|
||||
Name[szl]=Open Profile Manager
|
||||
Name[ta]=Open Profile Manager
|
||||
Name[te]=Open Profile Manager
|
||||
Name[tg]=Кушодани мудири профилҳо
|
||||
Name[th]=เปิดตัวจัดการโปรไฟล์
|
||||
Name[tl]=Open Profile Manager
|
||||
Name[tr]=Profil yöneticisini aç
|
||||
Name[trs]=Sa nīkāj ñu’ūnj nej perfî huā nì’nï̀nj ïn
|
||||
Name[uk]=Відкрити менеджер профілів
|
||||
Name[ur]=Open Profile Manager
|
||||
Name[uz]=Open Profile Manager
|
||||
Name[vi]=Mở trình quản lý hồ sơ
|
||||
Name[xh]=Open Profile Manager
|
||||
Name[zh_CN]=打开配置文件管理器
|
||||
Name[zh_TW]=開啟設定檔管理員
|
||||
@@ -0,0 +1,106 @@
|
||||
# steam-frame-nix-launchers (lib.nix prepends spec, awk_script, runtime,
|
||||
# apps, exports): writes the Flatpak/file launchers of steamFrame.launchers
|
||||
# to <runtime>/steam-frame-nix/applications (tmpfs), where the links in
|
||||
# ~/.local/share/applications point.
|
||||
# - one spec file per launcher (desktop ID = file name): rewrite.awk's
|
||||
# environment, SFN_FILE for a host file;
|
||||
# - an entry is replaced (temp file + rename) only when its content changed;
|
||||
# entries without a source (app not installed) or of launchers no longer
|
||||
# configured are removed; with an unknown Exec format the launcher is
|
||||
# skipped: the entry is a copy of the original (a missing file behind the
|
||||
# link would hide the original from the menus);
|
||||
# - .<id>.desktop.sum holds the hash of what was written last: a mismatch
|
||||
# means someone edited the entry (KDE's "Edit Application"), which is
|
||||
# overwritten with a warning;
|
||||
# - if anything changed, the mtime of ~/.local/share/applications is updated
|
||||
# (a running Steam rescans the "+" menu).
|
||||
out=$runtime/steam-frame-nix/applications
|
||||
log() { echo "steam-frame-nix-launchers: $*" >&2; }
|
||||
|
||||
if [[ ! -d $runtime ]]; then
|
||||
log "$runtime doesn't exist (outer session not running?); skipped"
|
||||
exit 0
|
||||
fi
|
||||
ids=()
|
||||
for f in "$spec"/*; do [[ -e $f ]] && ids+=("${f##*/}"); done
|
||||
if (( ${#ids[@]} == 0 )) && [[ ! -d $out ]]; then exit 0; fi
|
||||
mkdir -p "$out"
|
||||
exec 9>"$out/.lock"
|
||||
flock 9
|
||||
rm -f "$out"/.*.tmp.*
|
||||
IFS=: read -ra export_dirs <<< "$exports"
|
||||
changed=0
|
||||
|
||||
remove() { # id why
|
||||
if [[ -e $out/$1.desktop ]]; then
|
||||
rm -f "$out/$1.desktop"
|
||||
changed=1
|
||||
log "$1: entry removed ($2)"
|
||||
fi
|
||||
rm -f "$out/.$1.desktop.sum"
|
||||
}
|
||||
|
||||
# The link in ~/.local/share/applications is ours unless something replaced it.
|
||||
check_link() { # id
|
||||
local l=$apps/$1.desktop
|
||||
if [[ -e $l || -L $l ]] && [[ $(readlink -m "$l") != "$(readlink -m "$out/$1.desktop")" ]]; then
|
||||
log "warning: $l no longer leads to $out/$1.desktop (edited, e.g. with KDE's \"Edit Application\"?); set steamFrame.launchers.\"$1\".settings instead and remove it"
|
||||
fi
|
||||
}
|
||||
|
||||
generate() { # id
|
||||
local id=$1 dst=$out/$1.desktop sum=$out/.$1.desktop.sum src='' d tmp rc
|
||||
unset "${!SFN_@}"
|
||||
# shellcheck source=/dev/null
|
||||
source "$spec/$id"
|
||||
if [[ -n $SFN_FILE ]]; then
|
||||
[[ -f $SFN_FILE ]] && src=$SFN_FILE
|
||||
else
|
||||
for d in "${export_dirs[@]}"; do
|
||||
if [[ -f $d/$SFN_FLATPAK_ID.desktop ]]; then src=$d/$SFN_FLATPAK_ID.desktop; break; fi
|
||||
done
|
||||
fi
|
||||
if [[ -z $src ]]; then
|
||||
remove "$id" "no source entry: ${SFN_FILE:-Flatpak $SFN_FLATPAK_ID not installed}"
|
||||
return 0
|
||||
fi
|
||||
export "${!SFN_@}"
|
||||
export SFN_SOURCE=$src
|
||||
tmp=$(mktemp "$out/.$id.desktop.tmp.XXXXXX")
|
||||
rc=0
|
||||
LC_ALL=C gawk -f "$awk_script" "$src" "$src" > "$tmp" 2> "$tmp.err" || rc=$?
|
||||
if (( rc == 3 )); then
|
||||
log "warning: $id: $(tr -s "\n" " " < "$tmp.err"); launcher not applied, the original entry is used"
|
||||
cat "$src" > "$tmp"
|
||||
elif (( rc != 0 )); then
|
||||
log "error: $id: rewriting $src failed (status $rc): $(tr -s "\n" " " < "$tmp.err")"
|
||||
rm -f "$tmp" "$tmp.err"
|
||||
return 0
|
||||
fi
|
||||
rm -f "$tmp.err"
|
||||
if [[ -f $dst && -f $sum ]] && [[ $(sha256sum < "$dst") != "$(cat "$sum")" ]]; then
|
||||
log "warning: $dst was edited (e.g. with KDE's \"Edit Application\"); overwritten, set steamFrame.launchers.\"$id\".settings instead"
|
||||
fi
|
||||
if [[ -f $dst ]] && cmp -s "$tmp" "$dst"; then
|
||||
rm -f "$tmp"
|
||||
else
|
||||
chmod 644 "$tmp"
|
||||
mv -f "$tmp" "$dst"
|
||||
changed=1
|
||||
log "$id: entry written from $src"
|
||||
fi
|
||||
sha256sum < "$dst" > "$sum.tmp.$$"
|
||||
mv -f "$sum.tmp.$$" "$sum"
|
||||
check_link "$id"
|
||||
}
|
||||
|
||||
for id in "${ids[@]}"; do generate "$id"; done
|
||||
|
||||
# Launchers no longer configured.
|
||||
for f in "$out"/*.desktop "$out"/.*.desktop.sum; do
|
||||
[[ -e $f ]] || continue
|
||||
id=${f##*/}; id=${id#.}; id=${id%.sum}; id=${id%.desktop}
|
||||
[[ -e $spec/$id ]] || remove "$id" "launcher no longer configured"
|
||||
done
|
||||
|
||||
if (( changed )) && [[ -d $apps ]]; then touch -c "$apps"; fi
|
||||
@@ -0,0 +1,241 @@
|
||||
# Pieces of steamFrame.launchers (launchers.nix) that the check
|
||||
# (check.nix) uses too: the per-launcher option type, Exec quoting, the
|
||||
# rewrite environment, the build-time entry of a package and the runtime
|
||||
# generator.
|
||||
{ lib, pkgs }:
|
||||
let
|
||||
walletNames = [ "org.kde.kwalletd6" "org.freedesktop.secrets" ];
|
||||
|
||||
# One argument in desktop entry Exec syntax (key-file escaping of the whole
|
||||
# value is rewrite.awk's): quoted when it has characters outside a safe
|
||||
# set, with " ` $ \ escaped; % doubled (field codes).
|
||||
quoteExec = s:
|
||||
let
|
||||
q = if builtins.match "[A-Za-z0-9_/.:,=+@-]+" s != null then s
|
||||
else "\"" + lib.replaceStrings [ "\\" "\"" "`" "$" ] [ "\\\\" "\\\"" "\\`" "\\$" ] s + "\"";
|
||||
in lib.replaceStrings [ "%" ] [ "%%" ] q;
|
||||
execLine = args: lib.concatMapStringsSep " " quoteExec args;
|
||||
|
||||
envArgs = env: lib.mapAttrsToList (k: v: "${k}=${v}") env;
|
||||
envPrefix = env: lib.optionals (env != { }) ([ "env" ] ++ envArgs env);
|
||||
|
||||
# "flatpak" | "package" | "file"
|
||||
kindOf = l: if l.source.package != null then "package"
|
||||
else if l.source.file != null then "file" else "flatpak";
|
||||
in rec {
|
||||
inherit quoteExec execLine walletNames kindOf;
|
||||
|
||||
# The option type of one launcher; `bus` is session.bus.
|
||||
launcherModule = { bus }: { name, config, ... }: let
|
||||
flatpak = kindOf config == "flatpak";
|
||||
in {
|
||||
options = {
|
||||
source = {
|
||||
flatpak = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
defaultText = lib.literalMD "the desktop ID, when neither `package` nor `file` is set";
|
||||
example = "org.mozilla.firefox";
|
||||
description = ''
|
||||
Flatpak app ID whose exported entry
|
||||
(`~/.local/share/flatpak/exports/share/applications/<ID>.desktop`,
|
||||
then `/var/lib/flatpak/...`) is rewritten at runtime.
|
||||
'';
|
||||
};
|
||||
package = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.package;
|
||||
default = null;
|
||||
example = lib.literalExpression "pkgs.claude-desktop";
|
||||
description = ''
|
||||
Nix package whose `share/applications/<desktop ID>.desktop` is
|
||||
rewritten at build time (the build fails if it has none).
|
||||
'';
|
||||
};
|
||||
file = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
example = "/usr/share/applications/org.kde.konsole.desktop";
|
||||
description = "Desktop entry on the host, rewritten at runtime.";
|
||||
};
|
||||
};
|
||||
hostEnv = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
example = { DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/user/1000/bus"; };
|
||||
description = ''
|
||||
Environment of the process the entry starts (`env K=V` before the
|
||||
command): for a Flatpak, of the `flatpak` client, so e.g. its
|
||||
sandbox's D-Bus proxy and portals use that bus.
|
||||
'';
|
||||
};
|
||||
env = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
example = { MOZ_ENABLE_WAYLAND = "0"; };
|
||||
description = ''
|
||||
Environment of the app: `flatpak run --env=K=V` for a Flatpak, like
|
||||
`hostEnv` otherwise.
|
||||
'';
|
||||
};
|
||||
flatpakArgs = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "--device=all" ];
|
||||
description = "Further `flatpak run` options, before the app ID (Flatpaks only).";
|
||||
};
|
||||
args = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "--ozone-platform=x11" ];
|
||||
description = ''
|
||||
Arguments right after the app ID / program, before the entry's own
|
||||
(plain strings, quoted for you).
|
||||
'';
|
||||
};
|
||||
wrappers = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = lib.literalExpression ''[ "''${pkgs.writeShellScript "wrap" "exec \"$@\""}" ]'';
|
||||
description = ''
|
||||
Commands the entry's command line is passed to, outermost first:
|
||||
`Exec=<wrappers> <original command>` (each gets the full command
|
||||
line as its arguments).
|
||||
'';
|
||||
};
|
||||
mimeTypes = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "x-scheme-handler/rdp" ];
|
||||
description = "Added to the entry's `MimeType=`, without making the app their default.";
|
||||
};
|
||||
defaultFor = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [ ];
|
||||
example = [ "x-scheme-handler/element" "x-scheme-handler/io.element.desktop" ];
|
||||
description = ''
|
||||
MIME types / `x-scheme-handler/<scheme>` the app becomes the default
|
||||
and a recommended handler for (`xdg.mimeApps`, Added Associations:
|
||||
the portal then opens them without an app chooser, which VR doesn't
|
||||
show); added to `MimeType=` too.
|
||||
'';
|
||||
};
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.nullOr lib.types.str);
|
||||
default = { };
|
||||
example = { Name = "Element (wallet)"; Keywords = null; };
|
||||
description = ''
|
||||
`[Desktop Entry]` keys to set or override (value in key-file syntax,
|
||||
as given); `null` removes a key. Either way the key's localized
|
||||
variants (`Name[de]=`) are dropped.
|
||||
'';
|
||||
};
|
||||
keyring = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Keep the app's secrets in the one KDE wallet of both sessions: run
|
||||
it on the outer bus (`hostEnv.DBUS_SESSION_BUS_ADDRESS`); a
|
||||
Flatpak also gets `--talk-name=org.kde.kwalletd6
|
||||
--talk-name=org.freedesktop.secrets`.
|
||||
'';
|
||||
};
|
||||
electron = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Pass `--password-store=kwallet6` (Electron apps: in the Steam
|
||||
session they'd use an unencrypted local store). Needs
|
||||
`keyring.enable`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
command = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
readOnly = true;
|
||||
description = ''
|
||||
Approximately the command the entry runs, for a terminal (without
|
||||
the entry's own options such as `--branch` or `--command`).
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
hostEnv = lib.mkIf config.keyring.enable { DBUS_SESSION_BUS_ADDRESS = bus; };
|
||||
flatpakArgs = lib.mkIf (config.keyring.enable && flatpak)
|
||||
(lib.mkBefore (map (n: "--talk-name=${n}") walletNames));
|
||||
args = lib.mkIf config.keyring.electron (lib.mkBefore [ "--password-store=kwallet6" ]);
|
||||
command = command (config // { id = name; });
|
||||
};
|
||||
};
|
||||
|
||||
flatpakIdOf = l: if l.source.flatpak != null then l.source.flatpak else l.id;
|
||||
|
||||
# Approximate shell command of a launcher (attrs as the option, plus `id`).
|
||||
command = l: let
|
||||
kind = kindOf l;
|
||||
pkg = l.source.package;
|
||||
in lib.escapeShellArgs (
|
||||
envPrefix (l.hostEnv // lib.optionalAttrs (kind != "flatpak") l.env)
|
||||
++ l.wrappers
|
||||
++ (if kind == "flatpak" then
|
||||
[ "flatpak" "run" ] ++ l.flatpakArgs ++ map (e: "--env=${e}") (envArgs l.env) ++ [ (flatpakIdOf l) ]
|
||||
else if kind == "package" then
|
||||
[ "${pkg}/bin/${pkg.meta.mainProgram or (lib.getName pkg)}" ]
|
||||
else [ "<program of ${l.source.file}>" ])
|
||||
++ l.args);
|
||||
|
||||
# The environment of rewrite.awk for a launcher (without SFN_SOURCE).
|
||||
rewriteEnv = l: let flatpak = kindOf l == "flatpak"; in {
|
||||
SFN_MODE = if flatpak then "flatpak" else "program";
|
||||
SFN_FLATPAK_ID = if flatpak then flatpakIdOf l else "";
|
||||
SFN_PREFIX = execLine (envPrefix (l.hostEnv // lib.optionalAttrs (!flatpak) l.env) ++ l.wrappers);
|
||||
SFN_FLATPAK_ARGS = lib.optionalString flatpak
|
||||
(execLine (l.flatpakArgs ++ map (e: "--env=${e}") (envArgs l.env)));
|
||||
SFN_ARGS = execLine l.args;
|
||||
SFN_MIME = lib.concatMapStrings (m: "${m};") (lib.unique (l.mimeTypes ++ l.defaultFor));
|
||||
SFN_SETTINGS = lib.concatStrings (lib.mapAttrsToList
|
||||
(k: v: if v == null then "${k}\n" else "${k}=${v}\n") l.settings);
|
||||
};
|
||||
|
||||
# Build time: the package's entry, rewritten.
|
||||
packageEntry = l: let
|
||||
src = "${l.source.package}/share/applications/${l.id}.desktop";
|
||||
in pkgs.runCommand "${l.id}.desktop" ({
|
||||
nativeBuildInputs = [ pkgs.gawk ];
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
SFN_SOURCE = src;
|
||||
} // rewriteEnv l) ''
|
||||
if [ ! -f ${lib.escapeShellArg src} ]; then
|
||||
echo "steamFrame.launchers.\"${l.id}\": ${l.source.package} has no share/applications/${l.id}.desktop" >&2
|
||||
exit 1
|
||||
fi
|
||||
LC_ALL=C gawk -f ${./rewrite.awk} "$SFN_SOURCE" "$SFN_SOURCE" > $out || {
|
||||
echo "steamFrame.launchers.\"${l.id}\": can't rewrite $SFN_SOURCE" >&2
|
||||
exit 1
|
||||
}
|
||||
'';
|
||||
|
||||
# Runtime: the steam-frame-nix-launchers command for the Flatpak/file
|
||||
# `launchers` (attrs of launchers with `id`); the dirs can be overridden
|
||||
# with STEAM_FRAME_NIX_{RUNTIME_DIR,APPLICATIONS_DIR,FLATPAK_EXPORTS}.
|
||||
generator = { launchers, runtimeDir, exportDirs, applicationsDir }: let
|
||||
spec = pkgs.linkFarm "steam-frame-nix-launchers-spec" (lib.mapAttrsToList (id: l: {
|
||||
name = id;
|
||||
path = pkgs.writeText "steam-frame-nix-launcher-${id}" (lib.toShellVars (rewriteEnv l // {
|
||||
SFN_FILE = if kindOf l == "file" then l.source.file else "";
|
||||
}));
|
||||
}) launchers);
|
||||
in pkgs.writeShellApplication {
|
||||
name = "steam-frame-nix-launchers";
|
||||
runtimeInputs = [ pkgs.coreutils pkgs.gawk pkgs.util-linux ];
|
||||
text = ''
|
||||
spec=${spec}
|
||||
awk_script=${./rewrite.awk}
|
||||
runtime=''${STEAM_FRAME_NIX_RUNTIME_DIR:-${lib.escapeShellArg runtimeDir}}
|
||||
apps=''${STEAM_FRAME_NIX_APPLICATIONS_DIR:-${lib.escapeShellArg applicationsDir}}
|
||||
exports=''${STEAM_FRAME_NIX_FLATPAK_EXPORTS:-${lib.escapeShellArg (lib.concatStringsSep ":" exportDirs)}}
|
||||
'' + builtins.readFile ./generate.sh;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
# Rewrites a desktop entry for steamFrame.launchers (launchers.nix): run as
|
||||
# LC_ALL=C gawk -f rewrite.awk FILE FILE (two passes over the same file)
|
||||
# with the launcher in the environment (ENVIRON, never -v: no escape
|
||||
# processing):
|
||||
# SFN_MODE flatpak | program
|
||||
# SFN_FLATPAK_ID app ID, the anchor when the entry has no X-Flatpak=
|
||||
# SFN_PREFIX Exec text before the command (env K=V..., wrappers)
|
||||
# SFN_FLATPAK_ARGS Exec text before the app ID (flatpak)
|
||||
# SFN_ARGS Exec text after the app ID / program
|
||||
# SFN_MIME MIME types to add to MimeType= ("a;b;")
|
||||
# SFN_SETTINGS lines "Key=value" (set) or "Key" (remove)
|
||||
# SFN_SOURCE path written as X-SteamFrameNix-Source=
|
||||
# The SFN_*ARGS/PREFIX values are in Exec syntax (quoted, % doubled); the
|
||||
# key-file escaping of the whole Exec value is done here.
|
||||
#
|
||||
# Line based: comments, unknown and localized keys stay as they are. Exec= of
|
||||
# [Desktop Entry] and every [Desktop Action *] is rewritten:
|
||||
# flatpak: <prefix> <original up to the app ID> <flatpak args> <ID> <args> <rest>
|
||||
# (the first token equal to the ID after `run`, whose preceding
|
||||
# token's basename is `flatpak`)
|
||||
# program: <prefix> <original up to the program> <args> <rest>
|
||||
# (the first token after an optional leading `env A=B ...`)
|
||||
# An Exec= without that anchor: nothing is printed, exit 3. No [Desktop
|
||||
# Entry]: exit 4.
|
||||
|
||||
function trim(s) { sub(/^[ \t]+/, "", s); sub(/[ \t]+$/, "", s); return s }
|
||||
|
||||
# Key of a "Key=value" line ("" for other lines), localized keys included.
|
||||
function keyof(line, k) {
|
||||
if (line ~ /^[ \t]*#/ || line !~ /=/) return ""
|
||||
k = line; sub(/=.*/, "", k); return trim(k)
|
||||
}
|
||||
function valueof(line, v) { v = line; sub(/^[^=]*=[ \t]*/, "", v); return v }
|
||||
function base(k) { sub(/\[.*/, "", k); return k }
|
||||
|
||||
# Key-file string escapes (GLib): \s \n \t \r \\.
|
||||
function kf_unescape(s, out, i, c, n) {
|
||||
out = ""
|
||||
for (i = 1; i <= length(s); i++) {
|
||||
c = substr(s, i, 1)
|
||||
if (c == "\\" && i < length(s)) {
|
||||
n = substr(s, ++i, 1)
|
||||
if (n == "s") c = " "; else if (n == "n") c = "\n"; else if (n == "t") c = "\t"
|
||||
else if (n == "r") c = "\r"; else if (n == "\\") c = "\\"; else c = "\\" n
|
||||
}
|
||||
out = out c
|
||||
}
|
||||
return out
|
||||
}
|
||||
function kf_escape(s) {
|
||||
gsub(/\\/, "\\\\", s); gsub(/\n/, "\\n", s); gsub(/\t/, "\\t", s); gsub(/\r/, "\\r", s)
|
||||
return s
|
||||
}
|
||||
|
||||
# Splits an Exec value (Exec syntax) into tokens: TS/TE start/end offsets in
|
||||
# s, TV the unquoted value. Returns the count, -1 on an unclosed quote.
|
||||
function tokenize(s, n, i, c, q, v, len) {
|
||||
delete TS; delete TE; delete TV
|
||||
n = 0; i = 1; len = length(s)
|
||||
while (i <= len) {
|
||||
c = substr(s, i, 1)
|
||||
if (c == " " || c == "\t") { i++; continue }
|
||||
TS[++n] = i; v = ""; q = 0
|
||||
while (i <= len) {
|
||||
c = substr(s, i, 1)
|
||||
if (!q && (c == " " || c == "\t")) break
|
||||
if (c == "\"") { q = !q; i++; continue }
|
||||
if (q && c == "\\" && i < len) { v = v substr(s, i + 1, 1); i += 2; continue }
|
||||
v = v c; i++
|
||||
}
|
||||
if (q) return -1
|
||||
TE[n] = i; TV[n] = v
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
function join3(a, b, c, r) {
|
||||
r = a
|
||||
if (b != "") r = (r == "" ? b : r " " b)
|
||||
if (c != "") r = (r == "" ? c : r " " c)
|
||||
return r
|
||||
}
|
||||
|
||||
# The rewritten Exec value (raw key-file text), or "\001" without anchor.
|
||||
function rewrite_exec(raw, s, n, k, j, b, head, tail, pre, v) {
|
||||
s = kf_unescape(raw)
|
||||
n = tokenize(s)
|
||||
if (n <= 0) return "\001"
|
||||
k = 0
|
||||
if (ENVIRON["SFN_MODE"] == "flatpak") {
|
||||
for (j = 2; j < n && !k; j++) {
|
||||
b = TV[j - 1]; sub(/.*\//, "", b)
|
||||
if (b == "flatpak" && TV[j] == "run")
|
||||
for (v = j + 1; v <= n; v++) if (TV[v] == ANCHOR) { k = v; break }
|
||||
}
|
||||
if (!k) return "\001"
|
||||
head = trim(substr(s, 1, TS[k] - 1))
|
||||
pre = join3(ENVIRON["SFN_PREFIX"], head, ENVIRON["SFN_FLATPAK_ARGS"])
|
||||
pre = join3(pre, substr(s, TS[k], TE[k] - TS[k]), "")
|
||||
} else {
|
||||
k = 1
|
||||
if (TV[1] == "env") {
|
||||
for (k = 2; k <= n && TV[k] ~ /^[A-Za-z_][A-Za-z0-9_]*=/; k++) ;
|
||||
if (k > n || TV[k] ~ /^-/) return "\001"
|
||||
}
|
||||
pre = join3(ENVIRON["SFN_PREFIX"], trim(substr(s, 1, TE[k] - 1)), "")
|
||||
}
|
||||
tail = substr(s, TE[k])
|
||||
return kf_escape(join3(pre, ENVIRON["SFN_ARGS"], "") tail)
|
||||
}
|
||||
|
||||
function in_entry() { return GROUP == "[Desktop Entry]" }
|
||||
|
||||
# Pass 1: the X-Flatpak= of [Desktop Entry].
|
||||
FNR == NR {
|
||||
if ($0 ~ /^\[/) GROUP = trim($0)
|
||||
else if (in_entry() && keyof($0) == "X-Flatpak" && XFLATPAK == "") XFLATPAK = trim(valueof($0))
|
||||
next
|
||||
}
|
||||
|
||||
FNR == 1 {
|
||||
ANCHOR = XFLATPAK != "" ? XFLATPAK : ENVIRON["SFN_FLATPAK_ID"]
|
||||
GROUP = ""; N = 0; ENTRY_END = 0; FAIL = ""
|
||||
# settings: SET[key] = value, DEL[key]
|
||||
ns = split(ENVIRON["SFN_SETTINGS"], sl, "\n")
|
||||
for (i = 1; i <= ns; i++) {
|
||||
if (sl[i] == "") continue
|
||||
if (index(sl[i], "=")) { k = substr(sl[i], 1, index(sl[i], "=") - 1); SET[k] = substr(sl[i], index(sl[i], "=") + 1); ORDER[++NSET] = k }
|
||||
else DEL[sl[i]] = 1
|
||||
}
|
||||
nm = split(ENVIRON["SFN_MIME"], ml, ";")
|
||||
}
|
||||
|
||||
{
|
||||
line = $0
|
||||
if (line ~ /^\[/) {
|
||||
GROUP = trim(line); L[++N] = line
|
||||
if (in_entry()) { SEEN_ENTRY = 1; ENTRY_END = N }
|
||||
next
|
||||
}
|
||||
key = keyof(line)
|
||||
if (key != "" && (in_entry() || GROUP ~ /^\[Desktop Action /)) {
|
||||
if (key == "Exec" && !(in_entry() && (key in SET || key in DEL))) {
|
||||
v = rewrite_exec(valueof(line))
|
||||
if (v == "\001") { FAIL = FAIL "\n " GROUP " Exec=" valueof(line); next }
|
||||
line = "Exec=" v
|
||||
}
|
||||
}
|
||||
if (key != "" && in_entry()) {
|
||||
b = base(key)
|
||||
if (b in SET || b in DEL) {
|
||||
if (key != b || b in DEL || b in DONE) next # localized variant, removed, or duplicate
|
||||
line = b "=" SET[b]; DONE[b] = 1
|
||||
} else if (key == "DBusActivatable" && tolower(trim(valueof(line))) == "true") {
|
||||
line = "DBusActivatable=false"
|
||||
} else if (key == "X-SteamFrameNix-Source") {
|
||||
next
|
||||
} else if (key == "MimeType" && !MIMEDONE) {
|
||||
line = "MimeType=" merge_mime(valueof(line)); MIMEDONE = 1
|
||||
}
|
||||
}
|
||||
L[++N] = line
|
||||
if (in_entry() && trim(line) != "") ENTRY_END = N
|
||||
}
|
||||
|
||||
function merge_mime(v, have, cur, i, out) {
|
||||
out = v
|
||||
if (out != "" && out !~ /;$/) out = out ";"
|
||||
split(v, cur, ";")
|
||||
for (i in cur) if (cur[i] != "") have[trim(cur[i])] = 1
|
||||
for (i = 1; i <= nm; i++) if (ml[i] != "" && !(ml[i] in have)) { out = out ml[i] ";"; have[ml[i]] = 1 }
|
||||
return out
|
||||
}
|
||||
|
||||
END {
|
||||
if (FAIL != "") {
|
||||
print "unknown Exec format (no " (ENVIRON["SFN_MODE"] == "flatpak" ? "`flatpak run ... " ANCHOR "`" : "program") "):" FAIL > "/dev/stderr"
|
||||
exit 3
|
||||
}
|
||||
if (!SEEN_ENTRY) { print "no [Desktop Entry] group" > "/dev/stderr"; exit 4 }
|
||||
for (i = 1; i <= N; i++) {
|
||||
print L[i]
|
||||
if (i == ENTRY_END) {
|
||||
for (j = 1; j <= NSET; j++) if (!(ORDER[j] in DONE)) print ORDER[j] "=" SET[ORDER[j]]
|
||||
if (!MIMEDONE && !("MimeType" in SET) && !("MimeType" in DEL) && nm > 0) {
|
||||
m = merge_mime("")
|
||||
if (m != "") print "MimeType=" m
|
||||
}
|
||||
print "X-SteamFrameNix-Source=" ENVIRON["SFN_SOURCE"]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user