summaryrefslogtreecommitdiff
path: root/Base/usr/share/man
diff options
context:
space:
mode:
authorkleines Filmröllchen <filmroellchen@serenityos.org>2022-06-16 16:47:46 +0200
committerLinus Groh <mail@linusgroh.de>2022-07-11 11:35:56 +0200
commit9660f5d0e63dcde551391c03399ed5b233c2fd92 (patch)
treed7affef2894e4c0f84492c1affe2954ab8ca677d /Base/usr/share/man
parentda25ac0d48e728cb424f1fce7f266563ec6f96b0 (diff)
downloadserenity-9660f5d0e63dcde551391c03399ed5b233c2fd92.zip
Documentation: Move all file format documentation into its own manpage
The documentation is largely unchanged except for adoption into the standard manpage format.
Diffstat (limited to 'Base/usr/share/man')
-rw-r--r--Base/usr/share/man/man5/af.md18
-rw-r--r--Base/usr/share/man/man5/clipboard.md51
l---------Base/usr/share/man/man5/drag-and-drop.md1
-rw-r--r--Base/usr/share/man/man5/font.md17
-rw-r--r--Base/usr/share/man/man5/ipc.md16
-rw-r--r--Base/usr/share/man/man5/postcreate.md22
6 files changed, 125 insertions, 0 deletions
diff --git a/Base/usr/share/man/man5/af.md b/Base/usr/share/man/man5/af.md
new file mode 100644
index 0000000000..d0bf5756ad
--- /dev/null
+++ b/Base/usr/share/man/man5/af.md
@@ -0,0 +1,18 @@
+## Name
+
+af - Application File format
+
+## Synopsis
+
+The Application Files define System Menu entries and launcher file types / protocols.
+
+## Description
+
+.af files are human-readable and are a subset of the INI-format, have no easily detectable filemagic. These files define System Menu entries and launcher file types / protocols.
+
+They are stored in [`/res/apps`](../../../../res/apps).
+
+## See Also
+
+- [`Userland/Services/Taskbar/main.cpp`](../../../../../Userland/Services/Taskbar/main.cpp)
+- `Launcher::load_handlers` in [`Userland/Services/LaunchServer/Launcher.cpp`](../../../../../Userland/Services/LaunchServer/Launcher.cpp).
diff --git a/Base/usr/share/man/man5/clipboard.md b/Base/usr/share/man/man5/clipboard.md
new file mode 100644
index 0000000000..9df4f07137
--- /dev/null
+++ b/Base/usr/share/man/man5/clipboard.md
@@ -0,0 +1,51 @@
+## Name
+
+clipboard - Data formats specific to Clipboard and drag & drop
+
+## Clipboard
+
+The clipboard feature works through the Clipboard server, which generally acts as a global storage or three things:
+- a `String` mime type,
+- a (potentially large) block of data, shared as an anonymous file,
+- a `HashMap<String, String>` of arbitrary metadata, depending on the mime type.
+
+See also [`Userland/Libraries/LibGUI/Clipboard.h`](../../../../../Userland/Libraries/LibGUI/Clipboard.h).
+
+## Drag & drop
+
+In contrast to the clipboard, the drag & drop feature works through WindowServer, and a bouquet of data is transmitted:
+- a `[UTF8] String` to be displayed while dragging,
+- a `HashMap<String, ByteBuffer>` map that contains arbitrary data for a variety of possible mime types,
+- a `Gfx::ShareableBitmap` to be displayed while dragging
+
+Drag & drop is most prominently supported by File Manager, Spreadsheet, and Terminal.
+Various applications accept drag & drop to open files.
+
+## glyph/x-fonteditor (Clipboard-only)
+
+Requires the metadata-fields `count` (count of glyphs copied) and `first_glyph` (lowest codepoint that is copied), encoded as decimal strings.
+
+The data contains codepoint (encoded as host-endian u32), width and height (as u8's) and glyph bitmap data. It is encoded in width times height many bytes, either 0 (clear) or 1 (set).
+
+Implemented in `FontEditor::MainWidget::copy_selected_glyphs` and `FontEditor::MainWidget::paste_glyphs`, in [`Userland/Applications/FontEditor/MainWidget.cpp`](../../../../../Userland/Applications/FontEditor/MainWidget.cpp).
+
+## image/x-serenityos (Clipboard-only)
+
+Requires the metadata-fields `width`, `height`, `scale`, `format` (see `Gfx::BitmapFormat`), and `pitch`, encoded as decimal strings.
+
+The data is encoded according to `Gfx::determine_storage_format(BitmapFormat)`, so either as
+BGRx8888, BGRA8888, RGBA8888, or 8-bit palette index. Note that the palette is not transferred.
+
+Implemented in [`Clipboard::set_bitmap` and `Clipboard::DataAndType::as_bitmap()`](../../../../../Userland/Libraries/LibGUI/Clipboard.cpp).
+
+## text/uri-list (Clipboard and drag & drop)
+
+Newline-delimited set of URIs. Used by File Manager, FileSystemModel, and Terminal.
+
+Example:
+
+```
+file:///home/anon/Desktop/Browser
+file:///home/anon/Desktop/Help
+file:///home/anon/Desktop/Home
+```
diff --git a/Base/usr/share/man/man5/drag-and-drop.md b/Base/usr/share/man/man5/drag-and-drop.md
new file mode 120000
index 0000000000..c45156163f
--- /dev/null
+++ b/Base/usr/share/man/man5/drag-and-drop.md
@@ -0,0 +1 @@
+clipboard.md \ No newline at end of file
diff --git a/Base/usr/share/man/man5/font.md b/Base/usr/share/man/man5/font.md
new file mode 100644
index 0000000000..272336b111
--- /dev/null
+++ b/Base/usr/share/man/man5/font.md
@@ -0,0 +1,17 @@
+## Name
+
+font - Bitmap Font File format
+
+## Synopsis
+
+The .font file format stores bitmap fonts in SerenityOS's own binary format.
+
+## Description
+
+These files contain bitmap definitions of fonts, either varying-width or fixed-width.
+
+The first four bytes contain the filemagic: `!Fnt` (0x21466e74).
+
+## See also
+
+- Format header definition in `Gfx::FontFileHeader` in [`Userland/Libraries/LibGfx/Font/BitmapFont.cpp`](../../../../../Userland/Libraries/LibGfx/Font/BitmapFont.cpp).
diff --git a/Base/usr/share/man/man5/ipc.md b/Base/usr/share/man/man5/ipc.md
new file mode 100644
index 0000000000..9efd931020
--- /dev/null
+++ b/Base/usr/share/man/man5/ipc.md
@@ -0,0 +1,16 @@
+## Name
+
+ipc - Inter Process Communication endpoint definition format
+
+## Synopsis
+
+The IPC format of SerenityOS is a domain-specific language (DSL) used to define communication endpoints for IPC.
+
+## Description
+
+These files are human-readable, have no easily detectable filemagic, and define IPC interfaces.
+The format is loosely inspired by C++ headers.
+
+## See Also
+
+- [`Meta/Lagom/Tools/CodeGenerators/IPCCompiler/`](../../../../../Meta/Lagom/Tools/CodeGenerators/IPCCompiler/).
diff --git a/Base/usr/share/man/man5/postcreate.md b/Base/usr/share/man/man5/postcreate.md
new file mode 100644
index 0000000000..d7be930ed8
--- /dev/null
+++ b/Base/usr/share/man/man5/postcreate.md
@@ -0,0 +1,22 @@
+## Name
+
+postcreate - HackStudio postcreate scripts
+
+## Synopsis
+
+.postcreate shell scripts are executed by HackStudio after creating a new project.
+
+## Description
+
+It is possible to define project templates that set up HackStudio projects. These templates can contain custom setup logic in the form of a `*.postcreate` script in the template directory. The script name must match the template's (directory) name. Postcreate scripts are regular shell scripts. They are executed from an undeterminate directory with the following arguments:
+
+- The path to the postcreate script
+- The name of the new project
+- The path of the new project, i.e. not the parent directory it was created in
+- The project name in a form that is safe for C++ namespaces
+
+The script may error out with a non-zero exit code, but the project is still created. The user is informed of the error.
+
+## See Also
+
+- `ProjectTemplate::create_project` in [`Userland/DevTools/HackStudio/ProjectTemplate.cpp`](../../../../../Userland/DevTools/HackStudio/ProjectTemplate.cpp).