{"id":1533,"date":"2025-07-20T23:38:35","date_gmt":"2025-07-21T06:38:35","guid":{"rendered":"https:\/\/catbradley.io\/?p=1533"},"modified":"2025-07-20T23:38:35","modified_gmt":"2025-07-21T06:38:35","slug":"i-made-kitty-terminal-even-more-awesome-by-using-these-15-customization-tips-and-tweaks","status":"publish","type":"post","link":"https:\/\/catbradley.io\/?p=1533","title":{"rendered":"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/kitty-terminal-customization.png\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" \/><\/p>\n<p>&#8220;If there is a media out there, VLC can play it!&#8221;. I want to say the same thing about Kitty and its versatility.<\/p>\n<p>If you didn&#8217;t know already, <a href=\"https:\/\/github.com\/kovidgoyal\/kitty\">Kitty<\/a> is one of the most comprehensive <a href=\"https:\/\/itsfoss.com\/linux-terminal-emulators\/\" rel=\"noreferrer\">terminal emulators available in Linux<\/a>.<\/p>\n<p>It offers image support, ligatures, animated cursors, and a whole lot of productivity tweaks. I could write a mini-book if I had to explain each one in full detail.<\/p>\n<p>I am not going to do that. Instead, I&#8217;ll share some of my favorite features and tweaks I use with Kitty.<\/p>\n<h2>Installing Kitty<\/h2>\n<p>Since Kitty is a pretty popular terminal emulator, it is available in the default repository of most of the Linux distributions.<\/p>\n<p>In Ubuntu, you can install a slightly older version of Kitty by using the APT command:<\/p>\n<pre><code>sudo apt install kitty<\/code><\/pre>\n<p>Arch Linux users can install it from the Extra repo:<\/p>\n<pre><code>sudo pacman -S kitty<\/code><\/pre>\n<p>For Fedora,<\/p>\n<pre><code>sudo dnf install kitty<\/code><\/pre>\n<p>If you are any other distro user, or your system repo provides an older version of Kitty, use the official pre-built binary from the Kitty team.<\/p>\n<pre><code>curl -L https:\/\/sw.kovidgoyal.net\/kitty\/installer.sh | sh \/dev\/stdin<\/code><\/pre>\n<p>Or, download binary from the GitHub releases page.<\/p>\n<div class=\"kg-card kg-button-card kg-align-center\"><a href=\"https:\/\/github.com\/kovidgoyal\/kitty\/releases\" class=\"kg-btn kg-btn-accent\">Download Kitty<\/a><\/div>\n<h2>1. Generating default config<\/h2>\n<p>Kitty offers a huge configuration possibility, but through its config file. This config file should be <code>kitty.conf<\/code> located in <code>~\/.config\/kitty<\/code> directory.<\/p>\n<p>It is always good to use the default config file and make changes to it rather than creating a config from scratch.<\/p>\n<p>Open Kitty and use the keyboard shortcut <code>CTRL+SHIFT+F2<\/code>. This will open the Kitty config in a new window. If not present already, it will create one for you and open it.<\/p>\n<p>For me, it opened in the Vi editor. If this is not needed, you can quit the config using the Vi shortcut <code>:q<\/code> (without any changes).<\/p>\n<figure class=\"kg-card kg-video-card kg-width-regular kg-card-hascaption\" data-kg-thumbnail=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/open-kitty-config_thumb.jpg\" data-kg-custom-thumbnail>\n<div class=\"kg-video-container\">\n                <video src=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/open-kitty-config.webm\" poster=\"https:\/\/img.spacergif.org\/v1\/1036x643\/0a\/spacer.png\" width=\"1036\" height=\"643\" loop autoplay muted playsinline preload=\"none\"><\/video>\n<div class=\"kg-video-overlay\">\n                    <button class=\"kg-video-large-play-icon\" aria-label=\"Play video\">\n<p>                    <\/p><\/button>\n                <\/div>\n<div class=\"kg-video-player-container kg-video-hide\">\n<div class=\"kg-video-player\">\n                        <button class=\"kg-video-play-icon\" aria-label=\"Play video\">\n<p>                        <\/p><\/button><br \/>\n                        <button class=\"kg-video-pause-icon kg-video-hide\" aria-label=\"Pause video\">\n<p>                        <\/p><\/button><br \/>\n                        <span class=\"kg-video-current-time\">0:00<\/span>\n<div class=\"kg-video-time\">\n                            \/<span class=\"kg-video-duration\">0:11<\/span>\n                        <\/div>\n<p>                        <button class=\"kg-video-playback-rate\" aria-label=\"Adjust playback speed\">1\u00d7<\/button><br \/>\n                        <button class=\"kg-video-unmute-icon\" aria-label=\"Unmute\"><\/button><\/p>\n<p>                        <br \/>\n                        <button class=\"kg-video-mute-icon kg-video-hide\" aria-label=\"Mute\"><\/button><\/p>\n<p>                        <\/p><\/div>\n<\/div>\n<\/div><figcaption>\n<p><span>Open Kitty config file using the shortcut in Kitty. This will open the config file in Vi editor.<\/span><\/p>\n<\/figcaption><\/figure>\n<p>Then open it in your favorite command line editor or GUI-based text editors.<\/p>\n<pre><code>nano ~\/.config\/kitty\/kitty.conf<\/code><\/pre>\n<h2>2. Setting a different font<\/h2>\n<p>A proper monospace font can increase the terminal aesthetics. Here, we will set the terminal font as <a href=\"https:\/\/fonts.google.com\/specimen\/JetBrains+Mono?query=jetbrains\">JetBrains Mono font<\/a>.<\/p>\n<p>Before proceeding, make sure the <a href=\"https:\/\/itsfoss.com\/install-fonts-ubuntu\/\">font is installed<\/a> on your system.<\/p>\n<p>First, list the set of supported fonts using the command:<\/p>\n<pre><code>kitty +list-fonts<\/code><\/pre>\n<p>From the list, <strong>note the exact name of the font you want to use<\/strong>:<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/list-fonts.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"854\" height=\"475\" \/><figcaption><span>List Fonts<\/span><\/figcaption><\/figure>\n<p>Now, open Kitty config and scroll down to the line that says <code>font-family<\/code>. Here, remove the comment in front of the item and change the name as follows:<\/p>\n<pre><code>font-family\t\t\"JetBrains Mono\"<\/code><\/pre>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-a-font-family.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"837\" height=\"580\" \/><figcaption><span>Set a Font<\/span><\/figcaption><\/figure>\n<div class=\"kg-card kg-callout-card kg-callout-card-green\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">Kitty supports setting individual font as well, like Bold, Italics, etc.<\/div>\n<\/div>\n<p>Setting font alone is not sufficient; you should be able to change the font size as well. Fret not! Kitty has an option here.<\/p>\n<p>Search for <code>font-size<\/code>. Uncomment the line and change the value to sufficiently large.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/change-font-size.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"881\" height=\"464\" \/><figcaption><span>Font Size<\/span><\/figcaption><\/figure>\n<h2>3. Re-setting scrollback<\/h2>\n<p>One of the most essential features in a terminal is a sufficiently long scrollback lines.<\/p>\n<p>Many commands like cat, do not use a pager like less to print text. So, if a text has a huge number of lines, more than your scrollback, then the beginning parts of the text will be unreachable.<\/p>\n<p>At the same time, setting a huge scrollback line is also not advised. Since the scrollback lines are stored in RAM, more scrollback lines means more hit on the RAM usage.<\/p>\n<p>A value of <code>10000<\/code> will be good for most users, and a <code>2000<\/code> is also fine for a GUI-only user.<\/p>\n<p>On the Kitty config file, find the line <code>scrollback_lines<\/code>. By default, the value is 2000.<\/p>\n<p>To change, uncomment the line and add a value, say 5000.<\/p>\n<pre><code>scrollback_lines\t5000<\/code><\/pre>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/scrollback-lines.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"879\" height=\"475\" \/><figcaption><span>Scrollback Lines<\/span><\/figcaption><\/figure>\n<p>The scrollback pager feature in Kitty allows you to open your terminal\u2019s scrollback history in a full-featured pager program (like less or nvim) for easier navigation, search, and copying.<\/p>\n<p>By default, this is disabled. You need to enable it by specifying the value in MB.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/scroll-back-pager-history.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"881\" height=\"464\" \/><figcaption><span>Scrollback Pager History<\/span><\/figcaption><\/figure>\n<div class=\"kg-card kg-callout-card kg-callout-card-green\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">Use most instead of less and add colors to your pager system.<\/div>\n<\/div>\n<h2>4. Hiding mouse on typing (for keyboard addicts)<\/h2>\n<p>For terminal power users, the mouse may feel like a distraction. In Kitty, you can play with the mouse presence in several ways. Hiding the mouse immediately when you start typing is my preference.<\/p>\n<p>To get this action, set the <code>mouse_hide_wait<\/code> variable to a negative value.<\/p>\n<pre><code>mouse_hide_wait\t-3.0<\/code><\/pre>\n<p>If you make this value any positive number, the terminal will wait for that many seconds and then disable the mouse if no mouse action occurred within that time range.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/hide-mouse-cursor.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"885\" height=\"427\" \/><figcaption><span>Hide Mouse Cursor<\/span><\/figcaption><\/figure>\n<p>In the screenshot above, I set the value to 5.0 seconds. So now, no matter you type or not, the mouse will be disabled if you don&#8217;t touch your mouse for more than 5 seconds.<\/p>\n<p>Set it to 0 and the mouse won&#8217;t hide at all.<\/p>\n<h2>5. Setting window size<\/h2>\n<p>Kitty remembers the window size from the last session by default, so you don&#8217;t need to resize it every time.<\/p>\n<p>Still, you can set the default window width in Kitty. <\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/kitty-window-size.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"885\" height=\"426\" \/><figcaption><span>Window Size<\/span><\/figcaption><\/figure>\n<p>The <code>remember_window_size yes<\/code> is self-explanatory. The window size will be remembered with Kitty instances.<\/p>\n<p>You can set the <code>initial_window_width\/height<\/code> key to a required size and then disable the <code>remember_window_size<\/code> so that the new instances always open in the specified size.<\/p>\n<p>This is specifically useful in the next section, where we disable the window decoration and thus you can&#8217;t resize the terminal with mouse anymore.<\/p>\n<h2>6. Hiding window decorations<\/h2>\n<p>If you are using tiling window managers like <a href=\"https:\/\/itsfoss.com\/hyprland\/\" rel=\"noreferrer\">Hyprland<\/a>, it is good to avoid the title in Kitty. You won&#8217;t find any serious use for it, because window resizing is done differently in tiling window managers.<\/p>\n<p>Search and locate the <code>hide_window_decorations<\/code> option. Uncomment the line and change its value to <code>yes<\/code> from the default <code>no<\/code>.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/hide-window-decorations.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"883\" height=\"435\" \/><figcaption><span>Hide Window Decorations<\/span><\/figcaption><\/figure>\n<h2>7. Customizing the tabs<\/h2>\n<p>Like most of the terminal, Kitty offers tabs as well. The difference is that Kitty offers some ways to make the tabs look unique.<\/p>\n<h3>Tab bar position<\/h3>\n<p>You can use the <code>tab_bar_edge<\/code> key to specify whether you want the tab list at top or bottom. The default is bottom, and that is fine.<\/p>\n<h3>Tab bar style<\/h3>\n<p>There are several cool styles available for the tab bar, like <em>fade<\/em>, <em>slant<\/em>, <em>separator<\/em>, <em>powerline<\/em>, and custom.<\/p>\n<p>We will be going with the <strong>powerline<\/strong>, which is pleasing and can be quickly made work. Uncomment the line and change the value.<\/p>\n<pre><code>tab_bar_style powerline<\/code><\/pre>\n<p>Now, the powerline offers another key called the <code>tab_powerline_style<\/code>. This can be set to <em>angled<\/em>, <em>slanted<\/em>, <em>round<\/em>.<\/p>\n<p>All these looks cool, but I will be going with <code>round<\/code> which along with the Catppuccin Starship prompt will look aligned.<\/p>\n<pre><code>tab_powerline_style round<\/code><\/pre>\n<figure class=\"kg-card kg-video-card kg-width-regular kg-card-hascaption\" data-kg-thumbnail=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/tabs-in-kitty_thumb.jpg\" data-kg-custom-thumbnail>\n<div class=\"kg-video-container\">\n                <video src=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/tabs-in-kitty.webm\" poster=\"https:\/\/img.spacergif.org\/v1\/1285x612\/0a\/spacer.png\" width=\"1285\" height=\"612\" loop autoplay muted playsinline preload=\"none\"><\/video>\n<div class=\"kg-video-overlay\">\n                    <button class=\"kg-video-large-play-icon\" aria-label=\"Play video\">\n<p>                    <\/p><\/button>\n                <\/div>\n<div class=\"kg-video-player-container kg-video-hide\">\n<div class=\"kg-video-player\">\n                        <button class=\"kg-video-play-icon\" aria-label=\"Play video\">\n<p>                        <\/p><\/button><br \/>\n                        <button class=\"kg-video-pause-icon kg-video-hide\" aria-label=\"Pause video\">\n<p>                        <\/p><\/button><br \/>\n                        <span class=\"kg-video-current-time\">0:00<\/span>\n<div class=\"kg-video-time\">\n                            \/<span class=\"kg-video-duration\">0:32<\/span>\n                        <\/div>\n<p>                        <button class=\"kg-video-playback-rate\" aria-label=\"Adjust playback speed\">1\u00d7<\/button><br \/>\n                        <button class=\"kg-video-unmute-icon\" aria-label=\"Unmute\"><\/button><\/p>\n<p>                        <br \/>\n                        <button class=\"kg-video-mute-icon kg-video-hide\" aria-label=\"Mute\"><\/button><\/p>\n<p>                        <\/p><\/div>\n<\/div>\n<\/div><figcaption>\n<p><span>Tabs in Kitty<\/span><\/p>\n<\/figcaption><\/figure>\n<h2>8. Changing the shell<\/h2>\n<p>Most of the Linux distributions come with Bash as the default shell. Many users, on the other hand, <a href=\"https:\/\/linuxhandbook.com\/why-zsh\/\">love the ZSH shell<\/a>.<\/p>\n<p>The most common way people follow is to change the system shell. But that applies to all the terminals.<\/p>\n<p>Here comes the use of <code>shell<\/code> key. You can set a shell for only the Kitty terminal and the rest of the system will use the default bash shell.<\/p>\n<p>For this, first find the command location of your desired shell using the <code>which<\/code> command:<\/p>\n<pre><code>which zsh<\/code><\/pre>\n<p>For me, it is <code>\/usr\/bin\/zsh<\/code>.<\/p>\n<p>Now, search for the <code>shell<\/code> key in Kitty config.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-green\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">If you are searching for the <code>shell<\/code> using the editor&#8217;s find tool, search for <code>shell .<\/code>, so that you reach the result directly.<\/div>\n<\/div>\n<p>The default value is <code>.<\/code> which means the user&#8217;s default shell is used as Kitty shell.<\/p>\n<p>Remove this <code>.<\/code> and paste the location of your desired shell.<\/p>\n<pre><code>shell \/usr\/bin\/zsh<\/code><\/pre>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/change-shell.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"889\" height=\"382\" \/><figcaption><span>Change Shell<\/span><\/figcaption><\/figure>\n<div class=\"kg-card kg-callout-card kg-callout-card-green\">\n<div class=\"kg-callout-emoji\">\ud83d\udca1<\/div>\n<div class=\"kg-callout-text\">You can set a default editor as well using the <code>editor<\/code> key in Kitty configuration file. The procedure is the same as changing shell.<\/div>\n<\/div>\n<h2>9. Notifying on command finish<\/h2>\n<p>With Kitty, you can get a desktop notification when a long-running command finishes up.<\/p>\n<p>For this, uncomment the <code>notify_on_cmd_finish<\/code> key and set its value to <code>invisible<\/code> or <code>unfocussed<\/code>.<\/p>\n<p>I am going with <code>invisible<\/code>, since, as per manual, it will:<\/p>\n<blockquote><p>Only send a notification when the window both is unfocused and not visible to the user, for example, because it is in an inactive tab or its OS window is not currently active.<\/p><\/blockquote>\n<pre><code>notify_on_cmd_finish invisible<\/code><\/pre>\n<p>If you are more into detail, set a time limit for the long command.<\/p>\n<p>I am going to set 20 seconds as the duration of a long command.<\/p>\n<pre><code>notify_on_cmd_finish invisible 20<\/code><\/pre>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/notify-on-command-finish.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"954\" height=\"469\" \/><figcaption><span>Notify on Command Finish<\/span><\/figcaption><\/figure>\n<p>There is more to explore in this section for you!<\/p>\n<h2>10. Changing themes<\/h2>\n<p>Kitty offers a huge number of themes. Run this command:<\/p>\n<pre><code>kitten themes<\/code><\/pre>\n<p>This will download the themes from the repo and display it to you.<\/p>\n<p>Scroll down to see them all. Once you find the perfect one for you, press the ENTER key to apply the theme!<\/p>\n<p>Also, use the <code>\/<\/code> button to start a search.<\/p>\n<p>In the small video below, you can see that I apply Catppuccin theme to Kitty.<\/p>\n<figure class=\"kg-card kg-embed-card kg-card-hascaption\"><figcaption>\n<p><span>Applying theme to Kitty Terminal<\/span><\/p>\n<\/figcaption><\/figure>\n<p>Once you have selected the theme, press enter and it asks whether you want to modify the config or add the theme to <code>~\/.config\/kitty\/themes<\/code>.<\/p>\n<p>I will press the <strong>M<\/strong> key so that the Kitty Config is modified and the theme is set.<\/p>\n<h2>11. Animating cursor tail<\/h2>\n<p>Latest versions of Kitty support setting a cool cursor animation.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-blue\">\n<div class=\"kg-callout-emoji\">\ud83d\udccb<\/div>\n<div class=\"kg-callout-text\">The values for the keys in this section need to be fine tuned as needed for your satisfaction.<\/div>\n<\/div>\n<p>To enable it, first search for the key <code>cursor_trail<\/code>. Uncomment it. I have set a value of 200 for it.<\/p>\n<p>Now, set a value for <code>cursor_trail_decay<\/code> and <code>cursor_trail_start_threshold<\/code> as shown in the screenshot below.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-cursor-trail-values-for-related-keys.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"831\" height=\"993\" \/><figcaption><span>Cursor Trail Values<\/span><\/figcaption><\/figure>\n<p>Now, reopen Kitty. You can see a cool cursor trail animation when the cursor is moved significantly.<\/p>\n<figure class=\"kg-card kg-video-card kg-width-regular kg-card-hascaption\" data-kg-thumbnail=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/cursor-trail-animation_thumb.jpg\" data-kg-custom-thumbnail>\n<div class=\"kg-video-container\">\n                <video src=\"https:\/\/itsfoss.com\/content\/media\/2025\/07\/cursor-trail-animation.webm\" poster=\"https:\/\/img.spacergif.org\/v1\/995x426\/0a\/spacer.png\" width=\"995\" height=\"426\" loop autoplay muted playsinline preload=\"none\"><\/video>\n<div class=\"kg-video-overlay\">\n                    <button class=\"kg-video-large-play-icon\" aria-label=\"Play video\">\n<p>                    <\/p><\/button>\n                <\/div>\n<div class=\"kg-video-player-container kg-video-hide\">\n<div class=\"kg-video-player\">\n                        <button class=\"kg-video-play-icon\" aria-label=\"Play video\">\n<p>                        <\/p><\/button><br \/>\n                        <button class=\"kg-video-pause-icon kg-video-hide\" aria-label=\"Pause video\">\n<p>                        <\/p><\/button><br \/>\n                        <span class=\"kg-video-current-time\">0:00<\/span>\n<div class=\"kg-video-time\">\n                            \/<span class=\"kg-video-duration\">0:19<\/span>\n                        <\/div>\n<p>                        <button class=\"kg-video-playback-rate\" aria-label=\"Adjust playback speed\">1\u00d7<\/button><br \/>\n                        <button class=\"kg-video-unmute-icon\" aria-label=\"Unmute\"><\/button><\/p>\n<p>                        <br \/>\n                        <button class=\"kg-video-mute-icon kg-video-hide\" aria-label=\"Mute\"><\/button><\/p>\n<p>                        <\/p><\/div>\n<\/div>\n<\/div><figcaption>\n<p><span>Showing Cursor Trail Animation<\/span><\/p>\n<\/figcaption><\/figure>\n<h2>12. Automatic dark and light theme change<\/h2>\n<p>Kitty supports automatically changing themes according to the system dark and light mode.<\/p>\n<div class=\"kg-card kg-callout-card kg-callout-card-red\">\n<div class=\"kg-callout-emoji\">\ud83d\udea7<\/div>\n<div class=\"kg-callout-text\">This is supported in Kitty version 0.38+. So, if you are using Ubuntu 24.04 or related system, the default package repo version of Kitty doesn&#8217;t support this.<\/div>\n<\/div>\n<p>For this, first open Kitty and run:<\/p>\n<pre><code>kitten themes<\/code><\/pre>\n<p>Now, from the list of dark theme, select a dark theme and press enter.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/select-a-dark-theme_1752684022525_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"1021\" height=\"516\" \/><figcaption><span>Select a dark theme<\/span><\/figcaption><\/figure>\n<p>In the next page, press the <strong>D<\/strong> key so that this theme is the default theme for the dark mode.<\/p>\n<p>Now, run the <code>kitten themes<\/code> command again. This time, select a light theme from the list and press enter. In the next screen, press the <strong>L<\/strong> key, to make the selected light theme default for light mode.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-as-light-mode-theme_1752684158202_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"1010\" height=\"485\" \/><figcaption><span>Set light mode theme<\/span><\/figcaption><\/figure>\n<p>Run <code>kitten themes<\/code> one more time and select a theme at random, and in the settings screen, press the <strong>N<\/strong> key to make it the default in case of no preference.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-as-no-pref-theme_1752684228165_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"1001\" height=\"469\" \/><figcaption><span>No preference mode theme<\/span><\/figcaption><\/figure>\n<p>That&#8217;s it. Now, the Kitty will show the theme based on the current system mode.<\/p>\n<p>You can take a look at the <code>~\/.config\/kitty<\/code> folder to make sure that the dark, light, and no-pref mode themes are present as config file.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/mode-theme-files-in-kitty-config-directory_1752684388854_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"749\" height=\"299\" \/><figcaption><span>Theme files saved for different modes. <\/span><\/figcaption><\/figure>\n<h2>13. Setting a background image<\/h2>\n<p>Take the customization to the next level by adding an image as the background for Kitty terminal.<\/p>\n<p>Locate the key <code>background_image<\/code> in the kitty config file.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-background-image_1752684765275_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"1000\" height=\"680\" \/><figcaption><span>Background Image and Layout<\/span><\/figcaption><\/figure>\n<p>Set its value as path to the image file. Also, change <code>background_image_layout<\/code> to a required value, as shown in the screenshot above.<\/p>\n<p>And you can see that my kitty terminal now has an entirely different look that matches the theme of It&#8217;s FOSS. Good for the social media videos.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/kitty-background-image_1752685067587_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"940\" height=\"314\" \/><figcaption><span>Set background image<\/span><\/figcaption><\/figure>\n<h2>14. Adding a watermark\/logo<\/h2>\n<p>Want to spice up the terminal even more? Let&#8217;s add a small logo as well!<\/p>\n<p>Make sure you have a small image, say 50&#215;50 sized images. This will make things easy. There is a scale option <code>window_logo_scale<\/code>, but that may require some trial and error.<\/p>\n<p>Now, in the Kitty config, locate the key <code>window_logo_path<\/code>. Uncomment it and change its value to the path of the logo file.<\/p>\n<p>Also, fix the position of the logo using the <code>window_logo_position<\/code> key.<\/p>\n<p>Use the <code>window_logo_alpha<\/code> key to set a fade to the logo.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/set-window-logo_1752685546937_0.jpg\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"956\" height=\"896\" \/><figcaption><span>Set Window Logo<\/span><\/figcaption><\/figure>\n<p>That&#8217;s it! Save the config file and reopen Kitty to view the result.<\/p>\n<figure class=\"kg-card kg-image-card kg-card-hascaption\"><img decoding=\"async\" src=\"https:\/\/itsfoss.com\/content\/images\/2025\/07\/window-logo_1752685643513_0.png\" class=\"kg-image\" alt=\"I Made Kitty Terminal Even More Awesome by Using These 15 Customization Tips and Tweaks\" loading=\"lazy\" width=\"845\" height=\"314\" \/><figcaption><span>It&#8217;s FOSS Logo Applied<\/span><\/figcaption><\/figure>\n<h2>15. Setting mouse actions<\/h2>\n<p>You can define what the mouse buttons do in Kitty using the <code>mouse_map<\/code> option in the Mouse Actions section.<\/p>\n<p>The general syntax is:<\/p>\n<pre><code>mouse_map button-name event-type modes action<\/code><\/pre>\n<p>For example, the default middle-click to paste from selection action is set in Kitty using:<\/p>\n<pre><code>mouse_map middle release ungrabbed paste_from_selection<\/code><\/pre>\n<p>Kitty offers a wide range of customization, and I have mentioned some of the cool ones that I use regularly.<\/p>\n<p>There are more power user friendly features, like:<\/p>\n<ul>\n<li>Keyboard shortcuts mapping.<\/li>\n<li>Using Kittens to extend the functionality, etc.<\/li>\n<\/ul>\n<p>Explore the vast possibilities of Kitty by using it.<\/p>\n<h2>Conclusion<\/h2>\n<p>You saw a glimpse of customized Kitty terminal in our <a href=\"https:\/\/www.youtube.com\/watch?v=ffmm80_Cii4\">terminal makeover video first<\/a>.<\/p>\n<figure class=\"kg-card kg-embed-card\"><\/figure>\n<div class=\"kg-card kg-button-card kg-align-center\"><a href=\"https:\/\/www.youtube.com\/@itsfoss\" class=\"kg-btn kg-btn-accent\">Subscribe to It&#8217;s FOSS YouTube Channel<\/a><\/div>\n<p>We discussed internally and decided to do a dedicated tutorial on customizing Kitty. And hence this article.<\/p>\n<p>I understand that customizing the terminal is not everyone&#8217;s preference but I like changing things to make them look asthetically pleasing. Kitty is my current favorite, even though I am thinking of using Ghostty.<\/p>\n<p>Please let me know in the comments if you like this article or if you notice any issues with the config changes.<\/p>","protected":false},"excerpt":{"rendered":"<p>&#8220;If there is a media out there, VLC can play it!&#8221;. I want to say the same thing about Kitty and its versatility. If you didn&#8217;t know already, Kitty is&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rop_custom_images_group":[],"rop_custom_messages_group":[],"rop_publish_now":"initial","rop_publish_now_accounts":[],"rop_publish_now_history":[],"rop_publish_now_status":"pending","footnotes":""},"categories":[1],"tags":[],"class_list":["post-1533","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-rss"],"_links":{"self":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/1533","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1533"}],"version-history":[{"count":0,"href":"https:\/\/catbradley.io\/index.php?rest_route=\/wp\/v2\/posts\/1533\/revisions"}],"wp:attachment":[{"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1533"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/catbradley.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}