我想使用 vinagre 3.18.2 中集成的书签功能来组织我的 VNC 连接。由于 GUI 显然不支持添加子文件夹,因此我查看了~/.local/share/vinagre/vinagre-bookmarks.xml
.然而,由于缺乏文档,我无法弄清楚向 XML 结构添加子文件夹的正确语法是什么。因此我查看了 vinagre 的源代码,发现VINAGRE_BOOKMARKS_ENTRY_NODE_FOLDER
在几个与书签相关的 C 和 C 头文件中使用了该变量。但不幸的是,我也无法从解析器的代码中找到编辑书签 XML 文件的正确语法。
这是我搜索到的文件:
./vinagre/vinagre-window.c ./vinagre/vinagre-bookmarks.c ./vinagre/vinagre-bookmarks-entry.h ./vinagre/vinagre-bookmarks-migration.c ./vinagre/vinagre-bookmarks-tree.c ./vinagre/vinagre-bookmarks-entry.c ./vinagre/vinagre-bookmarks-ui.c
无论如何,如何将子文件夹添加到书签?
答案1
找到了答案vinagre-书签-迁移
要引入子文件夹,请执行以下操作
<folder name="folder name">[..]</folder>
其中[..]
可能是项目或进一步的子文件夹。
更新:
我创建了一个简单的 XSD 文件来解析书签:
<?xml version="1.0" encoding="utf-8"?>
<!--
Vinagre bookmarks XML Schema Description
Maintainer: Richard Neumann <r dot neumann at homeinfo fullstop de>
XXX: Use Venetian Blind Design
-->
<!--<xs:schema
xmlns="https://wiki.gnome.org/Apps/Vinagre/vinagre-bookmarks.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0"
targetNamespace="https://wiki.gnome.org/Apps/Vinagre/vinagre-bookmarks.xsd">-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0">
<xs:element name="vinagre-bookmarks" type="VinagreBookmarksRoot">
<xs:annotation>
<xs:documentation xml:lang="en">
Root element for vinagre bookmarks
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="VinagreBookmarksRoot">
<xs:annotation>
<xs:documentation xml:lang="en">
Vinagre bookmarks root folder type
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="folder" type="Folder" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation xml:lang="en">
Sub-folders
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="item" type="Item" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation xml:lang="en">
Connection items
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Folder">
<xs:annotation>
<xs:documentation xml:lang="en">
Folder type
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="VinagreBookmarksRoot">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="Item">
<xs:annotation>
<xs:documentation xml:lang="en">
A connection item
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="protocol" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="host" type="xs:string"/>
<xs:element name="username" type="xs:string"/>
<xs:element name="port" type="xs:unsignedShort"/>
<xs:element name="fullscreen" type="xs:boolean"/>
<xs:element name="width" type="xs:unsignedInt"/>
<xs:element name="height" type="xs:unsignedInt"/>
<xs:element name="view_only" type="xs:boolean"/>
<xs:element name="scaling" type="xs:boolean"/>
<xs:element name="keep_ratio" type="xs:boolean"/>
<xs:element name="depth_profile" type="xs:unsignedByte"/>
<xs:element name="lossy_encoding" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:schema>