x11通用文件开关和xdg杂乱

2021-04-23 04:34:05

几十年前我开始在Linux上使用X11作为桌面 - 然后使用kde3和稍后使用fluxbox。首先,我认为文件是通过适当的应用程序开来,而不是在Windows系统中的扩展,但根据他们的魔术号码。我不必告诉你,当我学到真相时,我有多失望♥

您可能希望在FreeBSD桌面上查看FreeBSD桌面系列中的其他文章 - 全局页面,您将找到与该系列的所有剧集的链接以及每个剧集内容的目录。

这是一个关于清理XDG所做的混乱的短篇小说,也使用自定义* .desktop处理程序以打开您想要的方式打开文件。它知道它在FreeBSD桌面系列中,但实际上它将在Linux或illumos等任何X11桌面上工作。

经过多年的FreeBSD在FreeBSD上使用OpenBox作为我的每日驱动程序我使用所谓的XDG-Utils包,其中包含* .desktop文件。有时会驱使我坚果。随着WADEBLED的应用程序中列出的各个应用程序,以打开文件的增加......几乎随机生成的新* .desktop处理程序,其中包含指定为打开一些文件的“新建”应用程序......来自Wine Installations的另一个已生成的* .desktop文件......它...它只能挑战Windows注册表的废话和混乱......不确定哪一个更搞砸(当然是它的Windows注册表,但仍然是)。

如果Minimalistic Mupdf方法不适合您,则可以选择ATRIL ...但您首先需要知道ATRIL应用程序的处理程序名称。你可以像那样找到。

我们现在有奥里尔处理程序名称。要将其设置为PDF文件的新默认应用程序,请键入以下内容。

但是当XDG设计时,这是相当独特的时刻。更常见的是那样。

$ xdg-mime查询文件键文件.docapplication/ octet-stream $ xdg-mime查询filetype文件.docxapplication / zip $ xdg-mime查询文件键文件.xlsapplication / octet-stream $ xdg-mime查询filetype文件.xlsxapplication/ zip

所以当你现在要求应用程序/邮编类型时,那么应该弹出什么? LibreOffice for Word / Excel文档或ZIP文件的engrampa?

几乎接受当前的“悲惨”状态我来到其他想法 - 为许多这些文件类型创建我的简化启动器。它开始小而且仍然很小。我现在唯一做的是我只为尚未定义的文件扩展名添加新的应用程序。

它被称为See.sh及其功能是双重的: - 在一个位置轻松替换XDG设置作为文件开关 - 作为单个或多个文件的命令行开关

See.sh的建设真的很简单。它利用了像这样的Antoine de Saint-Exupery的引用背后的想法 - “实现了完美,而不是在没有添加的时候,但是当没有什么可以带走时。” - 它真的很简单,没有什么可以从中删除。

我真的很感激我现在不必记住需要哪个应用程序(以及除了ZSH(1)选项卡完成之外的拼写方式)以在命令行中打开任何文件。它也更快地输入xdg-open(1),我相信它的设置不是由我刚刚安装的第三方应用程序修改,因为它的硬编码在其中。

我也非常喜欢看.SH非常有弹性,因为可以启动所需的应用程序的环境变量。例如,我的默认DPI为X11会话,因为多年的数十年是75.这使得字体较小 - 更多信息适合可用的屏幕空间。 GTK2 / GTK3应用程序不需要任何调整,并且始终看起来很棒,但甚至QT5(和QT4不是很久以前)应用程序是真正的婊子当你想强迫他们看起来你想要的方式(看起来很好) - 尤其是什么时候在没有完全剥离的KDE或血浆环境的情况下运行。其中一个应用程序是libreoffice。当它使用GTK框架时,它看起来很棒,但在他们搬到Qt之后,它开始与我的75 DPI设置非常丑陋。这就是它的环境如何未经修改。

感谢See.sh我可以使用不同的DPI环境设置启动Libreoffice然后75,DPI设置为80,它看起来很少于80. libreoffice从qt_font_dpi = 80选项开始看起来不像现在又一次,它的字体不再那么糟糕了。

现在LibreOffice菜单上的文本标签更可读,但也不会太大。

您还可以自定义See.sh首先在编辑某些文件或发送电子邮件之前创建备份副本 - 只有您的想象力限制在此处。

我也希望它的see.sh名称短而快速地键入,完成它只是看到[选项卡],然后是文件名。当然,您可能希望将其重命名为更短的版本(或创建别名),如没有扩展,但我喜欢将脚本与扩展名与本机命令区分开来 - 但这是我。

首先,请参阅.SH检测是否将一个或多个参数(文件)传递给它。如果它只是一个文件,那么请参阅.sh检测其扩展并为其启动已配置的应用程序。

