Branding the Console
This chapter will guide you how to brand the Karaf console.
By branding, it means that you can define your own welcome message and console prompt.
Create your branding bundle
At startup, Karaf is looking for a bundle which export org.apache.karaf.branding
package containing a branding.properties
file.
So you need to create a very simply bundle just containing a org/apache/karaf/branding/branding.properties
file.
The Maven POM of your branding bundle should looks like:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>your.group.id</groupId> <artifactId>your.branding.artifact.id</artifactId> <version>1.0-SNAPSHOT</version> <packaging>bundle</packaging> <name>Your Branding Bundle Name</name> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <version>2.2</version> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</bundle-SymbolicName> <Import-Package>*</Import-Package> <Private-Package>!*</Private-Package> <Export-Package> org.apache.karaf.branding </Export-Package> <Spring-Context>*;public-context:=false</Spring-Context> </instructions> </configuration> </plugin> </plugins> </build> </project>
Now, add a src/main/resources/org/apache/karaf/branding/branding.properties
looking like:
code
welcome = \
\u001B[36m __ __ ____ \u001B[0m\r\n\
\u001B[36m / ///___ __________ _/ __/ \u001B[0m\r\n\
\u001B[36m / ,< / __ `/ __/ __ `/ / \u001B[0m\r\n\
\u001B[36m / /| |/ // / / / // / __/ \u001B[0m\r\n\
\u001B[36m // ||
_,//
__,/_/ \u001B[0m\r\n\
\r\n\
\u001B[1m Apache Karaf\u001B[0m ($
)\r\n\
\r\n\
Hit '\u001B[1m<tab>\u001B[0m' for a list of available commands\r\n\
and '\u001B[1m[cmd] --help\u001B[0m' for help on a specific command.\r\n\
Hit '\u001B[1m<ctrl-d>\u001B[0m' or '\u001B[1mosgi:shutdown\u001B[0m' to shutdown Karaf.\r\n
prompt = \u001B[1m$
@$
\u001B[0m>
code
As you can see, the branding.properties
contains two properties:
- welcome is the welcome message displayed when you start Karaf.
- prompt is the string used to display the console prompt. This string supports variables:
- ${USER}} defines the user name of the prompt. NB: up to know, it's hard coded to "karaf". However you can define
your own static user name. - $
APPLICATION
defines the Karaf instance name.
- ${USER}} defines the user name of the prompt. NB: up to know, it's hard coded to "karaf". However you can define
As you can see, both strings support ASCII escaped format. For instance \u001B[1m switch the foreground in bold and \u001B[0m
switch back to normal.
Some prompt examples follow:
- Define a user with fanzy colors
prompt = \u001B[36mmy-karaf-user\u001B[0m\u001B[1m@\u001B[0m\u001B[34m$
\u001B[0m>
- Static sober prompt
prompt = my-user@my-karaf>mvn installh2. Installing the branding bundle Build your branding bundle:
and simply drop the generated jar file into the Karaf lib directory.
Start Karaf and you will see your branded Karaf console.