Xfce

Subdomains
 

Remote notifications

  • January 5, 2014
  • Mike Massonnet
This post explains how to get notifications (libnotify) from a remote system. Typically this is useful with an IRC client accessible through SSH.

Prerequisites:
  • A notification daemon! (dunst, xfce4-notifyd, etc.)
  • socat
  • notify-send
apt-get install socat libnotify-bin

On the client, modify the SSH configuration to introduce two elements:
  • forward a TCP port,
  • execute a local command.

Example entry for ~/.ssh/config:
Host remote-host
Hostname remote-host.gandi.net
RemoteForward 12000 localhost:12000
PermitLocalCommand yes
LocalCommand socat -u tcp4-listen:12000,reuseaddr,fork,bind=127.0.0.1 exec:$HOME/.local/bin/notify-remote.sh 2>/dev/null &
The fowarded TCP port will be used to netcat notification messages to the local system.

socat is used to bind a port on the local system, it will take the notifcation messages, and write them to the executed shell script notify-remote.sh.

The shell script will then simply call notify-send to display a notification with the default notification daemon.

notify-remote.sh:
#!/bin/sh
delay="5000"

read line
summary="$line"
read line
msg="$line"
read line

if [ "$line" = "" ] && [ "$summary" != "" ]; then
[ -x "$(which notify-send)" ] && notify-send -u critical -t "$delay" -- "$summary" "$msg"
fi

Now it is possible to connect to the remote host and "write" notifications:
local$ ssh remote-host
remote-host$ echo -e 'Summary\nBody\n\n' | nc 127.0.0.1 12000

Integrate into irssi


Copy the irssi script available bellow to get notifications from hilights, and private messages.

Once the script is copied, execute /script load rnotify.pl inside irssi.

~/.irssi/scripts/autorun/rnotify.pl:

# shamelessly copied from http://git.esaurito.net/?p=godog/bin.git;a=blob;f=rnotify.pl
use strict;
use Irssi;
use HTML::Entities;
use vars qw($VERSION %IRSSI);

$VERSION = "0.01";

%IRSSI = (
authors => 'Luke Macken, Paul W. Frields',
contact => 'lewk@csh.rit.edu, stickster@gmail.com',
name => 'rnotify',
description => 'Use libnotify to alert user to hilighted messages',
license => 'GNU General Public License',
url => 'http://lewk.org/log/code/irssi-notify',
);

Irssi::settings_add_str('misc', $IRSSI{'name'} . '_port', '12000');
Irssi::settings_add_bool('misc', $IRSSI{'name'} . '_if_away', 0);

sub is_port_owner {
my ($port, $uid) = @_;
my $wanted = sprintf("0100007F:%04X", $port);

# XXX linux-specific
open HANDLE, "< /proc/net/tcp" || return 0;
while(<HANDLE>){
# sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
my @splitted = split /\s+/;
my $local = $splitted[2];
my $remote = $splitted[3];
my $uid = $splitted[8];

return 1 if $local eq $wanted and $uid == $<;
}
close HANDLE;
return 0;
}

sub notify {
my ($server, $summary, $message) = @_;

$message = HTML::Entities::encode($message);
$summary = HTML::Entities::encode($summary);

# echo \ escaping
$message =~ s/\\/\\\\/g;
$summary =~ s/\\/\\\\/g;

my $port = Irssi::settings_get_str($IRSSI{'name'} . '_port');

return if ! is_port_owner($port, $<);

# check for being away in every server?
return if $server->{usermode_away} &&
(Irssi::settings_get_bool($IRSSI{'name'} . '_if_away') == 0);

# XXX test for other means of doing TCP
#print("echo '$summary\n$message\n\n' | /bin/nc 127.0.0.1 $port");
system("echo '$summary\n$message\n\n' | /bin/nc 127.0.0.1 $port &");

#my $pid = open(FH, "|-");
#if( $pid ){
# print FH "$summary\n$message\n\n";
# close(FH) || warn "exited $?";
#}else{
# exec("/bin/nc 127.0.0.1 $port") || warn "can't exec $!";
#}
}

