foot.ini

package: foot

title: foot.ini(5)

text:
# foot.ini(5)

## NAME
foot.ini - configuration file for foot(1)

## DESCRIPTION
foot uses the standard unix configuration format, with section based key/value pairs. The default section is usually unnamed, i.e. not prefixed with a [section]. However it can also be explicitly named [main], say if it needs to be reopened after any of the other sections.

foot will search for a configuration file in the following locations, in this order:

•XDG_CONFIG_HOME/foot/foot.ini (defaulting to $HOME/.config/foot/foot.ini if unset)

•XDG_CONFIG_DIRS/foot/foot.ini (defaulting to /etc/xdg/foot/foot.ini if unset)

An example configuration file containing all options with their default value commented out will usually be installed to /etc/xdg/foot/foot.ini.

Options are set using KEY=VALUE pairs:

[colors]

background=000000

foreground=ffffff

Empty values (KEY=) are not supported. String options do allow the empty string to be set, but it must be quoted: KEY="")

## SECTION: main
shell

Executable to launch. Typically a shell. Default: $SHELL if set, otherwise the user's default shell (as specified in /etc/passwd). You can also pass arguments. For example /bin/bash --norc.

login-shell

Boolean. If enabled, the shell will be launched as a login shell, by prepending a '-' to argv[0]. Default: no.

term

Value to set the environment variable TERM to. Default: foot

font, font-bold, font-italic, font-bold-italic

Comma separated list of fonts to use, in fontconfig format. That is, a font name followed by a list of colon-separated options. Most noteworthy is :size=n, which is used to set the font size. Note that the font size is also affected by the dpi-aware option. Examples:

•Dina:weight=bold:slant=italic

•Courier New:size=12

•Fantasque Sans Mono:fontfeatures=ss01

•Meslo LG S:size=12, Noto Color Emoji:size=12

For each option, the first font is the primary font. The remaining fonts are fallback fonts that will be used whenever a glyph cannot be found in the primary font.

The fallback fonts are searched in the order they appear. If a glyph cannot be found in any of the fallback fonts, the dynamic fallback list from fontconfig (for the primary font) is searched.

font-bold, font-italic and font-bold-italic allow custom fonts to be used for bold/italic/bold+italic fonts. If left unconfigured, the bold/italic variants of the regular font(s) specified in font are used. Note: you may have to tweak the size(s) of the custom bold/italic fonts to match the regular font.

To disable bold and/or italic fonts, set e.g. font-bold to exactly the same value as font.

Default: monospace:size=8 (font), not set (font-bold, font-italic, font-bold-italic).

font-size-adjustment

Amount, in points, pixels or percent, to increment/decrement the font size when zooming in our out. Examples:

```
font-size-adjustment=0.5   # Adjust by 0.5 points
font-size-adjustment=10px  # Adjust by 10 pixels
font-size-adjustment=7.5%  # Adjust by 7.5 percent
```

Default: 0.5

include

Absolute path to configuration file to import. The import file has its own section scope. I.e. the including configuration is still in the default section after the include, regardless of which section the included file ends in.

•The path must be an absolute path, or start with ~/.

•Multiple include directives are allowed, but only one path per directive.

•Nested imports are allowed.

Default: not set.

line-height

An absolute value, in points, that override line height from the font metrics. You can specify a height in pixels by using the px suffix: e.g. line-height=12px.

See also: vertical-letter-offset.

Default: not set.

letter-spacing

Spacing between letters, in points. A positive value will increase the cell size, and a negative value shrinks it. You can specify a letter spacing in pixels by using the px suffix: e.g. letter-spacing=2px.

See also: horizontal-letter-offset.

Default: 0.

horizontal-letter-offset, vertical-letter-offset

Configure the horizontal and vertical offsets used when positioning glyphs within cells, in points, relative to the top left corner. To specify an offset in pixels, append px: e.g. horizontal-letter-offset=2px.

Default: 0.

underline-offset

Use a custom offset for underlines. The offset is, by default, in points and relative the font's baseline. A positive value positions the underline under the baseline, while a negative value positions it above the baseline. To specify an offset in pixels, append px: underline-offset=2px.

If left unset (the default), the offset specified in the font is used, or estimated by foot if the font lacks underline positioning information.

Default: unset.

underline-thickness

Use a custom thickness (height) for underlines. The thickness is, by default, in points. To specify a thickness in pixels, append px: underline-thickness=1px.

If left unset (the default), the thickness specified in the font is used.

Default: unset

box-drawings-uses-font-glyphs Boolean. When disabled, foot generates

box/line drawing characters itself. The are several advantages to doing this instead of using font glyphs:

•No antialiasing effects where e.g. line endpoints appear dimmed down, or blurred.

•Line- and box characters are guaranteed to span the entire cell, resulting in a gap-less appearance.

•No alignment issues, i.e. lines are centered when they should be.

•Many fonts lack some, or all, of the line- and box drawing characters, causing fallback fonts to be used, which results in out-of-place looking glyphs (for example, badly sized).

When enabled, box/line drawing characters are rendered using font glyphs. This may result in a more uniform look, in some use cases.

Default: no.

dpi-aware

Boolean. When set to yes, fonts are sized using the monitor's DPI, making a font of a given size have the same physical size, regardless of monitor. In other words, if you drag a foot window between different monitors, the font size remains the same.

In this mode, the monitor's scaling factor is ignored; doubling the scaling factor will not double the font size.

When set to no, the monitor's DPI is ignored. The font is instead sized using the monitor's scaling factor; doubling the scaling factor does double the font size.

Note that this option typically does not work with bitmap fonts, which only contains a pre-defined set of sizes, and cannot be dynamically scaled. Whichever size (of the available ones) that best matches the DPI or scaling factor, will be used.

Also note that if the font size has been specified in pixels (:pixelsize=N, instead of :size=N), DPI scaling (dpi-aware=yes) will have no effect (the specified pixel size will be used as is). But, if the monitor's scaling factor is used to size the font (dpi-aware=no), the font's pixel size will be multiplied with the scaling factor.

Default: no

pad

Padding between border and glyphs, in pixels (subject to output scaling), in the form XxY. This will add at least X pixels on both the left and right sides, and Y pixels on the top and bottom sides. The grid content will be anchored in the top left corner. I.e. if the window manager forces an odd window size on foot, the additional pixels will be added to the right and bottom sides.

To instead center the grid content, append center (e.g. pad=5x5 center).

Default: 0x0.

resize-delay-ms

Time, in milliseconds, of "idle time" before foot performs text reflow, and sends the new window dimensions to the client application while doing an interactive resize of a foot window. Idle time in this context is a period of time where the window size is not changing. In other words, while you are fiddling with the window size, foot does not send the updated dimensions to the client. It also does a fast "truncating" resize of the grid, instead of actually reflowing the contents. Only when you pause the fiddling for resize-delay-ms milliseconds is the client updated, and the contents properly reflowed.

Emphasis is on while here; as soon as the interactive resize ends (i.e. when you let go of the window border), the final dimensions is sent to the client, without any delays.

Setting it to 0 disables the delay completely.

Default: 100.

resize-by-cells

Boolean. When set to yes, the window size will be constrained to multiples of the cell size (plus any configured padding). When set to no, the window size will be unconstrained, and padding may be adjusted as necessary to accommodate window sizes that are not multiples of the cell size.

This option only applies to floating windows. Sizes of maxmized, tiled or fullscreen windows will not be constrained to multiples of the cell size.

Default: yes

initial-window-size-pixels

Initial window width and height in pixels (subject to output scaling), in the form WIDTHxHEIGHT. The height includes the titlebar when using CSDs. Mutually exclusive to initial-window-size-chars. Default: 700x500.

initial-window-size-chars

Initial window width and height in characters, in the form WIDTHxHEIGHT. Mutually exclusive to initial-window-size-pixels.' Note that if you have a multi-monitor setup, with different scaling factors, there is a possibility the window size will not be set correctly. If that is the case, use initial-window-size-pixels instead.

Default: not set.

initial-window-mode

Initial window mode for each newly spawned window: windowed, maximized or fullscreen. Default: windowed.

title

Initial window title. Default: foot.

locked-title

Boolean. If enabled, applications are not allowed to change the title at run-time. Default: no.

app-id

Value to set the app-id property on the Wayland window to. The compositor can use this value to e.g. group multiple windows, or apply window management rules. Default: foot (normal mode), or footclient (server mode).

bold-text-in-bright

Semi-boolean. When enabled, bold text is rendered in a brighter color (in addition to using a bold font). The color is brightened by increasing its luminance. If set to palette-based, rather than a simple yes|true, colors matching one of the 8 regular palette colors will be brightened using the corresponding bright palette color. Other colors will not be brightened.

Default: no.

word-delimiters

