21 December 2011

evilvte 0.5.1~pre2 released

   let new tab always be the first tab
   Thanks to shenfeng <https://github.com/shenfeng>
 * Make close button smaller
 * Improve resizing behavior with
   "-VteTerminal-inner-border" property

 * How to report bug, request feature,
   or submit patch for evilvte

13 December 2011

Official issue tracker and git repository

evilvte has provided official git repository:


Two enhancements has been pushed to git:
  * Make close button smaller
  * Improve resizing behavior with "-VteTerminal-inner-border" property

And now we also has official issue tracker:


Issue #1 there is reported by johnlm.

If you have no github account, you may discuss bugs here as usual.
Feel free to report bugs as anonymous.

Please read the updated guide about how to follow evilvte issues. :-)

08 December 2011

evilvte could not be resized smaller?

Someone asked the question and then deleted his/her comment.

I guess he/she has found the FAQ.

If you are using a tiling window manager, I think evilvte built with GTK+ 3.x will work better with it. GTK+ 3.x based evilvte could be resized smaller.

However, GTK+ 3.x still has problems here and there, see comments of FAQ.

04 December 2011

Useful GTK+ 2.x styling

Update: add "GtkWidget::focus-line-width"

If you want to make your terminal emulator smaller, paste those settings below to your "$HOME/.gtkrc-2.0".

Or use the environment variable GTK2_RC_FILES to assign evilvte-only styling.

For example:
~$ GTK2_RC_FILES=$HOME/.config/evilvte/gtkrc-2.0 evilvte &

Next release of evilvte will include "GtkButton::inner-border = { 0, 0, 0, 0 }" as default setting.
style "evilvte_close_button"
  GtkButton::default-border = { 0, 0, 0, 0 }
  GtkButton::default-outside-border = { 0, 0, 0, 0 }
  GtkButton::inner-border = { 0, 0, 0, 0 }
  xthickness = 0
  ythickness = 0
widget_class "*.GtkNotebook.GtkHBox.GtkButton" style "evilvte_close_button"

style "evilvte_notebook"
  xthickness = 0
  ythickness = 0
widget_class "*.GtkNotebook" style "evilvte_notebook"

style "evilvte_vte"
  VteTerminal::inner-border = { 0, 0, 0, 0 }
widget_class "*.VteTerminal" style "evilvte_vte"

style "evilvte_focus-line"
  GtkWidget::focus-line-width = 0
widget_class "*" style "evilvte_focus-line"

23 November 2011

evilvte 0.5.1~pre1 released

 * Temporary workaround for
   "-VteTerminal-inner-border" property
 * Mouse clicking can also turn off
   urgency hint now

 * How to report bug, request feature,
   or submit patch for evilvte

11 November 2011

evilvte now on Google Plus

An URL is worth a thousand words:


All new blog articles here will be there, too.

22 October 2011

世界初! The trick: gtk2 & gtk3 coexist

GTK+ 2.x and 3.x should be seen as two different libraries.
Of course they are similar, and are source compatible in some level.

Due to the similarity, GTK+ team decided that they can not coexist, and wrote runtime check to make sure that.

There are some tricks and wrappers can do a real "gtk2 & gtk3 coexist", for example you can use a gtk3 web browser and use the gtk2 Adobe flash plugin in it.

Since version 0.5.0, evilvte uses dlopen() to do a "gtk2 & gtk3 coexist".
They do not really coexist in one single window, but you can run one binary to choose gtk2 or gtk3 at runtime like this:

~$ evilvte --2 & evilvte --3 &

Due to the similarity of gtk2 and gtk3, it is quite easy to do the dlopen() trick. I do not think it will be common, but I do hope some others will do the same thing to support two versions of GTK+ at the same time. Maybe not for gtk2 and gtk3, but for gtk3 and gtk4.

I do not think I am the first to do the "choose from 2 libs at runtime", but for gtk2 and gtk3, I think I am really the first in the world. :-P

So I put the Japanese phrase at title, "世界初!", which means "The first in the world!".

evilvte 0.5.0 released


 The "One binary to rule them all!" Release

 * Fix a bug for -e option
 * Fix a bug for input method menu
 * New configure option: --with-gtk=2+3|3+2
   The binary will not link to VTE nor GTK+, thus
   can support GTK+ 2.x and 3.x at the same time.
   It still depends on VTE runtime, of course.
   Use --2 or --3 command line options to choose
   the version of GTK+.
   If evilvte segfaults with --3 option,
   please try export USE_ACCESSIBLE=0 or
 * Drop codes with VTE version < 0.17.1

 * How to report bug, request feature,
   or submit patch for evilvte

22 September 2011

evilvte 0.5.0~pre1 released

 * Sync COLOR_STYLE: ZENBURN with xterm
   Thanks to Artur Dryomov <me AT ming13 DOT ru>
   Previous ZENBURN is renamed to ZENBURN_DARK
 * Replace all deprecated functions that have
   suitable replacements
 * Make everything GTK+ 3.1.92 compatible
   GTK+ version >= 3.1.90
 * Make everything VTE 0.29.1 compatible
   If you encounter problems, try export
   CFLAGS="-DUSE_ACCESSIBLE=0" and rebuild evilvte.

 * How to report bug, request feature,
   or submit patch for evilvte

