Giter VIP home page Giter VIP logo

tilix's Introduction

Build Status Translation status

Tilix

A tiling terminal emulator for Linux using GTK+ 3. The Tilix web site for users is available at https://gnunn1.github.io/tilix-web.

⚠️ Maintainers Wanted
This project is looking for maintainers! At the moment, only very minimal maintenance is done, no new features will be implemented and pull-requests may be reviewed very slowly.

If you are interested in giving Tilix some ❤️, please chime in!

Screenshot

Screenshot

About

Tilix is a tiling terminal emulator which uses the VTE GTK+ 3 widget with the following features:

  • Layout terminals in any fashion by splitting them horizontally or vertically
  • Terminals can be re-arranged using drag and drop both within and between windows
  • Terminals can be detached into a new window via drag and drop
  • Tabs or sidebar list current sessions
  • Input can be synchronized between terminals so commands typed in one terminal are replicated to the others
  • The grouping of terminals can be saved and loaded from disk
  • Terminals support custom titles
  • Color schemes are stored in files and custom color schemes can be created by simply creating a new file
  • Transparent background
  • Background images
  • Quake mode support (i.e. drop-down terminal)
  • Custom hyperlinks
  • Automatic (triggered) profile switches based on hostname and directory
  • Supports notifications when processes are completed out of view. Requires the Fedora notification patches for VTE
  • Experimental trigger support (Requires patched VTE, see wiki)
  • Experimental badge support (Requires patched VTE, see wiki)

The application was written using GTK 3 and an effort was made to conform to GNOME Human Interface Guidelines (HIG). As a result, it does use CSD (i.e. the GTK HeaderBar) though it can be disabled if necessary. Other than GNOME, only Unity has been tested officially though users have had success with other desktop environments.

Dependencies

Tilix requires the following libraries to be installed in order to run:

  • GTK 3.18 or later (Tilix 1.8.3 or later, earlier versions supported GTK 3.14)
  • GTK VTE 0.46 or later
  • dconf
  • GSettings
  • Nautilus-Python (Required for Nautilus integration)

Migrating Settings From Terminix

Terminix was recently re-named to Tilix and as a result the settings key changed. To migrate your settings to Tilix, please perform the following steps:

dconf dump /com/gexperts/Terminix/ > terminix.dconf
dconf load /com/gexperts/Tilix/ < terminix.dconf

This will export your settings from the Terminix key in dconf and re-import them into the Tilix key.

Note that this will work even after you have uninstalled the Terminix schema, since the user customized settings are available even after the schema got removed, and the default settings are identical between the two and thus do not matter.

Once you have imported the settings and everything is ok you can clear the old Terminix settings with:

dconf reset -f /com/gexperts/Terminix/

Finally to copy the bookmarks and custom themes just do:

mv ~/.config/terminix ~/.config/tilix

Optional Fonts

In some of the screenshots, the powerline statusline shell plugin is used. In order to ensure it works well, you may need to install its fonts and ensure Tilix is aware of them. They can be installed via sudo apt install fonts-powerline on Debian/Ubuntu and sudo dnf install powerline-fonts on Fedora/RedHat-based Linux distributions. After installing the fonts, select the "Powerline Symbols" font in Tilix via Preferences -> Default -> Custom Font. Sessions are updated automatically.

Support

If you are having issues with Tilix, feel free to open issues here in github as necessary.

Localization

Tilix is localized using Weblate, please visit the Weblate hosted Tilix translations site in order to assist with translations, please do not submit direct pull requests to this repository for translations.

Building

Tilix is written in D and GTK 3 using the gtkd framework. This project uses dub to manage the build process including fetching the dependencies, thus there is no need to install dependencies manually. The only thing you need to install to build the application is the D tools (compiler and Phobos) along with dub itself. Note that D supports three compilers (DMD, GDC and LDC) but Tilix only supports DMD and LDC.

Once you have those installed, compiling the application is a one line command as follows:

dub build --build=release

The application depends on various resources to function correctly, run sudo ./install.sh to build and copy all of the resources to the correct locations. Note this has only been tested on Arch Linux, use with caution. Note : install.sh will install Tilix to your /usr directory. If you are interested in installing Tilix to a custom location, you can specify the PREFIX as an argument to the install.sh script (e.g : ./install.sh $HOME/.local will install Tilix into $HOME/.local). However, this requires you to add your $PREFIX/share directory to your $XDG_DATA_DIRS environment variable.

Note there is also support for building with the Meson buildsystem, please see the wiki page on Meson for more information.

Build Dependencies

Tilix depends on the following libraries as defined in dub.json:

  • gtkd >= 3.8.2
  • gdk-pixbuf-pixdata (Used when building resource file)

Install Tilix

Tilix is available as packages for a variety of distributions.

Uninstall Tilix

This method only applies if you installed Tilix manually using the install instructions. If you installed Tilix from a distribution package then use your package manager to remove tilix, do not use these instructions.

Download the uninstall.sh script from this repository and then open a terminal (not Tilix!) in the directory where you saved it. First set the executable flag on the script:

chmod +x uninstall.sh

and then execute it:

sudo sh uninstall.sh

tilix's People

Contributors

alexwhitman avatar awandepan avatar bilelmoussaoui avatar blooperz avatar comradekingu avatar danielkza avatar dsboger avatar f2404 avatar frnogueira avatar gnunn1 avatar haaninjo avatar ihorhordiichuk avatar jjedelsky avatar kostich avatar metotosakamoto avatar milotype avatar mingcongbai avatar mohammada19 avatar msuchane avatar p-bo avatar phw avatar psokol avatar s4n-gt avatar santossi avatar sukso96100 avatar thadah avatar vistaus avatar weblate avatar ximion avatar yarons 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  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