sub print_text_notify {
my ($dest, $text, $stripped) = @_;
my $server = $dest->{server};

return if (!$server || !($dest->{level} & MSGLEVEL_HILIGHT));
my $sender = $stripped;
$sender =~ s/^\<.([^\>]+)\>.+/\1/ ;
$stripped =~ s/^\<.[^\>]+\>.// ;
my $summary = "Message on $dest->{target}";
notify($server, $summary, $stripped);
}

sub message_private_notify {
my ($server, $msg, $nick, $address) = @_;

return if (!$server);
notify($server, "Private message from ".$nick, $msg);
}

sub dcc_request_notify {
my ($dcc, $sendaddr) = @_;
my $server = $dcc->{server};

return if (!$dcc);
notify($server, "DCC ".$dcc->{type}." request", $dcc->{nick});
}

Irssi::signal_add('print text', 'print_text_notify');
Irssi::signal_add('message private', 'message_private_notify');
Irssi::signal_add('dcc request', 'dcc_request_notify');

# vim: et

Relaunch

  • December 25, 2013
  • Brian Tarricone

I finally decided to redo my website, and ditch WordPress in favor of a static site generator (I decided to use Jekyll). I also took the opportunity to simplify the design.

There’s a bit more to do, and likely some broken links here and there (not to mention some broken WP-to-markdown conversion), but it’s time I finally got this done.

In theory, I’ll start blogging again as well, but… we’ll see.

Relaunch

  • December 25, 2013
  • Brian Tarricone

I finally decided to redo my website, and ditch WordPress in favor of a static site generator (I decided to use Jekyll). I also took the opportunity to simplify the design.

There's a bit more to do, and likely some broken links here and there (not to mention some broken WP-to-markdown conversion), but it's time I finally got this done.

In theory, I'll start blogging again as well, but... we'll see.

Xfce – Xfwm4 zoom mode in 4.12

  • December 10, 2013
  • Skunnyk

Xfce is my main desktop environment since more than 6 years, and I really like it. I try to make some patch from time to time, and if you search a project to contribute, it’s here ;-)

The core team is really small (2 or 3 people), so development evolves rather slowly, and the 4.12 will be released when it is ready.

One of the latest feature is the implementation of a compositor zoom, like the compiz ezoom plugin, from an external developper ( see this thread).

Here a little video with latest git version ( from http://git.xfce.org/xfce/xfwm4/ ). You just need to press ALT and scroll up/down to zoom in/out.

(yeah, it’s an excuse to test the html5 <video> balise with ogv file ;)).

I will try to make some blog posts about new features in xfce world for the upcoming 4.12 (in 2014 I hope!), stay tuned !

Xfce – Xfwm4 zoom mode in 4.12

  • December 10, 2013
  • Skunnyk

Xfce is my main desktop environment since more than 6 years, and I really like it. I try to make some patch from time to time, and if you search a project to contribute, it’s here ;-)

The core team is really small (2 or 3 people), so development evolves rather slowly, and the 4.12 will be released when it is ready.

One of the latest feature is the implementation of a compositor zoom, like the compiz ezoom plugin, from an external developper ( see this thread).

Here a little video with latest git version ( from http://git.xfce.org/xfce/xfwm4/ ). You just need to press ALT and scroll up/down to zoom in/out.

(yeah, it’s an excuse to test the html5 <video> balise with ogv file ;)).

I will try to make some blog posts about new features in xfce world for the upcoming 4.12 (in 2014 I hope!), stay tuned !

Xfce – Xfwm4 zoom mode in 4.12

  • December 10, 2013
  • Skunnyk

Xfce is my main desktop environment since more than 6 years, and I really like it. I try to make some patch from time to time, and if you search a project to contribute, it's here ;-)

The core team is really small (2 or 3 people), so development evolves rather slowly, and the 4.12 will be released when it is ready.

One of the latest feature is the implementation of a compositor zoom, like the compiz ezoom plugin, from an external developper ( see this thread).

