MCPcopy
hub / github.com/liamg/darktile

github.com/liamg/darktile @v0.0.11 sqlite

repository ↗ · DeepWiki ↗ · release v0.0.11 ↗
499 symbols 1,589 edges 70 files 57 documented · 11%
README

Darktile

Darktile is a GPU rendered terminal emulator designed for tiling window managers.

Demo

Features

  • GPU rendering
  • Unicode support
  • Variety of themes available (or build your own!)
  • Compiled-in powerline font
  • Works with your favourite monospaced TTF/OTF fonts
  • Font ligatures (turn it off if you're not a ligature fan)
  • Hints: Context-aware overlays e.g. hex colour viewer, octal permission annotation
  • Take screenshots with a single key-binding
  • Sixels
  • Window transparency (0-100%)
  • Customisable cursor (most popular image formats supported)

Installation

Install dependencies:

  • xorg-dev
  • libgl1-mesa-dev

Grab a binary from the latest release, chmod +x it and place it in your $PATH.

If you're too lazy to do the above and you like to live life on the edge, you can pipe this script to sudo:

curl -s "https://raw.githubusercontent.com/liamg/darktile/main/scripts/install.sh" | sudo bash

Configuration

Configuration files should be created in $XDG_CONFIG_HOME/darktile/ if the variable is defined, otherwise in $HOME/.config/darktile/.

If you wish, you can create an example config file as a starting point using darktile --rewrite-config.

Darktile will use sensible defaults if no config/theme files are available. The same applies when you omit settings from config/theme files, meaning it is perfectly valid to start with empty config/theme files and add to them as required to override the default behaviour.

Config File

Found in the config directory (see above) inside config.yaml.

opacity: 1.0       # Window opacity: 0.0 is fully transparent, 1.0 is fully opaque
font:
  family: ""       # Font family. Find possible values for this by running 'darktile list-fonts'
  size: 16         # Font size
  dpi: 72          # DPI
  ligatures: true  # Enable font ligatures e.g. render '≡' instead of '==='
cursor:
  image: ""        # Path to an image to render as your cursor (defaults to standard rectangular cursor)

Example Theme

Found in the config directory (see above) inside theme.yaml. You can replace this file with a symlink or any theme file from darktile-themes.

black: '#1d1f21'
red: '#cc6666'
green: '#b5bd68'
yellow: '#f0c674'
blue: '#81a2be'
magenta: '#b294bb'
cyan: '#8abeb7'
white: '#c5c8c6'
brightblack: '#666666'
brightred: '#d54e53'
brightgreen: '#b9ca4a'
brightyellow: '#e7c547'
brightblue: '#7aa6da'
brightmagenta: '#c397d8'
brightcyan: '#70c0b1'
brightwhite: '#eaeaea'
background: '#1d1f21'
foreground: '#c5c8c6'
selectionbackground: '#aa8800'
selectionforeground: '#ffffff'
cursorforeground: '#1d1f21'
cursorbackground: '#c5c8c6'

Key Bindings

Action Binding
Copy ctrl + shift + C
Paste ctrl + shift + V
Decrease font size ctrl + -
Increase font size ctrl + =
Take screenshot ctrl + shift + [
Open URL ctrl + click

FAQ

What happened to Aminal?

The name changed as a result of a near-complete rewrite of Aminal. Also, Google's "did you mean animal?" was getting pretty annoying.

Did Darktile drop Windows/OSX support?

While the project likely won't need much work to build on Windows/OSX, the focus is to develop Darktile for tiling window managers under Linux. If you'd like to get Darktile working for other environments, pull requests are always very welcome, especially when preceded by issues/discussion.

Extension points exported contracts — how you extend this code

Hinter (Interface)
(no doc) [5 implementers]
internal/app/darktile/hinters/registry.go
HintAPI (Interface)
(no doc) [2 implementers]
internal/app/darktile/hinters/api.go
WindowManipulator (Interface)
(no doc) [1 implementers]
internal/app/darktile/termutil/csi.go
Option (FuncType)
(no doc)
internal/app/darktile/gui/options.go
RuneMatcher (FuncType)
(no doc)
internal/app/darktile/termutil/selection.go

Core symbols most depended-on inside this repo

GetActiveBuffer
called by 103
internal/app/darktile/termutil/terminal.go
WriteToPty
called by 59
internal/app/darktile/termutil/terminal.go
newLine
called by 58
internal/app/darktile/termutil/buffer.go
carriageReturn
called by 55
internal/app/darktile/termutil/buffer.go
RepeatPressed
called by 46
internal/app/darktile/gui/key_states.go
String
called by 43
internal/app/darktile/termutil/line.go
CursorColumn
called by 35
internal/app/darktile/termutil/buffer.go
CursorLine
called by 28
internal/app/darktile/termutil/buffer.go

Shape

Method 338
Function 109
Struct 37
TypeAlias 9
FuncType 3
Interface 3

Languages

Go100%

Modules by API surface

internal/app/darktile/termutil/buffer.go80 symbols
internal/app/darktile/termutil/csi.go56 symbols
internal/app/darktile/termutil/buffer_test.go34 symbols
internal/app/darktile/termutil/terminal.go27 symbols
internal/app/darktile/gui/manipulator.go22 symbols
internal/app/darktile/font/manager.go20 symbols
internal/app/darktile/sixel/decoder.go19 symbols
internal/app/darktile/termutil/selection.go17 symbols
internal/app/darktile/termutil/theme.go12 symbols
internal/app/darktile/termutil/cell.go12 symbols
internal/app/darktile/gui/mouse.go12 symbols
internal/app/darktile/hinters/registry.go9 symbols

Dependencies from manifests, versioned

github.com/creack/ptyv1.1.12 · 1×
github.com/d-tsuji/clipboardv0.0.3 · 1×
github.com/go-gl/glfw/v3.3/glfwv0.0.0-2021072700181 · 1×
github.com/hajimehoshi/ebiten/v2v2.2.0-alpha.11.0.20 · 1×
github.com/liamg/fontinfov0.1.3 · 1×
github.com/mvdan/xurlsv1.1.0 · 1×
github.com/skratchdot/open-golangv0.0.0-2020011605553 · 1×
golang.org/x/expv0.0.0-2021072917272 · 1×
golang.org/x/imagev0.0.0-2021062800285 · 1×
golang.org/x/sysv0.0.0-2021063000523 · 1×

For agents

$ claude mcp add darktile \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact