caleb- / evilvte

VTE based, highly customizable terminal emulator
http://www.calno.com/evilvte
76 stars 21 forks source link

Resize Window #21

Open coderarity opened 11 years ago

coderarity commented 11 years ago

I can't resize the window to anything smaller than a certain size (which is almost as large as it is maximized on my screen). How do I enable resizing? I'm on Arch Linux 64-bit with Xorg-server version 1.13.1-1. Thanks! Here is my config.h:

/* Use // to disable options                                                  */

//#define    BACKGROUND_IMAGE       "/usr/share/awesome/themes/sky/background.png"
//#define BACKGROUND_SATURATION  0.2
//#define BACKGROUND_SCROLLABLE  TRUE
// #define BACKGROUND_TINT_COLOR  "black"
//#define BACKGROUND_TRANSPARENT TRUE  /* Pseudo transparent background      */
// #define BACKGROUND_OPACITY     TRUE  /* True transparent background        */
// #define BACKSPACE_KEY /* Options: AUTO, BACKSPACE, DELETE, ERASE_TTY,      */
                         /*          DELETE_SEQUENCE                          */
// #define DELETE_KEY    /* Options: AUTO, BACKSPACE, DELETE, ERASE_TTY,      */
                         /*          DELETE_SEQUENCE                          */
#define BELL_AUDIBLE           TRUE
// #define BELL_VISIBLE           TRUE
// #define BELL_URGENT            TRUE
// #define BUTTON_ORDER_BY_RCFILE TRUE
// #define CLOSE_DIALOG           TRUE  /* Dialog to confirm close event      */
// #define CLOSE_SAFELY           TRUE  /* Do not kill running applications   */
// #define COLOR_BACKGROUND       "white"
// #define COLOR_FOREGROUND       "#000000"
#define COLOR_STYLE SOLARIZED_DARK
                         /* Options: LINUX, RXVT, TANGO, XTERM, ZENBURN,      */
                         /*          ZENBURN_DARK, SOLARIZED_DARK,            */
                         /*          SOLARIZED_LIGHT                          */
// #define COLOR_TEXT_BOLD        "red"
// #define COLOR_TEXT_DIM         "#FFFF00"
// #define COLOR_TEXT_HIGHLIGHTED "green"
#define COMMAND_AT_ROOT_WINDOW TRUE  /* -r option, run in root window      */
// #define COMMAND_COLOR_FG       TRUE  /* -fg option, foreground color       */
// #define COMMAND_COLOR_BG       TRUE  /* -bg option, background color       */
// #define COMMAND_SATURATION     TRUE  /* -sa option, saturation level       */
// #define COMMAND_DOCK_MODE      TRUE  /* -d option, run as a dock           */
#define    COMMAND_EXEC_PROGRAM   TRUE  /* -e option, execute program         */
#define COMMAND_FULLSCREEN     TRUE  /* -f option, init in fullscreen mode */
//#define COMMAND_FONT           TRUE  /* -fn option, to assign font & size  */
// #define COMMAND_GEOMETRY       TRUE  /* -g +X+Y option, to assign geometry */
// #define COMMAND_LOGIN_SHELL    TRUE  /* -ls option, to enable login shell  */
#define COMMAND_SET_TITLE      TRUE  /* -T or -title to set program title  */
// #define COMMAND_SHOW_HELP      TRUE  /* -h option, show help               */
//#define    COMMAND_SHOW_OPTIONS   TRUE  /* -o option, show build-time options */
#define    COMMAND_SHOW_VERSION   TRUE  /* -v option, show program version    */
// #define COMMAND_TAB_NUMBERS    TRUE  /* -[2-9] options, to set tab numbers */
#define CURSOR_BLINKS          FALSE
// #define CURSOR_COLOR           "blue"
// #define CURSOR_SHAPE  /* Options: BLOCK, IBEAM, UNDERLINE                  */
// #define DEFAULT_COMMAND        g_getenv("SHELL")
// #define DEFAULT_DIRECTORY      g_get_current_dir()
// #define DEFAULT_TERMINAL_SIZE  173x44
// #define EXPORT_WINDOWID        TRUE
#define FONT                   "Inconsolata-dz 14"
#define FONT_ANTI_ALIAS        TRUE
// #define FONT_ENABLE_BOLD_TEXT  TRUE
// #define MOUSE_CTRL_SATURATION  TRUE  /* Scroll left or right to adjust it  */
#define MOUSE_CURSOR_AUTOHIDE  TRUE
// #define PROGRAM_ALWAYS_ON_TOP  TRUE
// #define PROGRAM_ICON           ".config/evilvte/icon.png"
//#define PROGRAM_WM_CLASS       TRUE
// #define RECORD_LASTLOG         TRUE
// #define RECORD_UTMP            TRUE
// #define RECORD_WTMP            TRUE
#define SCROLL_LINES           -1000  /* Negative value means unlimited     */
#define SCROLL_ON_KEYSTROKE    TRUE
// #define SCROLL_ON_OUTPUT       TRUE
#define    SCROLLBAR              OFF_R /* Options: LEFT, RIGHT, OFF_L, OFF_R */
#define SHOW_WINDOW_BORDER     FALSE
#define SHOW_WINDOW_DECORATED  FALSE
// #define    SHOW_WINDOW_ICON       TRUE
// #define    STATUS_BAR             TRUE
#define WINDOW_TITLE_DYNAMIC   TRUE  /* for xterm escape sequences         */
#define    WORD_CHARS             "-A-Za-z0-9_$.+!*(),;:@&=?/~#%"