Here a little video with latest git version ( from http://git.xfce.org/xfce/xfwm4/ ). You just need to press ALT and scroll up/down to zoom in/out.

(yeah, it's an excuse to test the html5

I will try to make some blog posts about new features in xfce world for the upcoming 4.12 (in 2014 I hope!), stay tuned !

rndc retransfer failed: not found

  • August 15, 2013
  • Mike Massonnet
I came accross the dummy error rndc: 'retranfer' failed: not found, with many unhelpful articles. If you run a rndc retranfer command, and get this error, make sure there is an entry for the zone on the slave, it may be helpful…

rndc retransfer failed: not found

  • August 15, 2013
  • Mike Massonnet
I came accross the dummy error rndc: 'retranfer' failed: not found, with many unhelpful articles. If you run a rndc retranfer command, and get this error, make sure there is an entry for the zone on the slave, it may be helpful…

archbang

  • July 14, 2013
  • nightmorph

i pulled the slow magnetic hdd running gentoo from my thinkpad r61i; swapped it with a 2009-era 32GB ssd running archbang, a variant of arch linux.

it’s been several years since i last tried arch, and i wanted a desktop environment installed & preconfigured. archbang offers a minimal openbox desktop with a few basic programs: web browser, terminal, text editor, file manager, etc.

arch is fast. from cold boot to logged-in at the desktop: 5.5 seconds. that’s on an old supertalent ssd, artificially limited to SATA-I speeds by the thinkpad’s BIOS; the hardware is capable of running at SATA-II. even topped out at 150MB/sec read/write, this system is screaming fast. apps execute instantly, queries and searches complete as soon as i hit Enter, and even heavyweight firefox only takes a second or so to load. my experience is vastly improved over the same environment on gentoo, on the magnetic hdd.

gentoo didn’t run this fast on this drive when it was installed in my now-defunct desktop. i switched to a more useful xfce desktop, which didn’t affect boot/login times at all; still under 6 seconds.

so, why arch, and not gentoo? apparently, my music-making environment went through too many upgrades and changes between 2011 and now. i probably should have left it as-is once i got a working setup for live performances and studio production. it mostly doesn’t work anymore. kernel changes, upstream audio package changes, lots of factors. it’s impossible to diagnose, so i’m temporarily without a gentoo system, at least until i swap disks.

the upstream developer of my primary audio software runs arch, so i figured i may get better support & overall user experience by running the same OS and environment. i haven’t yet configured my desktop for realtime/low-latency audio work besides install the ck kernel. arch has most of my usual music stack available as binary packages, so i’ll only have to compile a few apps from the AUR.

i really like installing binary packages, rather than having to spend a whole day building them on this slow 2007-era CPU. and, since this is an exceptionally light flavor of arch, i don’t have the bloat and slowdown i experienced when using ubuntu for music production.

i’m not sure if i’ll keep arch installed or not, but this has been an interesting trip so far.

Xfce translations moved

  • July 4, 2013
  • Nick

For quite some time Xfce used a private installation of Transifex because this “old” version was capable of pushing to git directly and the tools provided by transifex.com were not extremely suitable at the time. But time went by and transifex.com improved to a nice platform, while our installation started to struggle more and more.

So it was about time we moved and since yesterday all translations moved to the Xfce hub project! There are separate projects for the core modules because there we work more active with different branches, and there are “collection” projects for the various goodies, like panel plugins, thunar extensions and applications outside Xfce core.

The platform is (imho) a huge improvement for translators; the interface is very nice, a way better online editor and a translation memory across the components to translate similar string more quickly and consistently. On the developers since everything is still automated since a cron script will pull the translations and submit them to git (if they reached a minimum percentage of 50% and passed all checks).

During the migration a lot of files were removed from git because they did not pass msgfmt –check, so at the same time this was a nice cleanup of broken translations in the repositories.

There are still some things to do; cron script needs some more testing and also more pot files need to be removed from the repositories to avoid broken or incomplete translations, but the largest step is taken.

So in case you were translating Xfce or want to, sign up at transifex.com and joint a translation team in the Xfce project!