I started using Linux a few years back now. In my learning path, I encountered myself with hundreds of possibilities to do whatever I wanted to do at several aspects, including the chance to get a system that looks how I want it to look. I am the kind of user who like to give a personal touch to what I use and, in the past, that wasn’t easy for me to do with my desktop.
When I finally was able to switch to Linux, I encountered myself with a pretty powerful combination: Openbox + Picom + tint2 + jgmenu; and when I finally gave them most of the personal touches I always had in mind, I made a tutorial at Medium for users like me that may want to have a desktop that looks both good, minimalistic and functional and don’t know exactly where to start. I initially wrote this article at Medium, but now I've decided to give it a shot here as well. All the settings I’ll provide here were done by me after a process of trials, errors, frustrations and successes while reading the guides to use the pieces I putted together to get to the results I’ll share. Everything is customizable beyond the customizations I’ll expose here and I encourage you to do some modifications on your own. The process of creating something as personal as your own desktop with your own hands can be a funny and gratifying process.
What is Openbox?
At the main page of its official wiki, Openbox is described as it follows:
Openbox is a highly configurable, next generation window manager with extensive standards support.
Openbox lets you bring the latest applications outside of a full desktop environment. (…) With support for the latest freedesktop.org standards, as well as careful adherence to previous standards, Openbox provides an environment where applications work the way they were designed to.
Openbox is a highly configurable window manager. It allows you to change almost every aspect of how you interact with your desktop and invent completely new ways to use and control it. It can be like a video game for controlling windows. But Openbox can also be kept extremely simple, as it is in the default setup, meaning that it can suit just about anybody. Openbox gives you control without making you do everything.
Openbox can be used as a replacement of the window managers on desktop environments like XFCE and Mate or it can also be the default one at LXQt (or at its predecessor: LXDE). But one of its most noticeable features is that it can be also used as a standalone solution without any desktop environment at all.
The latest stable version available of Openbox is the 3.6.1 and it was released in 2015. Openbox is open source and its source code can be found in its GitHub repository.
Its installation process is pretty simple and it can be found at the repositories of nearly every distro available nowadays. If you need help to install it or you want to get more info about it, one of the best places to get the help you may need can be its official wiki or the Arch wiki.
What is Picom?
Picom is a lightweight standalone compositor created for the X Window System. It is a fork of Compton (which is a fork of xcompmgr-dana, which is also a fork of xcompmgr) and it is suitable for use with window managers like Openbox that do not provide compositing effects on their own. If you want to learn more about its history, then you should visit this page or, if you are interested in knowing a bit more about it, you can check its page on the Arch wiki.
Picom is also open source and you can find its code at its GitHub repo. The version of Picom used for this tutorial was the 10.2–1 version.
What are tint2 and jgmenu?
At its Arch wiki article you can find that tint2 is described as a simple, unobtrusive and light panel for Xorg. It can be configured to include a system tray, a task list, a battery monitor and more. Its look is configurable and it only has few dependencies, making it ideal for window managers like Openbox that don’t come with panels to show action icons and/or tasks. It is open source as well and you can find its source code at its GitLab repo.
On the other hand, as you can read at its GitHub repo, jgmenu is a simple, independent and contemporary-looking X11 menu, designed for scripting, ricing and tweaking. It is hackable, has a simple code base and does not depend on any toolkits such as GTK and Qt, but uses cairo and pango to render the menu. It can optionally use some appearance settings from XSettings, tint2 and GTK; and it has UTF-8 search support.
The version of tint2 used for this tutorial was the 17.0.2 while, in the other hand, the version of jgmenu used was the 4.4.1.
What settings to use?
Settings for Openbox
Whether you choose to start Openbox from a display manager or not, the result will always be the same when it starts on its own. You’ll always get a black screen without anything else than a menu that appears when you right click anywhere inside of it… and it is completely normal. That is just the starting point and the goal of this guide is precisely to help you to turn that black screen into a good looking workspace.
The first thing you need to do is to install additional tools that we will use later like ObConf (to configure basic settings of Openbox), feh (to set the wallpaper), cbatticon (to have a battery icon for the system tray), volumeicon (to have a volume control applet available) and a network manager applet like, for example, nm-applet.
After that, you need to set up the list of applications that will run automatically when Openbox starts. There are, basically, two ways of doing this: one is modifying the Xorg autostart file and the another one is modifying the autostart file of Openbox itself. Either method you choose, the modifications are almost the same since both files use a similar format to specify the programs to load with Openbox; though I recommend to use Xorg autostart file specially when you don’t use any display manager at all and use Openbox’s autostart files when you do use a display manager.
If you choose to modify the autostart file of Openbox, just open or create the file ~/.config/openbox/autostart and paste the following inside of it:
picom -b & # This will start picom in the background | |
tint2 -c ~/.config/tint2/tint2rc_upper & # This will start the top panel | |
tint2 & # This will start the bottom panel | |
feh --bg-fill --randomize /path/to/directory/with/backgrounds/* & # This will pick a random picture from a directory and set it as wallpaper | |
nm-applet & # This will start the NetworkManager applet | |
volumeicon & # This will start the applet to control the volume | |
cbatticon & # This will start the battery icon applet |
If you had to create the file, don’t forget to make it executable (just to prevent any issue) by executing:
chmod +x ~/.config/openbox/autostart
But if you choose to modify the autostart file of Xorg placed at your home directory instead, just open the ~/.xinitrc file and put the following lines at the end of that file:
picom -b & # This will start picom in the background | |
tint2 -c ~/.config/tint2/tint2rc_top & # This will start the top panel | |
tint2 & # This will start the bottom panel | |
feh --bg-fill --randomize /path/to/directory/with/backgrounds/* & # This will pick a random picture from a directory and set it as wallpaper | |
nm-applet & # This will start the NetworkManager applet | |
volumeicon & # This will start the applet to control the volume | |
cbatticon & # This will start the battery icon applet | |
exec openbox-session # This will start the Openbox session |
Remember that, as I’ve said, I strongly recommend you to use the Openbox’s autostart file when you use a display manager. I haven’t tested this last variant when a display manager is in use and I suspect that some issues may appear in that kind of scenario.
After that, you need to set up other aspects of Openbox like the theme you will use for it.
This part takes a little history time. I used Linux Mint in the past. It was the first distro I used for a long period of time and loved the Mint Y themes very much. Then I started using Openbox and I never was able to find themes for Openbox that somehow recreate how Mint Y themes look; so after a few months I came with a decent enough understanding of how Openbox themes are made and I created a Python script to generate themes for Openbox that look somehow similar to Mint Y themes. That script is still a work in progress, but it works decent enough for me at the moment I’m writing this; and you can find it following this link to its GitHub repo.
I currently use the dark red variant of the themes I created, but you can pick any other theme of your choice to set up Openbox using ObConf from the generated themes or from other sources like, for example, this GitHub repo, this webpage or from the following archived website. Now, to ease the process, I’ll just paste here the content of the file ~/.config/openbox/rc.xml I have created. That file is where Openbox stores and reads its settings, and the content of mine is the following:
<?xml version="1.0" encoding="UTF-8"?> | |
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude"> | |
<resistance> | |
<strength>10</strength> | |
<screen_edge_strength>20</screen_edge_strength> | |
</resistance> | |
<focus> | |
<focusNew>yes</focusNew> | |
<!-- always try to focus new windows when they appear. other rules do | |
apply --> | |
<followMouse>no</followMouse> | |
<!-- move focus to a window when you move the mouse into it --> | |
<focusLast>yes</focusLast> | |
<!-- focus the last used window when changing desktops, instead of the one | |
under the mouse pointer. when followMouse is enabled --> | |
<underMouse>no</underMouse> | |
<!-- move focus under the mouse, even when the mouse is not moving --> | |
<focusDelay>200</focusDelay> | |
<!-- when followMouse is enabled, the mouse must be inside the window for | |
this many milliseconds (1000 = 1 sec) before moving focus to it --> | |
<raiseOnFocus>no</raiseOnFocus> | |
<!-- when followMouse is enabled, and a window is given focus by moving the | |
mouse into it, also raise the window --> | |
</focus> | |
<placement> | |
<policy>Smart</policy> | |
<!-- 'Smart' or 'UnderMouse' --> | |
<center>yes</center> | |
<!-- whether to place windows in the center of the free area found or | |
the top left corner --> | |
<monitor>Primary</monitor> | |
<!-- with Smart placement on a multi-monitor system, try to place new windows | |
on: 'Any' - any monitor, 'Mouse' - where the mouse is, 'Active' - where | |
the active window is, 'Primary' - only on the primary monitor --> | |
<primaryMonitor>1</primaryMonitor> | |
<!-- The monitor where Openbox should place popup dialogs such as the | |
focus cycling popup, or the desktop switch popup. It can be an index | |
from 1, specifying a particular monitor. Or it can be one of the | |
following: 'Mouse' - where the mouse is, or | |
'Active' - where the active window is --> | |
</placement> | |
<theme> | |
<name>Mint-O-Dark-Red</name> | |
<titleLayout>NLIMC</titleLayout> | |
<!-- | |
available characters are NDSLIMC, each can occur at most once. | |
N: window icon | |
L: window label (AKA title). | |
I: iconify | |
M: maximize | |
C: close | |
S: shade (roll up/down) | |
D: omnipresent (on all desktops). | |
--> | |
<keepBorder>yes</keepBorder> | |
<animateIconify>no</animateIconify> | |
<font place="ActiveWindow"> | |
<name>Cantarell</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Bold</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
<font place="InactiveWindow"> | |
<name>Cantarell</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Bold</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
<font place="MenuHeader"> | |
<name>Cantarell</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Normal</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
<font place="MenuItem"> | |
<name>Cantarell</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Normal</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
<font place="ActiveOnScreenDisplay"> | |
<name>sans</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Bold</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
<font place="InactiveOnScreenDisplay"> | |
<name>sans</name> | |
<size>11</size> | |
<!-- font size in points --> | |
<weight>Bold</weight> | |
<!-- 'bold' or 'normal' --> | |
<slant>Normal</slant> | |
<!-- 'italic' or 'normal' --> | |
</font> | |
</theme> | |
<desktops> | |
<!-- this stuff is only used at startup, pagers allow you to change them | |
during a session | |
these are default values to use when other ones are not already set | |
by other applications, or saved in your session | |
use obconf if you want to change these without having to log out | |
and back in --> | |
<number>1</number> | |
<firstdesk>1</firstdesk> | |
<names> | |
<!-- set names up here if you want to, like this: | |
<name>desktop 1</name> | |
<name>desktop 2</name> | |
--> | |
</names> | |
<popupTime>875</popupTime> | |
<!-- The number of milliseconds to show the popup for when switching | |
desktops. Set this to 0 to disable the popup. --> | |
</desktops> | |
<resize> | |
<drawContents>yes</drawContents> | |
<popupShow>Never</popupShow> | |
<!-- 'Always', 'Never', or 'Nonpixel' (xterms and such) --> | |
<popupPosition>Center</popupPosition> | |
<!-- 'Center', 'Top', or 'Fixed' --> | |
<popupFixedPosition> | |
<!-- these are used if popupPosition is set to 'Fixed' --> | |
<x>10</x> | |
<!-- positive number for distance from left edge, negative number for | |
distance from right edge, or 'Center' --> | |
<y>10</y> | |
<!-- positive number for distance from top edge, negative number for | |
distance from bottom edge, or 'Center' --> | |
</popupFixedPosition> | |
</resize> | |
<!-- You can reserve a portion of your screen where windows will not cover when | |
they are maximized, or when they are initially placed. | |
Many programs reserve space automatically, but you can use this in other | |
cases. --> | |
<margins> | |
<top>0</top> | |
<bottom>0</bottom> | |
<left>0</left> | |
<right>0</right> | |
</margins> | |
<dock> | |
<position>TopLeft</position> | |
<!-- (Top|Bottom)(Left|Right|)|Top|Bottom|Left|Right|Floating --> | |
<floatingX>0</floatingX> | |
<floatingY>0</floatingY> | |
<noStrut>no</noStrut> | |
<stacking>Above</stacking> | |
<!-- 'Above', 'Normal', or 'Below' --> | |
<direction>Vertical</direction> | |
<!-- 'Vertical' or 'Horizontal' --> | |
<autoHide>no</autoHide> | |
<hideDelay>300</hideDelay> | |
<!-- in milliseconds (1000 = 1 second) --> | |
<showDelay>300</showDelay> | |
<!-- in milliseconds (1000 = 1 second) --> | |
<moveButton>Middle</moveButton> | |
<!-- 'Left', 'Middle', 'Right' --> | |
</dock> | |
<keyboard> | |
<chainQuitKey>C-g</chainQuitKey> | |
<!-- Keybindings for desktop switching --> | |
<keybind key="C-A-Left"> | |
<action name="GoToDesktop"> | |
<to>left</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="C-A-Right"> | |
<action name="GoToDesktop"> | |
<to>right</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="C-A-Up"> | |
<action name="GoToDesktop"> | |
<to>up</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="C-A-Down"> | |
<action name="GoToDesktop"> | |
<to>down</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="S-A-Left"> | |
<action name="SendToDesktop"> | |
<to>left</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="S-A-Right"> | |
<action name="SendToDesktop"> | |
<to>right</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="S-A-Up"> | |
<action name="SendToDesktop"> | |
<to>up</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="S-A-Down"> | |
<action name="SendToDesktop"> | |
<to>down</to> | |
<wrap>no</wrap> | |
</action> | |
</keybind> | |
<keybind key="W-F1"> | |
<action name="GoToDesktop"> | |
<to>1</to> | |
</action> | |
</keybind> | |
<keybind key="W-F2"> | |
<action name="GoToDesktop"> | |
<to>2</to> | |
</action> | |
</keybind> | |
<keybind key="W-F3"> | |
<action name="GoToDesktop"> | |
<to>3</to> | |
</action> | |
</keybind> | |
<keybind key="W-F4"> | |
<action name="GoToDesktop"> | |
<to>4</to> | |
</action> | |
</keybind> | |
<keybind key="W-d"> | |
<action name="ToggleShowDesktop"/> | |
</keybind> | |
<!-- Keybindings for windows --> | |
<keybind key="A-F4"> | |
<action name="Close"/> | |
</keybind> | |
<keybind key="A-Escape"> | |
<action name="Lower"/> | |
<action name="FocusToBottom"/> | |
<action name="Unfocus"/> | |
</keybind> | |
<keybind key="A-space"> | |
<action name="ShowMenu"> | |
<menu>client-menu</menu> | |
</action> | |
</keybind> | |
<!-- Keybindings for window switching --> | |
<keybind key="A-Tab"> | |
<action name="NextWindow"> | |
<finalactions> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</finalactions> | |
</action> | |
</keybind> | |
<keybind key="A-S-Tab"> | |
<action name="PreviousWindow"> | |
<finalactions> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</finalactions> | |
</action> | |
</keybind> | |
<keybind key="C-A-Tab"> | |
<action name="NextWindow"> | |
<panels>yes</panels> | |
<desktop>yes</desktop> | |
<finalactions> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</finalactions> | |
</action> | |
</keybind> | |
<!-- Keybindings for window switching with the arrow keys --> | |
<keybind key="W-S-Right"> | |
<action name="DirectionalCycleWindows"> | |
<direction>right</direction> | |
</action> | |
</keybind> | |
<keybind key="W-S-Left"> | |
<action name="DirectionalCycleWindows"> | |
<direction>left</direction> | |
</action> | |
</keybind> | |
<keybind key="W-S-Up"> | |
<action name="DirectionalCycleWindows"> | |
<direction>up</direction> | |
</action> | |
</keybind> | |
<keybind key="W-S-Down"> | |
<action name="DirectionalCycleWindows"> | |
<direction>down</direction> | |
</action> | |
</keybind> | |
<!-- Keybindings for running applications --> | |
<keybind key="W-e"> | |
<action name="Execute"> | |
<startupnotify> | |
<enabled>true</enabled> | |
<name>File manager</name> | |
</startupnotify> | |
<command>nemo</command> | |
</action> | |
</keybind> | |
<keybind key="C-A-t"> | |
<action name="Execute"> | |
<startupnotify> | |
<enabled>true</enabled> | |
<name>Terminal</name> | |
</startupnotify> | |
<command>terminator</command> | |
</action> | |
</keybind> | |
<keybind key="C-S-Escape"> | |
<action name="Execute"> | |
<startupnotify> | |
<enabled>true</enabled> | |
<name>System Monitor</name> | |
</startupnotify> | |
<command>gnome-system-monitor</command> | |
</action> | |
</keybind> | |
<keybind key="C-Escape"> | |
<action name="Execute"> | |
<startupnotify> | |
<enabled>true</enabled> | |
<name>jgmenu</name> | |
</startupnotify> | |
<command>jgmenu_run</command> | |
</action> | |
</keybind> | |
<!-- Keybindings for "special" actions --> | |
<keybind key="C-A-BackSpace"> | |
<action name="Reconfigure"/> | |
</keybind> | |
<keybind key="XF86WWW"> | |
<action name="Execute"> | |
<startupnotify> | |
<enabled>true</enabled> | |
<name>Chromium</name> | |
</startupnotify> | |
<command>chromium</command> | |
</action> | |
</keybind> | |
<keybind key="Print"> | |
<action name="Execute"> | |
<command>scrot</command> | |
</action> | |
</keybind> | |
<keybind key="XF86MonBrightnessUp"> | |
<action name="Execute"> | |
<command>brightnessctl set 5%+</command> | |
</action> | |
</keybind> | |
<keybind key="XF86MonBrightnessDown"> | |
<action name="Execute"> | |
<command>brightnessctl set 5%-</command> | |
</action> | |
</keybind> | |
<keybind key="XF86AudioRaiseVolume"> | |
<action name="Execute"> | |
<command>sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 +5%"</command> | |
</action> | |
</keybind> | |
<keybind key="XF86AudioLowerVolume"> | |
<action name="Execute"> | |
<command>sh -c "pactl set-sink-mute 0 false ; pactl set-sink-volume 0 -5%"</command> | |
</action> | |
</keybind> | |
<keybind key="XF86AudioMute"> | |
<action name="Execute"> | |
<command>sh -c "pactl set-sink-mute 0 true ; pactl set-sink-volume 0 0%"</command> | |
</action> | |
</keybind> | |
<keybind key="C-S-F11"> | |
<action name="ToggleDecorations"/> | |
</keybind> | |
<!-- Keybindings for window snapping --> | |
<keybind key="W-Up"> | |
<action name="Maximize"/> | |
</keybind> | |
<keybind key="W-Down"> | |
<action name="If"> | |
<maximized>yes</maximized> | |
<then> | |
<action name="Unmaximize"/> | |
</then> | |
<else> | |
<action name="Iconify"/> | |
</else> | |
</action> | |
</keybind> | |
<keybind key="W-Left"> | |
<action name="UnmaximizeFull"/> | |
<action name="MaximizeVert"/> | |
<action name="Raise"/> | |
<action name="MoveResizeTo"> | |
<width>50%</width> | |
<x>0</x> | |
<y>0</y> | |
</action> | |
</keybind> | |
<keybind key="W-Right"> | |
<action name="UnmaximizeFull"/> | |
<action name="MaximizeVert"/> | |
<action name="Raise"/> | |
<action name="MoveResizeTo"> | |
<width>50%</width> | |
<x>50%</x> | |
<y>0</y> | |
</action> | |
</keybind> | |
</keyboard> | |
<mouse> | |
<dragThreshold>1</dragThreshold> | |
<!-- number of pixels the mouse must move before a drag begins --> | |
<doubleClickTime>500</doubleClickTime> | |
<!-- in milliseconds (1000 = 1 second) --> | |
<screenEdgeWarpTime>400</screenEdgeWarpTime> | |
<!-- Time before changing desktops when the pointer touches the edge of the | |
screen while moving a window, in milliseconds (1000 = 1 second). | |
Set this to 0 to disable warping --> | |
<screenEdgeWarpMouse>false</screenEdgeWarpMouse> | |
<!-- Set this to TRUE to move the mouse pointer across the desktop when | |
switching due to hitting the edge of the screen --> | |
<context name="Frame"> | |
<mousebind button="A-Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="A-Left" action="Click"> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="A-Left" action="Drag"> | |
<action name="Move"/> | |
</mousebind> | |
<mousebind button="A-Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="A-Right" action="Drag"> | |
<action name="Resize"/> | |
</mousebind> | |
<mousebind button="A-Middle" action="Press"> | |
<action name="Lower"/> | |
<action name="FocusToBottom"/> | |
<action name="Unfocus"/> | |
</mousebind> | |
<mousebind button="A-Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="C-A-Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="C-A-Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-S-Up" action="Click"> | |
<action name="SendToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-S-Down" action="Click"> | |
<action name="SendToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Titlebar"> | |
<mousebind button="Left" action="Drag"> | |
<action name="Move"/> | |
</mousebind> | |
<mousebind button="Left" action="DoubleClick"> | |
<action name="ToggleMaximizeFull"/> | |
</mousebind> | |
<mousebind button="Up" action="Click"> | |
<action name="if"> | |
<shaded>no</shaded> | |
<then> | |
<action name="Shade"/> | |
<action name="FocusToBottom"/> | |
<action name="Unfocus"/> | |
<action name="Lower"/> | |
</then> | |
</action> | |
</mousebind> | |
<mousebind button="Down" action="Click"> | |
<action name="if"> | |
<shaded>yes</shaded> | |
<then> | |
<action name="Unshade"/> | |
<action name="Raise"/> | |
</then> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Titlebar Top Right Bottom Left TLCorner TRCorner BRCorner BLCorner"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Middle" action="Press"> | |
<action name="Lower"/> | |
<action name="FocusToBottom"/> | |
<action name="Unfocus"/> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="ShowMenu"> | |
<menu>client-menu</menu> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Top"> | |
<mousebind button="Left" action="Drag"> | |
<action name="Resize"> | |
<edge>top</edge> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Left"> | |
<mousebind button="Left" action="Drag"> | |
<action name="Resize"> | |
<edge>left</edge> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Right"> | |
<mousebind button="Left" action="Drag"> | |
<action name="Resize"> | |
<edge>right</edge> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Bottom"> | |
<mousebind button="Left" action="Drag"> | |
<action name="Resize"> | |
<edge>bottom</edge> | |
</action> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="ShowMenu"> | |
<menu>client-menu</menu> | |
</action> | |
</mousebind> | |
</context> | |
<context name="TRCorner BRCorner TLCorner BLCorner"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Left" action="Drag"> | |
<action name="Resize"/> | |
</mousebind> | |
</context> | |
<context name="Client"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="Middle" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
</context> | |
<context name="Icon"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
<action name="ShowMenu"> | |
<menu>client-menu</menu> | |
</action> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="ShowMenu"> | |
<menu>client-menu</menu> | |
</action> | |
</mousebind> | |
</context> | |
<context name="AllDesktops"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Left" action="Click"> | |
<action name="ToggleOmnipresent"/> | |
</mousebind> | |
</context> | |
<context name="Shade"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="Left" action="Click"> | |
<action name="ToggleShade"/> | |
</mousebind> | |
</context> | |
<context name="Iconify"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="Left" action="Click"> | |
<action name="Iconify"/> | |
</mousebind> | |
</context> | |
<context name="Maximize"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Middle" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Left" action="Click"> | |
<action name="ToggleMaximize"/> | |
</mousebind> | |
<mousebind button="Middle" action="Click"> | |
<action name="ToggleMaximize"> | |
<direction>vertical</direction> | |
</action> | |
</mousebind> | |
<mousebind button="Right" action="Click"> | |
<action name="ToggleMaximize"> | |
<direction>horizontal</direction> | |
</action> | |
</mousebind> | |
</context> | |
<context name="Close"> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
<action name="Unshade"/> | |
</mousebind> | |
<mousebind button="Left" action="Click"> | |
<action name="Close"/> | |
</mousebind> | |
</context> | |
<context name="Desktop"> | |
<mousebind button="Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="C-A-Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="C-A-Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="Left" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="Focus"/> | |
<action name="Raise"/> | |
</mousebind> | |
</context> | |
<context name="Root"> | |
<!-- Menus --> | |
<mousebind button="Middle" action="Press"> | |
<action name="ShowMenu"> | |
<menu>client-list-combined-menu</menu> | |
</action> | |
</mousebind> | |
<mousebind button="Right" action="Press"> | |
<action name="ShowMenu"> | |
<menu>root-menu</menu> | |
</action> | |
</mousebind> | |
</context> | |
<context name="MoveResize"> | |
<mousebind button="Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-Up" action="Click"> | |
<action name="GoToDesktop"> | |
<to>previous</to> | |
</action> | |
</mousebind> | |
<mousebind button="A-Down" action="Click"> | |
<action name="GoToDesktop"> | |
<to>next</to> | |
</action> | |
</mousebind> | |
</context> | |
</mouse> | |
<menu> | |
<!-- You can specify more than one menu file in here and they are all loaded, | |
just don't make menu ids clash or, well, it'll be kind of pointless --> | |
<!-- default menu file (or custom one in $HOME/.config/openbox/) --> | |
<file>menu.xml</file> | |
<hideDelay>200</hideDelay> | |
<!-- if a press-release lasts longer than this setting (in milliseconds), the | |
menu is hidden again --> | |
<middle>no</middle> | |
<!-- center submenus vertically about the parent entry --> | |
<submenuShowDelay>100</submenuShowDelay> | |
<!-- time to delay before showing a submenu after hovering over the parent | |
entry. | |
if this is a negative value, then the delay is infinite and the | |
submenu will not be shown until it is clicked on --> | |
<submenuHideDelay>400</submenuHideDelay> | |
<!-- time to delay before hiding a submenu when selecting another | |
entry in parent menu | |
if this is a negative value, then the delay is infinite and the | |
submenu will not be hidden until a different submenu is opened --> | |
<showIcons>yes</showIcons> | |
<!-- controls if icons appear in the client-list-(combined-)menu --> | |
<manageDesktops>yes</manageDesktops> | |
<!-- show the manage desktops section in the client-list-(combined-)menu --> | |
</menu> | |
<applications> | |
<!-- | |
# this is an example with comments through out. use these to make your | |
# own rules, but without the comments of course. | |
# you may use one or more of the name/class/role/title/type rules to specify | |
# windows to match | |
<application name="the window's _OB_APP_NAME property (see obxprop)" | |
class="the window's _OB_APP_CLASS property (see obxprop)" | |
groupname="the window's _OB_APP_GROUP_NAME property (see obxprop)" | |
groupclass="the window's _OB_APP_GROUP_CLASS property (see obxprop)" | |
role="the window's _OB_APP_ROLE property (see obxprop)" | |
title="the window's _OB_APP_TITLE property (see obxprop)" | |
type="the window's _OB_APP_TYPE property (see obxprob).. | |
(if unspecified, then it is 'dialog' for child windows)"> | |
# you may set only one of name/class/role/title/type, or you may use more | |
# than one together to restrict your matches. | |
# the name, class, role, and title use simple wildcard matching such as those | |
# used by a shell. you can use * to match any characters and ? to match | |
# any single character. | |
# the type is one of: normal, dialog, splash, utility, menu, toolbar, dock, | |
# or desktop | |
# when multiple rules match a window, they will all be applied, in the | |
# order that they appear in this list | |
# each rule element can be left out or set to 'default' to specify to not | |
# change that attribute of the window | |
<decor>yes</decor> | |
# enable or disable window decorations | |
<shade>no</shade> | |
# make the window shaded when it appears, or not | |
<position force="no"> | |
# the position is only used if both an x and y coordinate are provided | |
# (and not set to 'default') | |
# when force is "yes", then the window will be placed here even if it | |
# says you want it placed elsewhere. this is to override buggy | |
# applications who refuse to behave | |
<x>center</x> | |
# a number like 50, or 'center' to center on screen. use a negative number | |
# to start from the right (or bottom for <y>), ie -50 is 50 pixels from | |
# the right edge (or bottom). use 'default' to specify using value | |
# provided by the application, or chosen by openbox, instead. | |
<y>200</y> | |
<monitor>1</monitor> | |
# specifies the monitor in a xinerama setup. | |
# 1 is the first head, or 'mouse' for wherever the mouse is | |
</position> | |
<size> | |
# the size to make the window. | |
<width>20</width> | |
# a number like 20, or 'default' to use the size given by the application. | |
# you can use fractions such as 1/2 or percentages such as 75% in which | |
# case the value is relative to the size of the monitor that the window | |
# appears on. | |
<height>30%</height> | |
</size> | |
<focus>yes</focus> | |
# if the window should try be given focus when it appears. if this is set | |
# to yes it doesn't guarantee the window will be given focus. some | |
# restrictions may apply, but Openbox will try to | |
<desktop>1</desktop> | |
# 1 is the first desktop, 'all' for all desktops | |
<layer>normal</layer> | |
# 'above', 'normal', or 'below' | |
<iconic>no</iconic> | |
# make the window iconified when it appears, or not | |
<skip_pager>no</skip_pager> | |
# asks to not be shown in pagers | |
<skip_taskbar>no</skip_taskbar> | |
# asks to not be shown in taskbars. window cycling actions will also | |
# skip past such windows | |
<fullscreen>yes</fullscreen> | |
# make the window in fullscreen mode when it appears | |
<maximized>true</maximized> | |
# 'Horizontal', 'Vertical' or boolean (yes/no) | |
</application> | |
# end of the example | |
--> | |
</applications> | |
</openbox_config> |
Settings for tint2
As you may have noticed in the initial screenshot, I use two panels: one placed in the bottom of the screen and another one on top. I always use the top panel to place the applets, the clock and the action buttons to shutdown the computer, reboot it or finish my session; and then I leave the second panel to add a button to open the applications menu, show the list of running tasks in the middle of it and put a button to minimize/restore running apps. To achieve that with tint2, we only need to start two instances of it with different settings.
The first settings file you’ll need to edit is the default one. Just open ~/.config/tint2/tint2rc and replace its content with the following:
#---- Generated by tint2conf 5a80 ---- | |
# See https://gitlab.com/o9000/tint2/wikis/Configure for | |
# full documentation of the configuration options. | |
#------------------------------------- | |
# Gradients | |
#------------------------------------- | |
# Backgrounds | |
# Background 1: Panel | |
rounded = 12 | |
border_width = 0 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 18 | |
border_color = #000000 30 | |
background_color_hover = #000000 60 | |
border_color_hover = #000000 30 | |
background_color_pressed = #000000 60 | |
border_color_pressed = #000000 30 | |
# Background 2: Minimized task, Default task | |
rounded = 10 | |
border_width = 1 | |
border_sides = B | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 0 | |
border_color = #ffffff 100 | |
background_color_hover = #555555 4 | |
border_color_hover = #adadad 100 | |
background_color_pressed = #000000 0 | |
border_color_pressed = #8d8d8d 100 | |
# Background 3: Launcher | |
rounded = 0 | |
border_width = 0 | |
border_sides = | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #2d2d2d 50 | |
border_color = #000000 0 | |
background_color_hover = #aaaaaa 22 | |
border_color_hover = #eaeaea 44 | |
background_color_pressed = #555555 4 | |
border_color_pressed = #eaeaea 44 | |
# Background 4: Urgent task | |
rounded = 4 | |
border_width = 1 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #aa4400 100 | |
border_color = #aa7733 100 | |
background_color_hover = #cc7700 100 | |
border_color_hover = #aa7733 100 | |
background_color_pressed = #555555 4 | |
border_color_pressed = #aa7733 100 | |
# Background 5: Popup message | |
rounded = 1 | |
border_width = 1 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #222222 100 | |
border_color = #333333 100 | |
background_color_hover = #ffffaa 100 | |
border_color_hover = #000000 100 | |
background_color_pressed = #ffffaa 100 | |
border_color_pressed = #000000 100 | |
# Background 6: Battery | |
rounded = 18 | |
border_width = 1 | |
border_sides = | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #555555 4 | |
border_color = #bf3f3f 0 | |
background_color_hover = #aaaaaa 22 | |
border_color_hover = #eaeaea 44 | |
background_color_pressed = #555555 4 | |
border_color_pressed = #eaeaea 44 | |
# Background 7: System tray | |
rounded = 0 | |
border_width = 0 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 0 | |
border_color = #000000 0 | |
background_color_hover = #f6f5f4 100 | |
border_color_hover = #000000 0 | |
background_color_pressed = #ffffff 100 | |
border_color_pressed = #000000 0 | |
# Background 8: Active task | |
rounded = 8 | |
border_width = 2 | |
border_sides = B | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 0 | |
border_color = #e82127 100 | |
background_color_hover = #555555 4 | |
border_color_hover = #ee595d 100 | |
background_color_pressed = #555555 4 | |
border_color_pressed = #ae1910 100 | |
#------------------------------------- | |
# Panel | |
panel_items = PTP | |
panel_size = 45% 40 | |
panel_margin = 0 0 | |
panel_padding = 10 0 5 | |
panel_background_id = 1 | |
wm_menu = 1 | |
panel_dock = 0 | |
panel_pivot_struts = 0 | |
panel_position = bottom center horizontal | |
panel_layer = top | |
panel_monitor = all | |
panel_shrink = 0 | |
autohide = 1 | |
autohide_show_timeout = 0.4 | |
autohide_hide_timeout = 1 | |
autohide_height = 1 | |
strut_policy = none | |
panel_window_name = tint2_bottom | |
disable_transparency = 0 | |
mouse_effects = 1 | |
font_shadow = 0 | |
mouse_hover_icon_asb = 100 0 10 | |
mouse_pressed_icon_asb = 100 0 0 | |
scale_relative_to_dpi = 0 | |
scale_relative_to_screen_height = 0 | |
#------------------------------------- | |
# Taskbar | |
taskbar_mode = single_desktop | |
taskbar_hide_if_empty = 0 | |
taskbar_padding = 0 0 2 | |
taskbar_background_id = 0 | |
taskbar_active_background_id = 0 | |
taskbar_name = 0 | |
taskbar_hide_inactive_tasks = 0 | |
taskbar_hide_different_monitor = 0 | |
taskbar_hide_different_desktop = 0 | |
taskbar_always_show_all_desktop_tasks = 0 | |
taskbar_name_padding = 2 2 | |
taskbar_name_background_id = 0 | |
taskbar_name_active_background_id = 0 | |
taskbar_name_font_color = #e3e3e3 100 | |
taskbar_name_active_font_color = #ffffff 100 | |
taskbar_distribute_size = 0 | |
taskbar_sort_order = none | |
task_align = center | |
#------------------------------------- | |
# Task | |
task_text = 0 | |
task_icon = 1 | |
task_centered = 1 | |
urgent_nb_of_blink = 100000 | |
task_maximum_size = 40 40 | |
task_padding = 2 2 4 | |
task_tooltip = 1 | |
task_thumbnail = 1 | |
task_thumbnail_size = 350 | |
task_font_color = #ffffff 100 | |
task_background_id = 2 | |
task_active_background_id = 8 | |
task_urgent_background_id = 4 | |
task_iconified_background_id = 2 | |
mouse_left = toggle_iconify | |
mouse_middle = none | |
mouse_right = close | |
mouse_scroll_up = none | |
mouse_scroll_down = none | |
#------------------------------------- | |
# System tray (notification area) | |
systray_padding = 0 4 2 | |
systray_background_id = 7 | |
systray_sort = ascending | |
systray_icon_size = 25 | |
systray_icon_asb = 100 0 0 | |
systray_monitor = 1 | |
systray_name_filter = | |
#------------------------------------- | |
# Launcher | |
launcher_padding = 2 4 2 | |
launcher_background_id = 3 | |
launcher_icon_background_id = 0 | |
launcher_icon_size = 24 | |
launcher_icon_asb = 100 0 0 | |
launcher_icon_theme_override = 0 | |
startup_notifications = 1 | |
launcher_tooltip = 1 | |
#------------------------------------- | |
# Clock | |
time1_format = %I:%M %p | |
time2_format = %a., %d de %b de %Y | |
time1_timezone = | |
time2_timezone = | |
clock_font_color = #ffffff 100 | |
clock_padding = 2 0 | |
clock_background_id = 0 | |
clock_tooltip = | |
clock_tooltip_timezone = | |
clock_lclick_command = | |
clock_rclick_command = orage | |
clock_mclick_command = | |
clock_uwheel_command = | |
clock_dwheel_command = | |
#------------------------------------- | |
# Battery | |
battery_tooltip = 1 | |
battery_low_status = 21 | |
battery_low_cmd = xmessage 'tint2: Battery low!' | |
battery_full_cmd = | |
bat1_font = Sans Bold 10 | |
bat2_font = Sans 8 | |
battery_font_color = #ffffff 100 | |
bat1_format = %p | |
bat2_format = (%s) | |
battery_padding = 1 0 | |
battery_background_id = 6 | |
battery_hide = 101 | |
battery_lclick_command = | |
battery_rclick_command = | |
battery_mclick_command = | |
battery_uwheel_command = | |
battery_dwheel_command = | |
ac_connected_cmd = | |
ac_disconnected_cmd = | |
#------------------------------------- | |
# Button 1 | |
button = new | |
button_icon = ~/ic_menu.png | |
button_text = | |
button_tooltip = Show applications menu | |
button_lclick_command = jgmenu_run | |
button_rclick_command = | |
button_mclick_command = | |
button_uwheel_command = | |
button_dwheel_command = | |
button_font_color = #f7f7f7 100 | |
button_padding = 0 0 | |
button_background_id = 0 | |
button_centered = 1 | |
button_max_icon_size = 32 | |
#------------------------------------- | |
# Button 2 | |
button = new | |
button_icon = desktop | |
button_text = | |
button_tooltip = Show desktop | |
button_lclick_command = xdotool key --clearmodifiers Super+d | |
button_rclick_command = | |
button_mclick_command = | |
button_uwheel_command = | |
button_dwheel_command = | |
button_font_color = #000000 100 | |
button_padding = 0 0 | |
button_background_id = 0 | |
button_centered = 1 | |
button_max_icon_size = 32 | |
#------------------------------------- | |
# Tooltip | |
tooltip_show_timeout = 0.5 | |
tooltip_hide_timeout = 0.1 | |
tooltip_padding = 4 4 | |
tooltip_background_id = 5 | |
tooltip_font_color = #ffffff 100 | |
tooltip_font = Noto Sans 12 |
To finalize the configuration of the bottom panel of tint2, you’ll only have to place an image icon at your home directory with the name ic_menu.png. That picture file will be the source for the image that will be showed in the button of the panel to show the applications menu.
After that, you need to define the settings for the top panel. As you may have noticed after reading the list of programs that will run with Openbox, the file you need to create and edit is ~/.config/tint2/tint2rc_top. Just create it, open it and paste the following inside of it:
#---- Generated by tint2conf 5006 ---- | |
# See https://gitlab.com/o9000/tint2/wikis/Configure for | |
# full documentation of the configuration options. | |
#------------------------------------- | |
# Gradients | |
#------------------------------------- | |
# Backgrounds | |
# Background 1: Panel | |
rounded = 12 | |
border_width = 0 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 18 | |
border_color = #000000 30 | |
background_color_hover = #000000 60 | |
border_color_hover = #000000 30 | |
background_color_pressed = #000000 60 | |
border_color_pressed = #000000 30 | |
# Background 2: Popup message | |
rounded = 1 | |
border_width = 1 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #222222 100 | |
border_color = #333333 100 | |
background_color_hover = #ffffaa 100 | |
border_color_hover = #000000 100 | |
background_color_pressed = #ffffaa 100 | |
border_color_pressed = #000000 100 | |
# Background 3: Battery | |
rounded = 18 | |
border_width = 1 | |
border_sides = | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #555555 4 | |
border_color = #bf3f3f 0 | |
background_color_hover = #aaaaaa 22 | |
border_color_hover = #eaeaea 44 | |
background_color_pressed = #555555 4 | |
border_color_pressed = #eaeaea 44 | |
# Background 4: System tray | |
rounded = 0 | |
border_width = 0 | |
border_sides = TBLR | |
border_content_tint_weight = 0 | |
background_content_tint_weight = 0 | |
background_color = #000000 0 | |
border_color = #000000 0 | |
background_color_hover = #f6f5f4 100 | |
border_color_hover = #000000 0 | |
background_color_pressed = #ffffff 100 | |
border_color_pressed = #000000 0 | |
#------------------------------------- | |
# Panel | |
panel_items = PPPFCFS: | |
panel_size = 60% 32 | |
panel_margin = 0 0 | |
panel_padding = 10 0 5 | |
panel_background_id = 1 | |
wm_menu = 1 | |
panel_dock = 0 | |
panel_pivot_struts = 0 | |
panel_position = top center horizontal | |
panel_layer = top | |
panel_monitor = all | |
panel_shrink = 0 | |
autohide = 1 | |
autohide_show_timeout = 1 | |
autohide_hide_timeout = 1 | |
autohide_height = 1 | |
strut_policy = none | |
panel_window_name = tint2_top | |
disable_transparency = 0 | |
mouse_effects = 1 | |
font_shadow = 0 | |
mouse_hover_icon_asb = 100 0 10 | |
mouse_pressed_icon_asb = 100 0 0 | |
scale_relative_to_dpi = 0 | |
scale_relative_to_screen_height = 0 | |
#------------------------------------- | |
# Taskbar | |
taskbar_mode = single_desktop | |
taskbar_hide_if_empty = 0 | |
taskbar_padding = 0 0 2 | |
taskbar_background_id = 0 | |
taskbar_active_background_id = 0 | |
taskbar_name = 0 | |
taskbar_hide_inactive_tasks = 0 | |
taskbar_hide_different_monitor = 0 | |
taskbar_hide_different_desktop = 0 | |
taskbar_always_show_all_desktop_tasks = 0 | |
taskbar_name_padding = 2 2 | |
taskbar_name_background_id = 0 | |
taskbar_name_active_background_id = 0 | |
taskbar_name_font_color = #e3e3e3 100 | |
taskbar_name_active_font_color = #ffffff 100 | |
taskbar_distribute_size = 0 | |
taskbar_sort_order = none | |
task_align = center | |
#------------------------------------- | |
# Task | |
task_text = 0 | |
task_icon = 1 | |
task_centered = 1 | |
urgent_nb_of_blink = 100000 | |
task_maximum_size = 40 40 | |
task_padding = 2 2 4 | |
task_tooltip = 1 | |
task_thumbnail = 1 | |
task_thumbnail_size = 350 | |
task_font_color = #ffffff 100 | |
task_background_id = 0 | |
task_active_background_id = 0 | |
task_urgent_background_id = 0 | |
task_iconified_background_id = 0 | |
mouse_left = toggle_iconify | |
mouse_middle = none | |
mouse_right = close | |
mouse_scroll_up = none | |
mouse_scroll_down = none | |
#------------------------------------- | |
# System tray (notification area) | |
systray_padding = 0 4 2 | |
systray_background_id = 4 | |
systray_sort = left2right | |
systray_icon_size = 25 | |
systray_icon_asb = 100 0 0 | |
systray_monitor = 1 | |
systray_name_filter = | |
#------------------------------------- | |
# Launcher | |
launcher_padding = 2 4 2 | |
launcher_background_id = 0 | |
launcher_icon_background_id = 0 | |
launcher_icon_size = 24 | |
launcher_icon_asb = 100 0 0 | |
launcher_icon_theme_override = 0 | |
startup_notifications = 1 | |
launcher_tooltip = 1 | |
#------------------------------------- | |
# Clock | |
time1_format = %I:%M %p - %a., %d de %b de %Y | |
time2_format = | |
time1_timezone = | |
time2_timezone = | |
clock_font_color = #ffffff 100 | |
clock_padding = 2 0 | |
clock_background_id = 0 | |
clock_tooltip = | |
clock_tooltip_timezone = | |
clock_lclick_command = | |
clock_rclick_command = orage | |
clock_mclick_command = | |
clock_uwheel_command = | |
clock_dwheel_command = | |
#------------------------------------- | |
# Battery | |
battery_tooltip = 1 | |
battery_low_status = 21 | |
battery_low_cmd = xmessage 'tint2: Battery low!' | |
battery_full_cmd = | |
bat1_font = Sans Bold 10 | |
bat2_font = Sans 7 | |
battery_font_color = #ffffff 100 | |
bat1_format = %p | |
bat2_format = (%s) | |
battery_padding = 0 0 | |
battery_background_id = 3 | |
battery_hide = 101 | |
battery_lclick_command = | |
battery_rclick_command = | |
battery_mclick_command = | |
battery_uwheel_command = | |
battery_dwheel_command = | |
ac_connected_cmd = | |
ac_disconnected_cmd = | |
#------------------------------------- | |
# Separator 1 | |
separator = new | |
separator_background_id = 0 | |
separator_color = #777777 80 | |
separator_style = empty | |
separator_size = 10 | |
separator_padding = 1 0 | |
#------------------------------------- | |
# Button 1 | |
button = new | |
button_icon = system-shutdown | |
button_text = | |
button_tooltip = Shutdown | |
button_lclick_command = systemctl -i poweroff | |
button_rclick_command = | |
button_mclick_command = | |
button_uwheel_command = | |
button_dwheel_command = | |
button_font_color = #f7f7f7 100 | |
button_padding = 0 0 | |
button_background_id = 0 | |
button_centered = 1 | |
button_max_icon_size = 25 | |
#------------------------------------- | |
# Button 2 | |
button = new | |
button_icon = system-reboot | |
button_text = | |
button_tooltip = Reboot | |
button_lclick_command = systemctl -i reboot | |
button_rclick_command = | |
button_mclick_command = | |
button_uwheel_command = | |
button_dwheel_command = | |
button_font_color = #000000 100 | |
button_padding = 0 0 | |
button_background_id = 0 | |
button_centered = 1 | |
button_max_icon_size = 25 | |
#------------------------------------- | |
# Button 3 | |
button = new | |
button_icon = system-log-out | |
button_text = | |
button_tooltip = Logout | |
button_lclick_command = openbox --exit | |
button_rclick_command = | |
button_mclick_command = | |
button_uwheel_command = | |
button_dwheel_command = | |
button_font_color = #000000 100 | |
button_padding = 0 0 | |
button_background_id = 0 | |
button_centered = 1 | |
button_max_icon_size = 25 | |
#------------------------------------- | |
# Tooltip | |
tooltip_show_timeout = 0.5 | |
tooltip_hide_timeout = 0.1 | |
tooltip_padding = 4 4 | |
tooltip_background_id = 2 | |
tooltip_font_color = #ffffff 100 | |
tooltip_font = Noto Sans 12 |
Settings for jgmenu
When you read the guides to set up jgmenu, you will find that it is pretty customizable and that you can give your own touch to it with ease. In my case, as I use a dark red theme for Openbox, I setted it to match that theme; but you can make it look the way you want by just following the guides to set it up.
My current setup for jgmenu requires three files. The first file you need to create or modify is ~/.config/jgmenu/jgmenurc. You only need to copy and paste the following lines inside of it:
The next file you need to create or modify is ~/.config/jgmenu/append.csv. Then just replace its content with the following:
^sep() | |
Logout, openbox --exit, system-log-out | |
Power options, ^checkout(energy), system | |
^tag(energy) | |
Suspend, systemctl -i suspend, system-suspend | |
Reboot, systemctl -i reboot, system-reboot | |
Shutdown, systemctl -i poweroff, system-shutdown |
After doing that, the last file you need to create is ~/.config/jgmenu/prepend.csv and, then, just replace its content with the following:
@rect,,10,10,230,30,5,left,top,auto,#000000 0, | |
@search,,14,14,230,20,0,left,top,auto,#000000 0,Search application... | |
@text,,210,15,23,23,0,left,top,#ffffff 255,#000000 0,🔍 |
What we just did was to define the settings of jgmenu while adding some special items at the top and bottom parts of the menu that jgmenu will render. In the ~/.config/jgmenu/append.csv file is where we define the set of stuffs that will be showed in the bottom part of the rendered menu while at the ~/.config/jgmenu/prepend.csv file we define the stuffs that will be showed at the top part of the rendered menu. In this case, we are adding a search box on top of the menu while placing a button to finish the session and grouping other buttons to suspend, reboot or shutdown the computer from the menu on the bottom.
Picom settings
I left Picom as the last one because is the one I think that will cause more “troubles” outside of Arch. Even when its settings are almost the same everywhere, if you don’t use Arch, I truly recommend you to read the documentations of the distro you are using to find out the version they are currently distributing in their official repositories and find information of the settings available there for Picom. You will also have to read the docs and experiment a bit with the backends they provide to get to the best result for you. Another thing that you must have in mind is that the settings I’ll place here were made while using the newest versions of the backends and that some issues may appear if you use them with the legacy backends.
To set up Picom, all you have to do is to create a file named picom.conf and place it either at the ~/.config directory or at the ~/.config/picom directory. The directory you choose to place the file doesn’t make much difference, but it is usually located at ~/.config.
Once you’ve created the picom.conf file, just open it and put the following lines inside of it:
shadow = true; # This enables shadows for windows | |
fading = true; # This enables the fade in and fade out animations | |
backend = "glx"; # This sets GLX as the default backend | |
vsync = true; # This enables vertical syncronization | |
corner-radius = 12; # This sets how rounded the windows will be | |
shadow-radius = 20; # This sets how scattered the shadows will be | |
shadow-opacity = 0.7; # This sets the opacity of the shadows | |
shadow-color = "#252525"; # This sets the color of the shadows | |
shadow-offset-x = -20; # This sets the horizontal displacement of shadows | |
shadow-offset-y = -20; # This sets the vertical displacement of shadows | |
blur-method = "dual_kawase"; # This sets the method to blur the backgrounds | |
blur-strength = 3; # This sets the strength of the blur | |
wintypes: # These are individual settings for determined types of windows | |
{ | |
tooltip = { opacity = 0.75; }; | |
popup_menu = { opacity = 0.92; } | |
dropdown_menu = { opacity = 0.92; } | |
menu = { opacity = 0.92; } | |
dialog = { opacity = 0.97; } | |
combo = { shadow = false; opacity = 0.85; } | |
}; |
Additional recommendations
By following this guide and performing the aforementioned configurations, we are able to get a pretty good looking, minimalistic and functional workplace indeed; but we may be still missing some components like, for example, a file manager app, an application to configure GTK themes, a text editor, a calculator, a web browser or a media player. For those tasks and any other remaining customization tasks like, for example, customizing the mouse pointer, all I can say is that I encourage you to find the solutions that suits you the best.
Just in case you wonder, I personally use Nemo as file manager. I also use the GTK+ 3 version of LXAppearance to configure the GTK themes, Xed as text editor, galculator as calculator app, Chromium is my web browser, SMPlayer is my media player and I haven’t customized anything else… yet.
I hope this guide has been helpful for you and, please, always have in mind that the customizations I shared here were done by me to build my own environment and I decided to share them as a guide for people who may not know how to turn Openbox into more than just a black screen, for those who may want to customize Openbox quickly and for anybody else that may find here some piece of information they may find helpful. Feel free to modify the settings you find here as much as you want and, please, leave an upvote here and/or at the original Medium article if you found this article helpful.
Top comments (0)