tilix's Issues

Synchronized Input does not work for "moving" keys

I am running 0.38.0 from OBS on Fedora.

While testing the synchronized input feature I found a bug. Keys for moving the cursor (arrow keys, home, end, page up/down) only work in the selected terminal, but not all other ones. Combination of those keys with modifier have the same result.

I would expect those keys to be working as you may multi-edit files or want to access the shell history.

Save/Load layout not working on Ubuntu Gnome 15.10

Hey.
I'm having trouble saving and loading the terminal layouts.
First I split the terminal window no matter how and then
I save the file. When I reopen terminix and try
to load that layout I get the following error message
Could not load session due to unexpected error. Found '5' when expecting '"'. (Line 18:23)
Thanks

Forgets my custom font size profile

Hi there.
I change my profile font size to something bigger. It'll change. But next time I open terminix it shows default font size. On edit profile section it shows the bigger font as being selected but the actual font size is small.
I'm running Archlinux and my default shell is fish.

Add an option to disable the CSD

Add a hidden configuration option that allows the user to disable the CSD if they wish for those DEs where it is problematic or would prefer the WM to handle titlebars. Use same approach as Lollypop does.

crash at startup if default shell is zsh

crash at startup if default shell is zsh, works correctly if bash shell

gen 14 09:51:17 archos kernel: zsh[5924]: segfault at 0 ip 00007ff18051ca0f sp 00007ffd80464048 error 4 in libc-2.22.so[7ff180491000+19b000]
gen 14 09:51:17 archos systemd-coredump[5925]: Process 5924 (zsh) of user 1001 dumped core.

                                           Stack trace of thread 5924:
                                           #0  0x00007ff18051ca0f __rawmemchr (libc.so.6)
                                           #1  0x00000000004499ee init_jobs (zsh)
                                           #2  0x00000000004449df zsh_main (zsh)
                                           #3  0x00007ff1804b1610 __libc_start_main (libc.so.6)
                                           #4  0x0000000000410569 _start (zsh)

Need package maintainers

I'm currently maintaining the Arch package for Terminix but would like to hand it over to someone else so I can concentrate on development. If you use Arch and have experience maintaining a package and are interested in taking this on feel free to let me know.

Additionally, as per the suggestion below package maintainers for other distros would certainly be welcome.

Profile Selection

  • Add the ability to select a different profile from the terminal menu
  • Add the ability to select the default profile for a session, both when the session is created and from the session drop down menu

Support Localization

Currently D does not have an official i18n package. Terminix uses a _() localization function as per GNU gettext but it doesn't actually do anything at the moment. At some point localization needs to be implemented, current localization options are:

  • Write a D version of gettext using standard po/mo files
  • Use the GLib wrapper of gettext
  • Use a non-official D localization package such as i18n-d (https://github.com/JakobOvrum/i18n-d)
  • Create a custom localization system

Of the four options, we will probably go with the second. While writing an official D version of gettext would be nice, it would be resource intensive. If Option #2 works and is supported by GtkD it would be the best.

Terminix theme variant doesn't respect global settings

On Terminix Global Preferences on "Appearance" section there are 3 options:
Default
Light
Dark

Default variant always defaults on light theme, even if I've selected Global Dark Theme "ON" from Tweak Tool. Thats happening on GTK 3.19.7. Should be the same on 3.18 too though.

Canno't startup on fedora

object.Exception@../../../.dub/packages/gtk-d-3.2.1/src/gtkc/Loader.d(123): Library load failed: libvte-2.91.so

App-Menu icon for CSD

Some desktops don't use appMenu, (including Gnome Shell classic, or disable from Tweak) so an app-menu icon should be visible on top-left on the application

Opening a new tab should not prompt option

It might be just me but I wasn't expecting a prompt when clicking "New Tab".

I think it should just create a new tab with default values instead of asking for a profile.

Option to show open tabs

Although it follows Builder design on tabs, in Terminal is useful to always see the open tabs, unlikely with the files on a code editor.

Cant be an option here to have open tabs always visible (the standard way)?

Warnings for using deprecated gconf schemas

Running transaction
  Installing  : terminix-0.38.0-1.1.x86_64                                                                                    1/1 
warning: Schema 'org.freedesktop.Telepathy.Logger' has path '/apps/telepathy-logger/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.freedesktop.ibus' has path '/desktop/ibus/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.freedesktop.ibus.general' has path '/desktop/ibus/general/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.freedesktop.ibus.general.hotkey' has path '/desktop/ibus/general/hotkey/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.freedesktop.ibus.panel' has path '/desktop/ibus/panel/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.crypto.cache' has path '/desktop/gnome/crypto/cache/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.crypto.pgp' has path '/desktop/gnome/crypto/pgp/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.seahorse' has path '/apps/seahorse/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.seahorse.manager' has path '/apps/seahorse/listing/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.seahorse.recipients' has path '/apps/seahorse/recipients/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.locale' has path '/system/locale/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.proxy' has path '/system/proxy/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.proxy.http' has path '/system/proxy/http/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.proxy.https' has path '/system/proxy/https/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.proxy.ftp' has path '/system/proxy/ftp/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
warning: Schema 'org.gnome.system.proxy.socks' has path '/system/proxy/socks/'.  Paths starting with '/apps/', '/desktop/' or '/system/' are deprecated.
  Verifying   : terminix-0.38.0-1.1.x86_64                                                                                    1/1 

Installed:
  terminix.x86_64 0.38.0-1.1                                                                                                      

Can't use copy/paste shortcuts

I can't use ctrl+c & ctrl+v neither ctrl+alt+c & ctrl+alt+v, i took a look at keyboard shortcuts but there's no option for copy/paste..
i'm using Arch

Focus Follows Mouse

Is it possible to configure terminix to set focus on a terminal based on the mouse location? "Focus Follows Mouse" or in Terminator "Mouse focus: Follow mouse pointer"

Enable terminix to execute commands from the terminal

When using terminix, sometimes you want to perform an action in terminix and it would be faster just to be able to bang it out from the keyboard. This feature will enable users to execute any parameterless GAction from the terminix prompt.

From a design perspective, the following changes will be made:

a. Add an environment variable called TERMINIX_ID with the UUID of the terminal
b. When user executes second copy of terminix (called the remote instance in GTK Application parlance), check for a new command parameter. If found, invoke a method to execute a new Command action with the name of the command and the terminal UUID as parameters
c. Command will use same action name format string as keyboard shortcuts in GSettings, i.e. "prefix-actionname"
d. This method gets executed in the remote Application however GTK Application automatically sends the invocation of the command GAction to the primary instance
e. Remote instance terminates
f. Primary instance executes command action, find the terminal with the matching UUID and then walk up the widget chain until we find an ActionGroup that matches the prefix of the command.
f. Execute the action

In a nutshell, users can issue command as follows:

terminix -c terminal-split-horizontal
terminix -c terminal-split-vertical
terminix -c app-new-window

etc

Crash when split terminals on Ubuntu 16.04

Okay I have Arch too! Hope I can make it work there :p

Ubuntu 16.04
DMD 2.069.2
DUB 0.9.24

(gdb) r
Starting program: /usr/bin/terminix
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffead58700 (LWP 12815)]
[New Thread 0x7fffea557700 (LWP 12816)]

