Some improvements
This commit is contained in:
parent
af90e49c55
commit
4aa4831586
318
packages/htop-vim-keybindings.patch
Normal file
318
packages/htop-vim-keybindings.patch
Normal file
|
@ -0,0 +1,318 @@
|
|||
diff --git a/Action.c b/Action.c
|
||||
index 81432f5..c2b3d70 100644
|
||||
--- a/Action.c
|
||||
+++ b/Action.c
|
||||
@@ -531,7 +531,7 @@ static const struct {
|
||||
} helpLeft[] = {
|
||||
{ .key = " #: ", .roInactive = false, .info = "hide/show header meters" },
|
||||
{ .key = " Tab: ", .roInactive = false, .info = "switch to next screen tab" },
|
||||
- { .key = " Arrows: ", .roInactive = false, .info = "scroll process list" },
|
||||
+ { .key = " hjkl: ", .roInactive = false, .info = "scroll process list" },
|
||||
{ .key = " Digits: ", .roInactive = false, .info = "incremental PID search" },
|
||||
{ .key = " F3 /: ", .roInactive = false, .info = "incremental name search" },
|
||||
{ .key = " F4 \\: ", .roInactive = false, .info = "incremental name filtering" },
|
||||
@@ -559,7 +559,7 @@ static const struct {
|
||||
{ .key = " Space: ", .roInactive = false, .info = "tag process" },
|
||||
{ .key = " c: ", .roInactive = false, .info = "tag process and its children" },
|
||||
{ .key = " U: ", .roInactive = false, .info = "untag all processes" },
|
||||
- { .key = " F9 k: ", .roInactive = true, .info = "kill process/tagged processes" },
|
||||
+ { .key = " F9 x: ", .roInactive = true, .info = "kill process/tagged processes" },
|
||||
{ .key = " F7 ]: ", .roInactive = true, .info = "higher priority (root only)" },
|
||||
{ .key = " F8 [: ", .roInactive = true, .info = "lower priority (+ nice)" },
|
||||
#if (defined(HAVE_LIBHWLOC) || defined(HAVE_AFFINITY))
|
||||
@@ -567,12 +567,12 @@ static const struct {
|
||||
#endif
|
||||
{ .key = " e: ", .roInactive = false, .info = "show process environment" },
|
||||
{ .key = " i: ", .roInactive = true, .info = "set IO priority" },
|
||||
- { .key = " l: ", .roInactive = true, .info = "list open files with lsof" },
|
||||
- { .key = " x: ", .roInactive = false, .info = "list file locks of process" },
|
||||
+ { .key = " L: ", .roInactive = true, .info = "list open files with lsof" },
|
||||
+ { .key = " X: ", .roInactive = false, .info = "list file locks of process" },
|
||||
{ .key = " s: ", .roInactive = true, .info = "trace syscalls with strace" },
|
||||
{ .key = " w: ", .roInactive = false, .info = "wrap process command in multiple lines" },
|
||||
{ .key = " F2 C S: ", .roInactive = false, .info = "setup" },
|
||||
- { .key = " F1 h ?: ", .roInactive = false, .info = "show this help screen" },
|
||||
+ { .key = " F1 ?: ", .roInactive = false, .info = "show this help screen" },
|
||||
{ .key = " F10 q: ", .roInactive = false, .info = "quit" },
|
||||
{ .key = NULL, .info = NULL }
|
||||
};
|
||||
@@ -772,6 +772,7 @@ void Action_setBindings(Htop_Action* keys) {
|
||||
keys['H'] = actionToggleUserlandThreads;
|
||||
keys['I'] = actionInvertSortOrder;
|
||||
keys['K'] = actionToggleKernelThreads;
|
||||
+ keys['L'] = actionLsof;
|
||||
keys['M'] = actionSortByMemory;
|
||||
keys['N'] = actionSortByPID;
|
||||
keys['O'] = actionToggleRunningInContainer;
|
||||
@@ -779,6 +780,7 @@ void Action_setBindings(Htop_Action* keys) {
|
||||
keys['S'] = actionSetup;
|
||||
keys['T'] = actionSortByTime;
|
||||
keys['U'] = actionUntagAll;
|
||||
+ keys['X'] = actionShowLocks;
|
||||
keys['Z'] = actionTogglePauseProcessUpdate;
|
||||
keys['['] = actionLowerPriority;
|
||||
keys['\014'] = actionRedraw; // Ctrl+L
|
||||
@@ -788,17 +790,15 @@ void Action_setBindings(Htop_Action* keys) {
|
||||
keys['a'] = actionSetAffinity;
|
||||
keys['c'] = actionTagAllChildren;
|
||||
keys['e'] = actionShowEnvScreen;
|
||||
- keys['h'] = actionHelp;
|
||||
- keys['k'] = actionKill;
|
||||
- keys['l'] = actionLsof;
|
||||
keys['m'] = actionToggleMergedCommand;
|
||||
+ keys['o'] = actionExpandCollapseOrSortColumn;
|
||||
keys['p'] = actionToggleProgramPath;
|
||||
keys['q'] = actionQuit;
|
||||
keys['s'] = actionStrace;
|
||||
keys['t'] = actionToggleTreeView;
|
||||
keys['u'] = actionFilterByUser;
|
||||
keys['w'] = actionShowCommandScreen;
|
||||
- keys['x'] = actionShowLocks;
|
||||
+ keys['x'] = actionKill;
|
||||
keys[KEY_F(1)] = actionHelp;
|
||||
keys[KEY_F(2)] = actionSetup;
|
||||
keys[KEY_F(3)] = actionIncSearch;
|
||||
diff --git a/CategoriesPanel.c b/CategoriesPanel.c
|
||||
index 6e905ce..e7253ac 100644
|
||||
--- a/CategoriesPanel.c
|
||||
+++ b/CategoriesPanel.c
|
||||
@@ -103,6 +103,12 @@ static HandlerResult CategoriesPanel_eventHandler(Panel* super, int ch) {
|
||||
HandlerResult result = IGNORED;
|
||||
|
||||
int selected = Panel_getSelectedIndex(super);
|
||||
+ switch (ch) {
|
||||
+ case 'h': ch = KEY_LEFT; break;
|
||||
+ case 'j': ch = KEY_DOWN; break;
|
||||
+ case 'k': ch = KEY_UP; break;
|
||||
+ case 'l': ch = KEY_RIGHT; break;
|
||||
+ }
|
||||
switch (ch) {
|
||||
case EVENT_SET_SELECTED:
|
||||
result = HANDLED;
|
||||
diff --git a/MainPanel.c b/MainPanel.c
|
||||
index 89b4e7d..fba01fe 100644
|
||||
--- a/MainPanel.c
|
||||
+++ b/MainPanel.c
|
||||
@@ -51,7 +51,7 @@ static const char* MainPanel_getValue(Panel* this, int i) {
|
||||
return Process_getCommand(p);
|
||||
}
|
||||
|
||||
-static HandlerResult MainPanel_eventHandler(Panel* super, int ch) {
|
||||
+HandlerResult MainPanel_eventHandler(Panel* super, int ch) {
|
||||
MainPanel* this = (MainPanel*) super;
|
||||
|
||||
HandlerResult result = IGNORED;
|
||||
diff --git a/MainPanel.h b/MainPanel.h
|
||||
index bd22acd..069d0b3 100644
|
||||
--- a/MainPanel.h
|
||||
+++ b/MainPanel.h
|
||||
@@ -47,4 +47,6 @@ void MainPanel_setState(MainPanel* this, State* state);
|
||||
|
||||
void MainPanel_delete(Object* object);
|
||||
|
||||
+HandlerResult MainPanel_eventHandler(Panel* super, int ch);
|
||||
+
|
||||
#endif
|
||||
diff --git a/Panel.c b/Panel.c
|
||||
index d1bc6a7..da31429 100644
|
||||
--- a/Panel.c
|
||||
+++ b/Panel.c
|
||||
@@ -358,6 +358,7 @@ bool Panel_onKey(Panel* this, int key) {
|
||||
|
||||
switch (key) {
|
||||
case KEY_DOWN:
|
||||
+ case 'j':
|
||||
case KEY_CTRL('N'):
|
||||
#ifdef KEY_C_DOWN
|
||||
case KEY_C_DOWN:
|
||||
@@ -366,6 +367,7 @@ bool Panel_onKey(Panel* this, int key) {
|
||||
break;
|
||||
|
||||
case KEY_UP:
|
||||
+ case 'k':
|
||||
case KEY_CTRL('P'):
|
||||
#ifdef KEY_C_UP
|
||||
case KEY_C_UP:
|
||||
@@ -374,7 +376,7 @@ bool Panel_onKey(Panel* this, int key) {
|
||||
break;
|
||||
|
||||
case KEY_LEFT:
|
||||
- case KEY_CTRL('B'):
|
||||
+ case 'h':
|
||||
if (this->scrollH > 0) {
|
||||
this->scrollH -= MAXIMUM(CRT_scrollHAmount, 0);
|
||||
this->needsRedraw = true;
|
||||
@@ -382,16 +384,28 @@ bool Panel_onKey(Panel* this, int key) {
|
||||
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'):
|
||||
PANEL_SCROLL(-(this->h - Panel_headerHeight(this)));
|
||||
break;
|
||||
|
||||
case KEY_NPAGE:
|
||||
+ case KEY_CTRL('F'):
|
||||
PANEL_SCROLL(+(this->h - Panel_headerHeight(this)));
|
||||
break;
|
||||
|
||||
@@ -404,10 +418,12 @@ 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;
|
||||
|
||||
diff --git a/ScreenManager.c b/ScreenManager.c
|
||||
index 55cacd2..f6b8f50 100644
|
||||
--- a/ScreenManager.c
|
||||
+++ b/ScreenManager.c
|
||||
@@ -16,6 +16,7 @@ in the source distribution for its full text.
|
||||
|
||||
#include "CRT.h"
|
||||
#include "FunctionBar.h"
|
||||
+#include "MainPanel.h"
|
||||
#include "Macros.h"
|
||||
#include "Object.h"
|
||||
#include "Platform.h"
|
||||
@@ -305,14 +306,16 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey, con
|
||||
redraw = false;
|
||||
continue;
|
||||
}
|
||||
- switch (ch) {
|
||||
- case KEY_ALT('H'): ch = KEY_LEFT; break;
|
||||
- case KEY_ALT('J'): ch = KEY_DOWN; break;
|
||||
- case KEY_ALT('K'): ch = KEY_UP; break;
|
||||
- case KEY_ALT('L'): ch = KEY_RIGHT; break;
|
||||
- }
|
||||
redraw = true;
|
||||
if (Panel_eventHandlerFn(panelFocus)) {
|
||||
+ if (Panel_eventHandlerFn(panelFocus) != MainPanel_eventHandler) {
|
||||
+ switch (ch) {
|
||||
+ case 'h': case KEY_ALT('H'): ch = KEY_LEFT; break;
|
||||
+ case 'j': case KEY_ALT('J'): ch = KEY_DOWN; break;
|
||||
+ case 'k': case KEY_ALT('K'): ch = KEY_UP; break;
|
||||
+ case 'l': case KEY_ALT('L'): ch = KEY_RIGHT; break;
|
||||
+ }
|
||||
+ }
|
||||
result = Panel_eventHandler(panelFocus, ch);
|
||||
}
|
||||
if (result & SYNTH_KEY) {
|
||||
@@ -346,7 +349,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey, con
|
||||
continue;
|
||||
}
|
||||
case KEY_LEFT:
|
||||
- case KEY_CTRL('B'):
|
||||
+ case 'h':
|
||||
if (this->panelCount < 2) {
|
||||
goto defaultHandler;
|
||||
}
|
||||
@@ -367,7 +370,7 @@ tryLeft:
|
||||
|
||||
break;
|
||||
case KEY_RIGHT:
|
||||
- case KEY_CTRL('F'):
|
||||
+ case 'l':
|
||||
case 9:
|
||||
if (this->panelCount < 2) {
|
||||
goto defaultHandler;
|
||||
diff --git a/htop.1.in b/htop.1.in
|
||||
index eefc37f..aeac630 100644
|
||||
--- a/htop.1.in
|
||||
+++ b/htop.1.in
|
||||
@@ -100,27 +100,30 @@ The following commands are supported while in
|
||||
Select the next / the previous screen tab to display.
|
||||
You can enable showing the screen tab names in the Setup screen (F2).
|
||||
.TP
|
||||
-.B Up, Alt-k
|
||||
+.B Up, k (vim patch)
|
||||
Select (highlight) the previous process in the process list. Scroll the list
|
||||
if necessary.
|
||||
.TP
|
||||
-.B Down, Alt-j
|
||||
+.B Down, j (vim patch)
|
||||
Select (highlight) the next process in the process list. Scroll the list if
|
||||
necessary.
|
||||
.TP
|
||||
-.B Left, Alt-h
|
||||
+.B Left, h (vim patch)
|
||||
Scroll the process list left.
|
||||
.TP
|
||||
-.B Right, Alt-l
|
||||
+.B Right, l (vim patch)
|
||||
Scroll the process list right.
|
||||
.TP
|
||||
-.B PgUp, PgDn
|
||||
+.B PgUp, Ctrl-B (vim patch), PgDn, Ctrl-F (vim patch)
|
||||
Scroll the process list up or down one window.
|
||||
.TP
|
||||
-.B Home
|
||||
+.B Ctrl-U (vim patch), Ctrl-D (vim patch)
|
||||
+Scroll the process list up or down half a window.
|
||||
+.TP
|
||||
+.B Home, g (vim patch)
|
||||
Scroll to the top of the process list and select the first process.
|
||||
.TP
|
||||
-.B End
|
||||
+.B End, G (vim patch)
|
||||
Scroll to the bottom of the process list and select the last process.
|
||||
.TP
|
||||
.B Ctrl-A, ^
|
||||
@@ -155,7 +158,7 @@ will display the list of file descriptors opened by the process.
|
||||
Display the command line of the selected process in a separate screen, wrapped
|
||||
onto multiple lines as needed.
|
||||
.TP
|
||||
-.B x
|
||||
+.B X
|
||||
Display the active file locks of the selected process in a separate screen.
|
||||
.TP
|
||||
.B F1, h, ?
|
||||
@@ -189,7 +192,7 @@ between them as a tree. Toggling the key will switch between tree and
|
||||
your previously selected sort view. Selecting a sort view will exit
|
||||
tree view.
|
||||
.TP
|
||||
-.B F6, <, >
|
||||
+.B F6, <, >, o (vim patch)
|
||||
Selects a field for sorting, also accessible through < and >.
|
||||
The current sort field is indicated by a highlight in the header.
|
||||
.TP
|
||||
@@ -207,7 +210,7 @@ This can only be done by the superuser.
|
||||
.B Shift-F8, {
|
||||
Decrease the selected process's autogroup priority (add to autogroup 'nice' value)
|
||||
.TP
|
||||
-.B F9, k
|
||||
+.B F9, x (vim patch)
|
||||
"Kill" process: sends a signal which is selected in a menu, to one or a group
|
||||
of processes. If processes were tagged, sends the signal to all tagged processes.
|
||||
If none is tagged, sends to the currently selected process.
|
||||
@@ -219,7 +222,7 @@ Quit
|
||||
Invert the sort order: if sort order is increasing, switch to decreasing, and
|
||||
vice-versa.
|
||||
.TP
|
||||
-.B +, \-, *
|
||||
+.B +, \-, *, o (vim patch)
|
||||
When in tree view mode, expand or collapse subtree. When a subtree is collapsed
|
||||
a "+" sign shows to the left of the process name.
|
||||
Pressing "*" will expand or collapse all children of PIDs without parents, so
|
|
@ -14,7 +14,7 @@ function getShellString($file, $string) {
|
|||
return $output[0];
|
||||
}
|
||||
|
||||
function printHead($pTitle, $title, $desc) {
|
||||
function printHead($self, $pTitle, $title, $desc) {
|
||||
print "<!DOCTYPE html>\n";
|
||||
print "<head>\n";
|
||||
print "\t<meta name=\"description\" content=\"$desc\">\n";
|
||||
|
@ -88,7 +88,7 @@ function main() {
|
|||
$validPkgs++;
|
||||
}
|
||||
|
||||
printHead("speedie-aur", "Found $validPkgs packages matching '$query' in speedie-aur", "Found $validPkgs packages matching search query '$query' in speedie-aur");
|
||||
printHead($self, "speedie-aur", "Found $validPkgs packages matching '$query' in speedie-aur", "Found $validPkgs packages matching search query '$query' in speedie-aur");
|
||||
|
||||
print "\t\t\t<p class=\"matches\">$validPkgs packages found matching '$query'..</p>\n";
|
||||
print "\t\t\t\t<ul class=\"pkglist\">\n";
|
||||
|
@ -99,18 +99,25 @@ function main() {
|
|||
|
||||
print "\t\t\t\t</ul>\n";
|
||||
} else if ($request == "all") {
|
||||
printHead("speedie-aur", "All packages in speedie-aur", "There are $packageCount packages in speedie-aur");
|
||||
printHead($self, "speedie-aur", "All packages in speedie-aur", "There are $packageCount packages in speedie-aur");
|
||||
|
||||
print "\t\t\t<p>Total number of packages: $packageCount</p>\n";
|
||||
print "\t\t\t\t<ul class=\"pkglist\">\n";
|
||||
print "\t\t\t<table>\n";
|
||||
print "\t\t\t\t<tr>\n";
|
||||
print "\t\t\t\t\t<td><strong>Package</strong></td>\n";
|
||||
print "\t\t\t\t\t<td><strong>Description</strong></td>\n";
|
||||
print "\t\t\t\t</tr>\n";
|
||||
|
||||
for ($i = 1; $i < $packageCount+1; ++$i) {
|
||||
print "\t\t\t\t\t<li class=\"pkg\"><a href=\"$self?action=view&q=$packageNames[$i]\">$packageNames[$i] - $packageDescs[$i]</li>\n";
|
||||
print "\t\t\t\t\t<tr>\n";
|
||||
print "\t\t\t\t\t\t<td><a href=\"$self?action=view&q=$packageNames[$i]\">$packageNames[$i]</a></td>\n";
|
||||
print "\t\t\t\t\t\t<td>$packageDescs[$i]</td>\n";
|
||||
print "\t\t\t\t</tr>\n";
|
||||
}
|
||||
|
||||
print "\t\t\t\t</ul>\n";
|
||||
print "\t\t\t</table>\n";
|
||||
} else if ($request == "view" && $query == '') {
|
||||
printHead("speedie-aur", "speedie-aur", "My unofficial Arch Linux repository containing many useful packages");
|
||||
printHead($self, "speedie-aur", "speedie-aur", "My unofficial Arch Linux repository containing many useful packages");
|
||||
|
||||
print "\t\t<h1>speedie-aur</h1>\n";
|
||||
print "\t\t\t<p>Welcome to aur.speedie.site. This is just my Arch Linux repository.</p>\n";
|
||||
|
@ -173,12 +180,11 @@ function main() {
|
|||
$pkgSource = $packageSources[$i];
|
||||
$pkgLicense = $packageLicenses[$i];
|
||||
|
||||
printHead("speedie-aur", "Viewing package '$pkgName'", "$pkgName from the speedie-aur Arch Linux repository.");
|
||||
printHead($self, "speedie-aur", "Viewing package '$pkgName'", "$pkgName from the speedie-aur Arch Linux repository.");
|
||||
|
||||
print "\t\t<h1>$pkgName</h1>\n";
|
||||
|
||||
print "\t\t\t<table>\n";
|
||||
print "\t\t\t\t<tr>\n";
|
||||
|
||||
print "\t\t\t\t\t<tr>\n";
|
||||
print "\t\t\t\t\t<th>Description</th>\n";
|
||||
|
|
Loading…
Reference in a new issue