Linux桌面菜单(.menu)规范

2023-05-16

Version 1.1,最新版
20 August 2016


文章目录

  • 介绍
  • 文件位置
  • .desktop文件的扩展
    • 使用Categories和OnlyShowIn的例子
  • 菜单文件的格式
    • 文件类型声明
    • 元素
  • 示例菜单文件
  • A.注册类别
    • 主要类别
    • 其他类别
    • 保留类别
  • B.注册OnlyShowIn环境
  • C.将您的应用程序集成到菜单中
    • 添加菜单项
    • 安装位置

介绍

本文档定义了如何构建用户可见的应用程序层次结构,通常以菜单的形式显示。它允许第三方软件添加适用于所有桌面的菜单项,并允许系统管理员以影响所有桌面的方式编辑菜单。

基本方案非常简单。有关每个应用程序(菜单项)的信息存储在桌面入口文件中(请参阅桌面入口文件标准)。然后,XML配置文件定义菜单项的分层排列(布局)和实际需要显示的菜单项。

由于即要支持传统桌面入口的层次结构,又要允许第三方扩展菜单布局,所以需要合并两个菜单布局。

除了严格定义每个菜单的规范之外,本规范还提到了许多布局/呈现方式。这一部分规范是可选的,实际上可以选择忽略这些提示。

文件位置

本规范中涉及的文件根据 桌面基本目录规范 定位。

以下是此规范定义的文件:

  • $XDG_CONFIG_DIRS/menus/${XDG_MENU_PREFIX}applications.menu
$XDG_CONFIG_DIRS 默认位置为 $HOME/.config : /etc/xdg 

例如,它应该将$XDG_MENU_PREFIX环境变量分别设置 为“gnome-”、“kde-”。
如果系统同时包含GNOME和KDE桌面环境,则可以决定使用gnome-applications.menu作为GNOME会话中的菜单布局,将kde-applications.menu作为KDE会话中的菜单布局。

如果用户拥有自己的${XDG_MENU_PREFIX}applications.menu,它将取代系统的applications.menu。

  • $XDG_CONFIG_DIRS/menus/applications-merged/

    默认合并目录包含在元素中。按照惯例,第三方可以在此位置添加新的

    文件以创建自己的子菜单。

    请注意,根据所使用的桌面环境,使用gnome-applications.menu或kde-applications.menu;在两种情况下,仍必须使用applications-merged作为默认合并目录。

    对于除应用程序主要菜单之外的任务或菜单,可以选择使用除application.menu以外的名称的.menu文件。在这种情况下,默认合并目录名称的第一部分是从.menu文件的名称派生的。

    例如,在使用preferences.menu文件来描述附加菜单的系统中,preferences.menu文件中元素中包含的默认合并目录将变为 $XDG_CONFIG_DIRS/ menus / preferences-merged /

  • $XDG_DATA_DIRS/applications/

    该目录包含每个可能菜单项的.desktop文件。$XDG_DATA_DIRS中的每个目录都应该被使用(即,从所有目录中收集桌面入口,而不仅仅是存在的第一个目录入口)。当两个桌面入口具有相同名称时,将使用路径中较早出现的那个。

    菜单文件中的元素表示默认的桌面入口位置列表应该被扫描。如果菜单文件不包含,则不扫描这些位置。

  • $XDG_DATA_DIRS/desktop-directories/

    此目录可能包含与菜单布局中的文件夹关联的目录入口。每个目录都应该被使用。仅使用以.directory结尾的文件; 其他文件被忽略。

    菜单文件中的元素表示此默认的目录条目位置列表。如果菜单文件不包含,则不扫描这些位置。

.desktop文件的扩展

该规范增加了三个新领域的桌面项:Categories, OnlyShowIn和NotShowIn。

Categories字段是用于对菜单项进行分类的字符串列表。例如,AudioVideo类别中的应用程序 可能最终出现在“声音和视频”子菜单中。附录A.注册类别 列举了标准类别。不在此文档中的类别必须以字符串“X-”作为前缀,表示它们是扩展名。类别区分大小写。

桌面入口文件应列出所有适用的类别。他们不应该列出只是模糊或可能适用的类别,因为用户最终会在六个地方看到相同的桌面入口。但通常情况下,给出的几个类别总有适用的。

OnlyShowIn字段是一个字符串列表,用于标识应显示在特定的环境。如果存在 OnlyShowIn字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments 枚举了某些常见的环境。