** (terminix:12811): WARNING **: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-rnEVbcNV3H: Connection refused
[New Thread 0x7fffe3fff700 (LWP 12817)]

(terminix:12811): GLib-CRITICAL **: g_variant_get_int64: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)' failed
[New Thread 0x7fffd7fff700 (LWP 12869)]
[New Thread 0x7fffd77fe700 (LWP 12870)]
[Thread 0x7fffd7fff700 (LWP 12869) exited]

(terminix:12811): GLib-CRITICAL **: g_variant_get_int64: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)' failed
[Thread 0x7fffd77fe700 (LWP 12870) exited]

(terminix:12811): GLib-CRITICAL **: g_variant_get_int64: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)' failed

(terminix:12811): Gtk-CRITICAL **: gtk_window_get_default_widget: assertion 'GTK_IS_WINDOW (window)' failed

(terminix:12811): Gtk-CRITICAL **: gtk_window_set_default: assertion 'GTK_IS_WINDOW (window)' failed

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4b5ff55 in has_case_prefix (haystack=haystack@entry=0x0, needle=needle@entry=0x7ffff4bc8594 "file:/") at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gconvert.c:1267
1267 /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gconvert.c: No such file or directory.

(gdb) bt full
#0 0x00007ffff4b5ff55 in has_case_prefix (haystack=haystack@entry=0x0, needle=needle@entry=0x7ffff4bc8594 "file:/") at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gconvert.c:1267

    h = 0x0
    n = 0x7fffffffb7e0 ""

#1 0x00007ffff4b61382 in g_filename_from_uri (uri=0x0, hostname=0x7fffffffb7e0, error=0x7fffffffb7e8) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gconvert.c:1564

    path_part = <optimized out>
    host_part = <optimized out>
    unescaped_hostname = <optimized out>
    result = <optimized out>
    filename = <optimized out>
    offs = <optimized out>

#2 0x0000000000848077 in glib.URI.URI.filenameFromUri(immutable(char)[], out immutable(char)[]) ()
#3 0x00000000007f8f11 in gx.terminix.terminal.terminal.Terminal.currentDirectory() ()
#4 0x00000000007f066d in gx.terminix.session.Session.onTerminalRequestSplit(gx.terminix.terminal.terminal.Terminal, gtkc.gtktypes.GtkOrientation) ()
#5 0x00000000007f6252 in gx.terminix.terminal.terminal.Terminal.notifyTerminalRequestSplit(gtkc.gtktypes.GtkOrientation) ()
#6 0x00000000007f4f4e in gx.terminix.terminal.terminal.Terminal.createActions(gio.SimpleActionGroup.SimpleActionGroup).__dgliteral2!(glib.Variant.Variant, gio.SimpleAction.SimpleAction).dgliteral2(glib.Variant.Variant, gio.SimpleAction.SimpleAction) ()
#7 0x000000000083929c in gio.SimpleAction.SimpleAction.callBackActivate(gtkc.giotypes.GSimpleAction
, gtkc.glibtypes.GVariant
, gio.SimpleAction.SimpleAction) ()
#11 0x00007ffff449b0bf in <emit signal ??? on instance 0x1126b70 [GSimpleAction]> (instance=instance@entry=0x1126b70, signal_id=, detail=detail@entry=0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffbdf0, reg_save_area = 0x7fffffffbd30}}
#8  0x00007ffff447ffa5 in g_closure_invoke (closure=0x7ffff7f4b000, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffbb50, invocation_hint=invocation_hint@entry=0x7fffffffbad0)
at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:804
            marshal = <optimized out>
            marshal_data = <optimized out>
            in_marshal = 0
            real_closure = 0x7ffff7f4afe0
            __func__ = "g_closure_invoke"
