Alacritty vs Kitty- Benchmarking and comparisions-

Note- I manually edited alacritty.yml and kitty.conf to make both as similar as possible with their common settings.
font used - ttf-fira-code
run this before using my config.

sudo pacman -S ttf-fira-code

MY TESTING-

  1. testing performance-(in fish shell)
    command-
ls / -lR
  • i have a lot of timeshift backups which were also included in testing.

result-
Alacritty-

________________________________________________________
Executed in   26.31 secs    fish           external
   usr time   19.42 secs  448.00 micros   19.42 secs
   sys time   34.70 secs   90.00 micros   34.70 secs

Kitty-

________________________________________________________
Executed in   26.45 secs    fish           external
   usr time   19.52 secs  213.00 micros   19.52 secs
   sys time   34.47 secs  288.00 micros   34.47 secs

Observation- almost no difference in performance as compared to standard terminals like gnome-terminal or xfce4-terminal, etc.

  1. testing font appearance-
https://imgur.com/a/upgwW6V

used-

#!/bin/sh

echo "# 24-bit (true-color)"
# based on: https://gist.github.com/XVilka/8346728
term_cols="$(tput cols || echo 80)"
cols=$(echo "2^((l($term_cols)/l(2))-1)" | bc -l 2> /dev/null)
rows=$(( cols / 2 ))
awk -v cols="$cols" -v rows="$rows" 'BEGIN{
    s="  ";
    m=cols+rows;
    for (row = 0; row<rows; row++) {
      for (col = 0; col<cols; col++) {
          i = row+col;
          r = 255-(i*255/m);
          g = (i*510/m);
          b = (i*255/m);
          if (g>255) g = 510-g;
          printf "\033[48;2;%d;%d;%dm", r,g,b;
          printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b;
          printf "%s\033[0m", substr(s,(col+row)%2+1,1);
      }
      printf "\n";
    }
    printf "\n\n";
}'

echo "# text decorations"
printf '\e[1mbold\e[22m\n'
printf '\e[2mdim\e[22m\n'
printf '\e[3mitalic\e[23m\n'
printf '\e[4munderline\e[24m\n'
printf '\e[4:1mthis is also underline\e[24m\n'
printf '\e[21mdouble underline\e[24m\n'
printf '\e[4:2mthis is also double underline\e[24m\n'
printf '\e[4:3mcurly underline\e[24m\n'
printf '\e[58;5;10;4mcolored underline\e[59;24m\n'
printf '\e[5mblink\e[25m\n'
printf '\e[7mreverse\e[27m\n'
printf '\e[8minvisible\e[28m <- invisible (but copy-pasteable)\n'
printf '\e[9mstrikethrough\e[29m\n'
printf '\e[53moverline\e[55m\n'
echo

echo "# magic string (see https://en.wikipedia.org/wiki/Unicode#Web)"
echo "รฉ ฮ” ะ™ ืง ู… เน— ใ‚ ๅถ ่‘‰ ๋ง"
echo

echo "# emojis"
echo "๐Ÿ˜ƒ๐Ÿ˜ฑ๐Ÿ˜ต"
echo

echo "# right-to-left ('w' symbol should be at right side)"
echo "ืฉืจื”"
echo

