feat(mc): open files with their configured app via xdg-open
Ship `mc.ext.ini` as the `local.mc.extIni` option (like `local.mc.menu`): Enter browses archives in-place as before and delegates every other type to `xdg-open`. Add public `mime.nix` with `xdg.mimeApps` defaults (pdf -> zathura, images -> imv, audio/video -> mpv, office -> libreoffice) -- public because those handlers are; personal browser/mail defaults stay private. Also document, at the Hyprland swallow config, how swallowing differs from an app opening fullscreen/maximized (LibreOffice restores its own maximized state and looks swallowed but isn't).
This commit is contained in:
+20
-4
@@ -1,7 +1,9 @@
|
||||
# Midnight Commander: TUI file manager. Its config (ini, panels, F2 user menu)
|
||||
# is opinionated but generic, so it lives in the public baseline alongside the
|
||||
# other desktop tooling. The only personal value is the right-panel start dir,
|
||||
# exposed as an option defaulting to the consumer's own home.
|
||||
# Midnight Commander: TUI file manager. Its config (ini, panels, F2 user menu,
|
||||
# mc.ext.ini file associations) is opinionated but generic, so it lives in the
|
||||
# public baseline alongside the other desktop tooling. The only personal value
|
||||
# is the right-panel start dir, exposed as an option defaulting to the
|
||||
# consumer's own home. mc.ext.ini keeps archive browsing but routes every other
|
||||
# type to xdg-open, so the app choices live in xdg.mimeApps (baseline: mime.nix).
|
||||
#
|
||||
# ouch backs the F2 pack/unpack entries (one tool, archive format inferred from
|
||||
# the extension), so it ships with mc to keep the menu self-contained.
|
||||
@@ -37,16 +39,30 @@
|
||||
lib.mkForce to replace it entirely.
|
||||
'';
|
||||
};
|
||||
|
||||
extIni = lib.mkOption {
|
||||
type = lib.types.lines;
|
||||
description = ''
|
||||
Contents of mc's mc.ext.ini (file-type associations driving Enter/F3/F4).
|
||||
The shipped baseline keeps mc's archive browsing and delegates every
|
||||
other type to xdg-open, so the actual app is the XDG mimeapps default.
|
||||
Like `menu`, it is a mkBefore definition: append a same-named section to
|
||||
override one key (mc merges same-named sections, last key wins), or use
|
||||
lib.mkForce to replace it entirely.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.packages = [ pkgs.mc pkgs.ouch ];
|
||||
|
||||
local.mc.menu = lib.mkBefore (builtins.readFile ./assets/mc/menu);
|
||||
local.mc.extIni = lib.mkBefore (builtins.readFile ./assets/mc/mc.ext.ini);
|
||||
|
||||
xdg.configFile = {
|
||||
"mc/ini".source = ./assets/mc/ini;
|
||||
"mc/menu".text = config.local.mc.menu;
|
||||
"mc/mc.ext.ini".text = config.local.mc.extIni;
|
||||
|
||||
# Generated (not a static asset) so other_dir tracks the option instead of
|
||||
# baking in a personal path.
|
||||
|
||||
Reference in New Issue
Block a user