1 /* 2 * Copyright © 2001 Havoc Pennington 3 * Copyright © 2002 Mathias Hasselmann 4 * Copyright © 2008 Christian Persch 5 * Copyright (C) 2012-2021 MATE Developers 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Library General Public 9 * License as published by the Free Software Foundation; either 10 * version 3 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Library General Public License for more details. 16 * 17 * You should have received a copy of the GNU Library General Public 18 * License along with this library; if not, write to the 19 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef TERMINAL_PROFILE_H 24 #define TERMINAL_PROFILE_H 25 26 #include <gtk/gtk.h> 27 28 G_BEGIN_DECLS 29 30 typedef enum 31 { 32 /* this has to be kept in sync with the option menu in the profile editor UI file */ 33 TERMINAL_TITLE_REPLACE, 34 TERMINAL_TITLE_BEFORE, 35 TERMINAL_TITLE_AFTER, 36 TERMINAL_TITLE_IGNORE 37 } TerminalTitleMode; 38 39 typedef enum 40 { 41 TERMINAL_SCROLLBAR_LEFT, 42 TERMINAL_SCROLLBAR_RIGHT, 43 TERMINAL_SCROLLBAR_HIDDEN 44 } TerminalScrollbarPosition; 45 46 typedef enum 47 { 48 TERMINAL_EXIT_CLOSE, 49 TERMINAL_EXIT_RESTART, 50 TERMINAL_EXIT_HOLD 51 } TerminalExitAction; 52 53 typedef enum 54 { 55 TERMINAL_BACKGROUND_SOLID, 56 TERMINAL_BACKGROUND_IMAGE, 57 TERMINAL_BACKGROUND_TRANSPARENT 58 } TerminalBackgroundType; 59 60 #define TERMINAL_PALETTE_SIZE 16 61 62 #define TERMINAL_PALETTE_TANGO 0 63 #define TERMINAL_PALETTE_LINUX 1 64 #define TERMINAL_PALETTE_XTERM 2 65 #define TERMINAL_PALETTE_RXVT 3 66 #define TERMINAL_PALETTE_SOLARIZED 4 67 #define TERMINAL_PALETTE_N_BUILTINS 5 68 69 /* Property names */ 70 #define TERMINAL_PROFILE_ALLOW_BOLD "allow-bold" 71 #define TERMINAL_PROFILE_BACKGROUND_COLOR "background-color" 72 #define TERMINAL_PROFILE_BACKGROUND_DARKNESS "background-darkness" 73 #define TERMINAL_PROFILE_BACKGROUND_IMAGE "background-image" 74 #define TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE "background-image-file" 75 #define TERMINAL_PROFILE_BACKGROUND_TYPE "background-type" 76 #define TERMINAL_PROFILE_BACKSPACE_BINDING "backspace-binding" 77 #define TERMINAL_PROFILE_BOLD_COLOR "bold-color" 78 #define TERMINAL_PROFILE_BOLD_COLOR_SAME_AS_FG "bold-color-same-as-fg" 79 #define TERMINAL_PROFILE_CURSOR_BLINK_MODE "cursor-blink-mode" 80 #define TERMINAL_PROFILE_CURSOR_SHAPE "cursor-shape" 81 #define TERMINAL_PROFILE_CUSTOM_COMMAND "custom-command" 82 #define TERMINAL_PROFILE_DEFAULT_SHOW_MENUBAR "default-show-menubar" 83 #define TERMINAL_PROFILE_DEFAULT_SIZE_COLUMNS "default-size-columns" 84 #define TERMINAL_PROFILE_DEFAULT_SIZE_ROWS "default-size-rows" 85 #define TERMINAL_PROFILE_DELETE_BINDING "delete-binding" 86 #define TERMINAL_PROFILE_EXIT_ACTION "exit-action" 87 #define TERMINAL_PROFILE_FONT "font" 88 #define TERMINAL_PROFILE_FOREGROUND_COLOR "foreground-color" 89 #define TERMINAL_PROFILE_LOGIN_SHELL "login-shell" 90 #define TERMINAL_PROFILE_NAME "name" 91 #define TERMINAL_PROFILE_PALETTE "palette" 92 #define TERMINAL_PROFILE_SCROLL_BACKGROUND "scroll-background" 93 #define TERMINAL_PROFILE_SCROLLBACK_LINES "scrollback-lines" 94 #define TERMINAL_PROFILE_SCROLLBACK_UNLIMITED "scrollback-unlimited" 95 #define TERMINAL_PROFILE_SCROLLBAR_POSITION "scrollbar-position" 96 #define TERMINAL_PROFILE_SCROLL_ON_KEYSTROKE "scroll-on-keystroke" 97 #define TERMINAL_PROFILE_SCROLL_ON_OUTPUT "scroll-on-output" 98 #define TERMINAL_PROFILE_SILENT_BELL "silent-bell" 99 #define TERMINAL_PROFILE_COPY_SELECTION "copy-selection" 100 #define TERMINAL_PROFILE_TITLE_MODE "title-mode" 101 #define TERMINAL_PROFILE_TITLE "title" 102 #define TERMINAL_PROFILE_USE_CUSTOM_COMMAND "use-custom-command" 103 #define TERMINAL_PROFILE_USE_CUSTOM_DEFAULT_SIZE "use-custom-default-size" 104 #define TERMINAL_PROFILE_USE_SKEY "use-skey" 105 #define TERMINAL_PROFILE_USE_URLS "use-urls" 106 #define TERMINAL_PROFILE_USE_SYSTEM_FONT "use-system-font" 107 #define TERMINAL_PROFILE_USE_THEME_COLORS "use-theme-colors" 108 #define TERMINAL_PROFILE_VISIBLE_NAME "visible-name" 109 #define TERMINAL_PROFILE_WORD_CHARS "word-chars" 110 111 /* TerminalProfile object */ 112 113 #define TERMINAL_TYPE_PROFILE (terminal_profile_get_type ()) 114 #define TERMINAL_PROFILE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), TERMINAL_TYPE_PROFILE, TerminalProfile)) 115 #define TERMINAL_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TERMINAL_TYPE_PROFILE, TerminalProfileClass)) 116 #define TERMINAL_IS_PROFILE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), TERMINAL_TYPE_PROFILE)) 117 #define TERMINAL_IS_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TERMINAL_TYPE_PROFILE)) 118 #define TERMINAL_PROFILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TERMINAL_TYPE_PROFILE, TerminalProfileClass)) 119 120 typedef struct _TerminalProfile TerminalProfile; 121 typedef struct _TerminalProfileClass TerminalProfileClass; 122 typedef struct _TerminalProfilePrivate TerminalProfilePrivate; 123 124 struct _TerminalProfile 125 { 126 GObject parent_instance; 127 128 TerminalProfilePrivate *priv; 129 }; 130 131 struct _TerminalProfileClass 132 { 133 GObjectClass parent_class; 134 135 void (* forgotten) (TerminalProfile *profile); 136 137 GHashTable *gsettings_keys; 138 }; 139 140 GType terminal_profile_get_type (void); 141 142 TerminalProfile* _terminal_profile_new (const char *name); 143 144 void _terminal_profile_forget (TerminalProfile *profile); 145 146 gboolean _terminal_profile_get_forgotten (TerminalProfile *profile); 147 148 TerminalProfile* _terminal_profile_clone (TerminalProfile *base_profile, 149 const char *visible_name); 150 151 gboolean terminal_profile_property_locked (TerminalProfile *profile, 152 const char *prop_name); 153 154 void terminal_profile_reset_property (TerminalProfile *profile, 155 const char *prop_name); 156 157 gboolean terminal_profile_get_property_boolean (TerminalProfile *profile, 158 const char *prop_name); 159 160 gconstpointer terminal_profile_get_property_boxed (TerminalProfile *profile, 161 const char *prop_name); 162 163 double terminal_profile_get_property_double (TerminalProfile *profile, 164 const char *prop_name); 165 166 int terminal_profile_get_property_enum (TerminalProfile *profile, 167 const char *prop_name); 168 169 int terminal_profile_get_property_int (TerminalProfile *profile, 170 const char *prop_name); 171 172 gpointer terminal_profile_get_property_object (TerminalProfile *profile, 173 const char *prop_name); 174 175 const char* terminal_profile_get_property_string (TerminalProfile *profile, 176 const char *prop_name); 177 178 gboolean terminal_profile_get_palette (TerminalProfile *profile, 179 GdkRGBA *colors, 180 guint *n_colors); 181 182 gboolean terminal_profile_get_palette_is_builtin (TerminalProfile *profile, 183 guint *n); 184 185 void terminal_profile_set_palette_builtin (TerminalProfile *profile, 186 guint n); 187 188 gboolean terminal_profile_modify_palette_entry (TerminalProfile *profile, 189 guint i, 190 const GdkRGBA *color); 191 192 G_END_DECLS 193 194 #endif /* TERMINAL_PROFILE_H */ 195