NotShowIn字段是一个字符串列表,用于标识不应显示在特定的环境。如果存在NotShowIn字段,则应该标明。字符串区分大小写。附录B.Registered OnlyShowIn Environments枚举了某些常见的环境。

不在此文档中的环境必须以字符串“X-”作为前缀,表示它们是扩展名。环境区分大小写。

使用Categories和OnlyShowIn的例子

  • 基于Qt的图像查看器的桌面入口可能包含以下Categories行:
    Categories=Qt;Graphics;RasterGraphics;Viewer;
  • Octave,一个命令行的数学程序(还应该有Terminal=true这一行)的桌面入口
    Categories=ConsoleOnly;Math;
  • 仅应出现在GNOME中的GNOME特定计算器程序的桌面文件,可能包含下面字段:
	Categories=GNOME;Utility;
	OnlyShowIn=GNOME;

菜单文件的格式

菜单文件必须是格式良好的XML文件,并以扩展名“.menu”结尾。它们还应符合菜单文件DTD,这意味着不允许对文件格式进行特定的扩展。如果实现遇到不符合相关DTD的菜单文件,则可能会停止运行。请注意,关联的DTD版本可能与本文档中定义的版本不同。

当更新现有菜单文件时,可能需要将标识符更新为较新版本的DTD。永远不应将现有菜单文件的标识符更新为旧版本。为了与更新的版本保持兼容,应该忽略并保留它不知道如何处理的任何XML元素,属性和属性值。

文件类型声明

此版本规范的菜单文件必须使用以下命名空间,公共和系统标识符:

命名空间:http://www.freedesktop.org/standards/menu

1.1的公共标识符:PUBLIC “-//freedesktop//DTD Menu 1.0//EN”

1.1的系统标识符:http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd

这是一个示例文档类型声明:

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" 
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

所有菜单文件必须包含文档类型声明,以便实现可以适应此规范的不同版本(因此实现可以根据DTD验证菜单文件)。

元素

  • <Menu>

根元素是<Menu>。每个<Menu>元素可以包含任意数量的嵌套<Menu>元素,表示子菜单。

<Menu>
	<Menu>
	</Menu>
</Menu>
  • <AppDir>
<Menu>
	<!-- 定位到.desktop文件夹 -->
	<AppDir>/usr/share/applink</AppDir>
</Menu>

比如:<AppDir> /foo/bar/Hello.desktop 的桌面文件id号为 Hello.desktop
   <AppDir>/foo/bar/bo/oz/Hello.desktop 的桌面文件id号为 bo-oz-Hello.desktop

如果作为<AppDir>给出的文件名不是绝对路径,则它应该相对于要解析的菜单文件的位置。
递归扫描,向后合并
<AppDir>元素与<Include>和<Exclude>元素的顺序不相关,也便于合并。

  • <DefaultAppDirs>
<Menu>
	<DefaultAppDirs/>
</Menu>

该元素没有内容。默认包含app dir位置($datadir/applications/)的<AppDir>元素列表。将<DefaultAppDirs>扩展为<AppDir>列表时,搜索路径中较早的默认位置稍后会在<Menu>中显示,以便它们具有优先级。
$datadir默认为 ~/.local/share : /usr/local/share : /usr/share

  • <DirectoryDir>
<Menu>
	<Directory>/usr/share/desktop-directories</Directory>
</Menu>

该元素的内容是目录名称。递归扫描,向后合并。只加载以扩展名“.directory”结尾的文件
例如,如果/usr/share/desktop-directories指定为,则相对路径 /usr/share/desktop-directories/foo/bar.directory为 foo/bar.directory。

  • <DefaultDirectoryDirs>
<Menu>
	<DefaultDirectoryDirs />
</Menu>
  • <Name>
<Menu>
	<Name>金山办公</Name>
</Menu>

必须元素。<Name>字段不得以斜杠字符(“/”)开头。例如,“Foo/Bar/Baz”是有效的菜单路径。

  • <Directory>
<Menu>
	<Name>金山办公</Name>
	<Directory>wps-office.directory</Directory>
</Menu>

给定指定的 .directory文件

  • <OnlyUnallocated> and <NotOnlyUnallocated>
    未分配桌面入口
  • <Deleted> and <NotDeleted>
    如果菜单包含元素后面没有元素,则应忽略该菜单。
  • <Include>
