diff options
author | GhettoGirl | 2016-08-22 21:05:39 +0200 |
---|---|---|
committer | GhettoGirl | 2016-08-22 21:05:39 +0200 |
commit | 26aeac5d0026528b908b1e624de162e303bb4f29 (patch) | |
tree | 4c12c9c316b6846d5fc30722ddfedaafc5dc79f1 | |
download | aur-26aeac5d0026528b908b1e624de162e303bb4f29.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 35 | ||||
-rw-r--r-- | CREDITS | 2 | ||||
-rw-r--r-- | PKGBUILD | 66 | ||||
-rw-r--r-- | disable-menubar.c | 92 | ||||
-rw-r--r-- | eog.sh | 4 |
5 files changed, 199 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..6ce39fbc9330 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,35 @@ +# Generated by mksrcinfo v8 +# Mon Aug 22 19:05:08 UTC 2016 +pkgbase = eog-frameless + pkgdesc = Eye of Gnome: An image viewing and cataloging program (frameless variant) + pkgver = 3.14.4.6277.gc5db74d + pkgrel = 1 + url = https://wiki.gnome.org/Apps/EyeOfGnome + arch = i686 + arch = x86_64 + groups = gnome + license = GPL + makedepends = intltool + makedepends = itstool + makedepends = gobject-introspection + makedepends = gtk-doc + depends = gnome-desktop + depends = libexif + depends = lcms2 + depends = exempi + depends = libpeas + depends = librsvg + depends = dconf + provides = eog=3.14.4 + conflicts = eog + conflicts = eog-git + options = !emptydirs + source = git+https://github.com/GNOME/eog.git + source = eog.sh + source = disable-menubar.c + sha256sums = SKIP + sha256sums = fea96443a8c2bae34f49e25f15f88bdc0b7bdeb334b87d702c02594b8c2fc0b8 + sha256sums = 94f0ae8e9fc8d3fd8699c419479541f955d0ff8343ba1bbd3f39fdacb91dc6d3 + +pkgname = eog-frameless + diff --git a/CREDITS b/CREDITS new file mode 100644 index 000000000000..8b0bbfae0350 --- /dev/null +++ b/CREDITS @@ -0,0 +1,2 @@ + +disable-menubar.c -> https://gist.github.com/anatooly/5891091 diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..b2b51f10f6e6 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,66 @@ +# Maintainer: GhettoGirl <github.com/GhettoGirl> + +# Borderless/Frameless Eye of GNOME +# Don't get annoyed by unnecessary UI elements! +# The window decoration needs to be disabled in your wm ;) + +# PKGBUILD based on abs/extra/eog + +_pkgname=eog +_pkgver=3.14.4 # if you need another version, just modify this string +pkgname=$_pkgname-frameless +pkgver=3.14.4.6277.gc5db74d +pkgrel=1 +pkgdesc="Eye of Gnome: An image viewing and cataloging program (frameless variant)" +url="https://wiki.gnome.org/Apps/EyeOfGnome" +arch=(i686 x86_64) +license=(GPL) +depends=(gnome-desktop libexif lcms2 exempi libpeas librsvg dconf) +makedepends=(intltool itstool gobject-introspection gtk-doc) +provides=("eog=$_pkgver") +conflicts=("eog" "eog-git") +groups=(gnome) +options=(!emptydirs) +source=("git+https://github.com/GNOME/eog.git" + "eog.sh" + "disable-menubar.c") +sha256sums=('SKIP' + 'fea96443a8c2bae34f49e25f15f88bdc0b7bdeb334b87d702c02594b8c2fc0b8' + '94f0ae8e9fc8d3fd8699c419479541f955d0ff8343ba1bbd3f39fdacb91dc6d3') + +pkgver() { + cd "$_pkgname" + echo $(git describe --tags | sed 's/-/\./g').$(git rev-list HEAD --count).g$(git rev-parse --short HEAD) +} + +prepare() { + cd "$_pkgname" + git checkout "$_pkgver" +} + +build() { + # build eye of gnome + cd "$_pkgname" + ./autogen.sh + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \ + --enable-compile-warnings=minimum --enable-gtk-doc + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make -j$(nproc) + + # build gtk menu bar disabler plugin + cd .. + gcc -shared -fPIC `pkg-config gtk+-x11-3.0 --cflags --libs` -o libnowinmenu.so disable-menubar.c +} + +package() { + cd "$_pkgname" + make DESTDIR="$pkgdir" install + + # install gtk menu bar disabler plugin + install -Dm644 -T "$srcdir/libnowinmenu.so" "$pkgdir/usr/lib/gtk-3.0/modules/libnowinmenu.so" + + # install eog wrapper to use the menu bar disabler plugin + # enabling that globally isn't a good idea ;) + mv "$pkgdir/usr/bin/eog" "$pkgdir/usr/bin/eog.bin" + install -Dm755 -T "$srcdir/eog.sh" "$pkgdir/usr/bin/eog" +} diff --git a/disable-menubar.c b/disable-menubar.c new file mode 100644 index 000000000000..326d76f453e6 --- /dev/null +++ b/disable-menubar.c @@ -0,0 +1,92 @@ +/* +BUILD: +gcc -shared -fPIC `pkg-config gtk+-x11-2.0 --cflags --libs` -o libwinmenu.so main.c +gcc -shared -fPIC `pkg-config gtk+-x11-3.0 --cflags --libs` -o libwinmenu3.so main.c +INSTALLATION: +cp libwinmenu.so /usr/lib/gtk-2.0/modules/libwinmenu.so +cp libwinmenu3.so /usr/lib/gtk-3.0/modules/libwinmenu.so +echo 'export GTK_MODULES=winmenu' >> ~/.profile or similar +*/ + +#include <string.h> +#include <gtk/gtk.h> +#include <gdk/gdkkeysyms.h> +#include <gdk/gdkkeysyms-compat.h> + +#define _gtk_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID +#define _gtk_marshal_NONE__NONE _gtk_marshal_VOID__VOID + +static GObject* (*old_gtk_menu_bar_constructor)(GType type, guint n_construct_properties, GObjectConstructParam *construct_params) = NULL; +static GObject* (*old_gtk_window_constructor)(GType type, guint n_construct_properties, GObjectConstructParam *construct_params) = NULL; +static void (*old_widget_show) (GtkWidget * widget) = NULL; + +static void toggle_menu_bar (GtkWidget *widget, gpointer user_data) +{ + GtkWidget * wdg = GTK_WIDGET(user_data); + GTK_WIDGET_GET_CLASS(wdg)->show = old_widget_show; + if (gtk_widget_get_visible (wdg)) + gtk_widget_hide(wdg); + else + gtk_widget_show(wdg); +} + +static void anchor_event (GtkWidget *widget, GtkWidget *previous_toplevel, gpointer user_data) +{ + GtkWidget *toplevel = gtk_widget_get_toplevel (widget); + if (gtk_widget_is_toplevel (toplevel)) { + if (previous_toplevel) + g_signal_handlers_disconnect_by_func(previous_toplevel, G_CALLBACK(toggle_menu_bar), widget); + g_signal_connect (toplevel, "toggle-menu-bar", G_CALLBACK(toggle_menu_bar), widget); + } +} + +static void show (GtkWidget *widget) +{ + if (GTK_IS_MENU_BAR(widget)) + return; + old_widget_show(widget); +} + +GObject* new_gtk_menu_bar_constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params) +{ + GObject * ret = old_gtk_menu_bar_constructor(type,n_construct_properties,construct_params); + g_signal_connect (ret, "hierarchy-changed", G_CALLBACK(anchor_event), NULL); + g_signal_connect (ret, "can_activate_accel", G_CALLBACK(gtk_true), NULL); + + return ret; +} + +G_MODULE_EXPORT void +gtk_module_init (gint * argc, gchar *** argv) +{ + GtkWidget *fc; + GObjectClass *klass; + const gchar *app_whitelist = "terminal, gnome-terminal, gimp, mousepad, wingpanel"; + + if (strstr (app_whitelist, g_get_prgname()) != NULL) + return; + + g_signal_new ("toggle-menu-bar", + GTK_TYPE_WINDOW, + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + 0, + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + fc = gtk_menu_bar_new(); + klass = GTK_MENU_BAR_GET_CLASS(fc); + old_gtk_menu_bar_constructor = klass->constructor; + klass->constructor = new_gtk_menu_bar_constructor; + old_widget_show = GTK_WIDGET_CLASS(klass)->show; + GTK_WIDGET_CLASS(klass)->show = show; + + fc = gtk_window_new(GTK_WINDOW_TOPLEVEL); + klass = GTK_WINDOW_GET_CLASS(fc); + + gtk_binding_entry_add_signal (gtk_binding_set_by_class (klass), GDK_m, GDK_CONTROL_MASK, + "toggle-menu-bar", 0); + gtk_binding_entry_add_signal (gtk_binding_set_by_class (klass), GDK_m, GDK_MOD1_MASK, + "toggle-menu-bar", 0); +} diff --git a/eog.sh b/eog.sh new file mode 100644 index 000000000000..594a558fd164 --- /dev/null +++ b/eog.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +export GTK_MODULES=nowinmenu +exec /usr/bin/eog.bin "$@" |