07 September 2011

IP Transition of evilvte host

evilvte is hosted on calno.com, and its IP has been changed.

If you can not visit calno.com, the workaround is adding IP data to your /etc/hosts: www.calno.com

If you mailed to me but was rejected, please resend it later. :-P

03 September 2011

All new evilvte tarballs will be xz compressed

I happened to find that xz has an --extreme option.
It often makes files much smaller, even with -0 compression level.
I tested -0 to -9 and -0e to -9e tens of times and found that -0e and -3e often produce the smallest evilvte tarball.
(It is quite different for other data.)

Decompressing a -0e tarball only needs 1 MiB of RAM, and 5 MiB for -3e.
I think any device today will do the job well, so I changed the default compression of evilvte to xz.

Gzipped tarballs will be provided as a fallback.
I have not decided when to stop shipping newly gzipped tarball.

Filesize comparison of evilvte 0.4.9:
xz   -0e 52448 bytes (86% of gzip, 91% of bzip2)
bzip2 -9 57670 bytes (94% of gzip)
gzip  -9 61286 bytes

31 August 2011

Useful CSS styling

Default theme of GTK+ 3.x is quite ugly and colorless.

You may embed CSS style in evilvte and get a much clearer tabbar, for example:
For GTK+ 3.2.x and 3.1.x:
#define GTK3_CSS "GtkNotebook GtkButton { border-width: 0; padding: 0; } GtkWindow GtkNotebook { padding: 0; } GtkNotebook GtkLabel { color: gray60; } GtkNotebook GtkLabel:active { color: black; }"

For GTK+ 3.0.x:
#define GTK3_CSS "GtkNotebook GtkButton { border-width: 0; padding: 0; } GtkWindow GtkNotebook { color: gray60; padding: 0; } GtkWindow GtkNotebook:active { color: black; }"

22 August 2011

evilvte 0.4.9 released

 * Fix makefile parallelization
   Thanks to Thomas Weißschuh
   <thomas_weissschuh AT lavabit DOT com>
   GTK+ version >= 3.1.12
 * Expand VTE widget in GtkGrid

 * How to report bug, request feature,
   or submit patch for evilvte

04 August 2011

One week without internet

Update: I will be online next week. Thanks to Dr. Foo. :-)

I may have no stable internet access next week.

If you leave comments here, or mail something to me,

I may delay the reply to 13 August. :-(

Hope I can come back sooner.

20 July 2011

New icon set

The icon set is modified from Humanity icon set.
Thanks to Alexander Inglessi. <inglessi AT gmail DOT com>
All pngs have been optimized by optipng and pngcrush.

SVG: evilvte.svg

evilvte 0.4.9~pre5 released

 * Support GtkGrid
 * Fix an SCROLLBAR minor bug with
   option OFF_L and OFF_R
 * New icon set under the license:
   GNU General Public License version 2 or
   any later version
   Thanks to Alexander Inglessi
   <inglessi AT gmail DOT com>
 * Use vte_terminal_fork_command() by default.
   Please see: http://evilvte.blogspot.com/2011/03/issue-evilvte-048-makes-zsh-segfault.html

 * How to report bug, request feature,
   or submit patch for evilvte

25 June 2011

[Workaround] evilvte-0.4.8 makes zsh segfault?

Some users reported that vte_terminal_fork_command_full() will make evilvte segfault, especially when zsh is their default shell. [1]

It could be fixed with:
and rebuild evilvte.

I will make the option be default in next release of evilvte. :-)

[1] http://evilvte.blogspot.com/2011/03/issue-evilvte-048-makes-zsh-segfault.html

20 June 2011

evilvte 0.4.9~pre4 released

   I will make it toggleable at runtime
   in the future.
   But I am lazy to write it now. :-P
   Patches are very welcome.
 * Make everything GLib 2.29.8 compatible
 * Sign SHA1SUMS using RSA key ID BE8BA819 and
   DSA key ID E98D6159

 * How to report bug, request feature,
   or submit patch for evilvte

20 May 2011

evilvte 0.4.9~pre3 released

 * Grayed out menu items according to their status:
   "Copy", "Paste", "Zoom default"

 * How to report bug, request feature,
   or submit patch for evilvte

20 April 2011

evilvte 0.4.9~pre2 released

 * Minor tweaks in TABBAR_AUTOHIDE for GTK+ 3.x
 * Hide VTE_FIXED color style which is merged in
   VTE version >= 0.17.1
 * Drop !TAB codes since evilvte is
   GtkNotebook-only for a very long time.
   For those who do not use tabs, the binary size
   will increase a little.
 * Code clean up

 * How to report bug, request feature,
   or submit patch for evilvte

28 March 2011

[Issue] evilvte-0.4.8 makes zsh segfault?

