summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorGhettoGirl2016-08-22 21:05:39 +0200
committerGhettoGirl2016-08-22 21:05:39 +0200
commit26aeac5d0026528b908b1e624de162e303bb4f29 (patch)
tree4c12c9c316b6846d5fc30722ddfedaafc5dc79f1
downloadaur-26aeac5d0026528b908b1e624de162e303bb4f29.tar.gz
Initial commit
-rw-r--r--.SRCINFO35
-rw-r--r--CREDITS2
-rw-r--r--PKGBUILD66
-rw-r--r--disable-menubar.c92
-rw-r--r--eog.sh4
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 "$@"