String of characters that act as word delimiters when selecting text. Note that whitespace characters are always word delimiters, regardless of this setting. Default: ,│`|:"'()[]{}<>

notify

Command to execute to display a notification. ${title} and ${body} will be replaced with the notification's actual title and body (message content). ${app-id} is replaced with the value of the command line option --app-id, and defaults to foot (normal mode), or footclient (server mode).

${window-title} is replaced with the current window title.

Applications can trigger notifications in the following ways:

•OSC 777: \e]777;notify;<title>;<body>\e\\

By default, notifications are inhibited if the foot window has keyboard focus. See notify-focus-inhibit.

Default: notify-send -a ${app-id} -i ${app-id} ${title} ${body}.

notify-focus-inhibit

Boolean. If enabled, foot will not display notifications if the terminal window has keyboard focus. Default: yes

selection-target

Clipboard target to automatically copy selected text to. One of none, primary, clipboard or both. Default: primary.

workers

Number of threads to use for rendering. Set to 0 to disable multithreading. Default: the number of available logical CPUs (including SMT). Note that this is not always the best value. In some cases, the number of physical cores is better.

utmp-helper

Path to utmp logging helper binary. When starting foot, an utmp record is created by launching the helper binary with the following arguments:

```
add $WAYLAND_DISPLAY
```

When foot is closed, the utmp record is removed by launching the helper binary with the following arguments:

```
del $WAYLAND_DISPLAY
```

Set to none to disable utmp records. Default: /usr/lib64/utempter/utempter.

## SECTION: environment
This section is used to define environment variables that will be set in the client application, in addition to the variables inherited from the terminal process itself.

The format is simply:

name=value

Note: do not set TERM here; use the term option in the main (default) section instead.

## SECTION: bell
urgent

When set to yes, foot will signal urgency to the compositor through the XDG activation protocol whenever BEL is received, and the window does NOT have keyboard focus. If the compositor does not implement this protocol, the margins will be painted in red instead.

Applications can enable/disable this feature programmatically with the CSI ? 1042 h and CSI ? 1042 l escape sequences.

Default: no

notify

When set to yes, foot will emit a desktop notification using the command specified in the notify option whenever BEL is received. By default, bell notifications are shown only when the window does not have keyboard focus. See notify-focus-inhibit. Default: no

visual

When set to yes, foot will flash the terminal window. Default: no

command

When set, foot will execute this command when BEL is received. Default: none

command-focused

Whether to run the command on BEL even while focused. Default: no

## SECTION: scrollback
lines

Number of scrollback lines. The maximum number of allocated lines will be this value plus the number of visible lines, rounded up to the nearest power of 2. Default: 1000.

multiplier

Amount to multiply mouse scrolling with. It is a decimal number, i.e. fractions are allowed. Default: 3.0.

indicator-position

Configures the style of the scrollback position indicator. One of none, fixed or relative. none disables the indicator completely. fixed always renders the indicator near the top of the window, and relative renders the indicator at the position corresponding to the current scrollback position. Default: relative.

indicator-format

Which format to use when displaying the scrollback position indicator. Either percentage, line, or a custom fixed string. This option is ignored if indicator-position=none. Default: empty string.

## SECTION: url
launch

Command to execute when opening URLs. ${url} will be replaced with the actual URL. Default: xdg-open ${url}.

osc8-underline

When to underline OSC-8 URLs. Possible values are url-mode and always. When set to url-mode, OSC-8 URLs are only highlighted in URL mode, just like auto-detected URLs.

When set to always, OSC-8 URLs are always highlighted, regardless of their other attributes (bold, italic etc). Note that this does not make them clickable.

Default: url-mode

label-letters

String of characters to use when generating key sequences for URL jump labels. If you change this option to include the letter t, you should also change the default [url-bindings].toggle-url-visible key binding to avoid a clash.

Default: sadfjklewcmpgh.

protocols

Comma separated list of protocols (schemes) that should be recognized in URL mode. Note that only auto-detected URLs are affected by this option. OSC-8 URLs are always enabled, regardless of protocol. Default: http, https, ftp, ftps, file, gemini, gopher, irc, ircs.

uri-characters

Set of characters allowed in auto-detected URLs. Any character not included in this set constitutes a URL delimiter. Default: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]

## SECTION: cursor
This section controls the cursor style and color. Note that applications can change these at runtime.

style

Configures the default cursor style, and is one of: block, beam or underline. Note that this can be overridden by applications. Default: block.

unfocused-style

Configures how the cursor is rendered when the terminal window is unfocused. Possible values are:

•unchanged: render cursor in exactly the same way as when the window has focus.

•hollow: render a block cursor, but hollowed out.

•none: do not display any cursor at all.

blink

Boolean. Enables blinking cursor. Note that this can be overridden by applications. Default: no.

color

Two space separated RRGGBB values (i.e. plain old 6-digit hex values, without prefix) specifying the foreground (text) and background (cursor) colors for the cursor. Example: ff0000 00ff00 (green cursor, red text)

Default: the regular foreground and background colors, reversed.

beam-thickness

Thickness (width) of the beam styled cursor. The value is in points, and its exact value thus depends on the monitor's DPI. To instead specify a thickness in pixels, use the px suffix: e.g. beam-thickness=2px. Default: 1.5

underline-thickness

Thickness (height) of the underline styled cursor. The value is in points, and its exact value thus depends on the monitor's DPI. To instead specify a thickness in pixels, use the px suffix: e.g. underline-thickness=2px.

Note that if left unset, the cursor's thickness will scale with the font size, while if set, the size is fixed.

Default: font underline thickness.

## SECTION: mouse
hide-when-typing

Boolean. When enabled, the mouse cursor is hidden while typing. Default: no.

alternate-scroll-mode

Boolean. This option controls the initial value for the alternate scroll mode. When this mode is enabled, mouse scroll events are translated to up/down key events when displaying the alternate screen. This lets you scroll with the mouse in e.g. pagers (like less) without enabling native mouse support in them.

Alternate scrolling is not used if the application enables native mouse support.

This option can be modified by applications at run-time using the escape sequences CSI ? 1007 h (enable) and CSI ? 1007 l (disable).

Default: yes.

## SECTION: touch
long-press-delay

Number of milliseconds to distinguish between a short press and a long press on the touchscreen. Default: 400.

## SECTION: colors
This section controls the 16 ANSI colors, the default foreground and background colors, and the extended 256 color palette. Note that applications can change these at runtime.

The colors are in RRGGBB format (i.e. plain old 6-digit hex values, without prefix). That is, they do not have an alpha component. You can configure the background transparency with the alpha option.

foreground

Default foreground color. This is the color used when no ANSI color is being used. Default: 839496.

background

Default background color. This is the color used when no ANSI color is being used. Default: 002b36.

regular0, regular1 .. regular7

The eight basic ANSI colors (Black, Red, Green, Yellow, Blue, Magenta, Cyan, White). Default: 242424, f62b5a, 47b413, e3c401, 24acd4, f2affd, 13c299, e6e6e6 (starlight theme, V4).

bright0, bright1 .. bright7

The eight bright ANSI colors (Black, Red, Green, Yellow, Blue, Magenta, Cyan, White). Default: 616161, ff4d51, 35d450, e9e836, 5dc5f8, feabf2, 24dfc4, ffffff (starlight theme, V4).

dim0, dim1 .. dim7

Custom colors to use with dimmed colors. Dimmed colors do not have an entry in the color palette. Applications emit them by combining a color value, and a "dim" attribute. By default, foot implements this by reducing the luminance of the current color. This is a generic approach that applies to both colors from the 256-color palette, as well as 24-bit RGB colors.

You can change this behavior by setting the dimN options. When set, foot will match the current color against the color palette, and if it matches one of the regularN colors, the corresponding dimN color will be used.

If instead the current color matches one of the brightN colors, the corresponding regularN color will be used.

If the current color does not match any known color, it is dimmed by reducing the luminance (i.e. the same behavior as if the dimN options are unconfigured). 24-bit RGB colors will typically fall into this category.

Note that applications can change the regularN and brightN colors at runtime. However, they have no way of changing the dimN colors. If an application has changed the regularN colors, foot will still use the corresponding dimN color, as configured in foot.ini.

Default: not set.

0 .. 255

Arbitrary colors in the 256-color palette. Default: for 0 .. 15, see regular and bright defaults above; see https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for an explanation of the remainder.

alpha

Background translucency. A value in the range 0.0-1.0, where 0.0 means completely transparent, and 1.0 is opaque. Default: 1.0.

selection-foreground, selection-background

Foreground (text) and background color to use in selected text. Note that both options must be set, or the default will be used. Default: inverse foreground/background.

jump-labels

Two color values specifying the foreground (text) and background colors to use when rendering jump labels in URL mode. Default: regular0 regular3.

scrollback-indicator

Two color values specifying the foreground (text) and background (indicator itself) colors for the scrollback indicator. Default: regular0 bright4.

search-box-no-match

Two color values specifying the foreground (text) and background colors for the scrollback search box, when there are no matches. Default: regular0 regular1.

search-box-match

Two color values specifying the foreground (text) and background colors for the scrollback search box, when the search box is either empty, or there are matches. Default: regular0 regular3.

urls

Color to use for the underline used to highlight URLs in URL mode. Default: regular3.

flash

Color to use for the terminal window flash. Default: 7f7f00.

flash-alpha

Flash translucency. A value in the range 0.0-1.0, where 0.0 means completely transparent, and 1.0 is opaque. Default: 0.5.

## SECTION: csd
This section controls the look of the CSDs (Client Side Decorations). Note that the default is to not use CSDs, but instead to use SSDs (Server Side Decorations) when the compositor supports it.

Note that unlike the colors defined in the colors section, the color values here are in AARRGGBB (i.e. plain old 8-digit hex values) format. I.e. they contain an alpha component - 00 means completely transparent, and ff fully opaque.

Examples:

•ffffffff: white, fully opaque

•ff000000: black, fully opaque

•7fffffff: white, semi-transparent

•ff00ff00: green, fully opaque

preferred

Which type of window decorations to prefer: client (CSD), server (SSD) or none. Note that this is only a hint to the compositor. Depending on compositor support, and how it has been configured, it may instruct foot to use CSDs even though this option has been set to server, or render SSDs despite client or none being set.

Default: server.

size

Height, in pixels (subject to output scaling), of the titlebar. Setting it to 0 will hide the titlebar, while still showing the border (if border-width is set to a non-zero value). Default: 26.

color

Titlebar color. Default: use the default foreground color.

font

Font to use for the title bar. This is a list of fonts, similar to the main font option. Note that the font will be sized using the title bar size. That is, all :size and :pixelsize attributes will be ignored. Default: primary font.

hide-when-maximized

Boolean. When enabled, the CSD titlebar is hidden when the window is maximized. The completely disable the titlebar, set size to 0 instead. Default: no.

double-click-to-maximize

Boolean. When enabled, double-clicking the CSD titlebar will (un)maximize the window. Default: yes.

border-width

Width of the border, in pixels (subject to output scaling). Note that the border encompasses the entire window, including the title bar. Default: 0.

border-color

Color of border. By default, the title bar color is used. If the title bar color has not been set, the default foreground color (from the color scheme) is used. Default: titlebar color.

button-width

Width, in pixels (subject to output scaling), of the minimize/maximize/close buttons. Default: 26.

button-color

Foreground color on the minimize/maximize/close buttons. Default: use the default background color.

button-minimize-color

Minimize button's background color. Default: use the default regular4 color (blue).

button-maximize-color

Maximize button's background color. Default: use the default regular2 color (green).

button-close-color

Close button's background color. Default: use the default regular1 color (red).

## SECTION: key-bindings
This section lets you override the default key bindings.

The general format is action=combo1...comboN. That is, each action may have one or more key combinations, space separated. Each combination is in the form mod1+mod2+key. The names of the modifiers and the key must be valid XKB key names.

Note that if Shift is one of the modifiers, the key must not be in upper case. For example, Control+Shift+V will never trigger, but Control+Shift+v will.

Note that Alt is usually called Mod1.

xkbcli interactive-wayland can be useful for finding keysym names.

A key combination can only be mapped to one action. Lets say you want to bind Control+Shift+R to fullscreen. Since this is the default shortcut for search-start, you first need to unmap the default binding. This can be done by setting action=none; e.g. search-start=none.

noop

All key combinations listed here will not be sent to the application. Default: none.

scrollback-up-page

Scrolls up/back one page in history. Default: Shift+Page_Up.

scrollback-up-half-page

Scrolls up/back half of a page in history. Default: none.

scrollback-up-line

Scrolls up/back a single line in history. Default: none.

scrollback-down-page

Scroll down/forward one page in history. Default: Shift+Page_Down.

scrollback-down-half-page

Scroll down/forward half of a page in history. Default: none.

scrollback-down-line

Scroll down/forward a single line in history. Default: none.

scrollback-home

Scroll to the beginning of the scrollback. Default: none.

scrollback-end

Scroll to the end (bottom) of the scrollback. Default: none.

clipboard-copy

Copies the current selection into the clipboard. Default: Control+Shift+c XF86Copy.

clipboard-paste

Pastes from the clipboard. Default: Control+Shift+v XF86Paste.

primary-paste

Pastes from the primary selection. Default: Shift+Insert (also defined in mouse-bindings).

search-start

Starts a scrollback/history search. Default: Control+Shift+r.

font-increase

Increases the font size by 0.5pt. Default: Control+plus Control+equal Control+KP_Add (also defined in mouse-bindings).

font-decrease

Decreases the font size by 0.5pt. Default: Control+minus Control+KP_Subtract (also defined in mouse-bindings).

font-reset

Resets the font size to the default. Default: Control+0 Control+KP_0.

spawn-terminal

Spawns a new terminal. If the shell has been configured to emit the OSC 7 escape sequence, the new terminal will start in the current working directory. Default: Control+Shift+n.

minimize

Minimizes the window. Default: none.

maximize

Toggle the maximized state. Default: none.

fullscreen

Toggles the fullscreen state. Default: none.

pipe-visible, pipe-scrollback, pipe-selected, pipe-command-output

Pipes the currently visible text, the entire scrollback, the currently selected text, or the last command's output to an external tool. The syntax for this option is a bit special; the first part of the value is the command to execute enclosed in "[]", followed by the binding(s). You can configure multiple pipes as long as the command strings are different and the key bindings are unique.

Note that the command is not automatically run inside a shell; use sh -c "command line" if you need that.

Example #1:

\# Extract currently visible URLs, let user choose one (via fuzzel), then launch firefox with the selected URL

pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r firefox"] Control+Print

Example #2:

\# Open scrollback contents in Emacs running in a new foot instance

pipe-scrollback=[sh -c "f=$(mktemp) && cat - > $f && foot emacsclient -t $f; rm $f"] Control+Shift+Print

Default: none

show-urls-launch

Enter URL mode, where all currently visible URLs are tagged with a jump label with a key sequence that will open the URL (and exit URL mode). Default: Control+Shift+o.

show-urls-persistent

Similar to show-urls-launch, but does not automatically exit URL mode after activating an URL. Default: none.

show-urls-copy

Enter URL mode, where all currently visible URLs are tagged with a jump label with a key sequence that will place the URL in the clipboard. Default: none.

prompt-prev

Jump to the previous, currently not visible, prompt (requires shell integration, see foot(1)). Default: Control+Shift+z.

prompt-next

Jump the next prompt (requires shell integration, see foot(1)). Default: Control+Shift+x.

unicode-input

Input a Unicode character by typing its codepoint in hexadecimal, followed by Enter or Space. For example, to input the character ö (LATIN SMALL LETTER O WITH DIAERESIS, Unicode codepoint 0xf6), you would first activate this key binding, then type: f, 6, Enter.

Another example: to input 😍 (SMILING FACE WITH HEART-SHAPED EYES, Unicode codepoint 0x1f60d), activate this key binding, then type: 1, f, 6, 0, d, Enter.

Recognized key bindings in Unicode input mode:

•Enter, Space: commit the Unicode character, then exit this mode.

•Escape, q, Ctrl+c, Ctrl+d, Ctrl+g: abort input, then exit this mode.

•0-9, a-f: append next digit to the Unicode's codepoint.

•Backspace: undo the last digit.

Note that there is no visual feedback while in this mode. This is by design; foot's Unicode input mode is considered to be a fallback. The preferred way of entering Unicode characters, emojis etc is by using an IME.

Default: Control+Shift+u.

quit

Quit foot. Default: none.

## SECTION: search-bindings
This section lets you override the default key bindings used in scrollback search mode. The syntax is exactly the same as the regular key-bindings.

cancel

Aborts the search. The viewport is restored and the primary selection is not updated. Default: Control+g Control+c Escape.

commit

Exit search mode and copy current selection into the primary selection. Viewport is not restored. To copy the selection to the regular clipboard, use Control+Shift+c. Default: Return.

find-prev

Search backwards in the scrollback history for the next match. Default: Control+r.

find-next

Searches forwards in the scrollback history for the next match. Default: Control+s.

cursor-left

Moves the cursor in the search box one character to the left. Default: Left Control+b.

cursor-left-word

Moves the cursor in the search box one word to the left. Default: Control+Left Mod1+b.

cursor-right

Moves the cursor in the search box one character to the right. Default: Right Control+f.

cursor-right-word

Moves the cursor in the search box one word to the right. Default: Control+Right Mod1+f.

cursor-home

Moves the cursor in the search box to the beginning of the input. Default: Home Control+a.

cursor-end

Moves the cursor in the search box to the end of the input. Default: End Control+e.

delete-prev

Deletes the character before the cursor. Default: BackSpace.

delete-prev-word

Deletes the word before the cursor. Default: Mod1+BackSpace Control+BackSpace.

delete-next

Deletes the character after the cursor. Default: Delete.

delete-next-word

Deletes the word after the cursor. Default: Mod1+d Control+Delete.

extend-char

Extend current selection to the right, by one character. Default: Shift+Right.

extend-to-word-boundary

Extend current selection to the right, to the next word boundary. Default: Control+w Control+Shift+Right.

extend-to-next-whitespace

Extend the current selection to the right, to the next whitespace. Default: Control+Shift+w.

extend-line-down

Extend current selection down one line. Default: Shift+Down.

extend-backward-char

Extend current selection to the left, by one character. Default: Shift+Left.

extend-backward-to-word-boundary

Extend current selection to the left, to the next word boundary. Default: Control+Shift+Left.

extend-backward-to-next-whitespace

Extend the current selection to the left, to the next whitespace. Default: none.

extend-line-up

Extend current selection up one line. Default: Shift+Up.

clipboard-paste

Paste from the clipboard into the search buffer. Default: Control+v Control+y.

primary-paste

Paste from the primary selection into the search buffer. Default: Shift+Insert.

unicode-input

Unicode input mode. See key-bindings.unicode-input for details. Default: none.

scrollback-up-page

Scrolls up/back one page in history. Default: Shift+Page_Up.

scrollback-up-half-page

Scrolls up/back half of a page in history. Default: none.

scrollback-up-line

Scrolls up/back a single line in history. Default: none.

scrollback-down-page

Scroll down/forward one page in history. Default: Shift+Page_Down.

scrollback-down-half-page

Scroll down/forward half of a page in history. Default: none.

scrollback-down-line

Scroll down/forward a single line in history. Default: none.

scrollback-home

Scroll to the beginning of the scrollback. Default: none.

scrollback-end

Scroll to the end (bottom) of the scrollback. Default: none.

## SECTION: url-bindings
This section lets you override the default key bindings used in URL mode. The syntax is exactly the same as the regular key-bindings.

Be careful; do not use single-letter keys that are also used in [url].label-letters, as doing so will make some URLs inaccessible.

cancel

Exits URL mode without opening a URL. Default: Control+g Control+c Control+d Escape.

toggle-url-visible

By default, the jump label only shows the key sequence required to activate it. This is fine as long as the URL is visible in the original text. But with e.g. OSC-8 URLs (the terminal version of HTML anchors, i.e. "links"), the text on the screen can be something completely different than the URL.

This action toggles between showing and hiding the URL on the jump label.

Default: t.

## SECTION: text-bindings
This section lets you remap key combinations to custom escape sequences.

The format is text=combo1...comboN. That is, the string to emit may have one or more key combinations, space separated. Each combination is in the form mod1+mod2+key. The names of the modifiers and the key must be valid XKB key names.

The text string specifies the characters, or bytes, to emit when the associated key combination(s) are pressed. There are two ways to specify a character:

•Normal, printable characters are written as-is: abcdef.

•Bytes (e.g. ESC) are written as two-digit hexadecimal numbers, with a \x prefix: \x1b.

Example: you would like to remap Super+k to the Up key.

The escape sequence for the Up key is ESC [ A (without the spaces). Thus, we need to specify this in foot.ini (Mod4 is the XKB name for the Super/logo key):

\x1b[A = Mod4+k

Another example: to remap Super+c to Control+c:

\x03 = Mod4+c

## SECTION: mouse-bindings
This section lets you override the default mouse bindings.

The general format is action=combo1...comboN. That is, each action may have one or more key combinations, space separated. Each combination is in the form mod1+mod2+BTN_<name>[-COUNT]. The names of the modifiers must be valid XKB key names, and the button name must be a valid libinput name. You can find the button names using libinput debug-events.

The trailing COUNT (number of times the button has to be clicked) is optional and specifies the click count required to trigger the binding. The default if COUNT is omitted is 1.

To map wheel events (i.e. scrolling), use the button names BTN_BACK (up) and BTN_FORWARD (down). Note that these events never generate a COUNT larger than 1. That is, BTN_BACK+2, for example, will never trigger.

A modifier+button combination can only be mapped to one action. Lets say you want to bind BTN_MIDDLE to fullscreen. Since BTN_MIDDLE is the default binding for primary-paste, you first need to unmap the default binding. This can be done by setting action=none; e.g. primary-paste=none.

selection-override-modifiers

The modifiers set in this set (which may be set to any combination of modifiers, e.g. mod1+mod2+mod3, as well as none) are used to enable selecting text with the mouse irrespective of whether a client application currently has the mouse grabbed. These modifiers cannot be used as modifiers in mouse bindings. Because the order of bindings is significant, it is best to set this prior to any other mouse bindings that might use modifiers in the default set. Default: Shift

The actions to which mouse combos can be bound are listed below. All actions listed under key-bindings can be used here as well.

scrollback-up-mouse

Normal screen: scrolls up the contents. Alt screen: send fake KeyUP events to the client application, if alternate scroll mode is enabled.

Default: BTN_BACK

scrollback-down-mouse

Normal screen: scrolls down the contents. Alt screen: send fake KeyDOWN events to the client application, if alternate scroll mode is enabled.

Default: BTN_FORWARD

select-begin

Begin an interactive selection. The selection is finalized, and copied to the primary selection, when the button is released. Default: BTN_LEFT.

select-begin-block

Begin an interactive block selection. The selection is finalized, and copied to the primary selection, when the button is released. Default: Control+BTN_LEFT.

select-word

Begin an interactive word-wise selection, where words are separated by whitespace and all characters defined by the word-delimiters option. The selection is finalized, and copied to the primary selection, when the button is released. Default: BTN_LEFT-2.

select-word-whitespace

Same as select-word, but the characters in the word-delimiters option are ignored. I.e only whitespace characters act as delimiters. The selection is finalized, and copied to the primary selection, when the button is released. Default: Control+BTN_LEFT-2.

select-quote

Begin an interactive "quote" selection. This is similar to select-word, except an entire quote is selected (that is, everything inside the quote, excluding the quote characters). Recognized quote characters are: " and '. If a complete quote cannot be found on the current logical row (only one quote character, or none are found), the entire row is selected.

The selection is finalized, and copied to the primary selection, when the button is released.

After the initial selection has been made, it behaves like a normal word, or row selection, depending on whether a quote was found or not. This affects what happens when, for example, extending the selection.

Notes:

•Escaped quote characters are not supported ("foo \"bar" will match 'foo \', not 'foo "bar').

•Foot does not try to handle mismatched quote characters; they will simply not match.

•Nested quotes (using different quote characters) are supported.

Default: BTN_LEFT-3.

select-row

Begin an interactive row-wise selection. The selection is finalized, and copied to the primary selection, when the button is released. Default: BTN_LEFT-4.

select-extend

Interactively extend an existing selection, using the original selection mode (normal, block, word-wise or row-wise). The selection is finalized, and copied to the primary selection, when the button is released. Default: BTN_RIGHT.

select-extend-character-wise

Same as select-extend, but forces the selection mode to normal (i.e. character wise). Note that this causes subsequent select-extend operations to be character wise. This action is ignored for block selections. Default: Control+BTN_RIGHT.

primary-paste

Pastes from the primary selection. Default: BTN_MIDDLE.

font-increase

Increases the font size by 0.5pt. Default: Control+BTN_BACK (also defined in key-bindings).

font-decrease

Decreases the font size by 0.5pt. Default: Control+BTN_FORWARD (also defined in key-bindings).

## TWEAK
This section is for advanced users and describes configuration options that can be used to tweak foot's low-level behavior.

These options are not included in the example configuration. You should not change these unless you understand what they do.

Note that these options may change, or be removed at any time, without prior notice.

When reporting bugs, please mention if, and to what, you have changed any of these options.

scaling-filter

Overrides the default scaling filter used when down-scaling bitmap fonts (e.g. emoji fonts). Possible values are none, nearest, bilinear, cubic or lanczos3. cubic and lanczos3 produce the best results, but are slower (with lanczos3 being the best and slowest). Default: lanczos3.

overflowing-glyphs

Boolean. When enabled, glyphs wider than their cell(s) are allowed to render into one additional neighbouring cell. One use case for this are fonts with wide italic characters that "bend" into the next cell. Without this option, such glyphs will appear "cut off".

Another use case are fonts with "icon" characters in the Unicode private usage area, e.g. Nerd Fonts, or Powerline Fonts and legacy emoji characters like WHITE FROWNING FACE.

Note: might impact performance depending on the font used. Especially small font sizes can cause many overflowing glyphs because of subpixel rendering.

Default: yes.

render-timer

Enables a frame rendering timer, that prints the time it takes to render each frame, in microseconds, either on-screen, to stderr, or both. Valid values are none, osd, log and both. Default: none.

box-drawing-base-thickness

Line thickness to use for LIGHT box drawing line characters, in points. This value is converted to pixels using the monitor's DPI, and then multiplied with the cell size. The end result is that a larger font (and thus larger cells) result in thicker lines. Default: 0.04.

box-drawing-solid-shades

Boolean. When enabled, box drawing "shades" (e.g. LIGHT SHADE, MEDIUM SHADE and DARK SHADE) are rendered as solid blocks using a darker variant of the current foreground color. When disabled, they are instead rendered as checker box pattern, using the current foreground color as is.

Default: yes.

delayed-render-lower, delayed-render-upper

These two values control the timeouts (in nanoseconds) that are used to mitigate screen flicker caused by clients writing large, non-atomic screen updates. If a client splits up a screen update over multiple write(3) calls, we may end up rendering an intermediate frame, quickly followed by another frame with the final screen content. For example, the client may erase part of the screen (or scroll) in one write, and then write new content in one or more subsequent writes. Rendering the frame when the screen has been erased, but not yet filled with new content will be perceived as screen flicker.

The real solution to this is Application Synchronized Updates (https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2).

The problem with this is twofold - first, it has not yet been standardized, and thus there are not many terminal emulators that implement it (foot does implement it), and second, applications must be patched to use it.

Until this has happened, foot offers an interim workaround; an attempt to mitigate the screen flicker without affecting neither performance nor latency.

It is based on the fact that the screen is updated at a fixed interval (typically 60Hz). For us, this means it does not matter if we render a new frame at the beginning of a frame interval, or at the end. Thus, the goal is to introduce a delay between receiving client data and rendering the resulting state, but without causing a frame skip.

While it should be possible to estimate the amount of time left until the next frame, foot's algorithm is currently not that advanced, but is based on statistics I guess you could say - the delay we introduce is so small that the risk of pushing the frame over to the next frame interval is also very small.

Now, that was a lot of text. But what is it foot actually does?

When receiving client data, it schedules a timer, the delayed-render-lower. If we do not receive any more client data before the timer has run out, we render the frame. If however, we do receive more data, the timer is re-scheduled. That is, each time we receive client data, frame rendering is delayed another delayed-render-lower nanoseconds.

Now, while this works very well with most clients, it would be possible to construct a malicious client that keeps writing data at a slow pace. To the user, this would look like foot has frozen as we never get to render a new frame. To prevent this, an upper limit is set - delayed-render-upper. If this timer runs out, we render the frame regardless of what the client is doing.

If changing these values, note that the lower timeout must be set lower than the upper timeout, but that this is not verified by foot. Furthermore, both values must be less than 16ms (that is, 16000000 nanoseconds).

You can disable the feature altogether by setting either value to 0. In this case, frames are rendered "as soon as possible".

Default: lower=500000 (0.5ms), upper=8333333 (8.3ms - half a frame interval).

damage-whole-window

Boolean. When enabled, foot will 'damage' the entire window each time a frame has been rendered. This forces the compositor to redraw the entire window. If disabled, foot will only 'damage' updated rows. There is normally no reason to enable this. However, it has been seen to workaround an issue with fractional scaling in Gnome.

Note that enabling this option is likely to increase CPU and/or GPU usage (by the compositor, not by foot), and may have a negative impact on battery life.

Default: no.

grapheme-shaping

Boolean. When enabled, foot will use utf8proc to do grapheme cluster segmentation while parsing "printed" text. Then, when rendering, it will use fcft (if compiled with HarfBuzz support) to shape the grapheme clusters. This is required to render e.g. flag (emoji) sequences, keycap sequences, modifier sequences, zero-width-joiner (ZWJ) sequences and emoji tag sequences. It might also improve rendering of composed characters, depending on font.

•foot must have been compiled with utf8proc support

•fcft must have been compiled with HarfBuzz support

This option can also be set runtime with DECSET/DECRST 2027.

See also: grapheme-width-method.

Default: yes

grapheme-width-method

Selects which method to use when calculating the width (i.e. number of columns) of a grapheme cluster. One of wcswidth, double-width and max. wcswidth simply adds together the individual width of all codepoints making up the cluster.

double-width does the same, but limits the maximum number of columns to 2. This is more correct, but may break some applications since applications typically use wcswidth(3) internally to calculate the width. This results in cursor de-synchronization issues.

max uses the width of the largest codepoint in the cluster.

Default: double-width

font-monospace-warn

Boolean. When enabled, foot will use heuristics to try to verify the primary font is a monospace font, and warn if it is not. Disable this if you still want to use the font, even if foot thinks it is not monospaced.

You may also want to disable it to get slightly faster startup times.

Default: yes

max-shm-pool-size-mb

This option controls the amount of virtual address space used by the pixmap memory to which the terminal screen content is rendered. It does not change how much physical memory foot uses.

Foot uses a memory mapping trick to implement fast rendering of interactive scrolling (typically, but applies to "slow" scrolling in general). Example: holding down the 'up' or 'down' arrow key to scroll in a text editor.

For this to work, it needs a large amount of virtual address space. Again, note that this is not physical memory.

On a normal x64 based computer, each process has 128TB of virtual address space, and newer ones have 64PB. This is an insane amount and most applications do not use anywhere near that amount.

Each foot terminal window can allocate up to 2GB of virtual address space. With 128TB of address space, that means a maximum of 65536 windows in server/daemon mode (for 2GB). That should be enough, yes?

However, the Wayland compositor also needs to allocate the same amount of virtual address space. Thus, it has a slightly higher chance of running out of address space since it needs to host all running Wayland clients in the same way, at the same time.

In the off chance that this becomes a problem for you, you can reduce the amount used with this option.

Or, for optimal performance, you can increase it to the maximum allowed value, 2GB (but note that you most likely will not notice any difference compared to the default value).

Setting it to 0 disables the feature.

Limitations:

•only supported on 64-bit architectures

•only supported on Linux

Default: 512. Maximum allowed: 2048 (2GB).

sixel

Boolean. When enabled, foot will process sixel images. Default: yes

bold-text-in-bright-amount

Amount by which bold fonts are brightened when bold-text-in-bright is set to yes (the palette-based variant is not affected by this option). Default: 1.3.

## SEE ALSO
foot(1), footclient(1)


fpc.cfg

package: fpc-compiler

title: fpc.cfg(5)

text:
# fpc.cfg(5)

## NAME
fpc.cfg - Free Pascal Compiler (FPC) configuration file, name derived from Free Pascal Compiler.

## DESCRIPTION
This is the main configuration file of the Free Pascal Compiler (FPC)

All commandline options of the compiler (described in fpc(1) ) can be specified in fpc.cfg

When the configuration file is found, it is read, and the lines it contains are treated like you typed them on the command line see fpc(1) with some extra condtional possibilities.

## SYNTAX
You can specify comments in the configuration file with the # sign. Everything from the # on will be ignored, unless it is one of the keywords (see below).

The compiler looks for the fpc.cfg file in the following places :

- Under Linux and unix

- The current directory.

- Home directory, looks for .fpc.cfg

- The directory specified in the environment

variable PPC_CONFIG_PATH, and if it's not

set under compilerdir/../etc.

- If it is not yet found: in /etc.

- Under all other OSes:

- The current directory.

- The directory specified in the environment

variable PPC_CONFIG_PATH.

- The directory where the compiler binary is.

When the compiler has finished reading the configuration file, it continues to treat the command line options.

One of the command-line options allows you to specify a second configuration file: Specifying @foo on the command line will use file foo instead of fpc.cfg and read further options from there. When the compiler has finished reading this file, it continues to process the command line.

The configuration file allows some kind of preprocessing. It understands the following directives, which you should place on the first column of a line :

\#IFDEF

\#IFNDEF

\#ELSE

\#ENDIF

\#DEFINE

\#UNDEF

\#WRITE

\#INCLUDE

\#SECTION

They work the same way as their $... directive counterparts in Pascal:

\#IFDEF

Syntax

\#IFDEF name Lines following #IFDEF are skipped read if the keyword "name" following it is not defined.

They are read until the keywords #ELSE or #ENDIF are encountered, after which normal processing is resumed.

Example

\#IFDEF VER0_99_12

-Fu/usr/lib/fpc/0.99.12/rtl

\#ENDIF

In the above example, /usr/lib/fpc/0.99.12/rtl will be added to the path if you're compiling with version 0.99.12 of the compiler.

\#IFNDEF

Syntax

\#IFNDEF name Lines following #IFDEF are skipped read if the keyword "name" following it is defined.

They are read until the keywords #ELSE or #ENDIF are encountered, after which normal processing is resumed.

Example

\#IFNDEF VER0_99_12

-Fu/usr/lib/fpc/0.99.13/rtl

\#ENDIF

In the above example, /usr/lib/fpc/0.99.13/rtl will be added to the path if you're NOT compiling with version 0.99.12 of the compiler.

\#ELSE

Syntax

\#ELSE #ELSE can be specified after a #IFDEF or #IFNDEF directive as an alternative. Lines following #ELSE are skipped read if the preceding #IFDEF #IFNDEF was accepted.

They are skipped until the keyword #ENDIF is encountered, after which normal processing is resumed.

Example

\#IFDEF VER0_99_12

-Fu/usr/lib/fpc/0.99.12/rtl

\#ELSE

-Fu/usr/lib/fpc/0.99.13/rtl

\#ENDIF

In the above example, /usr/lib/fpc/0.99.12/rtl will be added to the path if you're compiling with version 0.99.12 of the compiler, otherwise /usr/lib/fpc/0.99.13/rtl will be added to the path.

\#ENDIF

Syntax

\#ENDIF

\#ENDIF marks the end of a block that started with #IF(N)DEF, possibly with an #ELSE between it.

\#DEFINE

Syntax

\#DEFINE name

\#DEFINE defines a new keyword. This has the same effect as a "-dname" command-line option.

\#UNDEF

Syntax

\#UNDEF name #UNDEF un-defines a keyword if it existed. This has the same effect as a "-uname" command-line option.

\#WRITE

Syntax

\#WRITE Message Text #WRITE writes "Message Text" to the screen. This can be useful to display warnings if certain options are set.

Example

\#IFDEF DEBUG

\#WRITE Setting debugging ON...

-g

\#ENDIF

if "DEBUG is defined, this will produce a line

Setting debugging ON...

and will then switch on debugging information in the compiler.

\#INCLUDE

Syntax

\#INCLUDE filename #INCLUDE instructs the compiler to read the contents of "filename" before continuing to process options in the current file.

This can be useful if you want to have a particular configuration file for a project (or, under Unix like systems (such as Linux), in your home directory), but still want to have the global options that are set in a global configuration file.

Example

\#IFDEF LINUX

\#INCLUDE /etc/fpc.cfg

\#ELSE

\#IFDEF GO32V2

\#INCLUDE c:\pp\bin\fpc.cfg

\#ENDIF

\#ENDIF

This will include /etc/fpc.cfg if you're on a unix like machine (like linux), and will include c:\pp\bin\fpc.cfg on a dos machine.

\#SECTION

Syntax

\#SECTION name The #SECTION directive acts as a #IFDEF directive, only it doesn't require an #ENDIF directive. the special name COMMON always exists, i.e. lines following #SECTION COMMON are always read.

## Example
A standard block often used in (the Linux version of) fpc.cfg is

-vwhin

\#IFDEF VER0_99_12

\#IFDEF FPC_LINK_STATIC

-Fu/usr/lib/fpc/0.99.12/rtl/static

-Fu/usr/lib/fpc/0.99.12/units/static

\#ENDIF

\#IFDEF FPC_LINK_DYNAMIC

-Fu/usr/lib/fpc/0.99.12/rtl/shared

-Fu/usr/lib/fpc/0.99.12/units/shared

\#ENDIF

-Fu/usr/lib/fpc/0.99.12/rtl

-Fu/usr/lib/fpc/0.99.12/units

\#ENDIF

The block is copied into the fpc.cfg file for each version you use (normally the latest release and the lastest developpers snapshot.

## SEE ALSO
fpc(1)


fpcmake

package: fpc-utils

title: fpcmake(5)

summary: Configuration file for fpcmake.

text:
# fpcmake(5)

## NAME
Makefile.fpc - Configuration file for fpcmake.

## SYNOPSIS
Makefile.fpc is a configuration file for the fpcmake command. Starting from this file a Makefile is created to compile Free Pascal units and programs.

## DESCRIPTION
Makefile.fpc is a plain ASCII file that contains a number of sections as in a Windows ini file. The following sections are recognized (in alphabetical order):

clean

Specifies rules for cleaning the directory of units and programs. The following entries are recognized:

units

names of all units that should be removed when cleaning. Don't specify extensions, the makefile will append these by itself.

files

names of files that should be removed. Specify full filenames.

defaults

The defaults section contains some default settings. The following keywords are recognized:

dirs

info

install

Contains instructions for installation of your units and programs. The following keywods are recognized:

dirprefix

the directory below wchich all installs are done. This corresponds to the --prefix argument to GNU configure It is used for the installation of programs and units. By default, this is /usr on linux, and /pp on all other platforms.

dirbase

The directory that is used as the base directory for the installation of units. Default this is dirprefix appended with /lib/fpc/FPC_VERSION for linux or simply the dirprefix on other platforms.

Units will be installed in the subdirectory units/$(OS_TARGET) of the dirbase entry. libs

This section specifies what units should be merged into a library, and what external libraries are needed. It can contain the following keywords:

libname

the name of the library that should be created.

libunits

a comma-separated list of units that should be moved into one library.

needgcclib

a boolean value that specifies whether the gcc library is needed. This will make sure that the path to the GCC library is inserted in the library search path.

needotherlib

a boolean value that tells the makefile that other library directories will be needed.

packages

Which packages must be used. This section can contain the following keywords:

packages

A comma-separated list of packages that are needed to compile the targets. Valid for all platforms. In order to differentiate between platforms, you can prepend the keyword packages with the OS you are compiling for, e.g. linuxpackages if you want the makefile to use the listed packages on linux only.

fcl

This is a boolean value (0 or 1) that indicates whether the FCL is used.

rtl

This is a boolean value (0 or 1) that indicates whether the RTL should be recompiled.

postsettings

Anything that is in this section will be inserted as-is in the makefile after the makefile rules that are generated by fpcmake, but before the general configuration rules. In it, you cannot use variables that are defined by fpcmake rules, but you can define additional rules and configuration variables.

presettings

Anything that is in this section will be inserted as-is in the makefile before the makefile target rules that are generated by fpcmake. This means that you cannot use any variables that are normally defined by

rules

In this section you can insert dependency rules and any other targets you wish to have. Do not insert 'default rules' here.

sections

Here you can specify which 'rule sections' should be included in the Makefile. The sections consist of a series of boolean keywords; each keyword decides whether a particular section will be written to the makefile. By default, all sections are written. You can have the following boolean keywords in this section.

none

If this is set to true, then no sections are written.

units

If set to false , fpcmake omits the rules for compiling units.

exes

If set to false , fpcmake omits the rules for compiling executables.

loaders

If set to false , fpcmake omits the rules for assembling assembler files.

examples

If set to false , fpcmake omits the rules for compiling examples.

package

If set to false , fpcmake omits the rules for making packages.

compile

If set to false , fpcmake omits the generic rules for compiling pascal files.

depend

If set to false , fpcmake omits the dependency rules.

install

If set to false , fpcmake omits the rules for installing everything.

sourceinstall

If set to false , fpcmake omits the rules for installing the sources.

zipinstall

If set to false , fpcmake omits the rules for installing archives.

clean

If set to false , fpcmake omits the rules for cleaning the directories.

libs

If set to false , fpcmake omits the rules for making libraries.

command

If set to false , fpcmake omits the rules for composing the command-line based on the various variables.

exts

If set to false , fpcmake omits the rules for making libraries.

dirs

If set to false , fpcmake omits the rules for running make in subdirectories..

tools

If set to false , fpcmake omits the rules for running some tools as the erchiver, UPX and zip.

info

If set to false , fpcmake omits the rules for generating information.

targets

In this section you can define the various targets. The following keywords can be used there:

dirs

A space separated list of directories where make should also be run.

examples

A space separated list of example programs that need to be compiled when the user asks to compile the examples. Do not specify an extension, the extension will be appended.

loaders

A space separated list of names of assembler files that must be assembled. Don't specify the extension, the extension will be appended.

programs

A space separated list of program names that need to be compiled. Do not specify an extension, the extension will be appended.

rst

a list of rst files that needs to be converted to .po files for use with GNU gettext and internationalization routines.

units

A space separated list of unit names that need to be compiled. Do not specify an extension, just the name of the unit as it would appear un a uses clause is sufficient.

tools

In this section you can specify which tools are needed. Definitions to use each of the listed tools will be inserted in the makefile, depending on the setting in this section. Each keyword is a boolean keyword; you can switch the use of a tool on or off with it.

The following keywords are recognised:

toolppdep

Use ppdep the dependency tool. True by default.

toolppumove

Use ppumove the Free Pascal unit mover. True by default.

toolppufiles

Use the ppufile tool to determine dependencies of unit files. True by default.

toolsed

Use sed the stream line editor. False by default.

tooldata2inc

use the data2inc tool to create include files from data files. False by default.

tooldiff

Use the GNU diff tool. False by default.

toolcmp

Use the cmp file comparer tool False by default.

toolupx

Use the upx executable packer True by default.

tooldate

use the date date displaying tool. True by default.

toolzip

Use the zip file archiver. This is used by the zip targets. True by default.

zip

This section can be used to make zip files from the compiled units and programs. By default all compiled units are zipped. The zip behaviour can be influencd with the presettings and postsettings sections. The following keywords can be used in this unit:

zipname

this file is the name of the zip file that will be produced.

ziptarget

is the name of a makefile target that will be executed before the zip is made. By default this is the install target.

## SEE ALSO

fpcmake(1) ppc386(1) make(1)


ptop.cfg

title: ptop.cfg(5)

summary: The ptop source\-beautifier configuration file.

text:
# ptop.cfg(5)

## NAME
ptop.cfg - The ptop source-beautifier configuration file.

ptop is the source beautifier of the FreePascal project.

Origin probably Pascal-TO-Pascal.cfg

## DESCRIPTION
This is the main configuration file of the ptop FPC source beautifier

The configuration file for ptop(1) isn't necessarily called ptop.cfg, and is also not auto-loaded, so the name doesn't matter much. This man-page describes the structure of such a configuration file for ptop(1)

## STRUCTURE
The structure of a ptop configuration file is a simple building block repeated several (60-70) times, once for each pascal keyword known to the ptop program. (see the default configuration file or ptopu.pp source to find out which keywords are known)

The basic building block of the configuration file consists out of one, two or three lines, describing how ptop should react on a certain keyword. First a line without square brackets with the following format:

keyword=option1,option2,option3,...

If one of the options is "dindonkey" (see further below), a second line (with square brackets) is needed like this:

[keyword]=otherkeyword1,otherkeyword2,otherkeyword3,...

Then if one of the options is "gobsym", a third line (with angle brackets) is needed like this:

<keyword>=terminalword1,terminalword2,terminalword3,...

As you can see the block contains two types of identifiers, keywords(keyword, otherkeyword1..3 and terminalword1..3 in the above example) and options, (option1..3 above).

Keywords are the built-in valid Pascal structure-identifiers like BEGIN, END, CASE, IF, THEN, ELSE, IMPLEMENTATION. The default configuration file lists most of these.

Besides the real Pascal keywords, some other codewords are used for operators and comment expressions. These are listed in the following table:

Name of codeword operator

------------- -----

casevar : in a case label (<>'colon')

becomes :=

delphicomment //

opencomment { or (*

closecomment } or *)

semicolon ;

colon :

equals =

openparen [

closeparen ]

period .

The Options codewords define actions to be taken when the keyword before the equal sign is found.

Option does what

------- ---------

crsupp suppress CR before the keyword.

crbefore force CR before keyword

(doesn't go with crsupp :) )

blinbefore blank line before keyword.

dindonkey de-indent on associated keywords (see below)

dindent de-indent (always)

spbef space before

spaft space after

gobsym Print symbols which follow a keyword,

but which do not affect layout.

Prints until terminators occur.

inbytab indent by tab.

crafter force CR after keyword.

upper prints keyword all uppercase

lower prints keyword all lowercase

capital capitalizes keyword: 1st letter

uppercase, rest lowercase.

The option "dindonkey" requires some extra parameters, which are set by a second line for that keyword (the one with the square brackets), which is therefore only needed if the options contain "dinkdonkey" (contraction of de-indent on assiociated keyword).

"dinkdonkey" deindents if any of the keywords specified by the extra options of the square-bracket line is found.

In a similar manner the option "gobsym", short for gobble symbols, requires some additional information in order to perform its function. The "gobsym" option indicates that all symbols following the keyword should be passed through unchanged until a terminal symbol is reached. The list of acceptable termial symbols is provided by the angle-bracket line.

## EXAMPLES
The block

else=crbefore,dindonkey,inbytab,upper

[else]=if,then,else

Means:

The keyword this is about is else , it's on the LEFT side of both equal signs.

When the ptop parser finds ELSE, the options tell it to do the following things:

- (crbefore) Don't allow other code on the line before

the keyword. (ELSE alone on a line)

- (dindonkey) De-indent on the keywords

in square brackets line (if,then,else)

- (inbytab) indent by tab.

- (upper) uppercase the keyword (ELSE)

The block

case=spaft,gobsym,inbytab,crafter,capital

<case>=ofsym

Means:

The keyword this is about is case , it's on the LEFT side of both equal signs.

When case is found, the options tell it to do the following things:

- (spaft) Insure that there is a space

after the keyword. (case)

- (gobsym) pass symbols through unchanced until one of

the words in the angle brackets line (of) is found.

- (crafter) Make sure terminator (of) ends the line.

- (inbytab) indent by tab.

- (capital) Capitalize the keyword (case becomes Case).

Try to play with the configfile until you find the effect you desire. The configurability and possibilities of ptop are quite large compared to other shareware source beautifiers found on e.g. SIMTEL.

## ACKNOWLEDGEMENTS
The writer of the program, Michael van Canneyt, who also helped out explaining the format of ptop.cfg.

Questions/corrections can be mailed to fpc-devel@vekoll.saturnus.vein.hu

Also thanks to the rest of the FPC development team.

## SEE ALSO
ptop binary

ptop(1)

Compiler

ppc386(1)

Other FPC utils

ppdep(1) ppudump(1) ppumove(1) h2pas(1)


free-sa.conf

package: free-sa

title: free-sa.conf(5)

text:
# free-sa.conf(5)

## NAME
free-sa.conf - Configuration file for free-sa statistic analyzer

## DESCRIPTION
free-sa.conf configures the free-sa statistic analyzer, free-sa(1).

## FILE FORMAT
The file consists of options with arguments, comments and empty lines. Each line that starts with a hash (#) symbol is a comment. Options and arguments are case sensitive and of the form: Option="Argument".

The arguments are are of the following types:

STRING Set of characters.

BOOL Boolean value: 'true' or 'false'.

INTEGER Signed integer.

free-sa.conf file sample is included in distribution, check it at /usr/src/tmp/free-sa-buildroot/etc/free-sa/free-sa.conf.sample.

Note:

file should end with empty line.

Note:

you may use true/false, yes/no, enable/disable, 1/0 in any case as boolean value and only first symbol is significant for boolean value, i.e. for example, you may use just 'T' instead of 'true'.

## OPTIONS

### Files options:
downloads="STRING"

Full path to downloads extensions file (required for downloads report). Default: undefined, i.e. no downloads file.

global_filter="STRING"

Full path to global filter file. Default: undefined, i.e. global filter disabled.

local_filter="STRING"

Full path to local filter file. Default: undefined, i.e. local filter disabled.

log="STRING"

Full path to log file. Log file should be in one of the supported log file formats, check free-sa(1) "Supported log formats". You may overwrite this value via '-l' command line option. Default: /usr/src/tmp/free-sa-buildroot/var/log/squid/access.log.

usertab="STRING"

Full path to usertab file for names translation. Default: undefined, i.e. no usertab file.

### Directories options:
targetdir="STRING"

Full path to directory, from where free-sa should put index report (IR). You may overwrite this value via '-o' command line option. Default: /usr/src/tmp/free-sa-buildroot/var/www/html/free-sa.

tmpdir="STRING"

Full path to directory, where free-sa should put temporary files. Default: /usr/src/tmp/free-sa-buildroot/var/cache/free-sa.

### Reports selection options:
ts="BOOL"

Generate top sites report (TSR). Default: true.

paf="BOOL"

Generate proxy authentication faulures report (TTR), i.e. for 407 code. Default: true.

saf="BOOL"

Generate sites authentication faulures report (TTR), i.e. for 401 code. Default: true.

pdn="BOOL"

Generate proxy denied report (TTR). Default: true.

sdn="BOOL"

Generate sites denied report (TTR), i.e. for 403 code. Default: true.

cct="BOOL"

Generate CONNECT method report (TTR). Default: true.

pst="BOOL"

Generate PUT/POST method report (TTR). Default: true.

dld="BOOL"

Generate downloads report (TTR). If true, then set downloads file via 'downloads' option. Default: false.

users="BOOL"

Generate users report (UR). Default: true.

fullurl="BOOL"

Generate additional user report with full URLs (UFR). If true, then report generation time increases by ~130%. Default: true.

ufr_split="BOOL"

Split user report with full URLs (UFR) by site. If true, then report for every visited site by user is placed to separate file. Default: false.

email="STRING"

Generate top user report in text format and send it to e-mail specified by STRING. You may overwrite this value via '-e' command line option. Default: undefined, i.e. no send is done.

### Reports limits options:
paf_limit="INTEGER"

saf_limit="INTEGER"

pdn_limit="INTEGER"

sdn_limit="INTEGER"

cct_limit="INTEGER"

pst_limit="INTEGER"

dld_limit="INTEGER"

lcf_limit="INTEGER"

Limit number of URLs per one user for typical reports (TTR, where lcf is local filter report). 0 means no limit. Default: 50.

url_limit="INTEGER"

Limit number of characters in visible part of URL for all reports. 0 means no limit. Default: 50.

ts_limit="INTEGER"

Limit number of sites in top sites report (TSR). 0 means no limit. Default: 0.

dld_min="INTEGER"

Add downloads indicator to links (and therefore add those links to downloads report) only if link have size higher than defined by this option. 0 means no limit. Default: 0.

rtr_timeout="INTEGER"

Update interval for real time report (RTR) page in milliseconds. Default: 5000, i.e. 5 seconds.

### Other options:
name="STRING"

Configuration name, will be showed in reports list report (LR). Default: undefined, i.e. use full path to configuration file instead.

logformat="INTEGER"

Log file format:

0

Squid 2.x native log format

1

CERN/NCSA Common Log Format (CLF)

2

CERN/NCSA Combined Log Format

3

Postfix 2.x over syslog log format

4

Qmail over syslog log format

5

Communigate pro 5.x native log format

Note: support for NetCache and Blue Coat proxies is EXPERIMENTAL and implemented only via Squid 2.x native log format. For these log formats you probably should enable 'skip_errors' option. Default: 0.

skip_errors="BOOL" (EXPERIMENTAL)

Try to skip erroneous records presented on log and continue log analysis from next record. Note: this option is implemented only for standard log analysis, i.e. not for removing records from log file or showing log file information or free-sa.cgi.

Default: false.

fulltraffic="BOOL"

Generate user reports assuming full trafic, i.e. show cached, denied and other local only traffic. Default: false.

inameuser="BOOL"

Use user names, provided by log as unique internal name, otherwise use IP. Default: true.

indicators="BOOL"

Show coloured indicators in most reports at right of the table, indicating presence of user or URL (depending on report type) in 7 typical reports categories (TTR). Default: true.

overwrite="INTEGER"

Remove all reports when new one is generated according to rule selected by INTEGER:

0

Not remove

1

Remove all reports with period equal to period of newly generated reports (period is checked with precision of 1 day)

2

Remove all reports with period within period of newly generated reports (period is checked with precision of 1 seconds)

Note: removing is done AFTER generating new reports. Default: 0.

resolveip="BOOL"

Resolve IP addresses using DNS and use them as visual user names. Note: resolving may greately increase report generation time.

Default: false.

showinfo="BOOL"

Show information about report generator at pages bottom. Default: true.

site="STRING"

For specific log formats only: use this string as prefix to site address. Default: undefined, i.e. no prefix.

logo="STRING"

Logo image URL showed at pages top. Default: undefined, i.e. no logo.

locale="STRING"

Locale to switch to after command line options parsing. Note: you should specify command line options arguments in runtime locale format, not this one.

Note: it's useful when you schedule run of free-sa from crontab, because crond sets C or POSIX locale.

Default: undefined, i.e. use current locale.

rotate="INTEGER|STRING"

Remove reports older than specified time in seconds via INTEGER value or in word via STRING value (starting from free-sa run time). Conversion table of some useful rotate option values:

```
 INTEGER     STRING
      60               1 minute
     600              10 minutes
    3600       hour    1 hour
   28800               8 hours
   36000              10 hours
   86400        day    1 day      or    24 hours
  604800       week    1 week     or     7 days
 2592000      month    1 month    or    30 days
 7776000    quarter    3 months   or    90 days