<Menu>
	<Name>Applications</Name>
	<Directory>kf5-unknown.directory</Directory>
	<OnlyUnallocated/>
	<Include>
		<Not>
			<!-- Don't list non-KDE core applications -->
			<And>
				<Category>Core</Category>
				<Not><Category>KDE</Category></Not>
			</And>
			<!-- Don't list SUSE's YaST in here -->
			<Category>X-SuSE-YaST</Category>
			<Category>X-KDE-settings-hardware</Category>
			<Filename>kde-medianotifications.desktop</Filename>
			<Filename>kde-audioencoding.desktop</Filename>
		</Not>
	</Include>
</Menu>

使用元素<And>,<Or>,<Not>,<All>,<Filename>和<Category>指定匹配规则。

  • <Exclude>
    同<Include>
  • <MergeFile [type=“path”|“parent”] >
<Menu>
	<MergeFile type="path" />
</Menu>
  • <MergeDir>
<Menu>
	<MergeDir>/usr/share/merger-dir</MergeDir>
</Menu>
  • <DefaultMergeDirs>
<Menu>
	<DefaultMergeDirs />
</Menu>
  • <LegacyDir>
    旧版菜单层次结构
  • <KDELegacyDirs>
    包含KDE支持的传统桌面文件位置,其硬编码前缀为“kde-”,
  • <Move>
<Move>
  <Old>Foo</Old>
  <New>Bar</New>
  <Old>Foo2</Old>
  <New>Bar2</New>
</Move>   

<Move>元素包含一对<Old> / <New>元素

  • <Layout>

  • <DefaultLayout [show_empty=“false”] [inline=“false”] [inline_limit=“4”] [inline_header=“true”] [inline_alias=“false”]>

<DefaultLayout>
	<Merge type="menus"/>
	<Merge type="files"/>
	<Separator/>
	<Menuname>More</Menuname>
</DefaultLayout>
  • <Menuname [show_empty="…"] [inline="…"] [inline_limit="…"] [inline_header="…"] [inline_alias="…"]>
  • <Separator>
  • <Merge type=“menus”|“files”|“all”/>

示例菜单文件

<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">

<Menu>
	<Name>Applications</Name>
	<Directory>Applications.directory</Directory>
	
	<!-- Search the default locations -->
	<!-- -->
	<DefaultAppDirs/>
	<DefaultDirectoryDirs/>
	
	<!-- Merge third-party submenus -->
	<MergeDir>applications-merged</MergeDir>
	
	<!-- Merge legacy hierarchy -->
	<LegacyDir>/usr/share/applnk</LegacyDir>
	
	<!-- Define default layout -->
	<DefaultLayout>
	<Merge type="menus"/>
	<Merge type="files"/>
	<Separator/>
	<Menuname>More</Menuname>
	</DefaultLayout>
	
	<!-- some random moves, maybe to clean up legacy dirs, 
	    maybe from menu editing -->
	<Move>
	<Old>Foo</Old>
	<New>Bar</New>
	<Old>Foo2</Old>
	<New>Bar2</New>
	</Move>          
	
	<!-- A preferences submenu, kept in a separate file 
	    so it can also be used standalone -->
	<Menu>
	<Name>Preferences</Name>
	<Directory>Preferences.directory</Directory>
	<MergeFile>preferences.menu</MergeFile>
	</Menu>
	
	<!-- An Office submenu, specified inline -->
	<Menu>
	<Name>Office</Name>
	<Directory>Office.directory</Directory>
	<Include>
	 <Category>Office</Category>
	</Include>
	<Exclude>
	 <Filename>foo.desktop</Filename>
	</Exclude>
	</Menu>

</Menu>

A.注册类别

主要类别

Main CategoryDescriptionNotes
AudioVideo音频、视频类相关类软件
Audio音频必须包括AudioVideo
Video视频必须包括AudioVideo
Development编程开发
Education教育类、学习类
Game游戏娱乐
Graphics用于查看,创建或处理图形的应用程序
Network网络应用程序,需要联网才能使用的应用
Office办公室类型
Science科学软件
Settings设置应用程序可能出现在单独的菜单中或作为“控制中心”的一部分
System系统工具
Utility小型实用应用,“配件”

其他类别