// #define    MENU                   TRUE
// #define MENU_ENCODING_LIST     "BIG-5", "Default Encoding", "GBK", "EUC-JP"
#define MENU_MATCH_STRING_EXEC "google-chrome"
#define      MATCH_STRING_L    "google-chrome" /* left click to open without menu*/
// #define      MATCH_STRING_M    "firefox" /* middle click to open           */
#define      MATCH_STRING_HTTP TRUE      /* Detect http(s) and ftp(s)      */
// #define      MATCH_STRING_MAIL TRUE      /* Detect mailto:                 */
// #define      MATCH_STRING_FILE TRUE      /* Detect file:///                */
// #define MENU_CUSTOM            "Copy", "Separator", "Paste", "Separator"
           /* Options: "Copy",         "Zoom in",       "Add tab",
            *          "Paste",        "Zoom out",      "Remove tab",
            *          "Select all",   "Zoom default",  "New window",
            *          "Edit label",   "Select font",
            *          "Input method",                  "Encoding list",
            *          "Submenu input method",          "Submenu encoding list",
            *          "Toggle tabbar",
            *          "Toggle scrollbar",              "Background tint",
            *          "Toggle status bar",             "Adjust saturation",
            *          "Toggle anti-alias",
            *          "Toggle background",             "Separator",
            *          "Toggle fullscreen",             "Quit",
            *          "Toggle always on top",
            *          "Toggle hotkeys locking",        "Reset terminal",
            *          "Toggle window decorated",       "Reset and clear",
            *
            *          "Auto-click" (when there is only one effective menu item)
            */

#define    TAB                    TRUE
#define TAB_BORDER             0
#define TAB_CLOSE_BUTTON       FALSE
// #define TAB_EXPANDED_WIDTH     TRUE
// #define TAB_LABEL              "Page %u" /* %u will be replaced by numbers */
#define TAB_LABEL_DYNAMIC      TRUE      /* for xterm escape sequences     */
// #define TAB_LABEL_CUSTOM       "One", "Two", "Three", "Four", "Five", "Six"
// #define TAB_NEW_PATH_EQUAL_OLD TRUE
// #define TAB_NEW_TAB_AT_TAB_ONE TRUE   /* New tab will always the first tab */
#define TAB_REORDERABLE        TRUE
// #define TAB_SHOW_INFO_AT_TITLE TRUE
#define TABBAR                 FALSE
// #define TABBAR_PLACE           TOP    /* Options: TOP, BOTTOM, LEFT, RIGHT */
// #define TABBAR_AUTOHIDE        TRUE
// #define TABBAR_SCROLLABLE      TRUE
// #define TABBAR_MENU_SELECT_TAB TRUE

/* Use || for multiple hotkeys.
 *
 * CTRL(GDK_A) || CTRL(GDK_a) || ALT(GDK_b) || CTRL_ALT(GDK_c) || SHIFT(GDK_d)
 *
 * CTRL(GDK_a)     = "Ctrl + a"
 * CTRL(GDK_A)     = "Ctrl + Shift + a"
 * ALT(GDK_A)      = "Alt  + Shift + a"
 * CTRL_ALT(GDK_A) = "Ctrl + Alt + Shift + a"
 *
 * Also support: ALT_SHIFT(GDK_*)
 *               CTRL_ALT_SHIFT(GDK_*)
 *               CTRL_SHIFT(GDK_*)
 *
 * See /usr/include/gtk-?.0/gdk/gdkkeysyms.h for GDK_* definitions.           */

