Coder Social home page Coder Social logo

plotinus's Introduction

Only a compound can be beautiful, never anything devoid of parts; and only a whole;
the several parts will have beauty, not in themselves,
but only as working together to give a comely total.
Yet beauty in an aggregate demands beauty in details:
it cannot be constructed out of ugliness; its law must run throughout.

Plotinus, First Ennead

Plotinus

A searchable command palette in every modern GTK+ application


Have you used Sublime Text's or Atom's "Command Palette"? It's a list of everything those editors can do that opens at the press of a key and finds the action you are looking for just by typing a few letters. It's raw power at your fingertips.

Plotinus brings that power to every application on your system (that is, to those that use the GTK+ 3 toolkit). It automatically extracts all available commands by introspecting a running application, instantly adapting to UI changes and showing only relevant actions. Using Plotinus requires no modifications to the application itself!

Just press Ctrl+Shift+P (configurable) and you're in business – it feels so natural you'll soon wonder how you ever lived without it.

Nautilus screencast

gedit screencast

Installation

Prerequisites

To build Plotinus from source, you need Git, CMake, Vala, and the GTK+ 3 development files. All of these are easily obtained on most modern Linux distributions:

Fedora / RHEL / etc.

sudo dnf install git cmake vala gtk3-devel

Ubuntu / Mint / Elementary / etc.

sudo apt-get install git cmake valac libgtk-3-dev

Building

git clone https://github.com/p-e-w/plotinus.git
cd plotinus
mkdir build
cd build
cmake ..
make
sudo make install

Enabling Plotinus in applications

Because of the complexity and clumsiness surrounding Linux environment variables, Plotinus is currently not enabled automatically. The easiest way to enable Plotinus for all applications on the system is to add the line

GTK3_MODULES=[libpath]

to /etc/environment, where [libpath] is the full, absolute path of libplotinus.so, which can be found using the command

whereis -b libplotinus

Alternatively, you can try Plotinus with individual applications by running them with

GTK3_MODULES=[libpath] application

from a terminal.

Configuration

Plotinus can be configured both globally and per application. Application settings take precedence over global settings. In the commands below, [application] can be either

  • default, in which case the setting is applied globally, or
  • the path of an application executable, without the leading slash and with all other slashes replaced by periods (e.g. /usr/bin/gedit -> usr.bin.gedit).

Note that the relevant path is the path of the process executable, which is not always identical to the executable being launched. For example, all GNOME JavaScript applications run the process /usr/bin/gjs.

Enabling/disabling the command palette

gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/ enabled [true/false]

Changing the keyboard shortcut

gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/ hotkeys '[keys]'

[keys] must be an array of strings in the format expected by gtk_accelerator_parse, e.g. ["<Primary><Shift>P", "<Primary>P"]. Each shortcut in the array opens the command palette.

Enabling/disabling D-Bus window registration

gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/[application]/ dbus-enabled [true/false]

See the following section for details.

D-Bus API

Plotinus provides a simple but complete D-Bus API for developers who want to use its functionality from their own software. The API consists of two methods, exposed on the session bus at com.worldwidemann.plotinus:

  • GetCommands(window_path) -> (bus_name, command_paths)
    Takes the object path of a GTK+ window (which can e.g. be obtained from a Mutter window via meta_window_get_gtk_window_object_path) and returns an array of object paths referencing commands extracted from that window, as well as the name of the bus on which they are registered.
    The mechanism behind this method is somewhat similar to Ubuntu's AppMenu Registrar, but more lightweight and compatible with Wayland. Window registration must be enabled before using this method.

  • ShowCommandPalette(commands) -> (bus_name, command_palette_path)
    Takes an array of commands (structs of the form (path, label, accelerators)) and opens a command palette window displaying those commands. The returned object path references a control object registered on the returned bus name which provides signals on user interaction with the window.

Calls to these methods are processed by the Plotinus D-Bus service, which can be started with

plotinus

Examples

The following examples demonstrate how to use the D-Bus API from Python. They require pydbus to be installed and the Plotinus D-Bus service to be running.

Application remote control

#!/usr/bin/env python

import sys
from pydbus import SessionBus

bus = SessionBus()
plotinus = bus.get("com.worldwidemann.plotinus")

bus_name, command_paths = plotinus.GetCommands(sys.argv[1])
commands = [bus.get(bus_name, command_path) for command_path in command_paths]

for i, command in enumerate(commands):
  print("[%d] %s -> %s" % (i, " -> ".join(command.Path), command.Label))

index = raw_input("Number of command to execute: ")

if index:
  commands[int(index)].Execute()

Before running this example, enable window registration with

gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ dbus-enabled true

Then, run an application (e.g. gedit) with Plotinus enabled. Now run the script with the window object path as an argument, i.e.

./application_remote_control.py /org/gnome/gedit/window/1

Application launcher

Based on this Argos plugin, uses Plotinus' command palette to display a list of applications available on the system.

#!/usr/bin/env python

import os, re
from pydbus import SessionBus
from gi.repository import GLib, Gio

applications = {}

for app_info in Gio.AppInfo.get_all():
  categories = app_info.get_categories()
  if categories is None:
    continue
  # Remove "%U" and "%F" placeholders
  command_line = re.sub("%\\w", "", app_info.get_commandline()).strip()
  app = (app_info.get_name(), command_line)
  for category in categories.split(";"):
    if category not in ["GNOME", "GTK", ""]:
      if category not in applications:
        applications[category] = []
      applications[category].append(app)
      break

commands = []
command_lines = []

for category, apps in sorted(applications.items()):
  for app in sorted(apps):
    commands.append(([category], app[0], []))
    command_lines.append(app[1])

bus = SessionBus()
plotinus = bus.get("com.worldwidemann.plotinus")

bus_name, command_palette_path = plotinus.ShowCommandPalette(commands)
command_palette = bus.get(bus_name, command_palette_path)

loop = GLib.MainLoop()

def command_executed(index):
  os.system(command_lines[index])

command_palette.CommandExecuted.connect(command_executed)

def closed():
  # Wait for CommandExecuted signal
  GLib.timeout_add(500, loop.quit)

command_palette.Closed.connect(closed)

loop.run()

Acknowledgments

Documentation on GTK+ modules is essentially nonexisting. Without gtkparasite and gnome-globalmenu to learn from, it would have been a lot harder to get this project off the ground.

The CMake modules are copied verbatim from Elementary's pantheon-installer repository.

Vala is still the greatest thing ever to happen to Linux Desktop development.

Contributing

Contributors are always welcome. However, please file an issue describing what you intend to add before opening a pull request, especially for new features! I have a clear vision of what I want (and do not want) Plotinus to be, so discussing potential additions might help you avoid duplication and wasted work.

By contributing, you agree to release your changes under the same license as the rest of the project (see below).

License

Copyright © 2016-2017 Philipp Emanuel Weidmann ([email protected])

Released under the terms of the GNU General Public License, version 3

plotinus's People

Contributors

p-e-w 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plotinus's Issues

Plotinus isn't going to die, is it?

Plotinus still works on Ubuntu 20.10 beta with Caja. Something that is crucial for my workflow as I search for the name of bookmarked folders to warp to them. Plotinus is very easy to build from source and I even made a .deb package of it myself.

The problem is in the world of Linux we do not have much backward compatibility like Windows and it's only a matter of time before some change to Vala libraries or Caja makes it shit the bed on me. Plotinus has not received any updates since late 2017. I hope someone is atleast maintaining it incase it breaks oneday. Yet so far it continues to work on newer programs like Drawing, The latest release Gthumb and even Inkscape's GTK3 port ect. I'm just worried because no one has an eye on it and the GTK4 days could cause trouble for it. I hope someone will step in and maintain.

Lastly, I think we should also consider kickstarting and promoting Plotinus to Inkscape users as it would benefit them greatly. I am not a Inkscape user myself but it's still worth a shot.

Sincerly -T. Plotinus fan

Does not open in Libreoffice (gtk3)

Tested in LibreOffice Writer 5.2.3.1 20(Build:1). The first issue is that the keyboard shortcut conflicts with the superscript shortcut. That can be disabled in the libreoffice customize window.

After restarting libreoffice, the superscript shortcut is disabled. However, pressing CtrlShiftP does not open Plotinus. Nothing is outputted to the console from LibreOffice.

I'll have a look into this, because Poltinus looks awesome, and libreoffice has too many menus :)

macOS

Does macOS analogue exists?

Unable to set hotkeys

I just downloaded and installed plotinus. I Followed instruction as mentioned and there was no error during installation. I have also set GTK3_MODULES=/usr/local/lib/libplotinus.so and rebooted the system.

Now I am stuck at configuring the keyboard shortcut. Here is terminal output.

[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ enabled true
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys "<Primary><Shift>P"
unknown keyword:
  <Primary><Shift>P
   ^               
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<Primary><Shift>P"]
unknown keyword:
  [<Primary><Shift>P]
    ^                
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<primary><shift>P"]
unknown keyword:
  [<primary><shift>P]
    ^^^^^^^          
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<Primary><Shift>P"]
unknown keyword:
  [<Primary><Shift>P]
    ^                
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<Control><Shift>P"]
unknown keyword:
  [<Control><Shift>P]
    ^                
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<Ctl><Shift>P"]
unknown keyword:
  [<Ctl><Shift>P]
    ^            
[Abhinav@fedora-25 build] $ gsettings set com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ hotkeys ["<Ctrl><Shift>P"]
unknown keyword:
  [<Ctrl><Shift>P]
    ^             
[Abhinav@fedora-25 build] $ 

I also read https://developer.gnome.org/gtk3/stable/gtk3-Keyboard-Accelerators.html#gtk-accelerator-parse But I cant figure out which keyword to use.

I am trying to configure it to use ctrl+shift+p on all apps except firefox, and sublime text.
How do I do that.

System info,

[Abhinav@fedora-25 build] $ uname -a
Linux fedora-25 4.10.15-200.fc25.x86_64 #1 SMP Mon May 8 18:46:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[Abhinav@fedora-25 build] $ gnome-shell --version
GNOME Shell 3.22.3

DBus service not found

Plotinus works pretty well for me for normal usage on gtk programs. But dbus fails to find it.

> from pydbus import SessionBus
> bus = SessionBus()
> plotinus = bus.get("com.worldwidemann.plotinus")
gi.repository.GLib.GError: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name com.worldwidemann.plotinus was not provided by any .service files (2)

Also, to be clear,

~> gsettings get com.worldwidemann.plotinus:/com/worldwidemann/plotinus/default/ dbus-enabled
true
~> echo $GTK_MODULES
xapp-gtk3-module:unity-gtk-module:appmenu-gtk-module:/usr/local/lib/libplotinus.so

Am I doing something wrong?

Application Conflict

This is such a helpful and amazing tool I want to see it interface out of box with as many applications as possible.

I noticed it doesn't work on Firefox-Nightly,
Thunderbird-Nightly,
it works with GIMP-GTK3 branch however a keybinding for GIMP needs to be unset (Is it possible to supersede application keybindings?)
I guess it doesn't work in LibreOffice (Which is a shame because the menu must have at least 150+ entries that are hard to navigate)

I am wondering what would need to be done to break down these barriers for wider usage.

Installation issues

Tried to install it on Ubuntu 16.04 with sudo apt-get install git cmake valac libgtk-3-dev. It went well.

Then tried to find libplotinus.so with locate libplotinus.so, but nothing found.

Any idea why is it missing?

`ctrl-shift-p` enabling

Works too well. The level of disappointment I now have to deal with when ctrl-shift-p doesn't do anything is unreasonable. Please delete repository as soon as possible. I'm developing a dependency.

Install problem

When I was going through the installation steps (on Ubuntu 16.04), the make command produced a lengthy error message (see below).

I installed all the prerequisites and did not receive any error messages during the preceding steps.

Any hints of the source of the error?

[  4%] Building C object CMakeFiles/dbus_service.dir/src/Service.c.o
/home/andras/plotinus/src/Service.vala: In function ‘__lambda29_’:
/home/andras/plotinus/src/Service.vala:48:9: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         CommandProviderProxy command_provider = Bus.get_proxy.end(result);
         ^
/home/andras/plotinus/src/Service.vala:48:40: warning: passing argument 1 of ‘g_async_initable_new_finish’ from incompatible pointer type [-Wincompatible-pointer-types]
         CommandProviderProxy command_provider = Bus.get_proxy.end(result);
                                        ^
In file included from /usr/include/glib-2.0/gio/gio.h:35:0,
                 from /usr/include/gtk-3.0/gdk/gdkapplaunchcontext.h:28,
                 from /usr/include/gtk-3.0/gdk/gdk.h:32,
                 from /usr/include/gtk-3.0/gtk/gtk.h:30,
                 from /home/andras/plotinus/build/src/Service.c:19:
/usr/include/glib-2.0/gio/gasyncinitable.h:115:10: note: expected ‘GAsyncInitable * {aka struct _GAsyncInitable *}’ but argument is of type ‘PlotinusCommandProviderProxy * {aka struct _PlotinusCommandProviderProxy *}’
 GObject *g_async_initable_new_finish       (GAsyncInitable       *initable,
          ^
/home/andras/plotinus/src/Service.vala:48:9: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
         CommandProviderProxy command_provider = Bus.get_proxy.end(result);
         ^
Service.c: In function ‘_dbus_plotinus_service_get_commands’:
Service.c:1011:39: warning: passing argument 1 of ‘plotinus_service_proxy_get_commands’ from incompatible pointer type [-Wincompatible-pointer-types]
/home/andras/plotinus/build/src/Service.c:287:6: note: expected ‘PlotinusServiceProxy * {aka struct _PlotinusServiceProxy *}’ but argument is of type ‘PlotinusService * {aka struct _PlotinusService *}’
 void plotinus_service_proxy_get_commands (PlotinusServiceProxy* self, const char* window_path, gchar** bus_name, char*** command_paths, int* command_p
      ^
Service.c: In function ‘_dbus_plotinus_service_register_window’:
Service.c:1055:42: warning: passing argument 1 of ‘plotinus_service_proxy_register_window’ from incompatible pointer type [-Wincompatible-pointer-types]
/home/andras/plotinus/build/src/Service.c:288:6: note: expected ‘PlotinusServiceProxy * {aka struct _PlotinusServiceProxy *}’ but argument is of type ‘PlotinusService * {aka struct _PlotinusService *}’
 void plotinus_service_proxy_register_window (PlotinusServiceProxy* self, const char* window_path, const gchar* bus_name, const char* command_provider_
      ^
Service.c: In function ‘_dbus_plotinus_service_unregister_window’:
Service.c:1081:44: warning: passing argument 1 of ‘plotinus_service_proxy_unregister_window’ from incompatible pointer type [-Wincompatible-pointer-types]
/home/andras/plotinus/build/src/Service.c:289:6: note: expected ‘PlotinusServiceProxy * {aka struct _PlotinusServiceProxy *}’ but argument is of type ‘PlotinusService * {aka struct _PlotinusService *}’
 void plotinus_service_proxy_unregister_window (PlotinusServiceProxy* self, const char* window_path);
      ^
Service.c: In function ‘_dbus_plotinus_service_show_command_palette’:
Service.c:1196:47: warning: passing argument 1 of ‘plotinus_service_proxy_show_command_palette’ from incompatible pointer type [-Wincompatible-pointer-types]
/home/andras/plotinus/build/src/Service.c:290:6: note: expected ‘PlotinusServiceProxy * {aka struct _PlotinusServiceProxy *}’ but argument is of type ‘PlotinusService * {aka struct _PlotinusService *}’
 void plotinus_service_proxy_show_command_palette (PlotinusServiceProxy* self, PlotinusCommandStruct* commands, int commands_length1, gchar** bus_name,
      ^
Service.c: In function ‘plotinus_service_proxy_proxy_get_commands’:
Service.c:1376:228: error: ‘error’ undeclared (first use in this function)
Service.c:1376:228: note: each undeclared identifier is reported only once for each function it appears in
Service.c: In function ‘plotinus_service_proxy_proxy_register_window’:
Service.c:1428:228: error: ‘error’ undeclared (first use in this function)
Service.c: In function ‘plotinus_service_proxy_proxy_unregister_window’:
Service.c:1451:228: error: ‘error’ undeclared (first use in this function)
Service.c: In function ‘plotinus_service_proxy_proxy_show_command_palette’:
Service.c:1512:228: error: ‘error’ undeclared (first use in this function)
Service.c: In function ‘_dbus_plotinus_command_provider_get_commands’:
Service.c:2170:48: warning: passing argument 1 of ‘plotinus_command_provider_proxy_get_commands’ from incompatible pointer type [-Wincompatible-pointer-types]
/home/andras/plotinus/build/src/Service.c:265:6: note: expected ‘PlotinusCommandProviderProxy * {aka struct _PlotinusCommandProviderProxy *}’ but argument is of type ‘PlotinusCommandProvider * {aka struct _PlotinusCommandProvider *}’
 void plotinus_command_provider_proxy_get_commands (PlotinusCommandProviderProxy* self, gchar** bus_name, char*** command_paths, int* command_paths_len
      ^
Service.c: In function ‘plotinus_command_provider_proxy_proxy_get_commands’:
Service.c:2321:228: error: ‘error’ undeclared (first use in this function)
CMakeFiles/dbus_service.dir/build.make:270: recipe for target 'CMakeFiles/dbus_service.dir/src/Service.c.o' failed
make[2]: *** [CMakeFiles/dbus_service.dir/src/Service.c.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/dbus_service.dir/all' failed
make[1]: *** [CMakeFiles/dbus_service.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Does not open in WINE (gtk3)

Wine Applications using Staging feature doesn't seem to work, I wanted to bring it to the attention of development as I think WINE apps would stand to be a single class of many apps that could benefit.

doesn't work with Pantheon-Files

When running this with pantheon-files, nothing pops up and in the terminal, [FATAL 15:18:37.157163] [GLib] g_strsplit: assertion 'string != NULL' failed is displayed.

"com.worldwidemann.plotinus is not installed" / "No GSettings schemas are installed on the system"

Trying to install in Manjaro/Arch, the schema doesnt seem to get installed, with the error com.worldwidemann.plotinus is not installed coming up both when trying to configure (gsettings set ...) or trying to run a program with GTK3-MODULES=.... Maybe the reason is the presence of the package gsettings-desktop-schemas. Weirdly enough, when I ran sudo glib-compile-schemas /usr/share/glib-2.0/schemas, I couldnt even run gedit normally anymore, because No GSettings schemas are installed on the system. So I am not really sure whats going on here, but it was solveable by doing it in the the following order:

  1. cp './plotinus/data/com.worldwidemann.plotinus.gschema.xml' '/usr/share/glib-2.0/schemas'
  2. sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
  3. sudo pacman -S gsettings-desktop-schemas

Hope this helps someone. I'll close this immediately.

Make original names (before translation) searchable

Just an idea, but it would be nice if I could search for English action names within an application even if the UI is translated. I have everything set to German locally, potentially I should just change that, but in some cases it's nice to have the UI in German while I don't really need the English UI otherwise. But when searching for an action, typing Umlauts often (for common functions such as open / öffnen) is a bit annoying, even with a German keyboard.

Install as user (without root)

Hi, first of all great project! I'm writing a script that manages extensions/themes and would like to include this for the Unity theme.

I'm trying to install as user so use ~/.local/share rather than /usr/local/ directory which CMAKE defaults to.

So from my understanding, the 2 important files is the libplotinus.so library and the .xml file. There is also the entry on the /etc/environment.

Regarding the entry I believe I can append
GTK3_MODULES=$ΗΟΜΕ/.local/share/lib/libplotinus.so; export GTK3_MODULES
on .profile instead of having an entry on /etc/environment that requires root.
Regarding the files I can "trick" cmake to install locally with:
cmake -DCMAKE_INSTALL_PREFIX:PATH=$HOME/.local . && make && make install
and the xml gets placed properly in ~/.local/share/glib-2.0/schemas however the .so gets placed wrongfully in ~/.local/lib/ rather than ~/.local/share/lib

Do you have any idea how to fix that, or any better solution overall? Thank you very much in advance.

PS: any plans on turning this into a GNOME extension?

gnome doesnt start

gnome doesnt start after installing plotinus from AUR. (using XServer)

Doesn't work with changed gtk-key-theme

It works on my computer with a non-changed gtk key theme. However, when I switch it to emacs (which is what I use) it fails to work with Crtl+Shift+P and I couldn't find any other way to get it to work.

[Suggestion] Plotinus as Synapse addon

THANK YOU! Your little app has been sorely needed in Gtk environments! And it is written in Vala! It's a dream, god!

One thing that I always had in mind is that this kind of functionality would fit very well as a Synapse extension. One would find files and the apps menus within the same launcher (Synapse even has this unused command tab in it!)

Anyways, your app is already excellent. This is just a suggestion for future development!

Many thanks again!

Uninstalling Plotinus

What's the recommended procedure to uninstall Plotinus?
Running sudo make uninstall from the build directory gives the following output:

make: *** No rule to make target 'uninstall'.  Stop.

Activate elements on single mouse clic

Hello there,
Could it be possible to make plotinus respect user clic-for-selection configuration ?
That is if for example nautilus has « single clic to open elements » set to true, can plotinus exhibit the same behaviour ? And if it can, is it possible to make it keep the same behaviour for all applications ?

Updating Plotinus

Sorry if this is a very stupid question but how would one update Plotinus when the next release comes out?

Does not support GTK2 apps

I don't know if GTK2 apps support is on the roadmap but it would be great if it were. Many menu heavy apps are still built with GTK2, eg. stable GIMP and Inkscape, and I'd love to be able to use Plotinus for those apps.

Cannot Run Plotinus

Hey,

I use ubuntu 17.10. I followed the installation guide you provided. After installation I ran the command sudo nano /etc/environment. I added the full path lab as this: GTK3_MODULES=["/usr/local/lib/libplotinus.so'] I tried without brackets too. then I enabled it with default. I edited the hotkeys to Control+Shift+P. and I checked all of this in dconf-editor too. But I cannot make it run. And In dconf-editor, it says No Schema Found for plotinus.

I really miss HUD, and this would be so helpful. Thanks a lot!

Make shortcut configurable

Ctrl-Shift-P requires three fingers and P is really far away from the other two keys, it doesn't feel natural. Maybe Ctrl-Space or, at least, a customization option (although I believe in sane defaults).

I don't think Ctrl-Space is used as a keyboard shortcut in the default GNOME install or in any GNOME app (I may be wrong, though).

Option to prevent destroying the window when focus is lost

When the Plotinus window loses focus, it usually destroys the window. This is particulary irritating seeing as I have my WM configured to focus where the mouse is, so if the mouse doesn't happen to be over the Plotinus window, it sometimes gets destroyed immediately.

If you are interested if merging my changes, I submitted PR #22. I did notice you said you would prefer filing an issue first, but seeing as I added some code, I submitted the PR anyway. I added the option of setting the environment variable PLOTINUS_UNFOCUSED_PREVENT_CLOSE to true to prevent this default behaviour.

issues in multiple apps (gnome-terminal and google-chrome)

Howdy - love the idea of this, as I'm constantly switching back and forth from linux/mac and mac has this by default. Unfortunately it seems not to work in the things where I need it the most and spend most of my time. gnome-terminal seems to work really well, unless I hide the menubar, which I keep hidden nearly always. google-chrome seems not to work at all. I configured the hotkey to be something other than the default, which works in other apps (gedit, dconf-editor, etc) but doesn't do anything in chrome. I am using a very bare desktop environment (i3). Could this be causing any issues? Please let me know what other information I can supply, as I'd love to use this all day every day.

Cheers,

Installed but not launching

I have followed build and install instructions and according to output it seems to have installed successfully. But, when i try to run an application with pallete, eg nautilus by running:
GTK3_MODULES=usr/local/lib/libplotinus.so nautilus

the application launches, but ctrl+shift+p does not bring up the pallete

I have also added GTK3_MODULES=/usr/local/lib/libplotinus.so to /etc/environment

I feel like I have missed a step but I can't find the issue. I am running Fedora 27.

Submit to distro repos

It would be nice to have this application in distro's repos. Or maybe offer a flatpak/snap if that is possible.

GTK3_MODULES won't unset

Hi, I hope you are well.

I installed Plotinus and it was probably uninstalled on the Ubuntu upgrade to 1910. I'm on 2004 now and noticed my Environment Variable is still set to GTK3_MODULES=/usr/lib/x86_64-linux-gnu/libplotinus/libplotinus.so. I tried to unset it with unset GTK3_MODULES. This worked until reboot, after which shows it still set to libplotinus. How do I unset this variable and be certain that Plotinus is completely removed?

Thanks.

Edit: Did it manually and it worked. The End.

Failed to load module "appmenu-gtk-module"

Getting error: "Failed to load module "appmenu-gtk-module"

installed prereqs using apt, and plotinus using cmake.
added GTK3_MODULES=[/usr/local/lib/libplotinus.so] to /etc/environment

Using Linux Mint Tara 19, xfce 4.12

Does not activate radio items

Noticed this in Totem. It seems radio menu items are not selected by plotinus.

Steps to reproduce:

  • Open a video with multiple audio streams or subtitles in totem
  • Activate plotinus, search for a language
  • Select command to switch audio or subtitle.

Expected result:
The selected audio stream or subtitle is enabled.
Actual result:
The previously active stream is still enabled.

Checkboxes however are not affected. Totem has a checkbox to "Zoom in", which can be toggled with plotinus.

When trying to select a radio item (which seems to be a GtkAction, but not a GtkToggleAction), the following message appears in the terminal:

(totem:20137): GLib-GIO-CRITICAL **: g_simple_action_activate: assertion 'simple->parameter_type == NULL ? parameter == NULL : (parameter != NULL && g_variant_is_of_type (parameter, simple->parameter_type))' failed

Stuck in login loop after installation

After installing Plotinus with yaourt and rebooting, I get stuck in a login loop. Uninstalling it solves the issue.

Arch Linux x86_64 (Antergos)
DE: GNOME

Support start-of-word characters nonspaced

Okay so this just blew my mind, and I love you.

Some time ago I changed from using Atom/Sublime to the stripped down vscode from Microsoft. Because the filesystem search in vscode is fantastic. The reason I mention it is because I don't remember how C-S-p behaves in atom/sublime.

But, in vscode, you can type for example "aca" and it will match the action "Add Cursor Above", based on the first letter of each word. I find myself using this method exclusively, and I was hoping you might consider it for plotinus.

I can't foresee with immediate clarity any way in which it would conflict with existing usage, but I'm not going to claim that it won't.

Thanks for reading!

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.