diff options
Diffstat (limited to 'src/remmina_pref.h')
-rw-r--r-- | src/remmina_pref.h | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/src/remmina_pref.h b/src/remmina_pref.h new file mode 100644 index 0000000..a0be42f --- /dev/null +++ b/src/remmina_pref.h @@ -0,0 +1,295 @@ +/* + * Remmina - The GTK+ Remote Desktop Client + * Copyright (C) 2009-2011 Vic Lee + * Copyright (C) 2014-2015 Antenore Gatta, Fabio Castelli, Giovanni Panozzo + * Copyright (C) 2016-2022 Antenore Gatta, Giovanni Panozzo + * Copyright (C) 2022-2023 Antenore Gatta, Giovanni Panozzo, Hiroyuki Tanaka + * Copyright (C) 2023-2024 Hiroyuki Tanaka, Sunil Bhat + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of portions of this program with the + * OpenSSL library under certain conditions as described in each + * individual source file, and distribute linked combinations + * including the two. + * You must obey the GNU General Public License in all respects + * for all of the code used other than OpenSSL. * If you modify + * file(s) with this exception, you may extend this exception to your + * version of the file(s), but you are not obligated to do so. * If you + * do not wish to do so, delete this exception statement from your + * version. * If you delete this exception statement from all source + * files in the program, then also delete it here. + * + */ + +#pragma once +#include <gtk/gtk.h> +#include "remmina_sodium.h" + +#ifdef HAVE_LIBGCRYPT +#include <gcrypt.h> +#endif + + +/* + * Remmina Preference Loader + */ + +G_BEGIN_DECLS + +enum { + REMMINA_VIEW_FILE_LIST, + REMMINA_VIEW_FILE_TREE +}; + +enum { + REMMINA_ACTION_CONNECT = 0, + REMMINA_ACTION_EDIT = 1 +}; + +enum { + UNDEFINED_MODE = 0, + SCROLLED_WINDOW_MODE = 1, + FULLSCREEN_MODE = 2, + SCROLLED_FULLSCREEN_MODE = 3, + VIEWPORT_FULLSCREEN_MODE = 4 +}; + +enum { + FLOATING_TOOLBAR_PLACEMENT_TOP = 0, + FLOATING_TOOLBAR_PLACEMENT_BOTTOM = 1 +}; + +enum { + TOOLBAR_PLACEMENT_TOP = 0, + TOOLBAR_PLACEMENT_RIGHT = 1, + TOOLBAR_PLACEMENT_BOTTOM = 2, + TOOLBAR_PLACEMENT_LEFT = 3 +}; + +enum { + REMMINA_TAB_BY_GROUP = 0, + REMMINA_TAB_BY_PROTOCOL = 1, + REMMINA_TAB_ALL = 2, + REMMINA_TAB_NONE = 3 +}; + +/* Remember to add the id 0, 4 and 5 in the remmina pref editor */ +enum { + RM_ENC_MODE_SECRET = 0, /* Using libsecret */ + RM_ENC_MODE_SODIUM_INTERACTIVE = 1, /* Using libsodium */ + RM_ENC_MODE_SODIUM_MODERATE = 2, /* Using libsodium */ + RM_ENC_MODE_SODIUM_SENSITIVE = 3, /* Using libsodium */ + RM_ENC_MODE_GCRYPT = 4, /* Using GCrypt */ + RM_ENC_MODE_NONE = 5 /* No encryption */ +}; + +enum { + FLOATING_TOOLBAR_VISIBILITY_PEEKING = 0, + FLOATING_TOOLBAR_VISIBILITY_INVISIBLE = 1, //"Invisible" corresponds to the "Hidden" option in the drop-down + FLOATING_TOOLBAR_VISIBILITY_DISABLE = 2 +}; + +typedef struct _RemminaColorPref { + /* Color palette for VTE terminal */ + gchar * background; + gchar * cursor; + gchar * cursor_foreground; + gchar * highlight; + gchar * highlight_foreground; + gchar * colorBD; + gchar * foreground; + gchar * color0; + gchar * color1; + gchar * color2; + gchar * color3; + gchar * color4; + gchar * color5; + gchar * color6; + gchar * color7; + gchar * color8; + gchar * color9; + gchar * color10; + gchar * color11; + gchar * color12; + gchar * color13; + gchar * color14; + gchar * color15; +} RemminaColorPref; + +typedef struct _RemminaPref { + /* In RemminaPrefDialog options tab */ + const gchar * datadir_path; + const gchar * remmina_file_name; + const gchar * screenshot_path; + gboolean deny_screenshot_clipboard; + const gchar * screenshot_name; + gboolean save_view_mode; + gint default_action; + gint scale_quality; + gint auto_scroll_step; + gint recent_maximum; + gchar * resolutions; + gchar * keystrokes; + gboolean confirm_close; + /* In RemminaPrefDialog appearance tab */ + gboolean dark_theme; + gboolean list_refresh_workaround; + gboolean fullscreen_on_auto; + gboolean always_show_tab; + gboolean always_show_notes; + gboolean hide_connection_toolbar; + gboolean hide_searchbar; + gint default_mode; + gint tab_mode; + gint fullscreen_toolbar_visibility; + const gchar * grab_color; + gboolean grab_color_switch; + /* In RemminaPrefDialog applet tab */ + gboolean applet_new_ontop; + gboolean applet_hide_count; + gboolean disable_tray_icon; + /* In RemminaPrefDialog SSH Option tab */ + gint ssh_loglevel; + gboolean ssh_parseconfig; + gint sshtunnel_port; + gint ssh_tcp_keepidle; + gint ssh_tcp_keepintvl; + gint ssh_tcp_keepcnt; + gint ssh_tcp_usrtimeout; + /* In RemminaPrefDialog keyboard tab */ + guint hostkey; + guint shortcutkey_fullscreen; + guint shortcutkey_autofit; + guint shortcutkey_prevtab; + guint shortcutkey_clipboard; + guint shortcutkey_nexttab; + guint shortcutkey_dynres; + guint shortcutkey_scale; + guint shortcutkey_multimon; + guint shortcutkey_grab; + guint shortcutkey_viewonly; + guint shortcutkey_screenshot; + guint shortcutkey_minimize; + guint shortcutkey_disconnect; + guint shortcutkey_toolbar; + /* In RemminaPrefDialog security tab */ + gboolean use_primary_password; + const gchar * unlock_password; + const gchar * unlock_repassword; + gint unlock_timeout; + gboolean lock_connect; + gboolean lock_edit; + gboolean lock_view_passwords; + gint enc_mode; + gboolean audit; + gboolean trust_all; + /* In RemminaPrefDialog terminal tab */ + gchar * vte_font; + gboolean vte_allow_bold_text; + gboolean vte_system_colors; + gint vte_lines; + guint vte_shortcutkey_copy; + guint vte_shortcutkey_paste; + guint vte_shortcutkey_select_all; + guint vte_shortcutkey_increase_font; + guint vte_shortcutkey_decrease_font; + guint vte_shortcutkey_search_text; + /* In View menu */ + gboolean hide_toolbar; + gboolean small_toolbutton; + gint view_file_mode; + /* In tray icon */ + gboolean applet_enable_avahi; + /* Auto */ + gint main_width; + gint main_height; + gboolean main_maximize; + gint main_sort_column_id; + gint main_sort_order; + gchar * expanded_group; + gboolean toolbar_pin_down; + gint floating_toolbar_placement; + gint toolbar_placement; + gboolean prevent_snap_welcome_message; + gchar * last_quickconnect_protocol; + + /* Crypto */ + gchar * secret; + + /* UID */ + gchar * uid; + + RemminaColorPref color_pref; + + /* Usage stats */ + gboolean disable_stats; + gchar * info_uid_prefix; + + /* Remmina news */ + gboolean disable_news; + gchar * periodic_news_last_checksum; + + gboolean disable_tip; + +} RemminaPref; + +#define DEFAULT_SSH_PARSECONFIG TRUE +#define DEFAULT_SSHTUNNEL_PORT 4732 +#define DEFAULT_SSH_PORT 22 +#define DEFAULT_SSH_LOGLEVEL 1 +#define SSH_SOCKET_TCP_KEEPIDLE 20 +#define SSH_SOCKET_TCP_KEEPINTVL 10 +#define SSH_SOCKET_TCP_KEEPCNT 3 +#define SSH_SOCKET_TCP_USER_TIMEOUT 60000 // 60 seconds + +extern const gchar *default_resolutions; +extern gchar *remmina_pref_file; +extern gchar *remmina_colors_file; +extern RemminaPref remmina_pref; +extern gboolean disabletoolbar; +extern gboolean fullscreen; +extern gboolean extrahardening; +extern gboolean disabletrayicon; + +void remmina_pref_init(void); +gboolean remmina_pref_is_rw(void); +gboolean remmina_pref_save(void); + +void remmina_pref_add_recent(const gchar *protocol, const gchar *server); +gchar *remmina_pref_get_recent(const gchar *protocol); +void remmina_pref_clear_recent(void); + +guint *remmina_pref_keymap_get_table(const gchar *keymap); +guint remmina_pref_keymap_get_keyval(const gchar *keymap, guint keyval); +gchar **remmina_pref_keymap_groups(void); + +gint remmina_pref_get_scale_quality(void); +gint remmina_pref_get_ssh_loglevel(void); +gboolean remmina_pref_get_ssh_parseconfig(void); +gint remmina_pref_get_sshtunnel_port(void); +void remmina_pref_file_load_colors(GKeyFile *gkeyfile, RemminaColorPref *color_pref); +gint remmina_pref_get_ssh_tcp_keepidle(void); +gint remmina_pref_get_ssh_tcp_keepintvl(void); +gint remmina_pref_get_ssh_tcp_keepcnt(void); +gint remmina_pref_get_ssh_tcp_usrtimeout(void); + +void remmina_pref_set_value(const gchar *key, const gchar *value); +gchar *remmina_pref_get_value(const gchar *key); +gboolean remmina_pref_get_boolean(const gchar *key); + +G_END_DECLS |