#9  0x00007ffff4491ff1 in signal_emit_unlocked_R (node=node@entry=0xf3c880, detail=detail@entry=0, instance=instance@entry=0x1126b70, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffbb50) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3629
            tmp = <optimized out>
            handler = 0x1195780
            accumulator = 0x0
            emission = {next = 0x7fffffffc0d0, instance = 0x1126b70, ihint = {signal_id = 217, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
            handler_list = 0x1195780
            return_accu = 0x0
            accu = 
                  {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
            signal_id = 217
            max_sequential_handler_number = 4251
            return_value_altered = 0
#10 0x00007ffff449ad8c in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffbd10) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3385
            instance_and_params = 0x7fffffffbb50
            signal_return_type = <optimized out>
            param_values = 0x7fffffffbb68
            i = <optimized out>
            n_params = <optimized out>
            __func__ = "g_signal_emit_valist"

#12 0x00007ffff3d75555 in g_simple_action_activate (action=0x1126b70, parameter=0x0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gio/gsimpleaction.c:225

    simple = 0x1126b70 [GSimpleAction]
    __func__ = "g_simple_action_activate"

#13 0x00007fffee99bb8e in gtk_action_muxer_activate_action (action_group=0x1189580, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:412

    muxer = 0x1189580 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#14 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0x1090c80, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"

---Type to continue, or q to quit---
action_group = 0x1090c80
muxer = 0x1090c80 [GtkActionMuxer]
group =
unprefixed_name = 0x107186a "split-horizontal"
#15 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0x1083380, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"
    action_group = 0x1083380
    muxer = 0x1083380 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#16 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0xfe6400, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"
    action_group = 0xfe6400
    muxer = 0xfe6400 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#17 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0x1038380, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"
    action_group = 0x1038380
    muxer = 0x1038380 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#18 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0x1038340, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"
    action_group = 0x1038340
    muxer = 0x1038340 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#19 0x00007fffee99bbc4 in gtk_action_muxer_activate_action (action_group=0x1038300, action_name=0x1071861 "terminal.split-horizontal", parameter=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkactionmuxer.c:414

    parameter = 0x0
    action_name = 0x1071861 "terminal.split-horizontal"
    action_group = 0x1038300
    muxer = 0x1038300 [GtkActionMuxer]
    group = <optimized out>
    unprefixed_name = 0x107186a "split-horizontal"

#20 0x00007fffeeae0996 in gtk_menu_tracker_item_activated (self=0x107ee00 [GtkMenuTrackerItem]) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmenutrackeritem.c:804

    action_name = 0x1071861 "terminal.split-horizontal"
    action_target = 0x0
    __func__ = "gtk_menu_tracker_item_activated"

#21 0x00007fffeeadb303 in gtk_popover_item_activate (button=, user_data=0x107ee00) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmenusectionbox.c:184

    item = 0x107ee00 [GtkMenuTrackerItem]
    popover = 0x119a1b0 [GtkPopover]

#25 0x00007ffff449b0bf in <emit signal ??? on instance 0x11a0210 [GtkModelButton]> (instance=, signal_id=, detail=) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffc3f0, reg_save_area = 0x7fffffffc330}}
#22 0x00007ffff447ffa5 in g_closure_invoke (closure=0x10ec630, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffffc160, invocation_hint=invocation_hint@entry=0x7fffffffc0e0)
at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:804
            marshal = <optimized out>
            marshal_data = <optimized out>
            in_marshal = 0
            real_closure = 0x10ec610
            __func__ = "g_closure_invoke"
#23 0x00007ffff4491ff1 in signal_emit_unlocked_R (node=node@entry=0xf2f390, detail=detail@entry=0, instance=instance@entry=0x11a0210, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc160) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3629

---Type to continue, or q to quit---
tmp =
handler = 0x1083100
accumulator = 0x0
emission = {next = 0x7fffffffc580, instance = 0x11a0210, ihint = {signal_id = 183, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 4}
handler_list = 0x1083100
return_accu = 0x0
accu =
{g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
signal_id = 183
max_sequential_handler_number = 4249
return_value_altered = 1
#24 0x00007ffff449ad8c in g_signal_emit_valist (instance=, signal_id=, detail=, var_args=var_args@entry=0x7fffffffc310) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3385
instance_and_params = 0x7fffffffc160
signal_return_type =
param_values = 0x7fffffffc178
i =
n_params =
func = "g_signal_emit_valist"
#26 0x00007fffee9cd54d in gtk_button_do_release (button=0x11a0210 [GtkModelButton], emit_clicked=) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkbutton.c:1899

    emit_clicked = <optimized out>
    button = 0x11a0210 [GtkModelButton]
    priv = <optimized out>

#27 0x00007fffee9cd5b5 in gtk_real_button_released (button=0x11a0210 [GtkModelButton]) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkbutton.c:2017
#31 0x00007ffff449b0bf in <emit signal ??? on instance 0x11a0210 [GtkModelButton]> (instance=instance@entry=0x11a0210, signal_id=, detail=detail@entry=0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffc8a0, reg_save_area = 0x7fffffffc7e0}}
#28 0x00007ffff447ffa5 in g_closure_invoke (closure=closure@entry=0xf39040, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7fffffffc610, invocation_hint=invocation_hint@entry=0x7fffffffc590)
at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:804
            marshal = <optimized out>
            marshal_data = <optimized out>
            in_marshal = 0
            real_closure = 0xf39020
            __func__ = "g_closure_invoke"
#29 0x00007ffff4491b2c in signal_emit_unlocked_R (node=node@entry=0xf8c680, detail=detail@entry=0, instance=instance@entry=0x11a0210, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffc610) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3559
            accumulator = 0x0
            emission = {next = 0x7fffffffcca0, instance = 0x11a0210, ihint = {signal_id = 182, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 15995488}
            handler_list = <optimized out>
            return_accu = 0x0
            accu = 
                  {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
            signal_id = 182
            max_sequential_handler_number = 4249
            return_value_altered = <optimized out>
#30 0x00007ffff449ad8c in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffc7c0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3385
            instance_and_params = 0x7fffffffc610
            signal_return_type = <optimized out>
            param_values = 0x7fffffffc628
            i = <optimized out>
            n_params = <optimized out>
            __func__ = "g_signal_emit_valist"

#32 0x00007fffee9cb640 in multipress_released_cb (gesture=0x1051f90 [GtkGestureMultiPress], n_press=, x=, y=, widget=0x11a0210 [GtkModelButton])

at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkbutton.c:613
    button = 0x11a0210 [GtkModelButton]
    priv = 0x11a00b0
    sequence = <optimized out>

---Type to continue, or q to quit---
#33 0x00007ffff426de40 in ffi_call_unix64 () at /usr/lib/x86_64-linux-gnu/libffi.so.6
#34 0x00007ffff426d8ab in ffi_call () at /usr/lib/x86_64-linux-gnu/libffi.so.6
#35 0x00007ffff4480cf5 in g_cclosure_marshal_generic_va (closure=0xfdd950, return_value=0x0, instance=0x1051f90, args_list=, marshal_data=0x0, n_params=3, param_types=0xf71350)

at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:1604
    rtype = 0x7ffff426e230 <ffi_type_void>
    rvalue = 0x7fffffffca60
    n_args = 5
    atypes = 0x7fffffffca20
    args = 0x7fffffffc9e0
    storage = 0x7fffffffc9b0
    i = <optimized out>
    cif = {abi = FFI_UNIX64, nargs = 5, arg_types = 0x7fffffffca20, rtype = 0x7ffff426e230 <ffi_type_void>, bytes = 0, flags = 2048}
    cc = 0xfdd950
    enum_tmpval = <optimized out>
    tmpval_used = 0
    args_copy = {{gp_offset = 32, fp_offset = 80, overflow_arg_area = 0x7fffffffce80, reg_save_area = 0x7fffffffcdc0}}

#36 0x00007ffff44801d4 in _g_closure_invoke_va (closure=closure@entry=0xfdd950, return_value=return_value@entry=0x0, instance=instance@entry=0x1051f90, args=args@entry=0x7fffffffcda0, n_params=, param_types=0xf71350)

at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:867
    marshal = <optimized out>
    marshal_data = <optimized out>
    in_marshal = 0
    real_closure = 0xfdd930
    __func__ = "_g_closure_invoke_va"

#37 0x00007ffff449a9d6 in g_signal_emit_valist (instance=0x1051f90, signal_id=, detail=0, var_args=var_args@entry=0x7fffffffcda0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3294

    return_accu = <optimized out>
    accu = 
          {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    accumulator = 0x0
    emission = {next = 0x7fffffffd030, instance = 0x1051f90, ihint = {signal_id = 231, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type = 15863904}
    signal_id = 231
    instance_type = <optimized out>
    emission_return = 
          {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    rtype = 4
    static_scope = 0
    fastpath_handler = <optimized out>
    closure = <optimized out>
    run_type = <optimized out>
    l = <optimized out>
    fastpath = <optimized out>
    instance_and_params = <optimized out>
    signal_return_type = <optimized out>
    param_values = <optimized out>
    i = <optimized out>
    n_params = <optimized out>
    __func__ = "g_signal_emit_valist"

#38 0x00007ffff449b0bf in g_signal_emit (instance=instance@entry=0x1051f90, signal_id=, detail=detail@entry=0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffce80, reg_save_area = 0x7fffffffcdc0}}

#39 0x00007fffeea798f1 in gtk_gesture_multi_press_end (gesture=0x1051f90 [GtkGestureMultiPress], sequence=) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkgesturemultipress.c:273

    multi_press = 0x1051f90 [GtkGestureMultiPress]
    current = <optimized out>
    x = 38
    y = 12

#40 0x00007ffff4482dbe in g_cclosure_marshal_VOID__BOXEDv (closure=0xf53640, return_value=, instance=, args=, marshal_data=, n_params=, param_types=0xf53670)

at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gmarshal.c:1950

---Type to continue, or q to quit---
cc = 0xf53640
data1 =
data2 =
callback =
arg0 = 0x0
args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffd210, reg_save_area = 0x7fffffffd150}}
#41 0x00007ffff44801d4 in _g_closure_invoke_va (closure=closure@entry=0xf53640, return_value=return_value@entry=0x0, instance=instance@entry=0x1051f90, args=args@entry=0x7fffffffd130, n_params=, param_types=0xf53670)

at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:867
    marshal = <optimized out>
    marshal_data = <optimized out>
    in_marshal = 0
    real_closure = 0xf53620
    __func__ = "_g_closure_invoke_va"

#42 0x00007ffff449a9d6 in g_signal_emit_valist (instance=0x1051f90, signal_id=, detail=0, var_args=var_args@entry=0x7fffffffd130) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3294

    return_accu = <optimized out>
    accu = 
          {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    accumulator = 0x0
    emission = {next = 0x7fffffffd490, instance = 0x1051f90, ihint = {signal_id = 226, detail = 0, run_type = G_SIGNAL_RUN_LAST}, state = EMISSION_RUN, chain_type = 15863904}
    signal_id = 226
    instance_type = <optimized out>
    emission_return = 
          {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    rtype = 4
    static_scope = 0
    fastpath_handler = <optimized out>
    closure = <optimized out>
    run_type = <optimized out>
    l = <optimized out>
    fastpath = <optimized out>
    instance_and_params = <optimized out>
    signal_return_type = <optimized out>
    param_values = <optimized out>
    i = <optimized out>
    n_params = <optimized out>
    __func__ = "g_signal_emit_valist"

#43 0x00007ffff449b0bf in g_signal_emit (instance=instance@entry=0x1051f90, signal_id=, detail=detail@entry=0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd210, reg_save_area = 0x7fffffffd150}}

#44 0x00007fffeea76c4e in _gtk_gesture_check_recognized (sequence=0x0, recognized=0, gesture=0x1051f90 [GtkGestureMultiPress]) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkgesture.c:345

    has_matching_touchpoints = <optimized out>

#45 0x00007fffeea76c4e in _gtk_gesture_check_recognized (gesture=gesture@entry=0x1051f90 [GtkGestureMultiPress], sequence=sequence@entry=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkgesture.c:386

    has_matching_touchpoints = <optimized out>

#46 0x00007fffeea78273 in gtk_gesture_handle_event (controller=0x1051f90 [GtkGestureMultiPress], event=0x11039d0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkgesture.c:777

    gesture = 0x1051f90 [GtkGestureMultiPress]
    sequence = 0x0
    source_device = <optimized out>
    was_recognized = 1

#47 0x00007fffeea7ae45 in gtk_gesture_single_handle_event (controller=0x1051f90 [GtkGestureMultiPress], event=0x11039d0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkgesturesingle.c:221

    sequence = 0x0
    source_device = <optimized out>
    source = GDK_SOURCE_MOUSE
    button = 1
    i = <optimized out>
    retval = <optimized out>
    test_touchscreen = <optimized out>

---Type to continue, or q to quit---
#48 0x00007fffeea4ab6b in gtk_event_controller_handle_event (controller=0x1051f90 [GtkGestureMultiPress], event=event@entry=0x11039d0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkeventcontroller.c:230

    controller_class = 0xf9a600
    retval = 0
    __func__ = "gtk_event_controller_handle_event"

#49 0x00007fffeebfbacb in _gtk_widget_run_controllers (widget=0x11a0210 [GtkModelButton], event=0x11039d0, phase=GTK_PHASE_BUBBLE) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkwidget.c:7321

    controller_phase = <optimized out>

Python Exception <class 'TypeError'> iter() returned non-iterator of type '_iterator':
next = 0x0
data = 0x107b170
handled = 0
priv = 0x11a0140
l =
#50 0x00007fffeeabfeba in _gtk_marshal_BOOLEAN__BOXEDv (closure=0xe81290, return_value=0x7fffffffd4c0, instance=, args=, marshal_data=, n_params=, param_types=0xe7d720)

at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmarshalers.c:131
    cc = <optimized out>
    data1 = <optimized out>
    data2 = <optimized out>
    callback = <optimized out>
    arg0 = 0x11039d0
    args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffd670, reg_save_area = 0x7fffffffd5b0}}
    v_return = <optimized out>
    __func__ = "_gtk_marshal_BOOLEAN__BOXEDv"

#51 0x00007ffff44801d4 in _g_closure_invoke_va (closure=closure@entry=0xe81290, return_value=return_value@entry=0x7fffffffd4c0, instance=instance@entry=0x11a0210, args=args@entry=0x7fffffffd590, n_params=, param_types=0xe7d720) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gclosure.c:867

    marshal = <optimized out>
    marshal_data = <optimized out>
    in_marshal = 0
    real_closure = 0xe81270
    __func__ = "_g_closure_invoke_va"

#52 0x00007ffff449a4e8 in g_signal_emit_valist (instance=0x11a0210, signal_id=, detail=0, var_args=var_args@entry=0x7fffffffd590) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3294

    return_accu = <optimized out>
    accu = 
          {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    accumulator = 0xe7d740
    emission = {next = 0x0, instance = 0x11a0210, ihint = {signal_id = 67, detail = 0, run_type = G_SIGNAL_RUN_LAST}, state = EMISSION_RUN, chain_type = 15995488}
    signal_id = 67
    instance_type = <optimized out>
    emission_return = 
          {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
    rtype = 20
    static_scope = 0
    fastpath_handler = <optimized out>
    closure = <optimized out>
    run_type = <optimized out>
    l = <optimized out>
    fastpath = <optimized out>
    instance_and_params = <optimized out>
    signal_return_type = <optimized out>
    param_values = <optimized out>
    i = <optimized out>
    n_params = <optimized out>
    __func__ = "g_signal_emit_valist"

#53 0x00007ffff449b0bf in g_signal_emit (instance=instance@entry=0x11a0210, signal_id=, detail=detail@entry=0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gobject/gsignal.c:3441

    var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd670, reg_save_area = 0x7fffffffd5b0}}

#54 0x00007fffeebfdb0c in gtk_widget_event_internal (widget=0x11a0210 [GtkModelButton], event=0x11039d0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkwidget.c:7692

    signal_num = <optimized out>

---Type to continue, or q to quit---
return_val = 0
handled = 0
event = 0x11039d0
widget = 0x11a0210 [GtkModelButton]
#55 0x00007fffeeabd1de in propagate_event (topmost=, event=, widget=0x11a0210 [GtkModelButton]) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmain.c:2527

    tmp = <optimized out>
    handled_event = <optimized out>
    handled_event = 0

#56 0x00007fffeeabd1de in propagate_event (widget=, event=0x11039d0, captured=, topmost=0x0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmain.c:2629

    handled_event = 0

#57 0x00007fffeeabefdc in gtk_main_do_event (event=0x11039d0) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gtk/gtkmain.c:1850

    event_widget = <optimized out>
    grab_widget = 0x11a0210 [GtkModelButton]
    topmost_widget = <optimized out>
    window_group = 0xf0f070 [GtkWindowGroup]
    rewritten_event = <optimized out>
    device = 0xe125a0 [GdkX11DeviceXI2]
    tmp_list = <optimized out>
    __func__ = "gtk_main_do_event"

#58 0x00007ffff36057f2 in gdk_event_source_dispatch (source=, callback=, user_data=) at /build/gtk+3.0-vke6KI/gtk+3.0-3.18.6/./gdk/x11/gdkeventsource.c:364

    display = <optimized out>
    event = <optimized out>

#59 0x00007ffff4b7e117 in g_main_context_dispatch (context=0xe10360) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gmain.c:3154

    dispatch = 0x7ffff36057d0 <gdk_event_source_dispatch>
    prev_source = 0x0
    was_in_call = 0
    user_data = 0x0
    callback = 0x0
    cb_funcs = <optimized out>
    cb_data = <optimized out>
    need_destroy = <optimized out>
    source = 0xe49830
    current = 0xe28600
    i = 0

#60 0x00007ffff4b7e117 in g_main_context_dispatch (context=context@entry=0xe10360) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gmain.c:3769
#61 0x00007ffff4b7e370 in g_main_context_iterate (context=context@entry=0xe10360, block=block@entry=1, dispatch=dispatch@entry=1, self=) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gmain.c:3840

    max_priority = 2147483647
    timeout = 358
    some_ready = 1
    nfds = <optimized out>
    allocated_nfds = 4
    fds = 0x10ec930

#62 0x00007ffff4b7e41c in g_main_context_iteration (context=0xe10360, context@entry=0x0, may_block=may_block@entry=1) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./glib/gmain.c:3901

    retval = <optimized out>

#63 0x00007ffff3d6d5ec in g_application_run (application=0xe151a0 [GtkApplication], argc=0, argv=0x0) at /build/glib2.0-IfQpAv/glib2.0-2.47.3/./gio/gapplication.c:2311

    arguments = 0xdf4880
    status = 0
    __func__ = "g_application_run"

#64 0x0000000000819dfc in gio.Application.Application.run(immutable(char)[][]) ()
#65 0x00000000007bd286 in D main ()

(gdb)

Could not load libvte-2.91.so on RHEL 7.2

Currently terminix tries to load the VTE library as libvte-2.91.so which exists on Arch, however on RHEL 7.2 it does not exist. The name should be changed to libvte-2.91.so.0 which exists on both systems.

Request: Pass profile and command to Terminix when launching new Terminix

With the recent updates to #40 I would like to be able to include the terminal profile and commands to the launching command. This is incredibly useful for launching new sessions, aliases, ssh sessions, etc.

Example:
terminix -c app-new-window -p dev
terminix -c app-new-window -p dev -x bash -c "ssh "

Examples from Gnome terminal:
gnome-terminal --window-with-profile=dev
gnome-terminal --window-with-profile=dev -x bash -c "ssh "

Add gnome shell search provider

GNOME Terminal has a search feature that allows you to search terminal outputs, see here.

It has a GNOME Shell search provider (very useful) and it even lets you search using regex.

It'd be very nice to have this feature added into Terminix too.

Cant run on Fedora

Window open for a second and the crashes:
Thats basically on Rawhide, no Fedora.

(terminix:7386): Gtk-WARNING **: State 1 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 1 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()

(terminix:7386): GLib-CRITICAL **: g_variant_get_int64: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)' failed

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 224 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 160 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 160 set via gtk_style_context_set_state ()

(terminix:7386): Gtk-WARNING **: State 0 for VteTerminal 0x20c47c0 doesn't match state 160 set via gtk_style_context_set_state ()

Moving transparency widget back and forth eventually causes SEG Fault

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff1d758a7 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
(gdb) backtrace
#0  0x00007ffff1d758a7 in g_slice_alloc () from /usr/lib/libglib-2.0.so.0
#1  0x00007ffff1d75be1 in g_slice_copy () from /usr/lib/libglib-2.0.so.0
#2  0x000000000084a785 in gdk.RGBA.RGBA.this() (this=0x7ffff7f8ac00) at ../../../.dub/packages/gtk-d-3.2.1/src/gdk/RGBA.d:71
#3  0x0000000000831d67 in gx.terminix.terminal.terminal.Terminal.applyPreference(immutable(char)[]) (this=0x7ffff7f2f000, key=...) at source/gx/terminix/terminal/terminal.d:641
#4  0x0000000000833d8c in gx.terminix.terminal.terminal.Terminal.this(immutable(char)[]).__dgliteral2!(gio.Settings.Settings).__dgliteral2(immutable(char)[], gio.Settings.Settings) (this=0x7ffff7f23ac0, Settings=0x7ffff7eb2a00, key=...) at source/gx/terminix/terminal/terminal.d:1020
#5  0x0000000000877b73 in gio.Settings.Settings.callBackChanged(gtkc.giotypes.GSettings*, char*, gio.Settings.Settings) (settingsStruct=0x112e6b0, 
    key=0x11a30f7 "background-transparency-percent", _settings=0x7ffff7eb2a00) at ../../../.dub/packages/gtk-d-3.2.1/src/gio/Settings.d:1547
#6  0x00007ffff1227aca in g_cclosure_marshal_VOID__STRINGv () from /usr/lib/libgobject-2.0.so.0
#7  0x00007ffff1225244 in ?? () from /usr/lib/libgobject-2.0.so.0
#8  0x00007ffff123fa46 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#9  0x00007ffff124012f in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#10 0x00007ffff0d2ec2c in ?? () from /usr/lib/libgio-2.0.so.0
#11 0x00007ffff18e11f0 in ffi_call_unix64 () from /usr/lib/libffi.so.6
#12 0x00007ffff18e0c58 in ffi_call () from /usr/lib/libffi.so.6
#13 0x00007ffff1225d65 in g_cclosure_marshal_generic_va () from /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff1225244 in ?? () from /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff123f558 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#16 0x00007ffff124012f in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#17 0x00007ffff0d2e86c in ?? () from /usr/lib/libgio-2.0.so.0
#18 0x00007ffff0d29f9a in ?? () from /usr/lib/libgio-2.0.so.0
#19 0x00007ffff1d59cf5 in g_main_context_invoke_full () from /usr/lib/libglib-2.0.so.0
#20 0x00007ffff0d2a0a4 in ?? () from /usr/lib/libgio-2.0.so.0
#21 0x00007fffe8ac0414 in ?? () from /usr/lib/gio/modules/libdconfsettings.so
#22 0x00007fffe8ac1519 in ?? () from /usr/lib/gio/modules/libdconfsettings.so
#23 0x00007fffe8abfedc in ?? () from /usr/lib/gio/modules/libdconfsettings.so
#24 0x00007ffff0d2aad4 in ?? () from /usr/lib/libgio-2.0.so.0
#25 0x00007ffff0d2f503 in ?? () from /usr/lib/libgio-2.0.so.0
#26 0x00007ffff0d2f718 in ?? () from /usr/lib/libgio-2.0.so.0
#27 0x00007ffff1225015 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#28 0x00007ffff1237061 in ?? () from /usr/lib/libgobject-2.0.so.0
#29 0x00007ffff123fdfc in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#30 0x00007ffff124012f in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#31 0x00007ffff1229544 in ?? () from /usr/lib/libgobject-2.0.so.0
#32 0x00007fffedb4d596 in ?? () from /usr/lib/libgtk-3.so.0
#33 0x00007ffff122bae9 in g_object_notify_by_pspec () from /usr/lib/libgobject-2.0.so.0
#34 0x00007fffedcc26f3 in ?? () from /usr/lib/libgtk-3.so.0
#35 0x00007fffedc625b1 in ?? () from /usr/lib/libgtk-3.so.0
#36 0x00007ffff1225015 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0

Shortcut for opening a new window does not work after reopening Terminix

I've assigned the shortcut <Ctrl><Shift>n to open a new window. It works fine until I close and reopen Terminix. The shortcut assignment is still shown in the settings, but it does not work. If I reassign it, then it starts working again. I think it only affects "New window" action, as I assigned other shortcuts and they work fine.

As a side node, the shortcut is actually registered as <Primary><Shift>n, and in any assignment I make Ctrl is registered as Primary. I don't know what Primary means, but it is strange, as the stock shortcuts are correctly registered as Ctrl.

Gnome 3.19 Issues

This is a placeholder for issues relating to Gnome 3.19. The Gnome developers are making a number of changes to the way widgets work with CSS and as a result the terminix UI looks pretty bad under 3.19. Once 3.20 gets closer to release I'll spend some time updating and testing with it.

Current issues include:

  • Paned terminals scrollbars doesn't visually with split in header bar
  • When you drag and drop a terminal, the drag image stays behind persistently
  • A number of GTK Warnings are generated:
    (terminix:7386): Gtk-WARNING *: State 1 for VteTerminal 0x20c47c0 doesn't match state 128 set via gtk_style_context_set_state ()
  • See Issue #53 where the content extends out the left side of the window if you have split terminals and you move the splitter all the way to the left.
  • See Issue #87 for drag and drop issues.

Quake style mode

Would you consider adding a dropdown feature to this awesome terminal emulator?

Add an option to maximize terminal

Sometimes when you are focused on a single terminal it would be nice to maximize it for more space and then when finished that particular task return it to normal. Note that the notifications system would need to take into account this new start so that notifications get shown for the hidden "minimized" terminals.

Crash on startup - Archlinx

When I try to start the application (installed through AUR script), I get this error:

(terminix:19777): GLib-CRITICAL **: g_variant_get_int64: assertion 'g_variant_is_of_type (value, G_VARIANT_TYPE_INT64)' failed

I'm on vanilla Gnome 3.18.2

Add dbus server to tilix

Add a dbus support to terminix to support the following:

  • Enable people to send requests to the host terminix (i.e. split a terminal, open a new window, etc)
  • Support notifications for users that don't have the fedora patched VTE widget

Change the name of this software, maybe?

If you search Terminix on Google, you'd most certainly find a whole page of result about "Your Strongest Defense Against Pests & Termites" (I am not including a link here. Don't want to further push their SEO rank). It is hard to search discussion and resource. And it is not a common term like "Terminator".

I think it is better to rename this project to either:

  1. something less confusing (no collision); or
  2. easier to remember (common term)?

What do you think?

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.