#define    HOTKEY                       TRUE
#define HOTKEY_COPY                  CTRL_SHIFT(GDK_C) || CTRL_SHIFT(GDK_c)
#define HOTKEY_PASTE                 CTRL_SHIFT(GDK_V) || CTRL_SHIFT(GDK_v)
// #define HOTKEY_SELECT_ALL            CTRL_SHIFT(GDK_S) || CTRL_SHIFT(GDK_s)
// #define HOTKEY_COLOR_BACKGROUND      CTRL_SHIFT(GDK_B) || CTRL_SHIFT(GDK_b)
// #define HOTKEY_EDIT_ENCODING         CTRL_SHIFT(GDK_U) || CTRL_SHIFT(GDK_u)
// #define HOTKEY_FONT_BIGGER           CTRL(GDK_KP_Add)
// #define HOTKEY_FONT_SMALLER          CTRL(GDK_KP_Subtract)
// #define HOTKEY_FONT_DEFAULT_SIZE     CTRL(GDK_KP_Insert)
// #define HOTKEY_FONT_SELECT           CTRL_SHIFT(GDK_F) || CTRL_SHIFT(GDK_f)
// #define HOTKEY_MIMIC_SCROLL_UP       CTRL_SHIFT(GDK_K) || CTRL_SHIFT(GDK_k)
// #define HOTKEY_MIMIC_SCROLL_DOWN     CTRL_SHIFT(GDK_J) || CTRL_SHIFT(GDK_j)
// #define HOTKEY_OPEN_NEW_WINDOW       CTRL_SHIFT(GDK_N) || CTRL_SHIFT(GDK_n)
// #define HOTKEY_RESET_TERMINAL        CTRL_SHIFT(GDK_R) || CTRL_SHIFT(GDK_r)
// #define HOTKEY_RESET_AND_CLEAR       CTRL_SHIFT(GDK_A) || CTRL_SHIFT(GDK_a)
// #define HOTKEY_SATURATION_DIALOG     CTRL_SHIFT(GDK_X) || CTRL_SHIFT(GDK_x)
// #define HOTKEY_SATURATION_MORE       CTRL(GDK_KP_Multiply)
// #define HOTKEY_SATURATION_LESS       CTRL(GDK_KP_Divide)
// #define HOTKEY_SCROLL_ONE_PAGE_UP    CTRL(GDK_k) || CTRL(GDK_K)
// #define HOTKEY_SCROLL_ONE_PAGE_DOWN  CTRL(GDK_j) || CTRL(GDK_J)
// #define HOTKEY_SEARCH_STRING         CTRL_SHIFT(GDK_Q) || CTRL_SHIFT(GDK_q)
// #define HOTKEY_SEARCH_PREVIOUS       CTRL_SHIFT(GDK_G) || CTRL_SHIFT(GDK_g)
// #define HOTKEY_SEARCH_NEXT           CTRL(GDK_g) || CTRL(GDK_G)
// #define        SEARCH_CASE_SENSITIVE TRUE
#define    HOTKEY_TAB_ADD               CTRL_SHIFT(GDK_T) || CTRL_SHIFT(GDK_t)
#define    HOTKEY_TAB_REMOVE            CTRL_SHIFT(GDK_W) || CTRL_SHIFT(GDK_w)
// #define    HOTKEY_TAB_PREVIOUS          CTRL(GDK_Page_Up)
// #define    HOTKEY_TAB_NEXT              CTRL(GDK_Page_Down)
// #define HOTKEY_TAB_FIRST             CTRL(GDK_Home)
// #define HOTKEY_TAB_LAST              CTRL(GDK_End)
// #define ALT_NUMBER_GO_TO_TAB_NUMBER  TRUE
#define CTRL_NUMBER_GO_TO_TAB_NUMBER TRUE
// #define HOTKEY_TAB_EDIT_LABEL        CTRL_SHIFT(GDK_E) || CTRL_SHIFT(GDK_e)
// #define HOTKEY_TOGGLE_ANTI_ALIAS     CTRL_SHIFT(GDK_L) || CTRL_SHIFT(GDK_l)
// #define HOTKEY_TOGGLE_DECORATED      CTRL(GDK_Left)
// #define HOTKEY_TOGGLE_FULLSCREEN     CTRL_SHIFT(GDK_M) || CTRL_SHIFT(GDK_m)
// #define HOTKEY_TOGGLE_HOTKEYS        CTRL(GDK_quoteleft)
// #define HOTKEY_TOGGLE_ON_TOP         CTRL_SHIFT(GDK_O) || CTRL_SHIFT(GDK_o)
// #define HOTKEY_TOGGLE_SCROLLBAR      CTRL(GDK_Right)
// #define HOTKEY_TOGGLE_STATUS_BAR     CTRL(GDK_Down)
// #define HOTKEY_TOGGLE_TABBAR         CTRL(GDK_Up)
// #define HOTKEY_TOGGLE_BACKGROUND     CTRL(GDK_KP_Delete)
// #define TOGGLE_BG_ORDER    "Image", "Transparent", "No background", "Opacity"