如果文件没有扩展,那么它会检查文件的魔术号码。目前仅使用文件(1)命令实现纯文本文件的检测。

如果传递多个参数(文件)以查看。然后单独的See.sh进程将并行地启动每个给定文件。一般递归。

每次在图形模式下选择新应用程序时,使用userapp - $ {appname} - $ {random_string} .desktop名称下创建了新的* .desktop文件.D〜/ .local / share / applications目录下。我不确定它是最热的方法。通常生成非常丑陋和奇怪的处理程序文件名 - 具有空格或引号。它真的远非unix做事的方式及其哲学。

这就是〜/ .local / share / applications目录在一段时间后看着我的机器。注意所选文件。

XDG将其关联保留在〜/ .config / mimeapps.list文件中。在一些使用后看起来有多么搞乱。

经过一些更多的清理和删除所有不需要的Userapp - $ {appname} - $ {random_string} .desktop条目,它开始看起来更具组织。

每次看到都会发现它没有用于文件的处理程序,它将优雅地提醒一个配置它。

其中许多* .desktop处理程序不再存在......但是哪一个?这是一个方便的一个衬班,它将显示一个不存在的处理程序或'nope'的完整路径。这也将在〜/ .local / share / application的“自定义”处理程序或在/ usr / local / share / applications位置附带的包装和安装软件附带的“默认”。

%awk-f' =' ' {打印$ 2}' 〜/ .config / mimeapps.list \ | TR&#39 ;;' ' \ n' \ | sort -u \ | SED 1D \ |虽然读取我做回声{i}查找\〜/ .local / share / applications \ / usr / local / share / applications \ | grep" / $ {i}" ||回声NOPE ECHO完成

好吧......也许不是一个衬里,而是一个有用的命令,它会这样做

如果您只想检查那些错过了哪些,那么在最后添加Grep -b 1。

%awk-f' =' ' {打印$ 2}' 〜/ .config / mimeapps.list \ | TR&#39 ;;' ' \ n' \ | sort -u \ | SED 1D \ |虽然读取我做回声{i}查找\〜/ .local / share / applications \ / usr / local / share / applications \ | grep" / $ {i}" ||回声NOPE回声完成| grep -b 1 nope

您可以安全地从〜/ .config / mimeapps.list文件中删除所有丢失的* .desktop处理程序。如果这适合您,您可以使用SED(1)或图形编辑器。它背后的逻辑是删除例如aevere18.desktop的所有实例,然后查找并替换双倍分号';;'的所有实例为单个';'。

要有序地生成新的* .desktop处理程序,您可以使用Mine Generate-desktop-handler.sh脚本。它将在〜/ .local / share / applications目录中创建新的处理程序,并确保您正在创建一个实际存在的应用程序。下面是它的工作原理。我为我的Aquary-wallpaper-Always.sh创建了新的处理程序,用于从指定目录中设置随机壁纸,或将壁纸从确切指定文件设置为参数。

%generate-desktop-handler.sh用法:generate-desktop-handler.sh文件%generate-desktop-handler.sh不现有-executableope:可执行文件'不存在可执行的'在$ {path}%generate-desktop-handler.sh randure-wallper-always.sh信息:handler'〜/ .local / share / application / aquary-wallpaper-alimany.sh.desktop'已成功生成%cat〜/ .local / share / application / walant-wallpaper-aliving.sh.desktop [桌面输入]编码= utf-8version = 1.0thepe = applicationnodisplay = trueexec = randum-wallpaper-always.sh%fname =随机壁纸 - always.shcomment = random-wallpaper-always.sh

创建新的Aquary-Wallpaper-always.sh.desktop处理程序后,您可能希望将其添加到一些像JPG或PNG等图像文件类型。在下面的示例中,我会将其添加到JPG文件中。

首先右键单击鼠标的JPG文件,然后选择“打开”,然后选择“其他应用程序...”。

在列表中选择“随机壁纸 - always.sh.desktop处理程序。确保取消选中此应用程序的记住此应用程序。如果您没有这样做,它将是从现在和每次想要打开JPG文件时的默认应用程序,您将把它设置为壁纸🙂

您可以通过右键单击JPG文件和选择属性来验证新选项,然后使用选项卡打开。随机壁纸 - always.sh.desktop handler将是JPG文件的配置处理程序之一 - 但不是默认的处理程序。

现在,您可以看到随机壁纸always.sh.desktop处理程序可用于选择与子菜单的打开时使用。

XDG还有一些替代方案,但我更确保大多数或所有X11应用程序都支持XDG的方式,同时不支持其他替代方案。因此,由于通过生成所需的处理程序并使用See.sh而不是使用它们并在主题上浪费更多时间,因此刚刚使XDG工作更少得多的喧嚣

随意分享你对这个话题的看法 - 也许你会向我展示更好的方法。