L29Ah said...
> evilvte-0.4.8 makes zsh segfault with this:
> #0 0x00007f353a7c209a in __strchr_sse2 () from /lib/libc.so.6
> #1 0x000000000044913e in init_jobs (argv=0x7fff5ba9dd18, envp=0x7fff5ba9dd20) at jobs.c:1697
> #2 0x000000000044410f in zsh_main (argc=0, argv=0x7fff5ba9dd18) at init.c:1441
> #3 0x000000000040fea4 in main (argc=0, argv=0x7fff5ba9dd18) at ./main.c:93
> If i run `evilvte -e zsh` it works flawlessly. Also, 0.4.6 didn't have such a problem.

I can not reproduce the bug. :-(

I tested evilvte 0.4.8 and zsh 4.3.11 with various settings.
Everything works as expected.

I suggest you to try these methods:
1. export CFLAGS="-DVTE_FORK_CMD_OLD=1" and rebuild evilvte
1. This will make evilvte to use vte_terminal_fork_command()
1. instead of vte_terminal_fork_command_full()
2. run evilvte with "SHELL" environment variable
2. ~$ SHELL=zsh evilvte &
3. run evilvte with or without "-ls" (login shell)
3. ~$ evilvte -ls &
4. upgrade your libvte

I know roxterm (<= 1.20.6) encountered similar problem.
However since I can not reproduce the bug in evilvte, I have no idea how to apply the diff from roxterm 1.20.7.

Further comments are very welcome.

20 March 2011

Redefine right click button to paste, the new method

Anonymous said...
> I would like to be able to redefine the right click button behavior to paste.

The setting is now supported in evilvte >= 0.4.9~pre1:
#define MENU_CUSTOM "Paste", "Auto-click"

Just assign anything to MENU_CUSTOM, and add "Auto-click".
You will not see the menu when clicking right mouse button.

"Auto-click" works fine with MENU_MATCH_STRING_EXEC.
Right-click menu to "Open" or "Copy" will popup as before, when URL is detected.

evilvte 0.4.9~pre1 released

 * Support "Auto-click" when there is only one
   effective menu item.
   You can assign anything to right-click now.
 * Support embedded GTK3_CSS

 * How to report bug, request feature,
   or submit patch for evilvte

22 February 2011

Redefine right click button to paste

Anonymous said...
> I would like to be able to redefine the right click button behavior to paste.
> I see this in the code but nothing to assign right click:
> Ideally, in the code there would be a keybinding for the MENU_CUSTOM set to right click and then I would be able to reassign.

Thank you for the wish list. :-)
Currently there is no way to do that, but I made a quick hack for you.
Apply the patch below and right click will be paste.
I think I can add an option for this in next release.

--- evilvte.orig/src/evilvte.c
+++ evilvte/src/evilvte.c
@@ -1056,7 +1056,13 @@
-#if MENU
+  if (event->button == 3) {
+    GET_CURRENT_TAB(gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)));
+    vte_terminal_paste_clipboard(VTE_TERMINAL(term->vte));
+    return TRUE;
+  }
+#if 0
   if (event->button == 3) {

20 February 2011

evilvte 0.4.8 released


 The "Welcome, GTK+ 3.0.0!" Release

 * Better compatibility with string matching
 * Fix a bug that made MATCH_STRING fail when
   MENU is not enabled
   Thanks to Kabakov Boris
   <pigritor AT gmail DOT com>
   Thanks to thagraal and <ezrgzx AT gmail DOT com>
 * New options: MATCH_STRING_HTTP
 * Make everything GTK+ 3.0.0 compatible

 * How to report bug, request feature,
   or submit patch for evilvte

11 February 2011

[WORKAROUND] build failure with GTK+ 3.0.0

GTK+ 3.0.0 has been released. It has changed its soname again.

Some compilers do not accept "-Wl,--as-needed" or similar options, so I use a minimal set of linking options, which can not find new soname automatically.

If you want to build current evilvte with GTK+ 3.0.0, please set your LDLIBS environment variable.

For example:
export LDLIBS=`pkg-config --libs vte-2.90`

Thus everything will be fine.

I will fix this problem in next release, of course. :-)

29 January 2011

One week without internet

I may have no stable internet access next week.

3 February is Chinese New Year.

If you leave comments here, or mail something to me,

I may delay the reply to 8 February.

Anyway, happy Chinese New Year! :-)

21 January 2011

Color style Zenburn, and color scheme in config

thagraal said...
> Zenburn colors in evilvte.c ;-)
> Screenshot with ncmpcpp: http://ompldr.org/vNzM1dw
> Also request feature to add own scheme in config.

Thank you!
I have merged the patch to trunk. :-)
I do have plan to add color scheme in config, but with a lower priority. :-P

20 January 2011

evilvte 0.4.8~pre3 released

 * Fix a bug for multiple -e options in
   command line
 * Fix an i18n bug when linked to
   GTK+ version >= 2.90.0
 * Make everything GTK+ 2.99.2 compatible
   To build with older versions of GTK+ 2.9x,
   please export LDLIBS=`pkg-config --libs vte-2.90`

 * How to report bug, request feature,
   or submit patch for evilvte