15552000               6 months   or   180 days
31536000       year    1 year     or   365 days
```

Default: undefined, i.e. no reports rotatation.

tz_shift="INTEGER" (EXPERIMENTAL)

Shift time and therefore date by specified amount of seconds. It is useful when proxy and users are located in different time zones. Note: this option affect all Free-SA internal functions including remove records from log file and show log file information actions.

Default: 0, i.e. no time shift.

divisor="STRING"

Select bytes field represence in all reports except server efficiency. Actually divisor option value is letter, which is lowest meaning digits order (except 'v'/'V' values). The lower case letter means number rounded to integer without digits after decimal delimiter value. The upper case letter means number with two digits after decimal delimiter value. All divisors in divisions is 2 in the power of interpreted option value (i.e. 1 kbyte = 1024 bytes). Allowed option values and their effect on bytes field in reports is showed below using example for 123, 456768 and 789123456 bytes field values. Locale is assumed with ' symbol as thousands separator:

```
b or B   bytes        123   456'789   789'123'456
k        kbytes        0k      446k      770'628k
K        kbytes     0.12k   446.08k   770'628.37k
m        Mbytes        0M        0M          753M
M        Mbytes     0.00M     0.43M       752.56M
g        Gbytes        0G        0G            1G
G        Gbytes     0.00G     0.00G        0.734G
t        Tbytes        0T        0T            0T
T        Tbytes     0.00T     0.00T         0.00T
p        Pbytes        0P        0P            0P
P        Pbytes     0.00P     0.00P         0.00P
v or V   Varbytes     123      446k          753M
```

Default: b.

user_unescape="BOOL"

Unescape user names, tested only with UTF8 locales (check locale option to set it to some UTF8). Note: it's useful for squid with NTLM auth module configuration, when usernames contain coded (i.e. not US-ASCII) characters.

Default: false.

## DOWNLOADS FILE
The downloads is file, used by free-sa for generating downloads report (TTR). The file is a list of extensions (or endings of URLs): one extension per line.

Note:

file should end with empty line.

Note:

file should be sorted, use sort(1).

Note:

for mail log files you can use downloads file as list of destination domains, so you will see all (if dld_limit option is not set) messages directed to specified domains in downloads report (TTR).

## FILTER FILES
The global or local filter purpose is including OR excluding records from processing by free-sa. Currently the only supported filtering fields are internal name (iname) and URL. Global filter affects all data processed by free-sa, while local filter affects only local filter report.

### File format
The file consists of options with arguments, comments and empty lines. Each line that starts with a hash (#) symbol is a comment. Options and arguments are case sensitive and of the form: Option Argument. Each policy option is unique, it may appear only once.

Allowed options (allowed policy ranges is specified at brackets for each policy option):

U Policy for URLs (0-5).

u Entry of URLs list.

I Policy for internal names (0-5).

i Entry of internal names list.

C Policy for codes (0-1).

c Entry of codes list.

M Policy for methods (0-1).

m Entry of methods list.

S Policy for stat codes (0-1).

s Entry of stat codes list.

B Policy for bytes (0-5).

b Only one entry allowed here - upper bytes limit.

Allowed policies:

0 Include match (by substring for U, I policies).

1 Exclude match (by substring for U, I policies).

2 Include match by exact string.

3 Exclude match by exact string.

4 Include match by extended POSIX regular expression.

5 Exclude match by extended POSIX regular expression.

Allowed stat codes:

0 Actual traffic type.

1 Denied traffic type (delivery rejected for mail logs).

2 Cached traffic type.

3 Other local traffic type (ex: authentication errors).

Methods list must be filled with first uppercase letter of method name (P for PUT and POST).

Note:

file should end with empty line.

### Filter file examples
1. If we want to see only records related to users with '192.168.0.15', '192.168.0.27' IPs, and see their accesses to all sites except 'www.ourcorporatesite.com', then we can make next global filter file contents:

```
I 2
i 192.168.0.15
i 192.168.0.27
U 1
u tp://www.ourcorporatesite.com
```

2. If we want to see records related to Code Red, Code Red 2 and Nimda viruses activity at local filter report, then we can make next local filter file contents:

```
U 0
u XXXXXXXXXXXX
u NNNNNNNNNNNN
u cmd.exe
```

3. If we want to see urls of actually downloaded from net only images in gif format at local filter report, then we can make next local filter file contents:

```
U 4
u \.(gif|GIF|Gif)$
S 0
s 0
```

## USERTAB FILE
The usertab file is used by free-sa to replace visible username or IP by specified string in reports.

### File format
The file consists of lines, each line is original name or IP with translated string.

Note:

file should end with empty line.

Note:

file should be encoded in free-sa locale charset specified by 'locale' option, if it's not defined then use runtime locale charset.

### Usertab example
If we want to replace '192.168.0.1' IP with 'Mr. Michael' and '192.168.0.2' IP with 'Ms. Catarine' then we can make next usertab file contents:

```
192.168.0.1 Mr. Michael
192.168.0.2 Ms. Catarine
```

## SEE ALSO
free-sa(1), squid(8), sarg(1)

## AUTHOR
Copyright (C) 1997, 2006-2009 Oleg Sapon <xsov@mail.ru>


package: freehdl

title: v2cc.libs(5)

text:
# v2cc.libs(5)

## NAME
v2cc.libs - VHDL library mapping file for the FreeHDL compiler/simulator.

## DESCRIPTION
FreeHDL is a compiler/simulator suite for the hardware description language VHDL. VHDL'93 as well as VHDL'87 standards are supported.

FreeHDL translates the original VHDL source FILEs into C++. Then, the C++ source can be compiled and linked to the kernel to build the simulation program. Starting the generated executable will simulate the corresponding VHDL model. The actual build process to generate the simulator from the VHDL source is a complex process which is handled by the gvhdl script.

FreeHDL does not have a opaque notion of design libraries. VHDL files are not pre-analyzed and checked into some library data base as in other VHDL compiler/simulator systems. Instead, whenever a reference to a design unit needs to be made, FreeHDL parses the VHDL code of that design unit from fresh. Therefore, it needs to be able to find the source file of a design unit given the VHDL name of that unit.

Thus, as far as FreeHDL is concerned, a design library is a mapping from VHDL identifiers to file names. There is also a mapping for getting library names from mapping files.

Such a mapping is specified via a "mapping file". It contains a list of pattern rules that each transform a certain class of identifiers into file names.

The syntax of a mapping file is:

Lexical:

litchar: 'a'..'z' | 'A'..'Z' | '0'..'9' | '_' | '/' | '-' | '.' escchar

escchar: '\' char

whitespace: ' ' | '\n' | '\v' | '\t' | comment

comment: '#' any_character* '\n'

opchar: ':' | ',' | '(' | ')'

specchar: every printable char except litchar, whitespace and opchar

symchar: litchar | specchar

symbol: symchar+

Grammar:

mapping: version patternrule*

version: "v2cc_mapfile" "0"

patternrule: symbol [ ':' symbol ]

Comments are ignored.

A mapping files specifies a sequence of pattern rules. When transforming an identifier, each rule is tried in turn and the first one that matches is chosen.

A rule looks like

pattern: filename

When the ": filename" part is omitted, it defaults to "patternEXT" where "EXT" is determined by the user of the mapping file.

The "pattern" can contain the special character "<" which introduces a `wildcard'. The "<" must be followed by a ">", with arbitrary characters inbetween. These characters form the name of the wildcard. A wildcard matches any sequence of characters. There can be any number of wildcards in the pattern, but each must have a unique name.