echo "# sixel graphics"
printf '\eP0;0;0q"1;1;64;64#0;2;0;0;0#1;2;100;100;100#1~{wo_!11?@FN^!34~^NB
@?_ow{~$#0?BFN^!11~}wo_!34?_o{}~^NFB-#1!5~}{o_!12?BF^!25~^NB@??ow{!6~$#0!5?
@BN^!12~{w_!25?_o{}~~NFB-#1!10~}w_!12?@BN^!15~^NFB@?_w{}!10~$#0!10?@F^!12~}
{o_!15?_ow{}~^FB@-#1!14~}{o_!11?@BF^!7~^FB??_ow}!15~$#0!14?@BN^!11~}{w_!7?_
w{~~^NF@-#1!18~}{wo!11?_r^FB@??ow}!20~$#0!18?@BFN!11~^K_w{}~~NF@-#1!23~M!4?
_oWMF@!6?BN^!21~$#0!23?p!4~^Nfpw}!6~{o_-#1!18~^NB@?_ow{}~wo!12?@BFN!17~$#0!
18?_o{}~^NFB@?FN!12~}{wo-#1!13~^NB@??_w{}!9~}{w_!12?BFN^!12~$#0!13?_o{}~~^F
B@!9?@BF^!12~{wo_-#1!8~^NFB@?_w{}!19~{wo_!11?@BN^!8~$#0!8?_ow{}~^FB@!19?BFN
^!11~}{o_-#1!4~^NB@?_ow{!28~}{o_!12?BF^!4~$#0!4?_o{}~^NFB!28?@BN^!12~{w_-#1
NB@???GM!38NMG!13?@BN$#0?KMNNNF@!38?@F!13NMK-\e\'

observation- kitty is better than alacritty.

  1. testing latency-
    check this link-

https://thume.ca/2020/05/20/making-a-latency-tester/

  1. my opinion- kitty is faster and more responsive if configured well, slightly better than alacritty. it supports emojis,tiling,tabs,image drawing.
    you could say alacritty is better coz it is written in rust, but on the other hand kitty is made out of many programming languages to provide best performace for each elements.

other useful links-

dev.to/bdmorin/level-up-your-terminal-game-18kh
hellricer.github.io/2019/10/05/test-drive-your-terminal.html
discuss.kakoune.com/t/kitty-vs-alacritty-vs-tmux/1280
github.com/kovidgoyal/kitty/issues/2701
https://www.sitepen.com/blog/an-even-more-modern-terminal-based-development-environment

also this is how neofetch looks on each-

https://imgur.com/a/37R80t6

my configs for each -
for kitty-
kitty.conf-

Fonts {{{

font_family      Fira Code Retina
bold_font        Fira Code Bold
italic_font      Fira Code Italic
bold_italic_font Fira Code Bold Italic
font_size 10.0
force_ltr no
adjust_line_height  1
adjust_column_width 0
disable_ligatures never
font_features FiraCode-Retina +zero
box_drawing_scale 0.001, 1, 1.5, 2

: }}}




: Cursor customization {{{

cursor #ffffff
cursor_text_color #ffffff
cursor_shape beam
cursor_beam_thickness 1
cursor_underline_thickness 2.0
cursor_blink_interval -1
cursor_stop_blinking_after 0

: }}}




: Scrollback {{{

scrollback_lines 400
scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER
scrollback_pager_history_size 0
scrollback_fill_enlarged_window no
wheel_scroll_multiplier 5.0
touch_scroll_multiplier 1.0

: }}}




: Mouse {{{

mouse_hide_wait 4
url_color #0087bd
url_style curly
open_url_modifiers kitty_mod
open_url_with default
url_prefixes http https file ftp gemini irc gopher mailto news git
detect_urls yes
copy_on_select never
strip_trailing_spaces always
rectangle_select_modifiers ctrl+alt
terminal_select_modifiers shift
select_by_word_characters @-./_~?&=%+#
click_interval -1.0
focus_follows_mouse no
pointer_shape_when_grabbed arrow
default_pointer_shape beam
pointer_shape_when_dragging beam

: }}}





: Performance tuning {{{

repaint_delay 13
input_delay 0
sync_to_monitor yes

: }}}




: Terminal bell {{{

enable_audio_bell none 
visual_bell_duration 0.0
window_alert_on_bell none
bell_on_tab yes
command_on_bell none

: }}}




: Window layout {{{

remember_window_size  no
initial_window_width  840
initial_window_height 535
enabled_layouts *
window_resize_step_cells 2
window_resize_step_lines 2
window_border_width 0.1pt
draw_minimal_borders yes
window_margin_width 0
single_window_margin_width -1
window_padding_width 0
placement_strategy center
active_border_color #00ff00
inactive_border_color #cccccc
bell_border_color #ff5a00
inactive_text_alpha 1.0
hide_window_decorations no
resize_debounce_time 0.1
resize_draw_strategy static
resize_in_steps no
confirm_os_window_close 0

: }}}




: Tab bar {{{

tab_bar_edge bottom
tab_bar_margin_width 0.0
tab_bar_style fade
tab_bar_min_tabs 2
tab_switch_strategy previous
tab_fade 0.25 0.5 0.75 1
tab_separator " โ”‡"
tab_powerline_style angled
tab_activity_symbol none
tab_title_template "{title}"
active_tab_title_template none
active_tab_foreground   #000
active_tab_background   #eee
active_tab_font_style   bold-italic
inactive_tab_foreground #444
inactive_tab_background #999
inactive_tab_font_style normal
tab_bar_background none

: }}}




#: Color scheme {{{

background_opacity 1.0
background_image none
background_image_layout tiled
background_image_linear no
dynamic_background_opacity no
background_tint 1.0
dim_opacity 1
foreground            #D8DEE9
background            #2E3440
selection_foreground  #000000
selection_background  #FFFACD
url_color             #0087BD
cursor                #81A1C1
# black
color0   #3B4252
color8   #4C566A
# red
color1   #BF616A
color9   #BF616A
# green
color2   #A3BE8C
color10  #A3BE8C
# yellow
color3   #EBCB8B
color11  #EBCB8B
# blue
color4  #81A1C1
color12 #81A1C1
# magenta
color5   #B48EAD
color13  #B48EAD
# cyan
color6   #88C0D0
color14  #8FBCBB
# white
color7   #E5E9F0
color15  #ECEFF4
#: white
mark1_foreground black
mark1_background #98d3cb
mark2_foreground black
mark2_background #f2dcd3
mark3_foreground black
mark3_background #f274bc

#: }}}




#: Advanced {{{

shell .
editor .
close_on_child_death no
allow_remote_control no
listen_on none
update_check_interval 0
startup_session none
clipboard_control write-clipboard write-primary
allow_hyperlinks yes
term xterm-kitty

#: }}}




#: OS specific tweaks {{{

wayland_titlebar_color system
macos_titlebar_color system
macos_option_as_alt no
macos_hide_from_tasks no
macos_quit_when_last_window_closed no
macos_window_resizable yes
macos_thicken_font 0
macos_traditional_fullscreen no
macos_show_window_title_in all
macos_custom_beam_cursor no
linux_display_server auto

#: }}}




#: Keyboard shortcuts {{{
kitty_mod ctrl+shift
clear_all_shortcuts no
# kitten_alias hints hints --hints-offset=0




#: Clipboard {{{

map kitty_mod+c copy_to_clipboard
map kitty_mod+v  paste_from_clipboard
map kitty_mod+s  paste_from_selection
map shift+insert paste_from_selection
map kitty_mod+o  pass_selection_to_program

#: }}}




#: Scrolling {{{

map kitty_mod+up        scroll_line_up
map kitty_mod+k         scroll_line_up
map kitty_mod+down      scroll_line_down
map kitty_mod+j         scroll_line_down
map kitty_mod+page_up   scroll_page_up
map kitty_mod+page_down scroll_page_down
map kitty_mod+home      scroll_home
map kitty_mod+end       scroll_end
map kitty_mod+h         show_scrollback

#: }}}




#: Window management {{{

map kitty_mod+enter new_window
map kitty_mod+n new_os_window
map kitty_mod+w close_window
map kitty_mod+] next_window
map kitty_mod+[ previous_window
map kitty_mod+f move_window_forward
map kitty_mod+b move_window_backward
map kitty_mod+` move_window_to_top
map kitty_mod+r start_resizing_window
map kitty_mod+1 first_window
map kitty_mod+2 second_window
map kitty_mod+3 third_window
map kitty_mod+4 fourth_window
map kitty_mod+5 fifth_window
map kitty_mod+6 sixth_window
map kitty_mod+7 seventh_window
map kitty_mod+8 eighth_window
map kitty_mod+9 ninth_window
map kitty_mod+0 tenth_window

#: }}}




#: Tab management {{{

map kitty_mod+right next_tab
map kitty_mod+left  previous_tab
map kitty_mod+t     new_tab
map kitty_mod+q     close_tab
map kitty_mod+.     move_tab_forward
map kitty_mod+,     move_tab_backward
map kitty_mod+alt+t set_tab_title

#: }}}




#: Layout management {{{

map kitty_mod+l next_layout

#: }}}




#: Font sizes {{{

map kitty_mod+equal       change_font_size all +2.0
map kitty_mod+plus        change_font_size all +2.0
map kitty_mod+kp_add      change_font_size all +2.0
map kitty_mod+minus       change_font_size all -2.0
map kitty_mod+kp_subtract change_font_size all -2.0
map kitty_mod+backspace   change_font_size all 0
map kitty_mod+e kitten hints
map kitty_mod+p>f kitten hints --type path --program -
map kitty_mod+p>shift+f kitten hints --type path
map kitty_mod+p>l kitten hints --type line --program -
map kitty_mod+p>w kitten hints --type word --program -
map kitty_mod+p>h kitten hints --type hash --program -
map kitty_mod+p>n kitten hints --type linenum
map kitty_mod+p>y kitten hints --type hyperlink

#: }}}




#: Miscellaneous {{{

map kitty_mod+f11    toggle_fullscreen
map kitty_mod+f10    toggle_maximized
map kitty_mod+u      kitten unicode_input
map kitty_mod+f2     edit_config_file
map kitty_mod+escape kitty_shell window
map kitty_mod+a>m    set_background_opacity +0.1
map kitty_mod+a>l    set_background_opacity -0.1
map kitty_mod+a>1    set_background_opacity 1
map kitty_mod+a>d    set_background_opacity default
map kitty_mod+delete clear_terminal reset active

#: }}}




# }}}



for alacritty-
alacritty.yml-

window:
  dimensions:
    columns: 105
    lines:   30
        
  padding:
    x: 0
    y: 5

  dynamic_padding: true

  decorations: full


scrolling:
  history: 400


font:
  normal:
    family: Fira Code Retina

  bold:
    family: Fira Code Bold

  italic:
    family: Fira Code Italic

  bold_italic:
    family: Fira Code Bold Italic

  size: 10.0

  draw_bold_text_with_bright_colors: true


colors:
  primary:
    background: '#2e3440'
    foreground: '#d8dee9'
    dim_foreground: '#a5abb6'
  cursor:
    text: '#2e3440'
    cursor: '#d8dee9'
  vi_mode_cursor:
    text: '#2e3440'
    cursor: '#d8dee9'
  selection:
    text: CellForeground
    background: '#4c566a'
  search:
    matches:
      foreground: CellBackground
      background: '#88c0d0'
    bar:
      background: '#434c5e'
      foreground: '#d8dee9'
  normal:
    black: '#3b4252'
    red: '#bf616a'
    green: '#a3be8c'
    yellow: '#ebcb8b'
    blue: '#81a1c1'
    magenta: '#b48ead'
    cyan: '#88c0d0'
    white: '#e5e9f0'
  bright:
    black: '#4c566a'
    red: '#bf616a'
    green: '#a3be8c'
    yellow: '#ebcb8b'
    blue: '#81a1c1'
    magenta: '#b48ead'
    cyan: '#8fbcbb'
    white: '#eceff4'
  dim:
    black: '#373e4d'
    red: '#94545d'
    green: '#809575'
    yellow: '#b29e75'
    blue: '#68809a'
    magenta: '#8c738c'
    cyan: '#6d96a5'
    white: '#aeb3bb'


cursor:
  style:
    shape: Beam
    blinking: On
    blink_interval: 750
    thickness: 0.25 


shell:
  program: /bin/fish


mouse:
  hide_when_typing: true

understanding configs-
for kitty

for alacritty-github link

so i want the developers of garuda linux to read my post and think of replacing alacritty with kitty.

sorry for bad formatting.

this was a topic i wanted to mention for quite some time. other than this, what a great job developers!, amazing distro, excellent and commendable job, keep it up.

2 Likes

Default applications are an endless no-win situation for distro developers.

No matter what applications are selected, there will always be a segment of the population who wants something different. If they decide to switch from alacritty to kitty, there will be other posts recommending the switch back in the other direction.

The alacritty package uses ~6MB of disk space and the kitty package uses ~18MB of disk space so having both installed shouldn't be a tremendous hardship.

If you prefer kitty, use it. It shouldn't matter if it is the default or not.

5 Likes

I mark-it-solved ! :slight_smile: