[Aptitude-devel] Bug#775671: aptitude: ignore terminal width if output is not to a terminal

Manuel A. Fernandez Montecelo manuel.montezelo at gmail.com
Fri Feb 5 22:52:38 UTC 2016

Control: tags -1 + pending

Hi all,

2015-11-13 22:23 To Sam Morris:
>forcemerge 445206 775671
>severity 445206 normal
>tags 445206 + confirmed
>Hi all,
>2007-10-04 01:51 Sam Morris:
>>Package: aptitude
>>Severity: wishlist
>>Hash: SHA1
>>If I run 'aptitude show libxul0d | grep spell' I get the following
>>        libhunspell-1.1-0 (>= 1.1.6-1), libjpeg62, libmozjs0d (>=,
>>it would be nice if instead I got:
>>Depends: libatk1.0-0 (>= 1.13.2), libc6 (>= 2.6-1), libcairo2 (>= 1.4.0), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libgcc1 (>= 1:4.2-20070516), libglib2.0-0 (>= 2.12.9), libgtk2.0-0 (>= 2.10.12-3), libhunspell-1.1-0 (>= 1.1.6-1), libjpeg62, libmozjs0d (>=, libnspr4-0d (>=, libnss3-0d (>= 3.11.7), libpango1.0-0 (>= 1.16.5), libpng12-0 (>= 1.2.13-4), libstdc++6 (>= 4.2-20070516), libx11-6, libxft2 (>> 2.1.1), libxinerama1, libxrender1, libxt6, zlib1g (>= 1:, libxul-common (>=
>2008-09-01 01:01 jidanni at jidanni.org:
>>Or better yet, do document/implement the use of $COLUMNS, like dpkg -l uses.
>The reason for this behaviour is that for the command line, aptitude
>reuses code for the curses interface and from the cwidget library,
>"column_generator::layout_columns()" and "columnify()".
>The way in which it works means that for commands search, show,
>versions, etc., it attemps to create columns for the different fields to
>be shown, which try to use all the width of the screen.
>This is the reason why e.g. with "show" the Depends or Description get
>nicely formatted and try to use all of the screen available and with
>indentation, instead of dumping the information from apt/dpkg with a
>fixed width.
>When using a terminal, this works more or less fine (maybe sometimes the
>fields are also truncated, e.g. with search).  But when using a pipe or
>a redirection to a file, it is setting a default width of 80.  If we
>change to use a very large (~= "unlimited", e.g. 10K) width, the fields
>would try to spread over all the available width, and some of them would
>be justified to the right as well, so the result when piping/redirecting
>would not be any good either -- all lines/rows would try to use all the
>available 10K.
>"aptitude show aptitude | cat" with "unlimited" width works more or less
>fine because it uses only the minimum width or justifies to the right,
>but "search" and "versions" don't work well.
>So, in short, I agree that it doesn't make much sense when
>redirecting/piping, and it's a problem, but it's the way in which all of
>aptitude command line works and it will take a very significant effort
>to change.

I changed this by making use of the same code invoked with "disable
columns", and setting a very large number (almost "unlimited") for line
length / terminal width.

Making columns cannot work if the width is unknown / unlimited, as it's
the case when redirecting to files or piping.

To be present in the next release, so marking as +pending.

Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>

More information about the Aptitude-devel mailing list