The "filename" can also contain the character "<", followed by a name, followed by ">". There, it introduces a `wildcard substitution'. It will be replaced with the characters that matched the wildcard with the same name in "pattern". When there is no wildcard in "pattern" with the right name, it will be replaced with nothing. While doing this replacement, the characters "#" and "/" are replaced as "##", and "#-" respectively. No other character translations are done, so if you have funny characters in your VHDL identifiers, you will have funny characters in your filenames.

Before doing the comparison with the patterns, the VHDL identifier is brought into a canonical form: when it is not an abstract identifier, all its characters are down-cased.

When the resulting filename is relative (does not begin with "/"), it is prefixed with the directory of the mapping file.

A non-existent mapping file is equivalent to the single rule

<>

An empty mapping file is just that: an empty mapping.

The mapping does not need to be reversible. It is OK when multiple identifiers map to a single filename.

No special character besides "<" and ">" is valid in "pattern" or "filename". They are reserved for future extensions.

The mapping files for going from design unit names to filenames are found by looking into directories specified by the `v2cc library path'. You can use the environment variable V2CC_LIBRARY_PATH and command line options to define the path. When the environment variable is not set, it defaults to a value that makes the standard libraries available that are distributed and installed with v2cc itself. When it is set, it completely overwrites this default value.

