Giter Site home page Giter Site logo

bk138 / gromit-mpx Goto Github PK

View Code? Open in Web Editor NEW
951.0 18.0 80.0 4.61 MB

Gromit-MPX is an on-screen annotation tool that works with any Unix desktop environment under X11 as well as Wayland.

License: GNU General Public License v2.0

C 93.25% CMake 2.82% Roff 3.04% Shell 0.89%
x11 wayland multi-pointer annotation-tool gnome kde xfce drawing unity enlightenment

gromit-mpx's Introduction

Gromit-MPX

CI Help making this possible Become a patron Donate Gitter

Gromit-MPX is an on-screen annotation tool that works with any Unix desktop environment under X11 as well as Wayland.

Its main use is for making presentations of some application. Normally, you would have to move the mouse pointer around the point of interest until hopefully everybody noticed it. With Gromit-MPX, you can draw everywhere onto the screen, highlighting some button or area.

Key features include:

  • Desktop-independent. Gromit-MPX works with GNOME, KDE, XFCE, ... under X11 (every desktop environment) as well as with a Wayland session using XWayland (most desktop environments).
  • Hotkey-based. The fundamental philosophy is that Gromit-MPX does not get into your way of doing things by sticking some UI widget on your desktop, potentially obscuring more important contents. It does provide a UI, but only in form of a tray icon.
  • Configurable. While Gromit-MPX comes with a default config, you are free to change key bindings as well as drawing tool configuration.
  • Multi-Pointer. Under X11, it enables graphical annotations with several pointers at once or a dedicated annotation device setup where you can use a second pair of input devices to annotate while simultaneously continuing to work normally with the first pair.
  • Fast. Where available, Gromit-MPX makes use of Compositing. This should be the case on any contemporary desktop environment making use of the XCOMPOSITE extension under X11 and with every Wayland-based session.

The name stands for (GRaphics Over MIscellaneous Things - Multi-Pointer-EXtension). It is a multi-pointer port of the original Gromit annotation tool by Simon Budig.

If you already used Gromit-MPX, you probably want to read NEWS. The roadmap for future developments can be found here.

How to use it

You can operate Gromit-MPX using its tray icon (if your desktop environment provides a sys tray), but since you typically want to use the program you are demonstrating and highlighting something is a short interruption of your workflow, Gromit-MPX can be toggled on and off on the fly via a hotkey:

Per default, it grabs the F9 and F8 keys, so that no other application can use them and they are available to Gromit-MPX only. The available commands are:

F9:        toggle painting
SHIFT-F9:  clear screen
CTRL-F9:   toggle visibility
ALT-F9:    quit Gromit-MPX
F8:       undo last stroke
SHIFT-F8: redo last undone stroke

You can specify the keys to grab as hotkeys via:

gromit-mpx --key <keysym> --undo-key <keysym>

Note that you can only specify single keysyms, not key combos. Specifying an empty string or none for the keysym will prevent Gromit-MPX from grabbing a key.

You can specify the opacity simply via:

gromit-mpx -o <opacity as real value in [0,1]>

As opacity is not a tool but a canvas property, it is not configured via gromit-mpx.cfg but remembered over restarts.

Alternatively you can invoke Gromit-MPX with various arguments to control an already running Gromit-MPX .

Usage:

gromit-mpx --quit
    will cause the main Gromit-Mpx-MPX process to quit (or "-q")
gromit-mpx --toggle <device-number>
    will toggle the grabbing of all cursors (or "-t"). Optionally,
    it toggles for the given internal device number (not XInput ID)
    only.
gromit-mpx --visibility
    will toggle the visibility of the window (or "-v")
gromit-mpx --clear
    will clear the screen (or "-c")
gromit-mpx --undo
    will undo the last drawing stroke (or "-z")
gromit-mpx --redo
    will redo the last undone drawing stroke (or "-y")
gromit-mpx --line <startX> <startY> <endX> <endY> <color> <thickness>
    will draw a straight line with characteristics specified by the arguments (or "-l")
    eg: gromit-mpx -l 200 200 400 400 '#C4A7E7' 6	

If activated Gromit-MPX prevents you from using other programs with the mouse. You can press the button and paint on the screen. Key presses (except the F9-Key, see above) will still reach the currently active window but it may be difficult to change the window-focus without mouse... The next gromit-mpx --toggle will deactivate Gromit-MPX and you can use your programs as usual - only the painted regions will be obscured.

Gromit-MPX is pressure sensitive, if you are using properly configured XInput-Devices you can draw lines with varying width. It is possible to erase something with the other end of the (Wacom) pen.

Undo/redo commands are cumulative. For example, sending two undo commands will undo the last two strokes. The maximum undo/redo depth is 4 strokes.

Setting up multi-pointer

As its name implies, Gromit-MPX relies on Multi-Pointer-X functionality provided by the XInput2 extension.

You can create a simple MPX setup via the xinput utility:

xinput --create-master two # create a second input focus (master)
xinput --list # see your master and slave devices and ids
xinput --reattach <slave-id> <master-id-of-'two'> # reattach slave

If you attach a keyboard slave device to the newly created second master, its hotkey will activate annotation mode for the associated pointer only. This way, can use a second pair of input devices to annotate while continuing to work normally with the first pair. If you don't have a second keyboard at hand, you can also toggle a specific pointer via --toggle <device-number>, where device-number is Gromit-MPX's internal device number, not the XInput ID.

Alternatively, you can also use the graphical tool input-device- manager to arrange your MPX setup.

Configuration

Gromit-MPX is configurable via the file gromit-mpx.cfg in the directory defined by $XDG_CONFIG_HOME (usually ~/.config or ~/.var/app/net.christianbeier.Gromit-MPX/config/ if you installed the Flatpak). Here you can specify which Device/Button/Modifier combination invokes which tool. See the copy of gromit-mpx.cfg distributed with this program for an example. An overview on the syntax:

# Comments can be either # Shell-Style or
/* C-Style. */

The PEN-tool is for freehand drawing.

PEN tool

The following entry defines the tool red Pen, a pen with size 7 and color red. You can specify an RGB color in X-Style: e.g. #FF0033, specify an RGBA color like so: rgba(0, 0, 255, 0.6) or use color names from rgb.txt.

"red Pen" = PEN (size=7 color="red");

The following Entries copy an existing configuration (in this case red Pen) and modify the color.

"blue Pen" = "red Pen" (color="blue");
"yellow Pen" = "red Pen" (color="yellow");

If you want another minimum size instead of the default 1, add minsize like this:

"red Marker" = "red Pen" (minsize=14);

You can set a maximum size as well:

"red Marker" = "red Pen" (maxsize=20);

Both minsize and maxsize can be combined to define a tool that's not allowed to change size:

"red fixed Marker" = "red Pen" (minsize=10 maxsize=10);