Additional CategoryDescriptionRelated Categories
Building构建应用程序的工具Development
Debugger调试应用程序的工具Development
IDEIDE应用程序Development
GUIDesignerGUI设计应用程序Development
Profiling分析工具Development
RevisionControl像cvs或subversion这样的应用程序Development
Translation翻译工具Development
Calendar日历应用程序Office
ContactManagement例如地址簿Office
Database数据库Office or Development or AudioVideo
Dictionary字典Office or TextTools
Chart图表应用程序Office
Email邮件Office or Network
Finance金融相关Office
FlowChart流程图应用程序Office
PDAPDA管理工具Office
ProjectManagement项目管理应用Office or Development
Presentation演示软件Office
Spreadsheet电子表格Office
WordProcessor文字处理器Office
2DGraphics基于2D的图形应用Graphics
VectorGraphics用于查看,创建或处理矢量图形的应用程序Graphics;2DGraphics
RasterGraphics用于查看,创建或处理栅格(位图)图形的应用程序Graphics;2DGraphics
3DGraphics用于查看,创建或处理3-D图形的应用程序Graphics
Scanning扫描文件/文本的工具Graphics
OCR光学字符识别应用Graphics;Scanning
Photography相机工具等Graphics or Office
Publishing桌面出版应用程序和颜色管理工具Graphics or Office
Viewer用于查看 例如图形或pdf文件的工具Graphics or Office
TextTools文本工具实用程序Utility
DesktopSettings桌面配置工具Settings
HardwareSettings管理硬件组件的工具,如声卡,视频卡或打印机Settings
Printing管理打印机的工具HardwareSettings;Settings
PackageManager包管理器应用程序Settings
Dialup拨号程序Network
InstantMessaging即时消息客户端Network
Chat聊天客户端Network
IRCClientIRC客户端Network
FeedRSS,播客和其他基于订阅的内容Network
FileTransferFTP或P2P程序等工具Network
HamRadioHAM无线电软件Network or Audio
News新闻阅读器或新闻自动收报机Network
P2P一个P2P程序Network
RemoteAccess远程管理PC的工具Network
Telephony通过PC拨打电话Network
TelephonyTools电话工具,拨号,管理PBX,…Utility
VideoConference视频会议软件Network
WebBrowserWeb浏览器Network
WebDevelopment适用于Web开发人员的工具Network or Development
Midi一个与MIDI相关的应用程序AudioVideo;Audio
MixerJust a mixerAudioVideo;Audio
Sequencer一个音序器AudioVideo;Audio
Tuner一个调谐器AudioVideo;Audio
TV电视应用程序AudioVideo;Video
AudioVideoEditing编辑音频/视频文件Audio or Video or AudioVideo
Player播放音频/视频文件Audio or Video or AudioVideo
Recorder记录音频/视频文件Audio or Video or AudioVideo
DiscBurning刻录光盘AudioVideo
ActionGame动作游戏Game
AdventureGame冒险游戏Game
ArcadeGame街机游戏Game
BoardGame棋牌游戏Game
BlocksGame落块游戏Game
CardGame纸牌游戏Game
KidsGame适合孩子的游戏Game
LogicGame像拼图等逻辑游戏Game
RolePlaying角色扮演游戏Game
Shooter射击游戏Game
Simulation模拟游戏Game
SportsGame体育比赛游戏Game
StrategyGame策略游戏Game
Art教授艺术的软件Education or Science
ConstructionEducation or Science
Music音乐软件AudioVideo or Education
Languages学习外语的软件Education or Science
ArtificialIntelligence人工智能软件Education or Science
Astronomy天文软件Education or Science
Biology生物学软件Education or Science
Chemistry化学软件Education or Science
ComputerScience计算机科学软件Education or Science
DataVisualization数据可视化软件Education or Science
Economy经济软件Education or Science
Electricity电力软件Education or Science
Geography地理软件Education or Science
Geology地质软件Education or Science
Geoscience地球科学软件,GISEducation or Science
History历史软件Education or Science
Humanities哲学,心理学和其他人文科学的软件Education or Science
ImageProcessing图像处理软件Education or Science
Literature文学软件Education or Science
Maps用于查看地图,导航,地图,GPS的软件Education or Science or Utility
Math数学软件Education or Science
NumericalAnalysis数值分析软件Education;Math or Science;Math
MedicalSoftware医疗软件Education or Science
Physics物理学软件Education or Science
Robotics机器人软件Education or Science
Spirituality宗教和精神软件,神学Education or Science or Utility
Sports体育软件Education or Science
ParallelComputing并行计算软件Education;ComputerScience or Science;ComputerScience
Amusement一个简单的娱乐
Archiving存档/备份数据的工具Utility
Compression管理压缩数据/归档的工具Utility;Archiving
Electronics电子软件,例如电路设计师
Emulator另一个平台的模拟器,例如DOS模拟器System or Game
Engineering工程软件,例如CAD程序
FileTools文件工具Utility or System
FileManager文件管理器System;FileTools
TerminalEmulator终端System
Filesystem文件系统工具System
Monitor监视监视某些资源或活动的应用程序/小程序System or Network
Security一种安全工具Settings or System
Accessibility无障碍Settings or Utility
Calculator一个计算器Utility
Clock时钟应用程序/小程序Utility
TextEditor文本编辑器Utility
Documentation帮助或文档
Adult处理成人或显性材料的应用
Core重要的应用程序,是桌面的核心,例如文件管理器或帮助浏览器
KDE基于KDE库的应用程序QT
GNOME基于GNOME库的应用程序GTK
XFCE基于XFCE库的应用程序GTK
GTK基于GTK +库的应用程序
Qt基于Qt库的应用程序
Motif基于Motif库的应用程序
Java基于Java GUI库的应用程序,例如AWT或Swing
ConsoleOnly仅适用于终端(基于文本或命令行应用程序)的应用程序

