I wrote a small code that shows a notification on workspace switch action.
This code requires libnotify and libwnck
To compile it use the command:
gcc -O2 -o wsnd `pkg-config --cflags --libs libnotify --libs libwnck` wsn.c
If you found compiling errors with above command, try this one:
gcc -O2 -DWNCK_I_KNOW_THIS_IS_UNSTABLE -o wsnd `pkg-config --cflags --libs libnotify --libs libwnck-1.0` wsn.c
To test it from a terminal: ./wsnd
Include it as XFCE startup application:
In XFCE you need to add it as startup applicaion on settings-manager->session and startup -> Application Autostart
The code:
//////////////////////////////////////////////////////////////////////////////////////
// Workspace Switch Notifier //
// Shows a OSD with workspace name on workspace switching action //
// //
// wsn.c - //
// //
// Authors: //
// Isaac Maia Pessoa //
// //
// This program is free software: you can redistribute it and/or modify it //
// under the terms of the GNU General Public License version 3, as published //
// by the Free Software Foundation. //
// //
// This program is distributed in the hope that it will be useful, but //
// WITHOUT ANY WARRANTY; without even the implied warranties of //
// MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR //
// PURPOSE. See the GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License along //
// with this program. If not, see <http://www.gnu.org/licenses/>. //
//////////////////////////////////////////////////////////////////////////////////////
#include <libnotify/notify.h>
#include <libwnck/libwnck.h>
#define N_SUMMARY "Workspace Changed"
#define N_ICON "dialog-information"
#define N_APPNAME "workspace switch notifier"
#define N_TIMEOUT 2000 /*2000ms = 2s */
static NotifyNotification * m_notification = NULL;
static void
on_active_workspace_changed (WnckScreen *screen,
WnckWorkspace *space,
gpointer data)
{
WnckWorkspace * active_workspace = wnck_screen_get_active_workspace(screen);
const char * w_name = wnck_workspace_get_name (active_workspace);
notify_notification_update(m_notification, N_SUMMARY, w_name, N_ICON);
notify_notification_show(m_notification, NULL);
}
int main(int argc, char ** argv)
{
GMainLoop *loop;
WnckScreen *screen;
if (notify_init(N_APPNAME))
m_notification = notify_notification_new(N_SUMMARY, "" , N_ICON);
else
fprintf(stderr, "Failed to init notifications\n");
notify_notification_set_timeout(m_notification, N_TIMEOUT);
gdk_init (&argc, &argv);
loop = g_main_loop_new (NULL, FALSE);
screen = wnck_screen_get_default();
g_signal_connect (screen, "active-workspace-changed",
G_CALLBACK (on_active_workspace_changed), NULL);
g_main_loop_run (loop);
g_main_loop_unref (loop);
return 0;
}
The following works for me:
sudo apt-get install compiz gnome-themes compizconfig-settings-manager
compiz --replace ccp &
If there are any errors displayed in the terminal, please add the output into your question.
Best Answer
Yes, Compiz is compatible with XFCE. The thing is, for common people, choosing XFCE over the "common" ones like KDE, Unity and Gnome is because of limited resources (CPU and Memory most of the time).
But sources like the following confirm that Compiz is compatible with XFCE but needs a little more loving to get it working:
https://wiki.archlinux.org/index.php/Compiz#XFCE
http://www.ghacks.net/2010/07/11/run-compiz-with-xfce4/
How do I enable Compiz in xubuntu?