Process command line arguments in shell
Classified in : Homepage, Debian, Command line, To remember
When writing a wrapper script, one often has to process the command line arguments to transform them according to his needs, to change some arguments, to remove or insert some, or perhaps to reorder them.
Removing sam2p from Debian
Classified in : Homepage, Debian, Command line, To remember
Issues with sam2p and removal
I have been maintaining the Debian package of sam2p for some time. Unfortunately, the upstream development of that program is no longer active, and it is using an old custom build chain that no longer works with recent version of GCC.
This package is currently failing to build from source, and while I have been able to patch some issues in the past, and it may still be possible to fix it again, this is not really sustainable.
I am therefore considering to remove sam2p from Debian, unless someone has a very good reason to keep it and is able and willing to maintain it.
Using bsdtar to change an archive format
Classified in : Homepage, Debian, Command line, To remember
Streamable archive formats
Archive formats such as tar(5) and cpio(5) have the advantage of being streamable, so you can use them for transferring data with pipes and remote shells, without having to store the archive in the middle of the process, for instance:
$ cd public_html/blog $ rgrep -lF "archive" data/articles \ | pax -w \ | ssh newserver "mkdir public_html/blog ; cd public_html/blog ; pax -r"
GNU/Linux graphic sessions: suspending your computer
Classified in : Homepage, Debian, Command line, To remember
Major desktop environments such as Xfce or KDE have a built-in computer suspend feature, but when you use a lighter alternative, things are a bit more complicated, because basically: only root can suspend the computer. There used to be a standard solution to that, using a D-Bus call to a running daemon upowerd. With recent updates, that solution first stopped working for obscure reasons, but it could still be configured back to be usable. With newer updates, it stopped working again, but this time it seems it is gone for good:
$ dbus-send --system --print-reply \ --dest='org.freedesktop.UPower' \ /org/freedesktop/UPower org.freedesktop.UPower.Suspend Error org.freedesktop.DBus.Error.UnknownMethod: Method "Suspend" with signature "" on interface "org.freedesktop.UPower" doesn't exist
Read more GNU/Linux graphic sessions: suspending your computer
GNU/Linux graphic sessions: allowing computer suspend and disabling a monitor
Classified in : Homepage, Debian, Command line, To remember
Allowing computer suspend
Major desktop environments such as Xfce or KDE have a built-in computer suspend feature, but when you use a lighter alternative, things are a bit more complicated, because basically: only root can suspend the computer. Possible solutions include:
- using sudo to allow members of a given group to run a suspend
command, e.g.
pm-suspend
as root; - using a D-Bus UPower thingy, which communicates with a
running daemon upowerd:
$ dbus-send --system --print-reply \ --dest='org.freedesktop.UPower' \ /org/freedesktop/UPower org.freedesktop.UPower.Suspend
With recent updates of the related Debian packages — no idea of which one exactly — the latter solution may not work any more, in which case it will only return the following error:
Error org.freedesktop.UPower.GeneralError: not authorized
It appears that this error is linked to ConsoleKit, a part of all
this modern *Kit gizmo pile. If you are in this case, try prefixing your
session launcher with the undocumented dark magic call ck-launch-session
. For instance, this is what I
have in my .xsession to launch my window
manager i3:
exec ck-launch-session i3
Note: I do not know what ck-launch-session
does exactly, why it is
needed, and I do not want to know. To me, all that WhatsitKit pile is
just some opaque, under-documented — as in: no man page — crap, that no
one but their author really understand, designed to solve theoretical
problems no one really cares about — like: how to allow locally
connected users to use the sound card while forbidding it to remote
users — while creating new issues such as this one. This stuff is too
complex and under-documented for me to dive into it, so if it does not
work out of the box, it is just some crap that gets in my way to using
my computer as I wish.
Disabling a monitor
In some configurations, you have two monitors and want to disable one. For instance, in addition to my LCD monitor, I have a projector which I only use for movies. According to xorg.conf's man page, it can be disabled this way:
Section "Device" Identifier "Internal graphic card" Option "Monitor-DVI" "LCD Monitor" Option "Monitor-VGA" "Projector" EndSection Section "Monitor" Identifier "LCD Monitor" EndSection Section "Monitor" Identifier "Projector" Option "Enable" "false" EndSection
Except that does not work, because contrary to what the man page says the real option to use is not Enable but Disable! So here is the correct configuration to disable that monitor at start-up:
Section "Device" Identifier "Internal graphic card" Option "Monitor-DVI" "LCD Monitor" Option "Monitor-VGA" "Projector" EndSection Section "Monitor" Identifier "LCD Monitor" EndSection Section "Monitor" Identifier "Projector" Option "Disable" "true" EndSection
Note: yes, I will send a bug report with a patch against xorg.conf's man page.