You can also draw lines that start and/or end in an arrow head. For this you have to specify arrowsize and optionally arrowtype. arrowsize is a factor relative to the width of the line. For reasonable arrowheads start with 1. arrowtype can take start, end or double and defaults to end when arrowsize is specified and no arrowtype given.

"blue Pen" = "blue Arrow" (arrowsize=2);

An ERASER is a tool that erases the drawings on screen. The color parameter is not important.

"Eraser" = ERASER (size = 75);

A RECOLOR-Tool changes the color of the drawing without changing the shape. Try it out to see the effect.

"green Marker" = RECOLOR (color = "Limegreen");

A LINE-tool draws straight lines.

LINE tool

"green Line" = LINE (color = "green");

A RECT-tool draws rectangles.

RECT tool

"red Rectangle" = RECT (color = "red");

A SMOOTH-tool that behaves like PEN except that it produces smoothed curves. The degree of smoothing can be specified using simplify=N. N can be imagined as approximate pixel range around the resulting line within which intermediate points are "simplified away". Closed paths can be drawn using the snap=N option where N indicates the maximum distance between start and end point within which these "snap" together.

SMOOTH tool

"smoothed line" = SMOOTH (color = "red" simplify=10 snap=30);

A ORTHOGONAL-tool that behaves like SMOOTH except that it produces straight line segments that automatically snap to perfectly horizontal and vertical direction when their direction deviated by a maximum of maxangle degrees. Transitions between straight segments are drawn as arcs with a certain radius, if these segments exceed a length of minlen.

ORTHOGONAL tool

"ortho line" = ORTHOGONAL (color="red" size=5 simplify=15 radius=20 minlen=50 snap=40);

If you define a tool with the same name as an input-device (see the output of xinput --list) this input-device uses this tool:

"ELAN Touchscreen Pen (0)" = "red Pen";
"ELAN Touchscreen Eraser (0)" = "Eraser";

Additionally you can limit the Scope to specific combinations of Mousebuttons (1,2,3,4,5 or Button1,...,Button5) and Modifiers (SHIFT, CONTROL, ALT, META, while ALT==META).

"Core Pointer" = "red Pen";
"Core Pointer"[SHIFT] = "blue Pen";
"Core Pointer"[CONTROL] = "yellow Pen";
"Core Pointer"[2] = "green Marker";
"Core Pointer"[Button3] = "Eraser";

If you want to limit drawing to a specific input device, define a tool with the same name as an input device like above and disable drawing for all others by assigning a zero-width tool like this:

"no Pen" = PEN (size=0);
"default" = "no Pen";

The decision which tool to use follows a simple policy:

  1. Buttons are more important than Modifiers
  2. High number Buttons are more important than lower ones
  3. Modifiers: SHIFT > CONTROL > ALT/META.
  4. Gromit-MPX tries partial matches: If you define "Core Pointer"[] and "Core Pointer"[SHIFT, CONTROL] and only SHIFT actually is pressed, Gromit-MPX will use the second definition if there is no "Core Pointer"[SHIFT] definition. The same logic holds for the buttons.
  5. Slave device config takes precedence over master device config, which in turn takes precedence over the fallback default config.

For versions > 1.3, you can also change the hotkeys from the config file by setting the respective HOTKEY and/or UNDOKEY values.

Autostart

If you want to have Gromit-MPX autostarted for your desktop session, the safest way to do so is via the XDG autostart facility:

Simply create a file ~/.config/autostart/gromit-mpx.desktop with the following contents:

[Desktop Entry]
Type=Application
Exec=gromit-mpx

If you have the Flatpak installed, the last line needs to start with Exec=flatpak run net.christianbeier.Gromit-MPX. You can freely add command line arguments to the 'Exec' stanza, configuring the autostarted instance to your needs.

Building it

Gromit-MPX uses CMake as its build system. Thus, it's the usual:

mkdir build
cd build
cmake ..
make
make install

from the root of the source tree.

Release Checklist

  • Update NEWS.
  • Increment version in CMakeLists.txt
  • Update Copyright year in About dialog.
  • Update authors in About dialog and AUTHORS file.
  • Update AppStream.
  • Update ChangeLog.
  • Fill out GitHub release.
  • Make Flathub release.
  • Announce on social.

Potential Problems

  • XFCE per default grabs Ctrl-F1 to Ctrl-F12 (switch to workspace 1-12) and Alt-F9 (minimize window) which renders Gromit-MPX's default hotkey mapping unusable. Gromit-MPX detects XFCE and changes the default hotkeys to Home and End. Those can can still be overridden by the user. In case you're using XFCE 4.14 or newer, chances are that all 'special' keys are grabbed by XFCE itself, which means you'll have to modify XFCE's keybindings (Settings->Window Manager->Keyboard) manually in order to 'make room' for Gromit-MPX's ones.

  • When there is no compositing manager such as Mutter or KWin running, Gromit-MPX falls back to a legacy drawing mode. This may drastically slow down your X-Server, especially when you draw very thin lines. It makes heavy use of the shape extension, which is quite expensive if you paint a complex pattern on screen. Especially terminal-programs tend to scroll incredibly slow if something is painted over their window.

  • If Gromit-MPX under Wayland complains about "cannot open display", make sure you have XWayland runnning or its autostart configured. Gromit-MPX needs XWayland when running in a Wayland session.

  • In case you encounter any other kind of problem, please check if it's in the list of known bugs. You can help by reporting a new one or adding info to an existing one.

Similar Tools

In the Unix-world, similar but different tools are Ardesia, Pylote and Draw On You Screen.

Similar tools for MS-Windows include DemoHelper (GPLv2 also), or proprietary tools like ZoomIt, ScreenMarker or EpicPen.

License

Like the original Gromit, this program is distributed under the Gnu General Public License. See the file COPYING for details. Thanks to Simon for the groundwork done!

---Christian Beier

gromit-mpx's People

Contributors

albanobattistella avatar alisterh avatar avma avatar barak avatar bbhtt avatar bk138 avatar chyla avatar ezeeyahoo avatar fusl avatar godmar avatar he-lu avatar junrrein avatar mehmetaergun avatar mmdbalkhi avatar natenho avatar nwhitehead avatar pascal-niklaus avatar renatocan avatar russel avatar taok avatar tobias47n9e avatar vanillaviking avatar wavexx avatar xiphmont avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gromit-mpx's Issues

Add functionality to draw straight lines

#44 is similar but I want to open it as a feature-request.
Because it would be a great possibility to add lines to Gromit.

I would help with the code if there is interest and support because I'm not a graphics programmer.

Pressing a key to start a line in the same color like the "freehand" option and hold it down until the end point of the line is reached. Simple like the other tools but a new feature.

What do you think? Why not?

No configure?

README build instructions say to do the usual configure/make/install. Yet configure is not in the repo, it is .gitignore'd.

My autoconf is too old (2.68 on precise), gromit-mpx wants 2.69. If I hack AC_PREREQ backwards autoconf and configure complain about other autotoolsy stuff like undefined macros AM_PROG_CC_C_O.

