TINT2(1)
π tint2(1) β General Commands Manual π
okay bestie, pull up a chair, we're reading the tint2 manual together and honestly? it ate. let's go β¨
πΈ NAME πΈ
tint2 β lightweight panel/taskbar
β¨ DESCRIPTION β¨
tint2 is a simple panel/taskbar made for modern X window managers. it was specifically made for Openbox but like, it should also work with other window managers (GNOME, KDE, XFCE etc.) β it's flexible like that, we love a versatile icon π
Features:
- Panel with taskbar, system tray, clock and launcher icons;
- Easy to customize: color/transparency on fonts, icons, borders and backgrounds;
- Pager like capability: move tasks between workspaces (virtual desktops), switch between workspaces;
- Multi-monitor capability: create one panel per monitor, showing only the tasks from the current monitor;
- Customizable mouse events.
Goals:
- Be unintrusive and light (in terms of memory, CPU and aesthetic);
- Follow the freedesktop.org specifications;
- Make certain workflows, such as multi-desktop and multi-monitor, easy to use.
π¦ SYNOPSIS π¦
tint2 [OPTION...]
π OPTIONS π
-cpath_to_config_file β specifies which configuration file to use instead of the default. (yes, you can have many, we stan a multi-instance queen π)-v,--versionβ prints version information and exits.-h,--helpβ display this help and exits.
π CONFIGURATION π
π Table of contents π
- Introduction
- Backgrounds and borders
- Gradients
- Panel
- Launcher
- Taskbar/Pager
- Taskbar buttons
- Mouse actions for taskbar buttons
- System tray
- Clock
- Tooltip
- Battery
- Executor
- Button
- Separator
- Example configuration
π± Introduction π±
these are the instructions for configuring tint2 directly by editing its config file. you may also use instead the graphical interface tint2conf β no judgement, whatever vibes with you π«Ά
the first time you run tint2, it will create the config file in $HOME/.config/tint2/tint2rc (this applies if you have done a clean install. running tint2 in the source directory without doing make install will not create the config file. rude? maybe. facts? yes.)
you can also specify another file on the command line with the -c option, e.g.: tint2 -c $HOME/tint2.conf. this can be used to run multiple instances of tint2 that use different settings β main character energy, one panel per personality π«
if you change the config file while tint2 is running, the command killall -SIGUSR1 tint2 will force tint2 to reload it. no restart needed, we love efficiency.
all the configuration options supported in the config file are listed below. try to respect as much as possible the order of the options as given below β the order is lowkey the whole plot π
π¨ Backgrounds and borders π¨
the tint2 config file starts with the options defining background elements with borders:
rounded= number_of_pixels : the corner radiusrounded_corners= TL TR BR BL: corners to be rounded (top left, top right, bottom right, bottom left). If not specified - all corners are rounded. (since 17.1)border_width= integer : the border width in pixelsborder_sides= LRTB : sides to draw the border on (left, right, top, bottom). If not specified - all sides are used. (since 0.12.12)background_color= color opacity- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque. Note that for a transparent panel you need to enable a desktop compositor (such as compton or compiz).
- color is specified in hex RGB, e.g.
border_color= color opacity- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque
- color is specified in hex RGB, e.g.
background_color_hover= color opacity (default: same asbackground_color) (since 0.12.3)- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque. Note that for a transparent panel you need to enable a desktop compositor (such as compton or compiz)
- color is specified in hex RGB, e.g.
border_color_hover= color opacity (default: same asborder_color) (since 0.12.3)- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque
- color is specified in hex RGB, e.g.
background_color_pressed= color opacity (default: same asbackground_color_hover) (since 0.12.3)- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque. Note that for a transparent panel you need to enable a desktop compositor (such as compton or compiz)
- color is specified in hex RGB, e.g.
border_color_pressed= color opacity (default: same asborder_color_hover) (since 0.12.3)- color is specified in hex RGB, e.g.
#ff0000is red - opacity varies from (0 to 100), where 0 is fully transparent, 100 is fully opaque
- color is specified in hex RGB, e.g.
border_content_tint_weight= integer : Mixes the border color with the content color (for tasks, this is the average color of the window icon). Values must be between 0 (no mixing) and 100 (fully replaces the color). (since 16.0)background_content_tint_weight= integer : Mixes the background color with the content color (for tasks, this is the average color of the window icon). Values must be between 0 (no mixing) and 100 (fully replaces the color). (since 16.0)
you can define as many backgrounds as you want π for example, the following config defines two backgrounds:
rounded = 1
border_width = 0
background_color = #282828 100
border_color = #000000 0
rounded = 1
border_width = 0
background_color = #f6b655 90
border_color = #cccccc 40
tint2 automatically identifies each background with a number starting from 1 (1, 2, ...). afterwards, you can apply a background to objects (panel, taskbar, task, clock, systray) using the background id, for example:
panel_background_id = 1
taskbar_background_id = 0
task_background_id = 0
task_active_background_id = 2
systray_background_id = 0
clock_background_id = 0
identifier 0 refers to a special background which is fully transparent, identifier 1 applies the first background defined in the config file etc. got it? iconic. π§
π Gradients π
(available since 0.13.0)
backgrounds also allow specifying gradient layers that are drawn on top of the solid color background. yes, layers. we're fancy now β¨
first the user must define one or more gradients in the config file, each starting with gradient = TYPE. these must be added before backgrounds. (order matters, bestie!)
then gradients can be added by index to backgrounds, using the gradient_id = INDEX, gradient_id_hover = INDEX and gradient_id_pressed = INDEX, where INDEX is the gradient index, starting from 1.
π¦ Gradient types π¦
gradients vary the color between fixed control points: vertical gradients are top-to-bottom; horizontal gradients are left-to-right; radial gradients go center-to-corners.
the user must specify the start and end colors, and can optionally add extra color stops in between using the color_stop option, as explained below.
π Vertical gradient, with color varying from the top edge to the bottom edge, two colors
gradient = vertical
start_color = #rrggbb opacity
end_color = #rrggbb opacity
π Horizontal gradient, with color varying from the left edge to the right edge, two colors
gradient = horizontal
start_color = #rrggbb opacity
end_color = #rrggbb opacity
π Radial gradient, with color varying from the center to the corner, two colors:
gradient = radial
start_color = #rrggbb opacity
end_color = #rrggbb opacity
π Adding extra color stops (0% and 100% remain fixed, more colors at x% between the start and end control points)
color_stop = percentage #rrggbb opacity
π Gradient examples π
# Gradient 1: thin film effect
gradient = horizontal
start_color = #111122 30
end_color = #112211 30
color_stop = 60 #221111 30
# Gradient 2: radial glow
gradient = radial
start_color = #ffffff 20
end_color = #ffffff 0
# Gradient 3: elegant black
gradient = vertical
start_color = #444444 100
end_color = #222222 100
# Gradient 4: elegant black
gradient = horizontal
start_color = #111111 100
end_color = #222222 100
# Background 1: Active desktop name
rounded = 2
border_width = 1
border_sides = TBLR
background_color = #555555 10
border_color = #ffffff 60
background_color_hover = #555555 10
border_color_hover = #ffffff 60
background_color_pressed = #555555 10
border_color_pressed = #ffffff 60
gradient_id = 3
gradient_id_hover = 4
gradient_id_pressed = 2
[...]
π Panel π
panel_items= LTSBC defines the itemstint2will show and the order of those items. each letter refers to an item, defined as:Lshows the LauncherTshows the TaskbarSshows the Systray (also called notification area)Bshows the Battery statusCshows the ClockFadds an extensible spacer (freespace). You can specify more than one. Has no effect ifTis also present. (since 0.12)Eadds an executor plugin. You can specify more than one. (since 0.12.4)Padds a push button. You can specify more than one. (since 0.14):adds a separator. You can specify more than one. (since 0.13.0)
for example, panel_items = STC will show the systray, the taskbar and the clock (from left to right).
panel_monitor= monitor (all or primary or 1 or 2 or ...) : which monitortint2draws the panel on- the first monitor is 1
- Use
panel_monitor = allto get a separate panel per monitor β¨ primary_monitor_first= boolean (0 or 1) β Puts the primary monitor ahead of all the other monitors in the list. (since 0.12.4; removed in 1.0, useprimaryinstead) πpanel_position= vertical_position horizontal_position orientation β where the panel lives and which way it stretches.- vertical_position is one of:
bottom,top,center - horizontal_position is one of:
left,right,center - orientation is one of:
horizontal,vertical
- vertical_position is one of:
panel_size= width height β the panel's dimensions, bestie π- width and height can be written with no units at all (e.g.
123) and that means pixels, or you can slap a%on the end as a percentage of the monitor size (e.g.50%). Use100%for full monitor width/height.
- width and height can be written with no units at all (e.g.
Example, look at her go:
# The panel's width is 94% the size of the monitor, the height is 30 pixels:
panel_size = 94% 30
scale_relative_to_dpi= integer β if you set this to a non-zero value, HiDPI scaling is on π. Each panel is visible on a different monitor, so each panel gets its own specific scaling factor. That factor is computed as the ratio between the monitor DPI (grabbed from the dimensions in pixels and millimeters from RandR) and a configured reference DPI β and that reference DPI is the DPI for which existing user configs looked normal, for backward compatibility. iykyk π«Άscale_relative_to_screen_height= integer β basically the same idea asscale_relative_to_dpi, except the scaling factor is computed as the ratio between the monitor height andscale_relative_to_screen_height. And it stacks, fr fr: the effect is cumulative withscale_relative_to_dpi, so if both options are present, the factors get multiplied together β¨panel_shrink= boolean (0 or 1) β set it to1and the panel will shrink down to a compact size dynamically. (since 0.13) πpanel_margin= horizontal_margin vertical_margin β margins define the distance between the panel and the horizontal/vertical monitor edge. Use0if you want a panel the exact same size as the edge of the monitor (aka no margin at all).panel_padding= horizontal_padding vertical_padding spacing β please refer to the image below πΌοΈfont_shadow= boolean (0 or 1)panel_background_id= integer β which background to use for the panel.wm_menu= boolean (0 or 1) β defines if tint2 forwards unhandled mouse events to your window manager. Super useful for window managers like openbox, which pop up the start menu when you right click on the desktop πpanel_dock= boolean (0 or 1) β defines if tint2 gets placed into the window manager's dock. If you're on the openbox window manager, it's advised that you also use a modifier for themoveButtonoption, otherwise the mouse click is not forwarded to tint2 (in/.config/openbox/rc.xml) β οΈpanel_pivot_struts= boolean (0 or 1) β defines if tint2 flat-out lies to the window manager about its orientation (horizontal vs vertical) when requesting reserved space with STRUTs (peepstrut_policybelow π). On some window managers this lets you place a panel in the middle of the virtual screen, e.g. on the bottom edge of the top monitor in a vertical dual-monitor setup. Sneaky but iconic.panel_layer= bottom/normal/top β places tint2 into thebottom/normal/toplayer. This is helpful for specifying whether the panel can be covered by other windows or not. Default is the bottom layer, but with real transparency,normalortoplayer may be a nice alternative πΈstrut_policy= follow_size/minimum/none β STRUTs are what the window manager uses to decide the size of maximized windows.
Note: on multi-monitor (Xinerama) setups, the panel generally must be placed at the edge (not in the middle) of the virtual screen for this to work correctly (though on some window managers, setting panel_pivot_struts may work around this limitation).
follow_sizemeans the maximized windows always resize to have a common edge with tint2.minimummeans the maximized windows always expand to have a common edge with the hidden panel. Useful if theautohideoption is enabled.nonemeans the maximized windows use the full screen size.
panel_window_name= string β sets the name of the panel's window. Default:'tint2'. (since 0.12) πdisable_transparency= boolean (0 or 1) β whether to disable transparency instead of detecting if it's supported. Genuinely a lifesaver on broken graphics stacks. (since 0.12)mouse_effects= boolean (0 or 1) β whether to enable mouse hover effects for clickable items. (since 0.12.3) β¨mouse_hover_icon_asb= alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100) β adjusts the icon color and transparency on mouse hover (works only whenmouse_effects = 1). (since 0.12.3)mouse_pressed_icon_asb= alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100) β adjusts the icon color and transparency on mouse press (works only whenmouse_effects = 1). (since 0.12.3)autohide= boolean (0 or 1) β whether to enable panel hiding when the mouse cursor exits the panel πautohide_show_timeout= float β show timeout in seconds after the mouse cursor enters the panel. Use.as the decimal separator, bestie.autohide_hide_timeout= float β hide timeout in seconds after the mouse cursor exits the panel. Use.as the decimal separator again.autohide_height= integer β panel height (width for vertical panels) in hidden mode.
π Launcher π
launcher_item_app= path_to_application β eachlauncher_item_apphas to be a file path to a.desktopfile following the freedesktop.org specification β¨http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.htmlβ©. The paths may begin with~, which expands to the path of the user's home directory. If you only give a file name, the file gets searched for in the standard application directories ($XDG_DATA_HOME/applications,~/.local/share/applications,$XDG_DATA_DIRS/applications,/usr/local/share/applications,/usr/share/applications,/opt/share/applications). πlauncher_apps_dir= path_to_directory β specifies a path to a directory from which the launcher loads all the.desktopfiles (and yes, all subdirectories are explored recursively, she's thorough π ). Can be used multiple times. The path may begin with~, which expands to the path of the user's home directory. (since 0.12)launcher_background_id= integer β defines which background to use.launcher_icon_background_id= integer β defines which background to use for icons.launcher_padding= horizontal_padding vertical_padding spacinglauncher_icon_size= integer β the launcher icon size, in pixels.launcher_icon_theme= name_of_theme β (optional) uses the specified icon theme to display shortcut icons. Note that tint2 will detect and use the icon theme of your desktop if you have an XSETTINGS manager running (which, let's be real, you probably do), unlesslauncher_icon_theme_override = 1πlauncher_icon_theme_override= boolean (0 or 1) β whetherlauncher_icon_themeoverrides the value obtained from the XSETTINGS manager. (since 0.12)launcher_icon_asb= alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100) β adjusts the icon color and transparency.launcher_tooltip= boolean (0 or 1) β whether to show tooltips for the launcher icons.startup_notifications= boolean (0 or 1) β whether to show startup notifications when starting applications from the launcher. (since 0.12) π₯
ποΈ Taskbar / Pager ποΈ
taskbar_mode= single_desktop/multi_desktopsingle_desktopβ shows a normal taskbar listing the tasks running on the current virtual desktop (also known as a 'workspace');multi_desktopβ pager-like capability. Shows multiple taskbars, one per virtual desktop, with which:- You can drag-and-drop tasks between virtual desktops;
- You can switch between virtual desktops.
taskbar_hide_if_empty= boolean (0 or 1) β if enabled, in multi-desktop mode the taskbars corresponding to empty desktops that aren't the current desktop get hidden. (since 0.13) πtaskbar_distribute_size= boolean (0 or 1) β if enabled, in multi-desktop mode it distributes the available size between taskbars proportionally to the number of tasks. Default: disabled. (since 0.12)taskbar_padding= horizontal_padding vertical_padding spacingtaskbar_background_id= integer β which background to usetaskbar_active_background_id= integer β which background to use for the taskbar of the current virtual desktop.taskbar_hide_inactive_tasks= boolean (0 or 1) β if enabled, the taskbar shows only the active task. (since 0.12)taskbar_hide_different_monitor= boolean (0 or 1) β if enabled, the taskbar shows only the tasks from the current monitor. So useful when you're running different tint2 instances on different monitors, each one with its own config. (since 0.12) π₯οΈtaskbar_hide_different_desktop= boolean (0 or 1) β if enabled, the taskbar shows only the tasks from the current desktop. Great for making multi-desktop taskbars more compact while still letting you switch desktops with a mouse click. (since 1.0)taskbar_always_show_all_desktop_tasks= boolean (0 or 1) β only does anything iftaskbar_mode = multi_desktop. If enabled, tasks that appear on all desktops are shown on all taskbars. Otherwise, they're shown only on the taskbar of the current desktop. (since 0.12.4)taskbar_sort_order= none/title/center β specifies the sort order of the tasks on the taskbar. (since 0.12) βnoneβ literally no sorting. New tasks just get appended at the end of the taskbar whenever they show up. chaos, but make it organized πtitleβ sorts the tasks by title.applicationβ sorts the tasks by application name. (since 16.3) π«Άcenterβ sorts the tasks by their window centers.mruβ shows the most recently used tasks first. (since 0.12.4) β¨lruβ shows the most recently used tasks last. (since 0.12.4)
task_align = left/center/rightβ specifies the alignment of the tasks on the taskbar. Default:left.taskbar_name = boolean (0 or 1)β whether to show the virtual desktop name in the taskbar.taskbar_name_padding = paddingβ padding for the virtual desktop name.taskbar_name_background_id = integerβ which background to use for the desktop name.taskbar_name_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font configuration for the desktop name.taskbar_name_font_color = color opacity (0 to 100)β font color for the desktop name.taskbar_name_active_background_id = integerβ which background to use for the name of the current desktop. πtaskbar_name_active_font_color = color opacity (0 to 100)β font color for the name of the current desktop.
π Taskbar buttons π
okay so these next ones are all about how the individual task buttons look and behave, and there are a LOT of them, so buckle up bestie:
task_icon = boolean (0 or 1)β whether to display the task icon. heads up: there is no explicit option to control the task icon size; it depends on the vertical padding set withtask_padding.task_text = boolean (0 or 1)β whether to display the task text.task_centered = boolean (0 or 1)β whether the task text is centered.task_tooltip = boolean (0 or 1)β whether to show tooltips for tasks.task_thumbnail = boolean (0 or 1)β whether to show thumbnail tooltips for tasks. (since 16.0) πΌοΈtask_thumbnail_size = widthβ thumbnail size. (since 16.0)task_maximum_size = width heightβ the size cap situation, and it works differently depending on your panel:widthis used with horizontal panels to limit the size of the tasks. Usewidth = 0to get full taskbar width.heightis used with vertical panels.
task_padding = horizontal_padding vertical_padding spacingβ the padding sitch, fr fr.urgent_nb_of_blink = integerβ number of blinks on 'get attention' events. πtask_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β the font, obviously πtask_font_color = color opacity (0 to 100)β the font color.task_icon_asb = alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100)β adjust the task icon's color and transparency. π¨task_background_id = integerβ which background to use for non selected tasks.
for the next 3 options, STATUS can be active / iconified / urgent bestie, so mix and match:
task_STATUS_font_color = color opacity (0 to 100)β font color for that status.task_STATUS_icon_asb = alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100)β adjusts the task icon's color and transparency.task_STATUS_background_id = integerβ which background to use for the task.
π±οΈ Mouse actions for taskbar buttons π±οΈ
the possible mouse events are: left, middle, right, scroll_up, scroll_down.
the possible mouse actions are: none, close, toggle, iconify, shade, toggle_iconify, maximize_restore, desktop_left, desktop_right, next_task, prev_task.
use mouse_event = action to customize mouse actions. example:
mouse_middle = none
mouse_right = close
mouse_scroll_up = toggle
mouse_scroll_down = iconify
and here's what the actions actually mean, because iykyk:
noneβ ifwm_menu = 1is set, the mouse event is forwarded to the window manager. otherwise it is ignored.closeβ close the task.toggleβ toggle the task.iconifyβ iconify (minimize) the task.toggle_iconifyβ toggle or iconify the task.maximize_restoreβ maximized or minimized the task.shadeβ shades (collapses) the task.desktop_leftβ send the task to the desktop on the left.desktop_rightβ send the task to the desktop on the right.next_taskβ send the focus to next task.prev_taskβ send the focus to previous task.
π₯οΈ System Tray π₯οΈ
the little icon party zone. here's how to control it:
systray_padding = horizontal_padding vertical_padding spacingβ padding, duh πsystray_background_id = integerβ which background to use.systray_sort = ascending/descending/left2right/right2leftβ specifies the sorting order for the icons in the systray: in ascending/descending alphabetical order of the icon title, or always add icons to the right/left. note that withleft2rightorright2leftthe order can be different on panel restart. πsystray_icon_size = max_icon_sizeβ set the maximum system tray icon size to number. set to0for automatic icon sizing.systray_icon_asb = alpha (0 to 100) saturation (-100 to 100) brightness (-100 to 100)β adjust the systray icons color and transparency. β¨systray_monitor = integer (1, 2, ...) or primaryβ on which monitor to draw the systray. the first monitor is1. (since 0.12)systray_name_filter = stringβ regular expression to identify icon names to be hidden. for example,^audacious$will hide icons with the exact nameaudacious, whileaudwill hide any icons havingaudin the name. (since 0.13.1) π΅οΈ
β° Clock β°
time is a construct but the clock config is real:
time1_format = %H:%Mβ the format used by the first line of the clock.time1_format,time2_formatandclock_tooltipuse the 'strftime' syntax. more info can be found here: http://www.manpagez.com/man/3/strftime/ π- to hide the clock, comment
time1_formatandtime2_format. (bye bye clock π)
time1_timezone = :US/Hawaiiβ the timezone sitch:time1_timezone,time2_timezoneandclock_tooltip_timezonecan be used to specify a timezone. if you do not specify a value the system-wide timezone is used. the timezones can usually be found in/usr/share/zoneinfo. if your timezones are in a different directory, you need to specify the absolute path, e.g.time1_timezone = :/different/zoneinfo/dir/US/Hawaii. always prepend the timezone with a':'β οΈ
time1_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font for line 1.time2_format = %A %d %Bβ format for line 2.time2_timezone = :Europe/Berlinβ timezone for line 2.time2_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font for line 2.clock_font_color = color opacity (0 to 100)β font color, gorgeous πclock_padding = horizontal_padding vertical_paddingβ padding.clock_background_id = integerβ which background to use.clock_tooltip = %a, %d. %b %Yβ format for the clock's tooltip.clock_tooltip_timezone = :UTCβ timezone for the tooltip.clock_lclick_command = textβ command to execute on left click.clock_rclick_command = textβ command to execute on right click.clock_mclick_command = textβ command to execute on middle click. (since 0.12.1)clock_uwheel_command = textβ command to execute on wheel scroll up. (since 0.12.1)clock_dwheel_command = textβ command to execute on wheel scroll down. (since 0.12.1)
π¬ Tooltip π¬
the little pop-up besties that tell you things:
tooltip_padding = horizontal_padding vertical_paddingβ padding for tooltips.tooltip_show_timeout = floatβ delay to show the tooltip in seconds. use.as decimal separator. β±οΈtooltip_hide_timeout = floatβ delay to hide the tooltip in seconds. use.as decimal separator.tooltip_background_id = integerβ which background to use for tooltips. note that with fake transparency the alpha channel and corner radius options are not respected. πtooltip_font_color = color opacity (0 to 100)β font color for tooltips.tooltip_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font for tooltips.
π Battery π
keeping an eye on your juice, no cap:
battery_hide = never/integer (0 to 100)β at what battery percentage the battery item is hidden.battery_low_status = integerβ at what battery percentage the low command is executed.battery_low_cmd = xmessage 'tint2: Battery low!'β command to execute when the battery is low. π¨battery_full_cmd = notify-send "battery full"β command to execute when the battery is full. πbat1_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font for battery line 1.bat2_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β font for battery line 2.battery_font_color = color opacity (0 to 100)β font color for the battery.bat1_format = FORMAT_STRINGβ format for battery line 1. Default:%p. (since 1.0) here's the format specification bestie:%s: state (charging,discharging,full,unknown).%m: minutes left until completely charged/discharged (estimated).%h: hours left until completely charged/discharged (estimated).%t: time left. shows"hrs:mins"when charging/discharging, or"Ful\"when full.%p: percentage. includes the%sign.%P: percentage. without the%sign.
bat2_format = FORMAT_STRINGβ format for battery line 2. Default:%t. (since 1.0)battery_padding = horizontal_padding vertical_paddingβ padding for the battery.battery_background_id = integerβ which background to use for the battery.battery_tooltip_enabled = boolean (0 or 1)β enable/disable battery tooltips. (since 0.12.3)battery_lclick_command = textβ command to execute on left click. (since 0.12.1)battery_rclick_command = textβ command to execute on right click. (since 0.12.1)battery_mclick_command = textβ command to execute on middle click. (since 0.12.1)battery_uwheel_command = textβ command to execute on wheel scroll up. (since 0.12.1)battery_dwheel_command = textβ command to execute on wheel scroll down. (since 0.12.1)ac_connected_cmd = textβ command to execute when the power adapter is plugged in. (since 0.12.3) πac_disconnected_cmd = textβ command to execute when the power adapter is unplugged. (since 0.12.3) π
π§ Executor π§
execp = newβ begins the configuration of a new executor plugin. multiple such plugins are supported; just use multipleEs inpanel_items. (since 0.12.4) β¨execp_name = textβ a name you can hand totint2-send refresh-execpso it re-runs the command. think of it as the executor's @ handle π (since 17.0.2)execp_command = textβ the command to execute. the whole point, honestly. (since 0.12.4)execp_interval = integerβ the command runs again execp_interval seconds after the moment it exits. if it's zero, the command runs exactly once and that's it, one-and-done bestie. (since 0.12.4)execp_continuous = integerβ if it's non-zero, you get the last execp_continuous lines of the command's output displayed, every execp_continuous lines. this is the moment for stuff that never stops talking, likeping 127.0.0.1. if zero, the output shows up only after the command finishes. (since 0.12.4)execp_has_icon = boolean (0 or 1)β set it to1and the very first line the command prints gets read as a path to an image file. first line = the icon, no cap. (since 0.12.4)execp_cache_icon = boolean (0 or 1)β withexecp_cache_icon = 0the image gets reloaded every time the command runs. super useful if the program behindexecp_commandkeeps changing that file on disk π¨ (since 0.12.4)execp_icon_w = integerβ pair it withexecp_icon_hto resize the image. if one of them is zero/missing, the image rescales proportionally. if both are zero/missing, no rescaling at all. (since 0.12.4)execp_icon_h = integerβ seeexecp_icon_w. same energy, vertical edition. (since 0.12.4)execp_tooltip = textβ the tooltip. left empty β no tooltip shows up. missing entirely β the command's standard error becomes the tooltip, and if that stderr is empty you get info about when the command last ran instead. and okay, an ANSI clear screen sequence can reset the contents:- shell:
printf '\e[2J' - C:
printf ("\x1b[2J"); - shell using
tputfrom ncurses:tput clear
- shell:
note: previous tint2 versions don't setTERM, so you've gotta do it manually βtput -Tansi.sys-old clear
execp_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β the font used to draw the text. (since 0.12.4)execp_font_color = color opacityβ the font color. (since 0.12.4)execp_markup = boolean (0 or 1)β non-zero means the command's output is treated as Pango markup, so you get rich text formatting, sparkles and all β¨ the format is documented here β¨https://developer.gnome.org/pygtk/stable/pango-markup-language.htmlβ©.
β οΈ heads up: using this with commands that print data downloaded from the internet is a possible security risk. like, fr fr, be careful. (since 0.12.4)
execp_background_id = integerβ which background to use. (since 0.12.4)execp_centered = boolean (0 or 1)β whether to center the text. (since 0.12.4)execp_padding = horizontal_padding vertical_padding spacing_between_icon_and_text(since 0.12.4)execp_monitor = integer (1, 2, ...), primary or allβ which monitor the executor gets drawn on. the first monitor is1. (since 17.0)execp_lclick_command = textβ command to execute on left click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.12.4)execp_mclick_command = textβ command to execute on right click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.12.4)execp_rclick_command = textβ command to execute on middle click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.12.4)execp_uwheel_command = textβ command to execute on wheel scroll up. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.12.4)execp_dwheel_command = textβ command to execute on wheel scroll down. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.12.4)execp_lclick_command_sink = integer (-1, 0 or positive)β command sink forexecp_lclick_command. not defined or-1β the command runs in a new shell.0β use the sink for the local executor (executors only, babes). (since 17.1)execp_mclick_command_sink = integer (-1, 0 or positive)β command sink forexecp_mclick_command. not defined or-1β the command runs in a new shell.0β use the sink for the local executor (executors only). (since 17.1)execp_rclick_command_sink = integer (-1, 0 or positive)β command sink forexecp_rclick_command. not defined or-1β the command runs in a new shell.0β use the sink for the local executor (executors only). (since 17.1)execp_uwheel_command_sink = integer (-1, 0 or positive)β command sink forexecp_uwheel_command. not defined or-1β the command runs in a new shell.0β use the sink for the local executor (executors only). (since 17.1)execp_dwheel_command_sink = integer (-1, 0 or positive)β command sink forexecp_dwheel_command. not defined or-1β the command runs in a new shell.0β use the sink for the local executor (executors only). (since 17.1)
π§ͺ Executor samples
Bestie, these are the copy-paste slay examples. steal them, they're iconic π
Print the hostname
execp = new
execp_command = hostname
execp_interval = 0
Print disk usage for the root partition every 10 seconds
execp = new
execp_command = while df -h; do sleep 1; done | stdbuf -oL awk '$6 == "/" { print $6 ": " $2 " " $5 }'
execp_interval = 10
Button with icon and rich text, executes command when clicked
execp = new
execp_command = echo /usr/share/icons/elementary-xfce/emblems/24/emblem-colors-blue.png; echo '<span foreground="#7f7">Click</span> <span foreground="#77f">me</span> <span foreground="#f77">pls</span>'
execp_has_icon = 1
execp_interval = 0
execp_centered = 1
execp_font = sans 9
execp_markup = 1
execp_font_color = #aaffaa 100
execp_padding = 2 0
execp_tooltip = I will tell you a secret...
execp_lclick_command = zenity --info "--text=$(uname -sr)"
execp_background_id = 2
Desktop pager with text
execp = new
execp_command = xprop -root -spy | stdbuf -oL awk '/^_NET_CURRENT_DESKTOP/ { print "Workspace " ($3 + 1) }'
execp_interval = 1
execp_continuous = 1
Desktop pager with icon
execp_command = xprop -root -spy | stdbuf -oL awk -v home="$HOME" '/^_NET_CURRENT_DESKTOP/ { print home "/.config/myPager/" ($3 + 1) ".png\n" }'
execp_interval = 1
execp_has_icon = 1
execp_cache_icon = 1
execp_continuous = 2
Round-trip time to the gateway, refreshed every second
execp = new
execp_command = ping -i 1 -W 1 -O -D -n $(ip route | grep '^default.* via' | grep -o '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*') | stdbuf -oL awk -F'[ =]' '/no answer/ { print "<span foreground=\"#faa\">timeout</span>" } /time=/ { printf "<span foreground=\"#7af\">%3.0f %s</span>\n", $11, $12 }'
execp_continuous = 1
execp_interval = 1
execp_markup = 1
Memory usage
# Note the use of "stdbuf -oL" to force the program to flush the output line by line.
execp = new
execp_command = free -b -s1 | stdbuf -oL awk '/^Mem:/ { printf "Mem: %s %.0f%%\n", $2, 100 * ($2 - $7) / $2 }' | stdbuf -oL numfmt --to=iec-i --field=2 -d' '
execp_interval = 1
execp_continuous = 1
X keyboard layout with icon and tooltip with
(yes. that's the whole title. the sentence just ends. it's canon, we respect it ππ)
execp = new
execp_command = skb | stdbuf -oL -eL awk -v "c=$(tput -Tansi.sys-old clear)" '{ print "/usr/share/xxkb/"tolower(substr($1,0,2))"15.xpm"; print c$1 | "cat >2" }'
execp_interval = 1
execp_continuous = 1
Network load
execp = new
execp_command = stdbuf -oL bwm-ng -o csv -t 1000 | stdbuf -oL awk -F ';' '/total/ { printf "Net: %.0f Mb/s\n", ($5*8/1.0e6) }'
execp_continuous = 1
execp_interval = 1
Dumb executor sink example
execp = new
execp_command = echo waiting; stdbuf -oL sed 's/^/Event:/'
execp_continuous = 1
execp_lclick_command = Left Button
execp_rclick_command = Right Button
execp_mclick_command = Middle Button
execp_uwheel_command = Scroll Up
execp_dwheel_command = Scroll Down
execp_lclick_command_sink = 0
execp_rclick_command_sink = 0
execp_mclick_command_sink = 0
execp_uwheel_command_sink = 0
execp_dwheel_command_sink = 0
π Button
button = newβ starts the config for a brand new button π you can have multiple of these plugins, just use multiplePs inpanel_items. (since 0.14)button_icon = textβ name or path of the icon (or empty). (since 0.14)button_text = textβ the text to display (or empty). (since 0.14)button_tooltip = textβ the tooltip (or empty). (since 0.14)button_font = [FAMILY-LIST] [STYLE-OPTIONS] [SIZE]β the font used to draw the text. (since 0.14)button_font_color = color opacityβ the font color. (since 0.14)button_background_id = integerβ which background to use. (since 0.14)button_centered = boolean (0 or 1)β whether to center the text. (since 0.14)button_padding = horizontal_padding vertical_padding spacing_between_icon_and_text(since 0.14)button_max_icon_size = integerβ caps how big the icon can get. without it, the icon just expands all the way to the edges, main character energy. (since 0.14)button_lclick_command = textβ command to execute on left click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.14)button_mclick_command = textβ command to execute on right click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.14)button_rclick_command = textβ command to execute on middle click. if it's not defined,execp_commandis executed immediately, unless it's currently running. (since 0.14)button_uwheel_command = textβ the command to execute on wheel scroll up. If it's not defined,execp_commandgets executed immediately, unless it's currently running. (since 0.14) πbutton_dwheel_command = textβ the command to execute on wheel scroll down. If it's not defined,execp_commandis executed immediately, unless it is currently running. (since 0.14) π
π Separator π
Separator plugin time, bestie β it's giving cute little divider energy β¨
separator = newβ starts the configuration of a new separator. Multiple such plugins are supported; just use multiple:s inpanel_items. (since 0.13.0)separator_background_id = integerβ which background to use. (since 0.13.0)separator_color = color opacityβ the foreground color. (since 0.13.0)separator_style = [empty | line | dots]β the separator style. (since 0.13.0)separator_size = integerβ the thickness of the separator. Does not include the border and padding. For example, if the style isline, this is the line thickness; if the style isdots, this is the dot's diameter. (since 0.13.0)separator_padding = side_padding cap_paddingβ the padding to add to the sides of the separator, in pixels. (since 0.13.0)
β¨ Example configuration β¨
See /etc/xdg/tint2/tint2rc. That's the reference config, fr fr π
π AUTHOR π
tint2 was written by Thierry Lorthiois lorthiois@bbsoft.fr β¨mailto:lorthiois@bbsoft.frβ©. It is based on ttm, originally written by PΓ₯l Staurland staura@gmail.com β¨mailto:staura@gmail.comβ©. π
This manual page was originally written by Daniel Moerner dmoerner@gmail.com β¨mailto:dmoerner@gmail.comβ©, for the Debian project (but may be used by others). It was adopted from the tint2 docs. π«Ά
π¦ SEE ALSO π¦
Main character links: the main website https://gitlab.com/nick87720z/tint2 and the wiki page at https://gitlab.com/o9000/tint2/wikis/home. π
This documentation is also provided in HTML and Markdown format in the system's default location for documentation files, usually /usr/share/doc/tint2 or /usr/local/share/doc/tint2. π
okay that's the whole page, bestie β your fave manpage TINT2(1), version 17.1.3, dated 2022-03-24, has left the group chat πβ¨
π¦ where this page comes from
- alpine 3.24: tint2-doc 17.1.3-r1 Β· GPL-2.0-only
- nixos 26.05: tint2 17.1.3
- nixpkgs unstable: tint2 17.1.3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms