Skip to content

Commit 2f46a42

Browse files
committed
Fully responsive interface bar in XTOP
1 parent e3f1671 commit 2f46a42

File tree

1 file changed

+35
-30
lines changed

1 file changed

+35
-30
lines changed

tools/xtop.c

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include "api.h"
2222

2323
#define XTOP_VERSION_MAJ 1
24-
#define XTOP_VERSION_MIN 3
24+
#define XTOP_VERSION_MIN 4
2525

2626
#define XTOP_SORT_DISABLE 0
2727
#define XTOP_SORT_BUSY 1
@@ -40,19 +40,7 @@
4040
"HI IO "\
4141
"ST GT GN"
4242

43-
/*
44-
#define XTOP_IFACE_HEADER \
45-
"IFACE "\
46-
"RX "\
47-
"TX "\
48-
"SUM "\
49-
"MAC IP"
50-
*/
51-
52-
#define XTOP_IFACE_HEADER \
53-
"IFACE "\
54-
"RX "\
55-
"TX SUM"
43+
#define XTOP_IFACE_HEADER "IFACE"
5644

5745
static int g_nInterrupted = 0;
5846
extern char *optarg;
@@ -699,24 +687,27 @@ XSTATUS XTOPApp_AddInterface(xcli_win_t *pWin, xtop_args_t *pArgs, xnet_iface_t
699687
xstrnlcpyf(sName, sizeof(sName), nLength + 1, XSTR_SPACE_CHAR, "%s", pIface->sName);
700688
xstrncpy(sLine, sizeof(sLine), sName);
701689

702-
XBytesToUnit(sData, sizeof(sData), pIface->nBytesReceivedPerSec, XFALSE);
703-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
690+
uint8_t nAddrPadding = (pWin->frame.nColumns < 98) ? 12 : 15;
691+
xbool_t bShort = (pWin->frame.nColumns < 98) ? XTRUE : XFALSE;
692+
693+
XBytesToUnit(sData, sizeof(sData), pIface->nBytesReceivedPerSec, bShort);
694+
xstrnlcpyf(sRound, sizeof(sRound), nAddrPadding, XSTR_SPACE_CHAR, "%s", sData);
704695
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
705696

706-
XBytesToUnit(sData, sizeof(sData), pIface->nBytesSentPerSec, XFALSE);
707-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
697+
XBytesToUnit(sData, sizeof(sData), pIface->nBytesSentPerSec, bShort);
698+
xstrnlcpyf(sRound, sizeof(sRound), nAddrPadding, XSTR_SPACE_CHAR, "%s", sData);
708699
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
709700

710701
uint64_t nSum = pIface->nBytesReceivedPerSec + pIface->nBytesSentPerSec;
711-
XBytesToUnit(sData, sizeof(sData), nSum, XFALSE);
712-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
702+
XBytesToUnit(sData, sizeof(sData), nSum, bShort);
703+
xstrnlcpyf(sRound, sizeof(sRound), nAddrPadding, XSTR_SPACE_CHAR, "%s", sData);
713704
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
714705

715-
uint8_t nAddrPadding = (pWin->frame.nColumns < 106) ? 7 : 8;
706+
nAddrPadding = (pWin->frame.nColumns < 106) ? 7 : 8;
716707
nAddrPadding = (pWin->frame.nColumns < 104) ? 6 : nAddrPadding;
717708
nAddrPadding = (pWin->frame.nColumns < 102) ? 5 : nAddrPadding;
718709
nAddrPadding = (pWin->frame.nColumns < 100) ? 4 : nAddrPadding;
719-
nAddrPadding = (pWin->frame.nColumns < 98) ? 3 : nAddrPadding;
710+
nAddrPadding = (pWin->frame.nColumns < 89) ? 3 : nAddrPadding;
720711

721712
xstrnlcpyf(sRound, sizeof(sRound), strlen(pIface->sHWAddr) + nAddrPadding, XSTR_SPACE_CHAR, "%s", pIface->sHWAddr);
722713
if (strncmp(pIface->sHWAddr, XNET_HWADDR_DEFAULT, 17)) xstrncat(sLine, sizeof(sLine), "%s", sRound);
@@ -762,11 +753,22 @@ XSTATUS XTOPApp_AddNetworkInfo(xcli_win_t *pWin, xtop_args_t *pArgs, xarray_t *p
762753
xstrnfill(sLine, sizeof(sLine), nPreHdr, XSTR_SPACE_CHAR);
763754
xstrncat(sLine, sizeof(sLine), "%s", XTOP_IFACE_HEADER);
764755

765-
uint8_t nSpacePadding = (pWin->frame.nColumns < 106) ? 17 : 18;
756+
uint8_t nSpacePadding = (pWin->frame.nColumns < 98) ? 14 : 17;
757+
758+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", "RX");
759+
xstrncat(sLine, sizeof(sLine), "%s", sRound);
760+
761+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", "TX");
762+
xstrncat(sLine, sizeof(sLine), "%s", sRound);
763+
764+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", "SUM");
765+
xstrncat(sLine, sizeof(sLine), "%s", sRound);
766+
767+
nSpacePadding = (pWin->frame.nColumns < 106) ? 17 : 18;
766768
nSpacePadding = (pWin->frame.nColumns < 104) ? 16 : nSpacePadding;
767769
nSpacePadding = (pWin->frame.nColumns < 102) ? 15 : nSpacePadding;
768770
nSpacePadding = (pWin->frame.nColumns < 100) ? 14 : nSpacePadding;
769-
nSpacePadding = (pWin->frame.nColumns < 98) ? 13 : nSpacePadding;
771+
nSpacePadding = (pWin->frame.nColumns < 89) ? 13 : nSpacePadding;
770772

771773
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", "MAC");
772774
xstrncat(sLine, sizeof(sLine), "%s", sRound);
@@ -789,17 +791,20 @@ XSTATUS XTOPApp_AddNetworkInfo(xcli_win_t *pWin, xtop_args_t *pArgs, xarray_t *p
789791
if (pIface != NULL) XTOPApp_AddInterface(pWin, pArgs, pIface, nLength);
790792
}
791793

794+
nSpacePadding = (pWin->frame.nColumns < 98) ? 12 : 15;
795+
xbool_t bShort = (pWin->frame.nColumns < 98) ? XTRUE : XFALSE;
796+
792797
xstrnlcpyf(sLine, sizeof(sLine), nLength + 1, XSTR_SPACE_CHAR, "%s", "total");
793-
XBytesToUnit(sData, sizeof(sData), nSumRX, XFALSE);
794-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
798+
XBytesToUnit(sData, sizeof(sData), nSumRX, bShort);
799+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", sData);
795800
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
796801

797-
XBytesToUnit(sData, sizeof(sData), nSumTX, XFALSE);
798-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
802+
XBytesToUnit(sData, sizeof(sData), nSumTX, bShort);
803+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", sData);
799804
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
800805

801-
XBytesToUnit(sData, sizeof(sData), nSumRX + nSumTX, XFALSE);
802-
xstrnlcpyf(sRound, sizeof(sRound), 15, XSTR_SPACE_CHAR, "%s", sData);
806+
XBytesToUnit(sData, sizeof(sData), nSumRX + nSumTX, bShort);
807+
xstrnlcpyf(sRound, sizeof(sRound), nSpacePadding, XSTR_SPACE_CHAR, "%s", sData);
803808
xstrncat(sLine, sizeof(sLine), "%s/s", sRound);
804809
return XWindow_AddAligned(pWin, sLine, XSTR_CLR_LIGHT_CYAN, XCLI_LEFT);
805810
}

0 commit comments

Comments
 (0)