Any reason not to put configure in git? Either that or an autogen.sh?

compilation error for the recent release

I just installed Archlinux on a new laptop; therefore I had to re-install gromit using the new cmake configuration (as opposed to the old one using autconf.) it gives me this:
-- The C compiler identification is GNU 6.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")
-- Checking for module 'gtk+-3.0 >= 2.99.3'
-- Found gtk+-3.0 , version 3.22.4
-- Checking for module 'appindicator3-0.1 >= 0.4.92'

CMake Error at /usr/share/cmake-3.6/Modules/FindPkgConfig.cmake:424 (message):
A required package was not found
Call Stack (most recent call first):
/usr/share/cmake-3.6/Modules/FindPkgConfig.cmake:597 (_pkg_check_modules_internal)
CMakeLists.txt:14 (pkg_check_modules)

-- Configuring incomplete, errors occurred!
See also "/home/wyousef/MyDocuments/MyScripts/InstallationTipsArch/gromit-mpx/build/CMakeFiles/CMakeOutput.log".

Changing the cross-like cursor when drawing

How can I change the shape of the cursor, when drawing, to be something different from the not-clear cross. I need it something like obvious bold arrow even when drawing. This is very important when recording lectures.

Cursor switching with wacom styluses doesn't work

Styluses normally have two buttons on the side (button 1/2), but I cannot make them work.
I think this is due to the fact that drawing by itself normally triggers button 0, and erasing triggers button 3.

Not recognizing the pen tip on wacom intuos draw tablets

When trying to draw with my new "wacom intuos draw", the pointer goes anywhere I want without problem but the tip does not register as a click sort of thing. I can't draw at all. If I pick up the mouse next to it, I can draw with it no problem.

So both the mouse and pen moves the cursor but only the mouse draws on screen.

I tried with other apps such as Gimp and my pen is ok, it draws perfectly. I also tried with another tablet, an HUION 610pro and the tip was recognized.

I am running linux mint, updated to the latest.

git tag for version 1.2

Hi there, I installed everything from master and was wondering why there isn't a 1.2 tag in the repository.

Thanks for the great tool.

Cheers from Berlin,

Matthias

Excluding windows from drawing

Hi there!

First of all I love the project. It's too fast and I've yet to run into any bugs.
I wanted to try to get an application to still be clickable while Gromit-MPX was in use. In other words, the mouse would draw lines while outside of that window but once inside stop drawing and interact with the window. Then once moved outside the window start drawing again.

Given the way Gromit works currently, which as I understand Gromit takes control of the mouse and consumes its events when drawing, preventing them from reaching windows underneath, would there be any easy way to implement this?

Thanks!

System tray indicator should show status

I installed Topicons Plus Gnome extension to get a sys tray back and I do see the sys tray icon now. I was expecting it would show me the status of gromit-mpx but it does not. I think it would be great to change the icon when it is active. I have a hard time knowing when it is active otherwise.

Is it possible to disable pressure sensitivity for X230T ( Wacom stylus) ?

gromit-mpx is great!

In Ubuntu, the default short cut key is Pause, I recently work it out on my X230T, and the key press is Fn+P.

When I am drawing something, the pressure sensitivity is nice in gromit-mpx. However, when I am teaching and writing some formulas, I like to turn off the pressure sensitivity, as the Annotate plugin of compiz, who treats the Wacom stylus as a mouse.

Once I use Annotate plugin of compiz in Ubuntu (12.04, 14.04+xfce, 14.04+mate1.82) in teaching, for examples
https://www.youtube.com/watch?v=4yBW1tOx9p0
https://www.youtube.com/playlist?list=PLVmaHFXy6tldlu5ZKR-3M89dP-YicRPLl

gromit-mpx provides the flexibility to change color, this point is much better than Annotate plugin of Compiz. If there is a way to disable the pressure sensitivity, that will be super.

doesn't work on Linux Mint ?

I've successfully used Gromit MPX on Arch and OpenSUSE but on Mint it doesn't seem to work.
The tray icon appears but I can't paint, and toggling paint mode doesn't help.
Or maybe it's since I started using it on a laptop ?

Using this as a tool/library for drawing to the screen

Hello,

I'm interested in using a tool like this for writing text (and possibly rectangles and other shapes) on the screen as overlay.

Is there currently any way for sing gromit-mpx in this way?

I.e. I want to call gromit-mpx from a bash script and tell it to draw a black rectangle with such and such
text at such and such position. And to delete that overlay again after a certain period of time or when it is called again to undo it.

"Show again on startup" not saving setting

After each restart, Gromit shows the help screen again, even after unchecking "show again on startup". I am using the Arch package if that makes a difference:

# Maintainer: Kyle Keen <[email protected]>

pkgname=gromit-mpx-git
_gitname=gromit-mpx
pkgver=1.2.r7.g295a34b
pkgrel=1
pkgdesc="Desktop annotation tool. GTK3 multi-pointer variant of original gromit utility."
arch=('i686' 'x86_64')
url="https://github.com/bk138/gromit-mpx"
license=("GPL2")
depends=('libappindicator-gtk3')
makedepends=('cmake')
provides=('gromit')
conflicts=('gromit')
source=("git://github.com/bk138/gromit-mpx.git")
md5sums=('SKIP')

pkgver() {
    cd "$srcdir/$_gitname"
    git describe --long --tags | sed -r 's/([^-]*-g)/r\1/;s/-/./g'
}

build() {
    cd "$srcdir/$_gitname"
    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
    make
}

package() {
    cd "$srcdir/$_gitname"
    make DESTDIR="$pkgdir/" install
}

Feature: unify the right- and left-click menus

The tray icon has a left-click menu with drawing options in it, and a right-click menu with only an option to quit. Does it really need two separate menus, or could they be unified? Perhaps the menu could be activated by any mouse button?

Switch from Autotools to SCons, Meson, or CMake?

I have been working on bits of SCons for a while now and it is way better than Autotools for C, C++, Fortran, D, and LaTeX builds. However the CLion IDE has gone the CMake route. CMake is second rate (in my view) to SCons, but to use CLion is to use CMake. GStreamer (on which I am scheduled to do some work fairly soon) has been an Autotools project. It has recently though added Meson build. It seems as though the GTK-based community may be shifting from Autotools to Meson. Meson is CMake is architecture but has a Python-style DSL and Ninja back-end rather than CMake's weird DSL and Make.

I have only had a little bit of experience with Meson to date, but it certainly looks like a very good system. Is there a chance of admitting a change of build infrastructure. As you can tell I really do not like Autotools!

Update man page

I saw that there is at least one argv option (-o to set opacity) that isn't documented in the man page. Would it be possible to update the man page to reflect this new usage and any others?

issue on fedora 27 KDE plasma

hello,

I was able to build successfully but, running I get some errors.

Supported backends: x11 wayland 
Using backend: x11

