diff --git a/src/ExtensionsTable.cpp b/src/ExtensionsTable.cpp index e239a7bd..518ea5ab 100644 --- a/src/ExtensionsTable.cpp +++ b/src/ExtensionsTable.cpp @@ -27,6 +27,7 @@ #include #include #include +#include /////////////////////////////////////////////////////////////////////////////// ExtensionsTable::Builder ExtensionsTable::builder () @@ -44,9 +45,10 @@ ExtensionsTable::Builder& ExtensionsTable::Builder::withExtensions (const Extens /////////////////////////////////////////////////////////////////////////////// Table ExtensionsTable::Builder::build () { - Table table; + int terminalWidth = getTerminalWidth (); - table.width (1024); + Table table; + table.width (terminalWidth); table.colorHeader (Color ("underline")); table.add ("Extension", true); table.add ("Status", true); diff --git a/src/GapsTable.cpp b/src/GapsTable.cpp index 2c3c9c78..5add61f1 100644 --- a/src/GapsTable.cpp +++ b/src/GapsTable.cpp @@ -52,8 +52,10 @@ GapsTable::Builder& GapsTable::Builder::withIntervals (const std::vector /////////////////////////////////////////////////////////////////////////////// Table GapsTable::Builder::build () { + int terminalWidth = getTerminalWidth (); + Table table; - table.width (1024); + table.width (terminalWidth); table.colorHeader (Color ("underline")); table.add ("Wk"); table.add ("Date"); diff --git a/src/SummaryTable.cpp b/src/SummaryTable.cpp index ab63fd2e..df0ff4ea 100644 --- a/src/SummaryTable.cpp +++ b/src/SummaryTable.cpp @@ -131,8 +131,10 @@ Table SummaryTable::Builder::build () const auto duration_col_index = 3 + start_col_offset; const auto total_col_index = 4 + start_col_offset; + int terminalWidth = getTerminalWidth (); + Table table; - table.width (1024); + table.width (terminalWidth); table.colorHeader (Color ("underline")); if (_show_weeks) diff --git a/src/TagsTable.cpp b/src/TagsTable.cpp index 4a6c0944..d6bdbc29 100644 --- a/src/TagsTable.cpp +++ b/src/TagsTable.cpp @@ -25,6 +25,7 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include //////////////////////////////////////////////////////////////////////////////// TagsTable::Builder TagsTable::builder () @@ -42,8 +43,10 @@ TagsTable::Builder& TagsTable::Builder::withTagDescriptions (std::vector #include #include +#include #include #include #include #include #include +#include #include +#include #include //////////////////////////////////////////////////////////////////////////////// @@ -512,3 +515,20 @@ std::string minimalDelta (const Datetime& left, const Datetime& right) } //////////////////////////////////////////////////////////////////////////////// +int getTerminalWidth () +{ + int terminalWidth; +#ifdef TIOCGSIZE + struct ttysize ts{}; + ioctl (STDIN_FILENO, TIOCGSIZE, &ts); + terminalWidth = ts.ts_cols; +#elif defined(TIOCGWINSZ) + struct winsize ts {}; + ioctl(STDIN_FILENO, TIOCGWINSZ, &ts); + terminalWidth = ts.ws_col; +#endif + + return terminalWidth > 0 ? terminalWidth : 80; +} + +//////////////////////////////////////////////////////////////////////////////// diff --git a/src/timew.h b/src/timew.h index 36b9a6f1..a2faf883 100644 --- a/src/timew.h +++ b/src/timew.h @@ -82,6 +82,7 @@ int quantizeToNMinutes (int, int); bool findHint (const CLI&, const std::string&); std::string minimalDelta (const Datetime&, const Datetime&); +int getTerminalWidth () ; // log.cpp void enableDebugMode (bool);