保留类别

保留类别描述
Screensaver屏幕保护程序(启动此应用应激活屏幕保护程序)
TrayIcon主要是“系统托盘”或“通知区域”的图标的应用程序(打开普通窗口的应用程序,恰好有托盘图标也不应列出此类别)
Applet将在面板或其他此类应用程序中运行的applet,可能是特定于桌面的
Shell一个shell(一个实际的特定shell,如 bash或者tcsh,而不是TerminalEmulator)

B.注册OnlyShowIn环境

OnlyShowIn ValueEnvironment
GNOMEGNOME桌面
KDEKDE桌面
LXDELXDE桌面
LXQtLXQt桌面
MATEMATÉ桌面
RazorRazor-qt桌面
ROXROX桌面
TDETrinity桌面
UnityUnity Shell
XFCEXFCE桌面
EDEEDE桌面
CinnamonCinnamon桌面
PantheonPantheon桌面
Old传统菜单系统

C.将您的应用程序集成到菜单中

添加菜单项

.desktop文件安装在$datadir/applications/中,命名如:vendor-foo.desktop或者vendor/foo.desktop
.menu文件安装在$sysconfdir/menus/applications-merged/
.directory文件安装在$datadir/desktop-directories/

安装位置

$datadir默认为$HOME/.local/share : /usr/local/share : /usr/share
$sysconfig默认为/etc/xdg/

  • .desktop文件
    datadir/applications/shinythings-webmirror.desktop:
[Desktop Entry]
Encoding=UTF-8
Type=Application

Exec=webmirror
Icon=webmirror

Name=WebMirror
Name[nl]=WebSpiegel

datadir/applications/shinythings-webmirror-admin.desktop:

[Desktop Entry]
Encoding=UTF-8
Type=Application

Exec=webmirror-admintool
Icon=webmirror-admintool

Name=WebMirror Admin Tool
Name[nl]=WebSpiegel Administratie Tool
  • .directory文件
    datadir/desktop-directories/shinythings-webmirror.directory:
[Desktop Entry]
Encoding=UTF-8

Icon=webmirror

Name=WebMirror
Name[nl]=WebSpiegel
  • .menu文件
    sysconfdir/menus/application-merged/shinythings-webmirror.menu:
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
	<Name>Applications</Name>
	<Menu>
		<Name>WebMirror</Name>
		<Directory>shinythings-webmirror.directory</Directory>
		<Include>
			<Filename>shinythings-webmirror.desktop</Filename>
			<Filename>shinythings-webmirror-admin.desktop</Filename>
		</Include>
	</Menu>
</Menu>

原文链接:https://specifications.freedesktop.org/menu-spec/menu-spec-latest.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux桌面菜单(.menu)规范 的相关文章

  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • 删除 Git 存储库,但保留所有文件

    在我使用 Linux 的过程中的某个时刻 我决定将我的主目录中的所有内容都放入源代码管理中是个好主意 我不是在问这是否是一个好主意 我是在问如何撤销它 删除存储库的原因是我最近安装了 Oh My Zsh 而且我非常喜欢它 问题是我的主目录有
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