(gromit-mpx:4328): GLib-GObject-WARNING **: g_object_get_is_valid_property: object class 'GdkX11DeviceCore' has no property named 'device-id'

(gromit-mpx:4328): Gdk-ERROR **: The program 'gromit-mpx' received an X Window System error.
This probably reflects a bug in the program.
The error was 'XI_BadDevice (invalid Device parameter)'.
  (Details: serial 212 error_code 129 request_code 131 (XInputExtension) minor_code 48)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
[1]    4328 trace trap (core dumped)  ./gromit-mpx

minor compiler warnings regarding deprecated library functions

This is compiled on debian testing. The compiler does a lot of whining about deprecated gdk library procedures.

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.1.1-11' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 6.1.1 20160802 (Debian 6.1.1-11) 

$ autoreconf --warn all --install --symlink --force
configure.ac:10: installing './compile'
configure.ac:5: installing './install-sh'
configure.ac:5: installing './missing'
Makefile.am: installing './depcomp'

$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.20... yes
checking for library containing atan2... -lm
checking for GTK3... yes
checking for XINPUT2... yes
checking for X11... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

$ make -j1
make  all-am
make[1]: Entering directory '/home/barak/src/git/debian-src/gromit-mpx'
depbase=`echo src/gromit-mpx.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include    -Wall -Wextra -Wno-unused-parameter -g -O2 -MT src/gromit-mpx.o -MD -MP -MF $depbase.Tpo -c -o src/gromit-mpx.o src/gromit-mpx.c &&\
mv -f $depbase.Tpo $depbase.Po
src/gromit-mpx.c: In function ‘paint_context_new’:
src/gromit-mpx.c:58:3: warning: ‘gdk_cairo_set_source_color’ is deprecated: Use 'gdk_cairo_set_source_rgba' instead [-Wdeprecated-declarations]
   gdk_cairo_set_source_color(context->paint_ctx, paint_color);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdk.h:33:0,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkcairo.h:68:12: note: declared here
 void       gdk_cairo_set_source_color   (cairo_t              *cr,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c: In function ‘select_tool’:
src/gromit-mpx.c:425:3: warning: ‘gdk_device_grab’ is deprecated: Use 'gdk_seat_grab' instead [-Wdeprecated-declarations]
   gdk_device_grab(master,
   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkdnd.h:33:0,
                 from /usr/include/gtk-3.0/gdk/gdkevents.h:34,
                 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkdevice.h:230:15: note: declared here
 GdkGrabStatus gdk_device_grab        (GdkDevice        *device,
               ^~~~~~~~~~~~~~~
src/gromit-mpx.c: In function ‘draw_arrow’:
src/gromit-mpx.c:614:7: warning: ‘gdk_cairo_set_source_color’ is deprecated: Use 'gdk_cairo_set_source_rgba' instead [-Wdeprecated-declarations]
       gdk_cairo_set_source_color(devdata->cur_context->paint_ctx, data->black);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdk.h:33:0,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkcairo.h:68:12: note: declared here
 void       gdk_cairo_set_source_color   (cairo_t              *cr,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:623:7: warning: ‘gdk_cairo_set_source_color’ is deprecated: Use 'gdk_cairo_set_source_rgba' instead [-Wdeprecated-declarations]
       gdk_cairo_set_source_color(devdata->cur_context->paint_ctx, devdata->cur_context->paint_color);
       ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdk.h:33:0,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkcairo.h:68:12: note: declared here
 void       gdk_cairo_set_source_color   (cairo_t              *cr,
            ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c: In function ‘setup_main_app’:
src/gromit-mpx.c:673:3: warning: ‘gdk_color_parse’ is deprecated: Use 'gdk_rgba_parse' instead [-Wdeprecated-declarations]
   gdk_color_parse ("#FFFFFF", data->white);
   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkcairo.h:26:0,
                 from /usr/include/gtk-3.0/gdk/gdk.h:33,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/deprecated/gdkcolor.h:79:11: note: declared here
 gboolean  gdk_color_parse     (const gchar    *spec,
           ^~~~~~~~~~~~~~~
src/gromit-mpx.c:674:3: warning: ‘gdk_color_parse’ is deprecated: Use 'gdk_rgba_parse' instead [-Wdeprecated-declarations]
   gdk_color_parse ("#000000", data->black);
   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkcairo.h:26:0,
                 from /usr/include/gtk-3.0/gdk/gdk.h:33,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/deprecated/gdkcolor.h:79:11: note: declared here
 gboolean  gdk_color_parse     (const gchar    *spec,
           ^~~~~~~~~~~~~~~
src/gromit-mpx.c:675:3: warning: ‘gdk_color_parse’ is deprecated: Use 'gdk_rgba_parse' instead [-Wdeprecated-declarations]
   gdk_color_parse ("#FF0000", data->red);
   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkcairo.h:26:0,
                 from /usr/include/gtk-3.0/gdk/gdk.h:33,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/deprecated/gdkcolor.h:79:11: note: declared here
 gboolean  gdk_color_parse     (const gchar    *spec,
           ^~~~~~~~~~~~~~~
src/gromit-mpx.c:730:3: warning: ‘gdk_display_get_device_manager’ is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
   g_signal_connect (gdk_display_get_device_manager (data->display), "device-added",
   ^~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkscreen.h:32:0,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkdisplay.h:171:20: note: declared here
 GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:732:3: warning: ‘gdk_display_get_device_manager’ is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
   g_signal_connect (gdk_display_get_device_manager (data->display), "device-removed",
   ^~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkscreen.h:32:0,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/callbacks.h:28,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gdk/gdkdisplay.h:171:20: note: declared here
 GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:871:3: warning: ‘gtk_key_snooper_install’ is deprecated [-Wdeprecated-declarations]
   gtk_key_snooper_install (snoop_key_press, data);
   ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:139:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/gtkmain.h:185:12: note: declared here
 guint      gtk_key_snooper_install (GtkKeySnoopFunc snooper,
            ^~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:879:3: warning: ‘gtk_status_icon_new_from_file’ is deprecated [-Wdeprecated-declarations]
   data->trayicon = gtk_status_icon_new_from_file("data/gromit-mpx.svg");
   ^~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:88:23: note: declared here
 GtkStatusIcon        *gtk_status_icon_new_from_file      (const gchar        *filename);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:880:3: warning: ‘gtk_status_icon_get_storage_type’ is deprecated [-Wdeprecated-declarations]
   if(gtk_status_icon_get_storage_type(data->trayicon) == GTK_IMAGE_EMPTY) {
   ^~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:113:23: note: declared here
 GtkImageType          gtk_status_icon_get_storage_type   (GtkStatusIcon      *status_icon);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:881:7: warning: ‘gtk_status_icon_new_from_file’ is deprecated [-Wdeprecated-declarations]
       data->trayicon = gtk_status_icon_new_from_file("/usr/local/share/icons/hicolor/scalable/apps/gromit-mpx.svg");
       ^~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:88:23: note: declared here
 GtkStatusIcon        *gtk_status_icon_new_from_file      (const gchar        *filename);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:882:7: warning: ‘gtk_status_icon_get_storage_type’ is deprecated [-Wdeprecated-declarations]
       if(gtk_status_icon_get_storage_type(data->trayicon) == GTK_IMAGE_EMPTY) {
       ^~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:113:23: note: declared here
 GtkImageType          gtk_status_icon_get_storage_type   (GtkStatusIcon      *status_icon);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:883:4: warning: ‘gtk_status_icon_new_from_file’ is deprecated [-Wdeprecated-declarations]
    data->trayicon = gtk_status_icon_new_from_file("/usr/share/icons/hicolor/scalable/apps/gromit-mpx.svg");
    ^~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:88:23: note: declared here
 GtkStatusIcon        *gtk_status_icon_new_from_file      (const gchar        *filename);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:884:4: warning: ‘gtk_status_icon_get_storage_type’ is deprecated [-Wdeprecated-declarations]
    if(gtk_status_icon_get_storage_type(data->trayicon) == GTK_IMAGE_EMPTY)
    ^~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:113:23: note: declared here
 GtkImageType          gtk_status_icon_get_storage_type   (GtkStatusIcon      *status_icon);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c:889:3: warning: ‘gtk_status_icon_set_tooltip_text’ is deprecated [-Wdeprecated-declarations]
   gtk_status_icon_set_tooltip_text (data->trayicon, "Gromit-MPX");
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:271:0,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/deprecated/gtkstatusicon.h:137:23: note: declared here
 void                  gtk_status_icon_set_tooltip_text   (GtkStatusIcon      *status_icon,
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c: In function ‘app_parse_args’:
src/gromit-mpx.c:966:16: warning: ‘gtk_window_set_opacity’ is deprecated: Use 'gtk_widget_set_opacity' instead [-Wdeprecated-declarations]
                gtk_window_set_opacity(GTK_WINDOW(data->win), data->opacity);
                ^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtkdialog.h:32:0,
                 from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                 from /usr/include/gtk-3.0/gtk/gtk.h:31,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/gtkwindow.h:200:12: note: declared here
 void       gtk_window_set_opacity              (GtkWindow           *window,
            ^~~~~~~~~~~~~~~~~~~~~~
src/gromit-mpx.c: In function ‘main’:
src/gromit-mpx.c:1135:3: warning: ‘gtk_window_set_opacity’ is deprecated: Use 'gtk_widget_set_opacity' instead [-Wdeprecated-declarations]
   gtk_window_set_opacity(GTK_WINDOW(data->win), data->opacity);
   ^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtkdialog.h:32:0,
                 from /usr/include/gtk-3.0/gtk/gtkaboutdialog.h:30,
                 from /usr/include/gtk-3.0/gtk/gtk.h:31,
                 from src/callbacks.h:29,
                 from src/gromit-mpx.c:28:
/usr/include/gtk-3.0/gtk/gtkwindow.h:200:12: note: declared here
 void       gtk_window_set_opacity              (GtkWindow           *window,
            ^~~~~~~~~~~~~~~~~~~~~~
depbase=`echo src/callbacks.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include    -Wall -Wextra -Wno-unused-parameter -g -O2 -MT src/callbacks.o -MD -MP -MF $depbase.Tpo -c -o src/callbacks.o src/callbacks.c &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/config.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include    -Wall -Wextra -Wno-unused-parameter -g -O2 -MT src/config.o -MD -MP -MF $depbase.Tpo -c -o src/config.o src/config.c &&\
mv -f $depbase.Tpo $depbase.Po
src/config.c: In function ‘parse_config’:
src/config.c:278:27: warning: ‘gdk_color_parse’ is deprecated: Use 'gdk_rgba_parse' instead [-Wdeprecated-declarations]
                           if (gdk_color_parse (scanner->value.v_string,
                           ^~
In file included from /usr/include/gtk-3.0/gdk/gdkcairo.h:26:0,
                 from /usr/include/gtk-3.0/gdk/gdk.h:33,
                 from src/gromit-mpx.h:28,
                 from src/config.c:30:
/usr/include/gtk-3.0/gdk/deprecated/gdkcolor.h:79:11: note: declared here
 gboolean  gdk_color_parse     (const gchar    *spec,
           ^~~~~~~~~~~~~~~
depbase=`echo src/input.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
gcc -DHAVE_CONFIG_H -I.  -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include    -Wall -Wextra -Wno-unused-parameter -g -O2 -MT src/input.o -MD -MP -MF $depbase.Tpo -c -o src/input.o src/input.c &&\
mv -f $depbase.Tpo $depbase.Po
src/input.c: In function ‘setup_input_devices’:
src/input.c:52:3: warning: ‘gdk_display_get_device_manager’ is deprecated: Use 'gdk_display_get_default_seat' instead [-Wdeprecated-declarations]
   GdkDeviceManager *device_manager = gdk_display_get_device_manager(data->display);
   ^~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkscreen.h:32:0,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdisplay.h:171:20: note: declared here
 GdkDeviceManager * gdk_display_get_device_manager (GdkDisplay *display);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/input.c:57:27: warning: ‘gdk_device_manager_list_devices’ is deprecated [-Wdeprecated-declarations]
                           (device_manager, GDK_DEVICE_TYPE_MASTER),
                           ^
In file included from /usr/include/gtk-3.0/gdk/gdkdisplay.h:32:0,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevicemanager.h:41:14: note: declared here
 GList *      gdk_device_manager_list_devices       (GdkDeviceManager *device_manager,
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/input.c:59:27: warning: ‘gdk_device_manager_list_devices’ is deprecated [-Wdeprecated-declarations]
                           (device_manager, GDK_DEVICE_TYPE_SLAVE));
                           ^
In file included from /usr/include/gtk-3.0/gdk/gdkdisplay.h:32:0,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevicemanager.h:41:14: note: declared here
 GList *      gdk_device_manager_list_devices       (GdkDeviceManager *device_manager,
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/input.c: In function ‘release_grab’:
src/input.c:180:6: warning: ‘gdk_device_ungrab’ is deprecated: Use 'gdk_seat_ungrab' instead [-Wdeprecated-declarations]
      gdk_device_ungrab(devdata->device, GDK_CURRENT_TIME);
      ^~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkdnd.h:33:0,
                 from /usr/include/gtk-3.0/gdk/gdkevents.h:34,
                 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevice.h:239:15: note: declared here
 void          gdk_device_ungrab      (GdkDevice        *device,
               ^~~~~~~~~~~~~~~~~
src/input.c:205:7: warning: ‘gdk_device_ungrab’ is deprecated: Use 'gdk_seat_ungrab' instead [-Wdeprecated-declarations]
       gdk_device_ungrab(devdata->device, GDK_CURRENT_TIME);
       ^~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gdk/gdkdnd.h:33:0,
                 from /usr/include/gtk-3.0/gdk/gdkevents.h:34,
                 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevice.h:239:15: note: declared here
 void          gdk_device_ungrab      (GdkDevice        *device,
               ^~~~~~~~~~~~~~~~~
src/input.c: In function ‘acquire_grab’:
src/input.c:245:4: warning: ‘gdk_device_grab’ is deprecated: Use 'gdk_seat_grab' instead [-Wdeprecated-declarations]
    if(gdk_device_grab(devdata->device,
    ^~
In file included from /usr/include/gtk-3.0/gdk/gdkdnd.h:33:0,
                 from /usr/include/gtk-3.0/gdk/gdkevents.h:34,
                 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevice.h:230:15: note: declared here
 GdkGrabStatus gdk_device_grab        (GdkDevice        *device,
               ^~~~~~~~~~~~~~~
src/input.c:282:7: warning: ‘gdk_device_grab’ is deprecated: Use 'gdk_seat_grab' instead [-Wdeprecated-declarations]
       if(gdk_device_grab(devdata->device,
       ^~
In file included from /usr/include/gtk-3.0/gdk/gdkdnd.h:33:0,
                 from /usr/include/gtk-3.0/gdk/gdkevents.h:34,
                 from /usr/include/gtk-3.0/gdk/gdkdisplay.h:31,
                 from /usr/include/gtk-3.0/gdk/gdkscreen.h:32,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:31,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from src/input.c:7:
/usr/include/gtk-3.0/gdk/gdkdevice.h:230:15: note: declared here
 GdkGrabStatus gdk_device_grab        (GdkDevice        *device,
               ^~~~~~~~~~~~~~~
gcc -Wall -Wextra -Wno-unused-parameter -g -O2   -o gromit-mpx src/gromit-mpx.o src/callbacks.o src/config.o src/input.o  -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lXi -lX11 -lm 
make[1]: Leaving directory '/home/barak/src/git/debian-src/gromit-mpx'

$ 

Gnome-shell 3.26.1 has no sys tray

It seems that the sys tray has gone from gnome-shell 3.26.1. It doesn't affect the use of Gromit-MPX as I use it, but it does make the blurb about using it not up-to-date.

./configure issue: `PKG_PROG_PKG_CONFIG(0.20)'

From github repo and after _autoreconf --install, got this error on **./configure**_:

./configure: line 3953: syntax error near unexpected token `0.20'

./configure: line 3953: `PKG_PROG_PKG_CONFIG(0.20)'

Compton gromit-mpx shadows

Hi,
I am using compton as desktop composition manager.
When I use gromit-mpx shadow appears on whole paint-able screen.

I can't check class of this window with xprop.
Which window class I should use to exclude gromix paint area?

Does not paint in Lubuntu 16.04 LTS

Hi, I've just installed gromit-mpx on Lubuntu 16.04 LTS x64 from Software Center.
I ran it from terminal and got this:

$ gromit-mpx 
Supported backends: x11 wayland 
Using backend: x11
Enabled Device 0: "Virtual core pointer", (Type: 0)
Enabled Device 1: "SynPS/2 Synaptics TouchPad", (Type: 0)
Enabled Device 2: "Logitech USB Laser Mouse", (Type: 0)
Enabled Device 3: "Virtual core XTEST pointer", (Type: 0)
Now 4 enabled devices.

The icon appeared in the tray and I toogled painting, but it didn't start painting. I tried F9 with the same result, the mouse doesn't paint at all.

Wish List: text, opacity++, exporting, line style, usability

  • Text:
    • font
    • color
    • size
  • Opacity:
    • different opacity values for specific pens
    • shortcut for opacity++ and opacity-- for pens without fixed opacity values
  • Exporting
    • just the drawings (transparent png, svg, pdf,...)
    • drawing+screen (png, jpg, pdf...)
  • Line style: solid, dash, dots...
  • Usability
    • An informative small panel (like conky): current pen color, size, opacity, line style.
  • Shapes: rectangle, circle, star, triangle...
  • Smoothness: gimp has some pencil styles to get better curves (I tend to have shaky curves without it).
  • Color Palette: a list of squares offering visual color switching.

Toggle Painting option not working on raspbian

I am using Gromit-mpx on the latest version of Raspbian. All features are working fine except the toggle painting in the task bar icon. When you click it, nothing happens, the crosser doesn't show at all. Any reason it doesn't work or any chance it could get fix?

Also when you use an on screen keyboard, the "pause / break" key doesn't trigger the toggle painting but it works when you use an actual keyboard.

Thanks in advance, I hope I can get a response. :)

Not Painting In Kubuntu 16.04

First of all, thank you for developing this cool software, it really helped me a lot when explaining things with my colleagues and other stuffs. Anyway, I've been using gromit-mpx for a more than a year now and after updating my system a few days ago, gromit-mpx does not show the paint anymore. It changes the cursor into a crosshair-like cursor, but when I do paint, no paint is shown, as if it runs out of ink. Any idea what might have cause this? Thanks

Gromit-MPX no longer works on Fedora Rawhide

Whilst Debian packages Gromit-MPX, Fedora appears not to. So I have been using Debian packages, but compiling from this repository for Fedora. Until last week things seemed fine. A change to Fedora Rawhide between Wednesday 2015-06-24 and Saturday 2015-06-27 has made Gromit-MPX fail to pick up the WACOM and to Segfault on first signal from the WACOM after pressing F9. This is not a kernel thing per se as I just tried with an old kernel and got the same behaviour.

|> gromit-mpx
Supported backends: x11 wayland
Using backend: x11
Enabled Device 0: "Virtual core pointer", (Type: 0)
Enabled Device 1: "TPPS/2 IBM TrackPoint", (Type: 0)
Enabled Device 2: "SynPS/2 Synaptics TouchPad", (Type: 6)
Enabled Device 3: "ELAN Touchscreen", (Type: 5)
Enabled Device 4: "Virtual core XTEST pointer", (Type: 0)
Now 5 enabled devices.
Segmentation fault (core dumped)

|> gdb gromit-mpx
GNU gdb (GDB) Fedora 7.9.50.20150531-3.fc23
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from gromit-mpx...done.
gdb>r
Starting program: /home/russel/Built/bin/gromit-mpx
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.21.90-17.fc23.x86_64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffe4e90700 (LWP 3532)]
[New Thread 0x7fffdffff700 (LWP 3533)]
Supported backends: x11 wayland
Using backend: x11
Enabled Device 0: "Virtual core pointer", (Type: 0)
Enabled Device 1: "TPPS/2 IBM TrackPoint", (Type: 0)
Enabled Device 2: "SynPS/2 Synaptics TouchPad", (Type: 6)
Enabled Device 3: "ELAN Touchscreen", (Type: 5)
Enabled Device 4: "Virtual core XTEST pointer", (Type: 0)
Now 5 enabled devices.

Program received signal SIGSEGV, Segmentation fault.
on_motion (win=, ev=0x869ae0, user_data=0x751150) at callbacks.c:309
309 if (ev->state != masterdata->state ||
Missing separate debuginfos, use: dnf debuginfo-install atk-2.16.0-2.fc23.x86_64 at-spi2-atk-2.16.0-2.fc23.x86_64 at-spi2-core-2.16.0-2.fc23.x86_64 bzip2-libs-1.0.6-16.fc23.x86_64 cairo-1.14.2-2.fc23.x86_64 cairo-gobject-1.14.2-2.fc23.x86_64 dbus-libs-1.9.16-2.fc23.x86_64 elfutils-libelf-0.163-1.fc23.x86_64 elfutils-libs-0.163-1.fc23.x86_64 expat-2.1.0-12.fc23.x86_64 fontconfig-2.11.94-2.fc23.x86_64 freetype-2.6.0-2.fc23.x86_64 gdk-pixbuf2-2.31.4-2.fc23.x86_64 gdk-pixbuf2-modules-2.31.4-2.fc23.x86_64 glib2-2.45.3-2.fc23.x86_64 graphite2-1.2.4-5.fc23.x86_64 gtk3-3.17.4-1.fc23.x86_64 gvfs-client-1.25.2-3.fc23.x86_64 harfbuzz-0.9.41-1.fc23.x86_64 libattr-2.4.47-12.fc23.x86_64 libbluray-0.8.0-3.fc23.x86_64 libcanberra-0.30-10.fc23.x86_64 libcanberra-gtk3-0.30-10.fc23.x86_64 libcap-2.24-8.fc23.x86_64 libdatrie-0.2.8-6.fc23.x86_64 libdrm-2.4.61-4.fc23.x86_64 libepoxy-1.2-4.fc23.x86_64 libffi-3.1-8.fc23.x86_64 libgcc-5.1.1-4.fc23.x86_64 libgcrypt-1.6.3-5.fc23.x86_64 libgpg-error-1.19-2.fc23.x86_64 libogg-1.3.2-4.fc23.x86_64 libpng-1.6.17-2.fc23.x86_64 libselinux-2.3-11.fc23.x86_64 libtdb-1.3.6-2.fc23.x86_64 libthai-0.1.21-2.fc23.x86_64 libtool-ltdl-2.4.6-5.fc23.x86_64 libvorbis-1.3.4-5.fc23.x86_64 libwayland-client-1.7.92-2.fc23.x86_64 libwayland-cursor-1.7.92-2.fc23.x86_64 libwayland-server-1.7.92-2.fc23.x86_64 libX11-1.6.3-2.fc23.x86_64 libXau-1.0.8-5.fc23.x86_64 libxcb-1.11-8.fc23.x86_64 libXcomposite-0.4.4-7.fc23.x86_64 libXcursor-1.1.14-4.fc23.x86_64 libXdamage-1.1.4-7.fc23.x86_64 libXext-1.3.3-3.fc23.x86_64 libXfixes-5.0.1-5.fc23.x86_64 libXi-1.7.4-3.fc23.x86_64 libXinerama-1.1.3-5.fc23.x86_64 libxkbcommon-0.5.0-2.fc23.x86_64 libxml2-2.9.2-5.fc23.x86_64 libXrandr-1.5.0-2.fc23.x86_64 libXrender-0.9.9-2.fc23.x86_64 libxshmfence-1.2-2.fc23.x86_64 libXxf86vm-1.1.4-2.fc23.x86_64 mesa-libEGL-10.7.0-0.devel.1.8787141.fc23.x86_64 mesa-libgbm-10.7.0-0.devel.1.8787141.fc23.x86_64 mesa-libGL-10.7.0-0.devel.1.8787141.fc23.x86_64 mesa-libglapi-10.7.0-0.devel.1.8787141.fc23.x86_64 mesa-libwayland-egl-10.7.0-0.devel.1.8787141.fc23.x86_64 nss-softokn-freebl-3.19.2-2.fc23.x86_64 pango-1.37.1-1.fc23.x86_64 pcre-8.37-1.fc23.1.x86_64 pixman-0.32.6-6.fc23.x86_64 systemd-libs-221-1.fc23.x86_64 xz-libs-5.2.1-2.fc23.x86_64 zlib-1.2.8-8.fc23.x86_64

|> xsetpointer -l
2: "Virtual core pointer" [XPointer]
3: "Virtual core keyboard" [XKeyboard]
4: "Virtual core XTEST pointer" [XExtensionPointer]
5: "Virtual core XTEST keyboard" [XExtensionKeyboard]
6: "Power Button" [XExtensionKeyboard]
7: "Video Bus" [XExtensionKeyboard]
8: "Sleep Button" [XExtensionKeyboard]
10: "ELAN Touchscreen" [XExtensionPointer]
11: "Integrated Camera" [XExtensionKeyboard]
12: "AT Translated Set 2 keyboard" [XExtensionKeyboard]
13: "SynPS/2 Synaptics TouchPad" [XExtensionPointer]
14: "TPPS/2 IBM TrackPoint" [XExtensionPointer]
15: "ThinkPad Extra Buttons" [XExtensionKeyboard]
9: "Wacom Graphire2 4x5 stylus" [XExtensionPointer]
16: "Wacom Graphire2 4x5 eraser" [XExtensionPointer]
17: "Wacom Graphire2 4x5 cursor" [XExtensionPointer]

Proper interaction with Wayland

When launching Gromit on Fedora 24 in the Gnome Wayland session I get this error:

Supported backends: x11 wayland 
Using backend: wayland

(gromit-mpx:24312): GLib-GObject-WARNING
     **: g_object_get_valist: object class
    'GdkWaylandDevice' has no property named 'device-id'
Segmentation fault (core dumped)

Using the x11 session on the same machine works perfectly.

And thank you for making such a useful tool!

only draws in grey with a 5 pixel pen

I have built on Arch Linux and tested with two machines with very different hardware. If I have xcompmgr running, when I run gromit the entire screen goes grey, as referred to in bug #2. If I don't have xcompmgr running, when it doesn't segfault, it only draws in grey, and only with a 5 pixel pen.

Using keyboard letters

Is it possible to make a config where e.g pressing the "b" key on the keyboard maps to drawing with blue?

something like

"red Pen" = PEN (size=5 color="red");
"blue Pen" = "red Pen" (color="blue");

"Virtual core keyboard"[b] = "blue Pen";

Request support for buttons beyond '5'

I have a wacom Intuos tablet. It has 4 buttons on the pad and three on the stylus(including the tip)
The buttons on the pad report as 1,3,8,9. I'm able to configure 1 and 3 but 8 and 9 give the warning "Only Buttons 1-5 are supported!" on startup.

Can these be added without too much trouble?

Escape key to exit painting

Hi,
I just installed Gromit-mpx and wanted to try painting right away but didn't know how to escape it. I was close to restarting my computer but fortunately logging out with Ctrl+Alt+Del and logging back in did the trick. Then I found about F9.
But Escape is the best button ever. It should always be there when you don't know how to get out of a situation.

1.1 -> 1.2 update: build fails on undocumented missing dependency

checking for APPINDICATOR... no
configure: error: Package requirements (appindicator3-0.1 >= 0.4.92) were not met:

No package 'appindicator3-0.1' found

Technically this is a documented missing dependency, since the build demands it. Is this an artifact of building from the git tarballs?

Multi-pointer not working, clarification needed

I have a X1 Yoga as well as a Lenovo ThinkVision, both are 10 point touch. Should I be able to draw with multiple fingers at the same time? If so, I can only use 1 finger and it isn't working. What steps should I take to debug multi-pointer not working?

Installation on Ubuntu 16.10

Dear @bk138,

Thanks for this excellent and promising program!

I installed it on Ubuntu 16.10 but how do I use it?

Running gromit-mpx from the command-line doesn't bring up any window, tray icon or error message.

Thank you!

-Robert

orschiro@x230:~$ sudo apt install gromit-mpx
[sudo] password for orschiro: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  gromit-mpx
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 28,3 kB of archives.
After this operation, 141 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu yakkety/universe amd64 gromit-mpx amd64 1.1+git.1.fb3c7f8-1 [28,3 kB]
Fetched 28,3 kB in 0s (65,3 kB/s)     
Selecting previously unselected package gromit-mpx.
(Reading database ... 406563 files and directories currently installed.)
Preparing to unpack .../gromit-mpx_1.1+git.1.fb3c7f8-1_amd64.deb ...
Unpacking gromit-mpx (1.1+git.1.fb3c7f8-1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu1) ...
Processing triggers for bamfdaemon (0.5.3+16.10.20160929-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Setting up gromit-mpx (1.1+git.1.fb3c7f8-1) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for gnome-menus (3.13.3-6ubuntu4) ...
Processing triggers for hicolor-icon-theme (0.15-1) ...

Window X is a temporary window without parent

When starting under GNOME 3.30.3 / Wayland I get the following output and none of the functionality works:

Using backend: wayland
Enabled Device 0: "Core Pointer", (Type: 0)
Now 1 enabled devices.
Gdk-Message: 16:18:37.198: Window 0x55848fae1340 is a temporary window without parent, application will not be able to position it on screen.
Gdk-Message: 16:18:37.198: Window 0x55848fae1340 is a temporary window without parent, application will not be able to position it on screen.

Works fine under X11, however with the upcoming GNOME 3.32 fractional scaling doesn't work under X11 so I wanted to test everything ahead of release.

Setting minimal cursor size

I'm trying to use gromit-mpx to annotate some live presentations. I tried ardesia, but it's quite a hefty package for the basic features I need.

gromit-mpx works nicely, but still comes short on a few things.

With a wacom tablet, it looks like a setting for minimal cursor size should be present. If I set size=5 on a cursor, I need to press quite hard to get a thin line to be visible. To get a decent feel I've set size=25, but the maximal thickness is now actually too big.

There should be a minsize setting, so that I can control the dynamic range of the stylus and ensure that any stroke is at least 1/2 pixels.

Segmentation fault on start

I don't know how to debug this, but if I compile with --enable-debug it works (mostly - see next bug), whereas if I compile without --enable-debug it segfaults on start, like this:

[root@archie ~]# gdb gromit
GNU gdb (GDB) 7.6
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/gromit-mpx...(no debugging symbols found)...done.
(gdb) run
Starting program: /usr/bin/gromit-mpx 
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0xb688fb40 (LWP 5694)]
Enabled Device 0: "Virtual core pointer", (Type: 0)
Enabled Device 1: "ImExPS/2 Generic Explorer Mouse", (Type: 0)
Enabled Device 2: "Virtual core XTEST pointer", (Type: 0)
Now 3 enabled devices.

Program received signal SIGSEGV, Segmentation fault.
0xb74b6fa6 in free () from /usr/lib/libc.so.6
(gdb) bt
#0  0xb74b6fa6 in free () from /usr/lib/libc.so.6
#1  0xb77c4f00 in g_free () from /usr/lib/libglib-2.0.so.0
#2  0xb73dbbad in ?? () from /usr/lib/libatk-bridge-2.0.so.0
#3  0xb6da61bb in ?? () from /usr/lib/libdbus-1.so.3
#4  0xb6d9264e in ?? () from /usr/lib/libdbus-1.so.3
#5  0xb6d95ebf in dbus_connection_dispatch () from /usr/lib/libdbus-1.so.3
#6  0xb6ddd19d in ?? () from /usr/lib/libatspi.so.0
#7  0xb77bf0ee in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#8  0xb77bf498 in ?? () from /usr/lib/libglib-2.0.so.0
#9  0xb77bf8fb in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#10 0xb7c650e5 in gtk_main () from /usr/lib/libgtk-3.so.0
#11 0x0804ae82 in ?? ()
#12 0xb74597c3 in __libc_start_main () from /usr/lib/libc.so.6
#13 0x0804aecd in ?? ()

gromit-mpx doesn't detect screen resolution modifications.

Using:

  • i3 wm v4.15 (i3-gaps)
  • gromit-mpx-git 1.2.r7.g295a34b-1
  • libxrandr 1.5.1-2
  • xorg-xrandr 1.5.0-1
  • Arch Linux

After connecting my external monitor to the laptop using xrandr

$ xrandr --fb 3840x3960 --output eDP1 --mode 3200x1800 --pos 320x2160 --output DP1 --mode 1920x1080  --scale 2x2 --pos 0x0; xinput --map-to-output $(xinput list --id-only "ELAN Touchscreen") eDP1; ~/.fehbg

Then starting gromit-mpx, I noticed that I could only draw in an area the size of my laptop screen, area being in the monitor screen, as shown in this screenshot:

2018-09-26_14-07-49

It looks like a configuration issue, but I'm puzzled as to how I should be fixing it. Do you have any suggestion ?

Disable startup tooltip in conifg

When run from the command-line there is no way to disable the popup tool tip. The show again on startup checkbox is ignored.

Is there any way to disable this from the config file?

Is the manpage missing a section on FILES?

I was looking in the man page for the location of the user configuration files, but couldn't see a FILES section. Is it missing or did I just miss it?

Also the man page doesn't explain how to configure using files.

i3-wm + gromit-mpx + scrot --select

can't launch scrot --select if gromit-mpx already launched. Any tips?

set $scr '~/screenshots'
bindsym --release $mod+Print exec scrot --select --exec 'mkdir -p $scr && mv $f $scr/'
bindsym --release $mod+Shift+Print exec scrot --exec 'mkdir -p $scr && mv $f $scr/'

bindsym --release $mod+Scroll_Lock exec gromit-mpx --active
bindsym --release $mod+Shift+Scroll_Lock exec gromit-mpx --quit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.