// #define LABEL_DEFAULT_ENCODING       "_Default Encoding"
// #define LABEL_DIALOG_BACKGROUND_TINT "_Background tint color"
// #define LABEL_DIALOG_CLOSE           "Do you really want to close it?"
// #define LABEL_DIALOG_SEARCH          "Find"
// #define LABEL_MENU_SATURATION        "_Adjust saturation"
// #define LABEL_MENU_TOGGLE_ANTI_ALIAS "_Toggle anti-alias"
// #define LABEL_MENU_TOGGLE_BG         "_Toggle background"
// #define LABEL_MENU_TOGGLE_DECORATED  "_Toggle window decorated"
// #define LABEL_MENU_TOGGLE_FULLSCREEN "_Toggle fullscreen"
// #define LABEL_MENU_TOGGLE_HOTKEYS    "_Toggle hotkeys locking"
// #define LABEL_MENU_TOGGLE_ON_TOP     "_Toggle always on top"
// #define LABEL_MENU_TOGGLE_SCROLLBAR  "_Toggle scrollbar"
// #define LABEL_MENU_TOGGLE_STATUS_BAR "_Toggle status bar"
// #define LABEL_MENU_TOGGLE_TABBAR     "_Toggle tabbar"
// #define LABEL_SUBMENU_ENCODING       "_Character Encoding"
// #define LABEL_SUBMENU_IME            "_Input Methods"
// #define GTK3_CSS                     "GtkNotebook GtkHBox GtkButton { -GtkWidget-focus-line-width: 0; } GtkNotebook GtkButton { border-width: 0; padding: 0; -GtkButton-inner-border: 0; } GtkWindow GtkNotebook { padding: 0; }"
coderarity commented 11 years ago

This happens with the default options too. I have tried using both Awesome and DWM as my window managers with the same results.

coderarity commented 11 years ago

To be more specific - it doesn't let me resize the window any smaller. I can make it bigger, just not smaller. If I use vte to start a terminal emulator, I can resize it fine. I've tried fluxbox too, it's definitely not resizing.

caleb- commented 11 years ago

Sorry for my late response. In short, this is the known bug of evilvte. I have no plan to fix it anytime soon. :-P

This strange behavior is because libVTE do not work well with GTK_NOTEBOOK. Other VTE-based terminal emulators has some workarounds for it. evilvte has too much different GTK layouts, so it is very difficult to support it with one or two simple workarounds.

If you like libVTE, please try lilyterm: http://lilyterm.luna.com.tw/index_en.html

madx commented 11 years ago

I also have this bug. This also prevents from using basic tiling in Gnome when the screen is too small.

Maybe this has something to do with size hints?

Also, why not dropping support for the old GTK2+ and focusing on GTK3? Maybe this could be done in a separate branch or in a fork.

caleb- commented 11 years ago

I did consider to separate GTK+2 and GTK+3 codes, and drop those dlopen() stuffs. However, I looooooooooooooooooove the dlopen() idea, and I use it happily. I do not want to maintain 2 or 3 similar codes (GTK+2 / GTK+3 / dlopen()), so I leave it as it is.

GinoCorazzi commented 11 years ago

A dirty workaround: "#define DEFAULT_TERMINAL_SIZE NxM", where N and M are two numbers. Mine is 10x10. In my experience, the window still opens with a reasonable size, but i can resize it (almost) as much as I want (the minimum size is the terminal on the upper left corner in the attached image)

screen