summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorbssb2019-02-11 01:12:38 -0500
committerbssb2019-02-11 01:12:38 -0500
commitf4d3102894f6db0d0106069d9b30074b9e1b3cc0 (patch)
treefb817e7c1471bde0b3da7220cebae6ec799a56d6
downloadaur-htop-vim-temperature.tar.gz
initial commit
-rw-r--r--.SRCINFO28
-rw-r--r--0001-fix-option-string.patch25
-rw-r--r--PKGBUILD57
-rw-r--r--htop-temperature.patch261
-rw-r--r--vim-keybindings.patch203
5 files changed, 574 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..9e47fc64ab81
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,28 @@
+pkgbase = htop-vim-temperature
+ pkgdesc = Interactive process viewer with CPU temperature and vim keybindings patches
+ pkgver = 2.2.0
+ pkgrel = 1
+ url = http://hisham.hm/htop/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ makedepends = python
+ depends = ncurses
+ depends = libnl
+ depends = lm_sensors
+ optdepends = lsof: show files opened by a process
+ optdepends = strace: attach to a running process
+ provides = htop
+ conflicts = htop
+ options = !emptydirs
+ source = http://hisham.hm/htop/releases/2.2.0/htop-2.2.0.tar.gz
+ source = htop-temperature.patch
+ source = vim-keybindings.patch
+ source = 0001-fix-option-string.patch
+ sha256sums = d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57
+ sha256sums = a4c9dfbc3c2f7e08904656b53b9c08d19014cf6238fb75f1ed5ecbef2905964c
+ sha256sums = 2a5ca32899e901956068f8a0f4f7532486faba1d1b34103d8f9e588e99037053
+ sha256sums = 343cfd8e01f2d47e54b38f725bb05a9825511b502acdb6803507e5fa4d52bed7
+
+pkgname = htop-vim-temperature
+
diff --git a/0001-fix-option-string.patch b/0001-fix-option-string.patch
new file mode 100644
index 000000000000..b595b03759cc
--- /dev/null
+++ b/0001-fix-option-string.patch
@@ -0,0 +1,25 @@
+From 731acc8bced18c90fbe0e18381c32f007f71e0d9 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Tue, 10 Apr 2018 16:21:46 +0200
+Subject: [PATCH 1/1] fix option string
+
+This broke with commit db05ba61065f64b59d0014518be0786b5439e54c.
+
+Signed-off-by: Christian Hesse <mail@eworm.de>
+---
+ htop.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/htop.c b/htop.c
+index 6db81dd..678a3b8 100644
+--- a/htop.c
++++ b/htop.c
+@@ -93,7 +93,7 @@ static CommandLineSettings parseArguments(int argc, char** argv) {
+
+ int opt, opti=0;
+ /* Parse arguments */
+- while ((opt = getopt_long(argc, argv, "hvCst::d:u:p:i", long_opts, &opti))) {
++ while ((opt = getopt_long(argc, argv, "hvCs:td:u:p:i", long_opts, &opti))) {
+ if (opt == EOF) break;
+ switch (opt) {
+ case 'h':
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..dbf8791c0d2e
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,57 @@
+# Maintainer: Maxim Kurnosenko <asusx2@mail.ru>
+# Contributor: Blair Bonnett <blair.bonnett at gmail dot com>
+
+_pkgname=htop
+pkgname=htop-vim-temperature
+pkgver=2.2.0
+pkgrel=1
+pkgdesc="Interactive process viewer with CPU temperature and vim keybindings patches"
+arch=('i686' 'x86_64')
+url="http://hisham.hm/htop/"
+license=('GPL')
+depends=('ncurses' 'libnl' 'lm_sensors')
+makedepends=('python')
+optdepends=('lsof: show files opened by a process'
+ 'strace: attach to a running process')
+provides=($_pkgname)
+conflicts=($_pkgname)
+options=('!emptydirs')
+source=("http://hisham.hm/$_pkgname/releases/$pkgver/$_pkgname-$pkgver.tar.gz"
+ "htop-temperature.patch"
+ "vim-keybindings.patch"
+ "0001-fix-option-string.patch")
+sha256sums=('d9d6826f10ce3887950d709b53ee1d8c1849a70fa38e91d5896ad8cbc6ba3c57'
+ 'a4c9dfbc3c2f7e08904656b53b9c08d19014cf6238fb75f1ed5ecbef2905964c'
+ '2a5ca32899e901956068f8a0f4f7532486faba1d1b34103d8f9e588e99037053'
+ '343cfd8e01f2d47e54b38f725bb05a9825511b502acdb6803507e5fa4d52bed7')
+
+prepare() {
+ cd "$_pkgname-$pkgver"
+
+ patch -Np1 < "$srcdir"/0001-fix-option-string.patch
+
+ # Add CPU temperature patch.
+ patch -Np1 < "$srcdir"/htop-temperature.patch
+
+ patch -Np1 < "$srcdir"/vim-keybindings.patch
+}
+
+build() {
+ cd "$_pkgname-$pkgver"
+
+ ./autogen.sh
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --enable-cgroup \
+ --enable-delayacct \
+ --enable-openvz \
+ --enable-unicode \
+ --enable-vserver
+
+ make $MAKEFLAGS
+}
+
+package() {
+ make -C "$_pkgname-$pkgver" DESTDIR="$pkgdir" install
+}
diff --git a/htop-temperature.patch b/htop-temperature.patch
new file mode 100644
index 000000000000..e57f326c7ce5
--- /dev/null
+++ b/htop-temperature.patch
@@ -0,0 +1,261 @@
+diff --git a/CRT.c b/CRT.c
+index 0d51698..4eab74d 100644
+--- a/CRT.c
++++ b/CRT.c
+@@ -78,6 +78,9 @@ typedef enum ColorElements_ {
+ UPTIME,
+ BATTERY,
+ TASKS_RUNNING,
++ TEMPERATURE_COOL,
++ TEMPERATURE_MEDIUM,
++ TEMPERATURE_HOT,
+ SWAP,
+ PROCESS,
+ PROCESS_SHADOW,
+@@ -182,6 +185,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = A_BOLD | ColorPair(Cyan,Black),
+ [LED_COLOR] = ColorPair(Green,Black),
+ [TASKS_RUNNING] = A_BOLD | ColorPair(Green,Black),
++ [TEMPERATURE_COOL] = A_DIM | ColorPair(Green,Black),
++ [TEMPERATURE_MEDIUM] = A_NORMAL | ColorPair(Yellow,Black),
++ [TEMPERATURE_HOT] = A_BOLD | ColorPair(Red,Black),
+ [PROCESS] = A_NORMAL,
+ [PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black),
+ [PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Black),
+@@ -241,6 +247,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = A_BOLD,
+ [LED_COLOR] = A_NORMAL,
+ [TASKS_RUNNING] = A_BOLD,
++ [TEMPERATURE_COOL] = A_DIM,
++ [TEMPERATURE_MEDIUM] = A_NORMAL,
++ [TEMPERATURE_HOT] = A_BOLD,
+ [PROCESS] = A_NORMAL,
+ [PROCESS_SHADOW] = A_DIM,
+ [PROCESS_TAG] = A_BOLD,
+@@ -300,6 +309,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = ColorPair(Black,White),
+ [LED_COLOR] = ColorPair(Green,White),
+ [TASKS_RUNNING] = ColorPair(Green,White),
++ [TEMPERATURE_COOL] = ColorPair(Green,White),
++ [TEMPERATURE_MEDIUM] = ColorPair(Yellow,White),
++ [TEMPERATURE_HOT] = ColorPair(Red,White),
+ [PROCESS] = ColorPair(Black,White),
+ [PROCESS_SHADOW] = A_BOLD | ColorPair(Black,White),
+ [PROCESS_TAG] = ColorPair(White,Blue),
+@@ -359,6 +371,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = ColorPair(Black,Black),
+ [LED_COLOR] = ColorPair(Green,Black),
+ [TASKS_RUNNING] = ColorPair(Green,Black),
++ [TEMPERATURE_COOL] = ColorPair(Green,Black),
++ [TEMPERATURE_MEDIUM] = ColorPair(Yellow,Black),
++ [TEMPERATURE_HOT] = ColorPair(Red,Black),
+ [PROCESS] = ColorPair(Black,Black),
+ [PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black),
+ [PROCESS_TAG] = ColorPair(White,Blue),
+@@ -418,6 +433,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = A_BOLD | ColorPair(Cyan,Blue),
+ [LED_COLOR] = ColorPair(Green,Blue),
+ [TASKS_RUNNING] = A_BOLD | ColorPair(Green,Blue),
++ [TEMPERATURE_COOL] = A_DIM | ColorPair(Green,Blue),
++ [TEMPERATURE_MEDIUM] = A_NORMAL | ColorPair(Yellow,Blue),
++ [TEMPERATURE_HOT] = A_BOLD | ColorPair(Red,Blue),
+ [PROCESS] = ColorPair(White,Blue),
+ [PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Blue),
+ [PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Blue),
+@@ -477,6 +495,9 @@ int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT] = {
+ [METER_VALUE] = ColorPair(Green,Black),
+ [LED_COLOR] = ColorPair(Green,Black),
+ [TASKS_RUNNING] = A_BOLD | ColorPair(Green,Black),
++ [TEMPERATURE_COOL] = A_DIM | ColorPair(Green,Black),
++ [TEMPERATURE_MEDIUM] = A_NORMAL | ColorPair(Yellow,Black),
++ [TEMPERATURE_HOT] = A_BOLD | ColorPair(Red,Black),
+ [PROCESS] = ColorPair(Cyan,Black),
+ [PROCESS_SHADOW] = A_BOLD | ColorPair(Black,Black),
+ [PROCESS_TAG] = A_BOLD | ColorPair(Yellow,Black),
+diff --git a/CRT.h b/CRT.h
+index fb82413..bda5318 100644
+--- a/CRT.h
++++ b/CRT.h
+@@ -68,6 +68,9 @@ typedef enum ColorElements_ {
+ UPTIME,
+ BATTERY,
+ TASKS_RUNNING,
++ TEMPERATURE_COOL,
++ TEMPERATURE_MEDIUM,
++ TEMPERATURE_HOT,
+ SWAP,
+ PROCESS,
+ PROCESS_SHADOW,
+diff --git a/TemperatureMeter.c b/TemperatureMeter.c
+new file mode 100644
+index 0000000..9ee9185
+--- /dev/null
++++ b/TemperatureMeter.c
+@@ -0,0 +1,100 @@
++/*
++htop - TemperatureMeter.c
++(C) 2013 Ralf Stemmer
++(C) 2014 Blair Bonnett
++Released under the GNU GPL, see the COPYING file
++in the source distribution for its full text.
++*/
++
++#include "TemperatureMeter.h"
++
++#include "ProcessList.h"
++#include "CRT.h"
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <limits.h>
++
++/*{
++#include "Meter.h"
++}*/
++
++int TemperatureMeter_attributes[] = {
++ TEMPERATURE_COOL,
++ TEMPERATURE_MEDIUM,
++ TEMPERATURE_HOT,
++};
++
++static void TemperatureMeter_setValues(Meter* this, char* buffer, int len) {
++ ProcessList* pl = this->pl;
++ this->total = pl->totalTasks;
++ this->values[0] = pl->runningTasks;
++ snprintf(buffer, len, "%d/%d", (int) this->values[0], (int) this->total);
++}
++
++static void TemperatureMeter_display(Object* cast, RichString* out) {
++ FILE *p;
++ p = popen("sensors", "r");
++ if(p == NULL) return 1;
++
++ int textColor = CRT_colors[METER_TEXT];
++ int coolColor = CRT_colors[TEMPERATURE_COOL];
++ int mediumColor = CRT_colors[TEMPERATURE_MEDIUM];
++ int hotColor = CRT_colors[TEMPERATURE_HOT];
++
++ size_t read, len;
++ char *line = NULL;
++ char *entry = NULL;
++ char *tstart = NULL, *tend = NULL;
++ int temperature;
++ while ((read = getline(&line, &len, p)) != -1) {
++ // contains this line a core-temperature?
++ entry = strstr(line, "Core ");
++ if (entry == NULL) continue;
++
++ // find the begin of the temperature value
++ tstart = strchr(entry, '+'); // no negative temperatures expected :)
++ if (tstart == NULL) continue;
++ tstart++; // jump over the '+'
++
++ // find the end of the temperature. Remember, it can be above 99°C ;)
++ tend = strchr(tstart, '.'); // just the integer
++ if (tend == NULL) continue;
++
++ // convert the string into an integer, this is necessary for further steps
++ temperature = strtol(tstart, &tend, 10);
++ if (temperature == LONG_MAX || temperature == LONG_MIN) continue;
++ if (tstart == tend) continue;
++
++ // choose the color for the temperature
++ int tempColor;
++ if (temperature < 60) tempColor = coolColor;
++ else if (temperature >= 60 && temperature < 70) tempColor = mediumColor;
++ else tempColor = hotColor;
++
++ // output the temperature
++ char buffer[20];
++ sprintf(buffer, "%d", temperature);
++ RichString_append(out, tempColor, buffer);
++ RichString_append(out, textColor, "°C ");
++ }
++
++ free(line);
++ pclose(p);
++}
++
++MeterClass TemperatureMeter_class = {
++ .super = {
++ .extends = Class(Meter),
++ .display = TemperatureMeter_display,
++ .delete = Meter_delete,
++ },
++ .updateValues = TemperatureMeter_setValues,
++ .defaultMode = TEXT_METERMODE,
++ .total = 100.0,
++ .attributes = TemperatureMeter_attributes,
++ .name = "Temperature",
++ .uiName = "Temperature Sensors",
++ .caption = "Temperature: "
++};
+diff --git a/TemperatureMeter.h b/TemperatureMeter.h
+new file mode 100644
+index 0000000..b86ddd8
+--- /dev/null
++++ b/TemperatureMeter.h
+@@ -0,0 +1,19 @@
++/* Do not edit this file. It was automatically generated. */
++
++#ifndef HEADER_TemperatureMeter
++#define HEADER_TemperatureMeter
++/*
++htop - TemperatureMeter.h
++(C) 2013 Ralf Stemmer
++(C) 2014 Blair Bonnett
++Released under the GNU GPL, see the COPYING file
++in the source distribution for its full text.
++*/
++
++#include "Meter.h"
++
++extern int TemperatureMeter_attributes[];
++
++extern MeterClass TemperatureMeter_class;
++
++#endif
+diff --git a/linux/Platform.c b/linux/Platform.c
+index de7bb84..a8e8a6f 100644
+--- a/linux/Platform.c
++++ b/linux/Platform.c
+@@ -22,6 +22,7 @@ in the source distribution for its full text.
+ #include "ClockMeter.h"
+ #include "HostnameMeter.h"
+ #include "LinuxProcess.h"
++#include "TemperatureMeter.h"
+
+ #include <math.h>
+ #include <assert.h>
+@@ -116,6 +117,7 @@ MeterClass* Platform_meterTypes[] = {
+ &MemoryMeter_class,
+ &SwapMeter_class,
+ &TasksMeter_class,
++ &TemperatureMeter_class,
+ &UptimeMeter_class,
+ &BatteryMeter_class,
+ &HostnameMeter_class,
+diff --git a/Makefile.am b/Makefile.am
+index cd5209c..c700e34 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -48,14 +48,15 @@ linux_platform_headers = \
+ linux/LinuxProcess.h \
+ linux/LinuxProcessList.h \
+ linux/LinuxCRT.h \
+- linux/Battery.h
++ linux/Battery.h \
++ TemperatureMeter.h
+
+ all_platform_headers += $(linux_platform_headers)
+
+ if HTOP_LINUX
+ AM_CFLAGS += -rdynamic
+ myhtopplatsources = linux/Platform.c linux/IOPriorityPanel.c linux/IOPriority.c \
+-linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c
++linux/LinuxProcess.c linux/LinuxProcessList.c linux/LinuxCRT.c linux/Battery.c TemperatureMeter.c
+
+ myhtopplatheaders = $(linux_platform_headers)
+ endif
diff --git a/vim-keybindings.patch b/vim-keybindings.patch
new file mode 100644
index 000000000000..e8d6bfa5b4ff
--- /dev/null
+++ b/vim-keybindings.patch
@@ -0,0 +1,203 @@
+diff --git a/Action.c b/Action.c
+index a6394ac..089ee27 100644
+--- a/Action.c
++++ b/Action.c
+@@ -382,7 +382,7 @@ static Htop_Reaction actionRedraw() {
+ }
+
+ static const struct { const char* key; const char* info; } helpLeft[] = {
+- { .key = " Arrows: ", .info = "scroll process list" },
++ { .key = " hjkl: ", .info = "scroll process list" },
+ { .key = " Digits: ", .info = "incremental PID search" },
+ { .key = " F3 /: ", .info = "incremental name search" },
+ { .key = " F4 \\: ",.info = "incremental name filtering" },
+@@ -403,7 +403,7 @@ static const struct { const char* key; const char* info; } helpRight[] = {
+ { .key = " Space: ", .info = "tag process" },
+ { .key = " c: ", .info = "tag process and its children" },
+ { .key = " U: ", .info = "untag all processes" },
+- { .key = " F9 k: ", .info = "kill process/tagged processes" },
++ { .key = " F9 x: ", .info = "kill process/tagged processes" },
+ { .key = " F7 ]: ", .info = "higher priority (root only)" },
+ { .key = " F8 [: ", .info = "lower priority (+ nice)" },
+ #if (HAVE_LIBHWLOC || HAVE_LINUX_AFFINITY)
+@@ -411,7 +411,7 @@ static const struct { const char* key; const char* info; } helpRight[] = {
+ #endif
+ { .key = " e: ", .info = "show process environment" },
+ { .key = " i: ", .info = "set IO priority" },
+- { .key = " l: ", .info = "list open files with lsof" },
++ { .key = " L: ", .info = "list open files with lsof" },
+ { .key = " s: ", .info = "trace syscalls with strace" },
+ { .key = " ", .info = "" },
+ { .key = " F2 C S: ", .info = "setup" },
+@@ -543,6 +543,7 @@ void Action_setBindings(Htop_Action* keys) {
+ keys['I'] = actionInvertSortOrder;
+ keys[KEY_F(6)] = actionExpandCollapseOrSortColumn;
+ keys[KEY_F(18)] = actionExpandCollapseOrSortColumn;
++ keys['o'] = actionExpandCollapseOrSortColumn;
+ keys['<'] = actionSetSortColumn;
+ keys[','] = actionSetSortColumn;
+ keys['>'] = actionSetSortColumn;
+@@ -551,7 +552,7 @@ void Action_setBindings(Htop_Action* keys) {
+ keys['q'] = actionQuit;
+ keys['a'] = actionSetAffinity;
+ keys[KEY_F(9)] = actionKill;
+- keys['k'] = actionKill;
++ keys['x'] = actionKill;
+ keys[KEY_RECLICK] = actionExpandOrCollapse;
+ keys['+'] = actionExpandOrCollapse;
+ keys['='] = actionExpandOrCollapse;
+@@ -561,12 +562,11 @@ void Action_setBindings(Htop_Action* keys) {
+ keys['S'] = actionSetup;
+ keys['C'] = actionSetup;
+ keys[KEY_F(2)] = actionSetup;
+- keys['l'] = actionLsof;
++ keys['L'] = actionLsof;
+ keys['s'] = actionStrace;
+ keys[' '] = actionTag;
+ keys['\014'] = actionRedraw; // Ctrl+L
+ keys[KEY_F(1)] = actionHelp;
+- keys['h'] = actionHelp;
+ keys['?'] = actionHelp;
+ keys['U'] = actionUntagAll;
+ keys['c'] = actionTagAllChildren;
+diff --git a/Panel.c b/Panel.c
+index 1e53b4a..7f6580b 100644
+--- a/Panel.c
++++ b/Panel.c
+@@ -372,14 +372,16 @@ void Panel_draw(Panel* this, bool focus) {
+
+ bool Panel_onKey(Panel* this, int key) {
+ assert (this != NULL);
+-
++
+ int size = Vector_size(this->items);
+ switch (key) {
+ case KEY_DOWN:
++ case 'j':
+ case KEY_CTRL('N'):
+ this->selected++;
+ break;
+ case KEY_UP:
++ case 'k':
+ case KEY_CTRL('P'):
+ this->selected--;
+ break;
+@@ -394,23 +396,33 @@ bool Panel_onKey(Panel* this, int key) {
+ break;
+ #endif
+ case KEY_LEFT:
+- case KEY_CTRL('B'):
++ case 'h':
+ if (this->scrollH > 0) {
+ this->scrollH -= MAX(CRT_scrollHAmount, 0);
+ this->needsRedraw = true;
+ }
+ break;
+ case KEY_RIGHT:
+- case KEY_CTRL('F'):
++ case 'l':
+ this->scrollH += CRT_scrollHAmount;
+ this->needsRedraw = true;
+ break;
++ case KEY_CTRL('U'):
++ this->selected -= (this->h - 1) / 2;
++ this->needsRedraw = true;
++ break;
++ case KEY_CTRL('D'):
++ this->selected += (this->h - 1) / 2;
++ this->needsRedraw = true;
++ break;
+ case KEY_PPAGE:
++ case KEY_CTRL('B'):
+ this->selected -= (this->h - 1);
+ this->scrollV = MAX(0, this->scrollV - this->h + 1);
+ this->needsRedraw = true;
+ break;
+ case KEY_NPAGE:
++ case KEY_CTRL('F'):
+ this->selected += (this->h - 1);
+ this->scrollV = MAX(0, MIN(Vector_size(this->items) - this->h,
+ this->scrollV + this->h - 1));
+@@ -432,9 +444,11 @@ bool Panel_onKey(Panel* this, int key) {
+ break;
+ }
+ case KEY_HOME:
++ case 'g':
+ this->selected = 0;
+ break;
+ case KEY_END:
++ case 'G':
+ this->selected = size - 1;
+ break;
+ case KEY_CTRL('A'):
+diff --git a/README b/README
+index 33a8739..d0b00ae 100644
+--- a/README
++++ b/README
+@@ -17,6 +17,44 @@ but we also have code for running under FreeBSD and Mac OS X
+ This software has evolved considerably over the years,
+ and is reasonably complete, but there is always room for improvement.
+
++Vim keybindings
++----------------
++
++These are the keybindings added in this fork of htop:
++
++```
++ g to the top (gg in vim)
++
++ <C-b> up 1 page
++
++ <C-u> up 1/2 page
++
++ k
++
++h l one character
++
++ j
++
++ <C-d> down 1/2 page
++
++ <C-f> down 1 page
++
++ G to the end
++
++--------------------------------------------------
++
++ o Expand/collapse (like in NERDTree)
++```
++
++In order to accomodate these keybindings, the following changes
++were made to the original keybindings:
++
++* Ctrl+F and Ctrt+B can no longer be used to navigate horizontally
++* 'h' can no longer be used to access the help, leaving Ctrl+F1 & '?'
++* 'k' can no longer be used to kill processes, being replaced with 'x'
++* 'l' can no longer be used to list open files, being replaced with 'L'
++
++
+ Comparison between `htop` and classic `top`
+ -------------------------------------------
+
+diff --git a/ScreenManager.c b/ScreenManager.c
+index 05e1c02..df2ac4a 100644
+--- a/ScreenManager.c
++++ b/ScreenManager.c
+@@ -279,7 +279,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
+ continue;
+ }
+ case KEY_LEFT:
+- case KEY_CTRL('B'):
++ case 'h':
+ if (this->panelCount < 2) {
+ goto defaultHandler;
+ }
+@@ -293,7 +293,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
+ goto tryLeft;
+ break;
+ case KEY_RIGHT:
+- case KEY_CTRL('F'):
++ case 'l':
+ case 9:
+ if (this->panelCount < 2) {
+ goto defaultHandler;