The variable V2CC_LIBRARY_PATH consists of ":" separated filenames. The filename "*" is replaced with the default value mentioned above.

In addition to the environment variable, you can use the "-L libdir" command line option with v2cc. The directories specified with "-L" are added in front of the ones specified by V2CC_LIBRARY_PATH. In the final library path, they appear in the same order as on the command line.

Looking for a design unit named UNIT in a library named LIB is done like this:

for each component of the library path, L

if L is a regular file

set LMAP to L

else if L is a directory

set LMAP to L/v2cc.libs

else

continue with next component

translate LIB into FLIB using LMAP with EXT=""

if FLIB.vhdl exists

terminate with FLIB.vhdl as the result

if FLIB.v2cc exists

set UMAP to FLIB.v2cc

else if FLIB is a directory

set UMAP to FLIB/v2cc.units

else

continue with next component

translate UNIT into FUNIT using UMAP with EXT=".vhdl"

terminate with FUNIT as the result

terminate unsuccessfully

This mechanism is used for all design units that are referenced from within VHDL code (or via other means). There is a complication with architectures and package bodies, though, because they are not uniquely identified by a single identifier. For them, a artificial identifier is constructed. Architectures get names of the form

<entity>(<architecture>)

while package bodies become

<package>(body)

For example, "architecture struct of model" is turned into "model(struct)" and "package body misc" is turned into "misc(body)".

When a design file contains multiple design units, they are all parsed, checked for correctness and remembered, but only the needed unit will be used for code generation. That is, when a design file contains both a package header and a package body and the package header is referenced from another design unit, no code will be generated for the package body. When one of the ignored units will be referenced later in the same invocation of v2cc, the design file will not be read again because all design units are retained in core.

## EXAMPLES
The simplest situation is when you have no mapping files at all. A design library is then a directory on your library path. The name of that directory is that of the library in VHDL. Each file in that directory with a ".vhdl" extension is used for a design unit with the same name as the file without the extension.

Say you have this directory structure

somedir/

std/

standard.vhdl

textio.vhdl

ieee/

numeric_bit.vhdl

std_logic_1164.vhdl

When you put "somedir" into your library path, you have access to the design units

STD.STANDARD

STD.TEXTIO

IEEE.NUMERIC_BIT

IEEE.STD_LOGIC_1164

In this situation, you have one file per design unit. When you have one file per design library, it would look like this

somedir/

fmf.vhdl

All references to design units in the FMF design library would be routed to "fmf.vhdl".

As another example assume that all VHDL libraries are mapped into subdirs starting from root directory "/foo". Further, assume that there are VHDL libraries named "lib1" and "lib2". They shall be mapped to subdir "/foo/lib1_dir" and "/foo/lib2_dir". Hence, the file/directory structure is as follows:

/foo <- library root directory /foo/v2cc.libs <- mapping control file /foo/lib1_dir <- library dir for VHDL library lib1 /foo/lib1_dir/comp1.vhdl <- file that contains VHDL model comp1 /foo/lib2_dir <- library dir for VHDL library lib2 /foo/lib2_dir/comp2.vhdl <- file that contains VHDL model comp2

Then, file "/foo/v2cc.libs" should contain:

v2cc_mapfile 0 lib1 : lib1_dir lib2 : lib2_dir

In order to compile a design named comp1 (stored in file comp1.vhdl) into VHDL library lib1 goto subdir "/foo/lib1_dir" and execute:

gvhdl -c -L .. -l lib1 comp1.vhdl

Note that option "-l lib1" forces the compiler to associate the model stored in "comp1.vhdl" with VHDL library lib1. Note further, that the compiler switch "-L .." specifies the path to the directory where "v2cc.libs" is stored. You may also specify an absolute path:

gvhdl -c -L /foo -l lib1 comp1.vhdl

Note that comp1 should reside in a file named "comp1.vhdl".

If lib2 contains a design comp2 that makes use of comp1 from lib1 then goto "/foo/lib2_dir" and run the following command to create an executable for model comp2:

gvhdl -L .. -l lib2 comp2.vhdl ../lib1_dir/comp1.o

## SEE ALSO
gvhdl(1), freehdl-v2cc(1), freehdl-config(1)

## AVAILABILITY
The latest version of FreeHDL can always be obtained from www.freehdl.seul.org

## REPORTING BUGS
Known bugs are documented within the BUGS file. If your report addresses a parser related topic then contact Marius Vollmer <mvo@zagadka.ping.de>. If it is related to the code generator or compiler then send an email to Edwin Naroska <edwin@ds.e-technik.uni-dortmund.de>. If your are not sure send it to Edwin. He will take care of forwarding your report to the appropriate recipient.

## COPYRIGHT
Edwin Naroska © 1999, 2000, 2001, 2002, 2003, 2004, 2005 <edwin@ds.e-technik.uni-dortmund.de>

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

## AUTHORS
Written by Marius Vollmer <mvo@zagadka.ping.de> and Edwin Naroska <edwin@ds.e-technik.uni-dortmund.de>.