mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-31 09:40:19 +00:00
Compare commits
1 Commits
tab_close_
...
appimage-s
| Author | SHA1 | Date | |
|---|---|---|---|
| dbb6cb4b2c |
59
.github/workflows/appimage-build.yml
vendored
59
.github/workflows/appimage-build.yml
vendored
@@ -31,11 +31,14 @@ jobs:
|
|||||||
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \
|
libcanberra-dev libdbus-glib-1-dev libglib2.0-dev \
|
||||||
libarchive-dev \
|
libarchive-dev \
|
||||||
libgtk-3-dev \
|
libgtk-3-dev \
|
||||||
|
libenchant-2-2 enchant-2 \
|
||||||
|
libnuspell5 \
|
||||||
libwayland-client0 libwayland-cursor0 libwayland-egl1 \
|
libwayland-client0 libwayland-cursor0 libwayland-egl1 \
|
||||||
libxkbcommon0 \
|
libxkbcommon0 \
|
||||||
libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \
|
libgtk-3-bin libglib2.0-bin shared-mime-info gsettings-desktop-schemas \
|
||||||
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \
|
libluajit-5.1-dev libpci-dev libperl-dev libssl-dev libayatana-appindicator3-dev \
|
||||||
perl python3 python3-minimal python3-dev python3-cffi mono-devel desktop-file-utils \
|
perl python3 python3-minimal python3-dev python3-cffi mono-devel desktop-file-utils \
|
||||||
|
hunspell hunspell-en-us hunspell-en-gb hunspell-en-ca hunspell-es hunspell-fr hunspell-de-de hunspell-it hunspell-pt-br hunspell-ru hunspell-uk hunspell-nl hunspell-pl \
|
||||||
fonts-noto-color-emoji breeze-gtk-theme \
|
fonts-noto-color-emoji breeze-gtk-theme \
|
||||||
patchelf file curl
|
patchelf file curl
|
||||||
|
|
||||||
@@ -125,17 +128,68 @@ jobs:
|
|||||||
cp -a /usr/lib/gtk-3.0/modules AppDir/usr/lib/gtk-3.0/
|
cp -a /usr/lib/gtk-3.0/modules AppDir/usr/lib/gtk-3.0/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if compgen -G '/usr/lib/x86_64-linux-gnu/libenchant-2.so*' > /dev/null; then
|
||||||
|
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||||
|
cp -a /usr/lib/x86_64-linux-gnu/libenchant-2.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if compgen -G '/usr/lib/x86_64-linux-gnu/libgmodule-2.0.so*' > /dev/null; then
|
||||||
|
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||||
|
cp -a /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if compgen -G '/usr/lib/x86_64-linux-gnu/libnuspell.so*' > /dev/null; then
|
||||||
|
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||||
|
cp -a /usr/lib/x86_64-linux-gnu/libnuspell.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if compgen -G '/usr/lib/x86_64-linux-gnu/libhunspell-*.so*' > /dev/null; then
|
||||||
|
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||||
|
cp -a /usr/lib/x86_64-linux-gnu/libhunspell-*.so* AppDir/usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "/usr/lib/x86_64-linux-gnu/enchant-2" ]; then
|
||||||
|
install -d AppDir/usr/lib/x86_64-linux-gnu
|
||||||
|
cp -a /usr/lib/x86_64-linux-gnu/enchant-2 AppDir/usr/lib/x86_64-linux-gnu/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "/usr/share/enchant-2" ]; then
|
||||||
|
install -d AppDir/usr/share
|
||||||
|
cp -a /usr/share/enchant-2 AppDir/usr/share/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "/etc/enchant-2" ]; then
|
||||||
|
install -d AppDir/etc
|
||||||
|
cp -a /etc/enchant-2 AppDir/etc/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "/usr/share/hunspell" ]; then
|
||||||
|
install -d AppDir/usr/share
|
||||||
|
cp -a /usr/share/hunspell AppDir/usr/share/
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Verify bundled plugins
|
- name: Verify bundled plugins
|
||||||
run: |
|
run: |
|
||||||
set -eux
|
set -eux
|
||||||
|
|
||||||
# Include every built-in plugin except the Windows-only update plugin.
|
|
||||||
find AppDir/usr/lib -maxdepth 4 -type f -name '*.so' -path '*/zoitechat/plugins/*' -print | sort
|
find AppDir/usr/lib -maxdepth 4 -type f -name '*.so' -path '*/zoitechat/plugins/*' -print | sort
|
||||||
|
|
||||||
for plugin in checksum fishlim lua perl python sysinfo; do
|
for plugin in checksum fishlim lua perl python sysinfo; do
|
||||||
find "AppDir/usr/lib" -maxdepth 4 -type f -name "${plugin}.so" -path '*/zoitechat/plugins/*' -print -quit | grep -q .
|
find "AppDir/usr/lib" -maxdepth 4 -type f -name "${plugin}.so" -path '*/zoitechat/plugins/*' -print -quit | grep -q .
|
||||||
done
|
done
|
||||||
|
|
||||||
|
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 \( -type f -o -type l \) -name 'libenchant-2.so*' -print -quit | grep -q .
|
||||||
|
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 \( -type f -o -type l \) -name 'libgmodule-2.0.so*' -print -quit | grep -q .
|
||||||
|
find AppDir/usr/lib/x86_64-linux-gnu -maxdepth 1 -type f -name 'libhunspell-*.so*' -print -quit | grep -q .
|
||||||
|
find AppDir/usr/lib/x86_64-linux-gnu/enchant-2 -maxdepth 1 -type f -name '*hunspell*.so*' -print -quit | grep -q .
|
||||||
|
test -f AppDir/usr/share/hunspell/en_CA.dic
|
||||||
|
test -f AppDir/usr/share/hunspell/en_CA.aff
|
||||||
|
test -d AppDir/usr/share/enchant-2
|
||||||
|
ldd -r AppDir/usr/lib/x86_64-linux-gnu/libenchant-2.so.2 | tee /tmp/ldd-enchant.txt
|
||||||
|
if grep -q 'undefined symbol' /tmp/ldd-enchant.txt; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Build AppImage
|
- name: Build AppImage
|
||||||
env:
|
env:
|
||||||
APPIMAGE_EXTRACT_AND_RUN: 1
|
APPIMAGE_EXTRACT_AND_RUN: 1
|
||||||
@@ -167,6 +221,9 @@ jobs:
|
|||||||
export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
export XDG_DATA_DIRS="$APPDIR/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||||||
export GTK_EXE_PREFIX="$APPDIR/usr"
|
export GTK_EXE_PREFIX="$APPDIR/usr"
|
||||||
export GTK_DATA_PREFIX="$APPDIR/usr"
|
export GTK_DATA_PREFIX="$APPDIR/usr"
|
||||||
|
export ENCHANT_PREFIX="$APPDIR/usr"
|
||||||
|
export DICPATH="$APPDIR/usr/share/hunspell${DICPATH:+:$DICPATH}"
|
||||||
|
export ENCHANT_CONFIG_DIR="$APPDIR/etc/enchant-2"
|
||||||
gtk_path_entries=""
|
gtk_path_entries=""
|
||||||
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0" ]; then
|
if [ -d "$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0" ]; then
|
||||||
gtk_path_entries="$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0"
|
gtk_path_entries="$APPDIR/usr/lib/x86_64-linux-gnu/gtk-3.0"
|
||||||
|
|||||||
@@ -445,7 +445,6 @@ const struct prefs vars[] =
|
|||||||
{"gui_dark_mode", P_OFFINT (hex_gui_dark_mode), TYPE_INT},
|
{"gui_dark_mode", P_OFFINT (hex_gui_dark_mode), TYPE_INT},
|
||||||
{"gui_gtk3_variant", P_OFFINT (hex_gui_gtk3_variant), TYPE_INT},
|
{"gui_gtk3_variant", P_OFFINT (hex_gui_gtk3_variant), TYPE_INT},
|
||||||
{"gui_tab_layout", P_OFFINT (hex_gui_tab_layout), TYPE_INT},
|
{"gui_tab_layout", P_OFFINT (hex_gui_tab_layout), TYPE_INT},
|
||||||
{"gui_tab_closebuttons", P_OFFINT (hex_gui_tab_closebuttons), TYPE_BOOL},
|
|
||||||
{"gui_tab_middleclose", P_OFFINT (hex_gui_tab_middleclose), TYPE_BOOL},
|
{"gui_tab_middleclose", P_OFFINT (hex_gui_tab_middleclose), TYPE_BOOL},
|
||||||
{"gui_tab_newtofront", P_OFFINT (hex_gui_tab_newtofront), TYPE_INT},
|
{"gui_tab_newtofront", P_OFFINT (hex_gui_tab_newtofront), TYPE_INT},
|
||||||
{"gui_tab_pos", P_OFFINT (hex_gui_tab_pos), TYPE_INT},
|
{"gui_tab_pos", P_OFFINT (hex_gui_tab_pos), TYPE_INT},
|
||||||
@@ -778,7 +777,6 @@ load_default_config(void)
|
|||||||
prefs.hex_gui_tab_chans = 1;
|
prefs.hex_gui_tab_chans = 1;
|
||||||
prefs.hex_gui_tab_dialogs = 1;
|
prefs.hex_gui_tab_dialogs = 1;
|
||||||
prefs.hex_gui_tab_icons = 1;
|
prefs.hex_gui_tab_icons = 1;
|
||||||
prefs.hex_gui_tab_closebuttons = 1;
|
|
||||||
prefs.hex_gui_tab_middleclose = 1;
|
prefs.hex_gui_tab_middleclose = 1;
|
||||||
prefs.hex_gui_tab_server = 1;
|
prefs.hex_gui_tab_server = 1;
|
||||||
prefs.hex_gui_tab_sort = 1;
|
prefs.hex_gui_tab_sort = 1;
|
||||||
|
|||||||
@@ -265,7 +265,6 @@ struct zoitechatprefs
|
|||||||
int hex_gui_search_pos;
|
int hex_gui_search_pos;
|
||||||
int hex_gui_slist_select;
|
int hex_gui_slist_select;
|
||||||
int hex_gui_tab_layout;
|
int hex_gui_tab_layout;
|
||||||
int hex_gui_tab_closebuttons;
|
|
||||||
int hex_gui_tab_middleclose;
|
int hex_gui_tab_middleclose;
|
||||||
int hex_gui_tab_newtofront;
|
int hex_gui_tab_newtofront;
|
||||||
int hex_gui_tab_pos;
|
int hex_gui_tab_pos;
|
||||||
|
|||||||
@@ -653,7 +653,7 @@ tab_click_cb (GtkWidget *wid, GdkEventButton *event, chan *ch)
|
|||||||
if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
|
if (event->button == 1 && event->type == GDK_BUTTON_PRESS)
|
||||||
{
|
{
|
||||||
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
||||||
if (prefs.hex_gui_tab_closebuttons && close_button &&
|
if (close_button &&
|
||||||
gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y))
|
gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y))
|
||||||
{
|
{
|
||||||
gtk_widget_get_allocation (close_button, &close_alloc);
|
gtk_widget_get_allocation (close_button, &close_alloc);
|
||||||
@@ -679,7 +679,7 @@ tab_close_motion_cb (GtkWidget *wid, GdkEventMotion *event, chan *ch)
|
|||||||
gboolean hover = FALSE;
|
gboolean hover = FALSE;
|
||||||
|
|
||||||
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
||||||
if (prefs.hex_gui_tab_closebuttons && close_button &&
|
if (close_button &&
|
||||||
gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y))
|
gtk_widget_translate_coordinates (close_button, wid, 0, 0, &close_x, &close_y))
|
||||||
{
|
{
|
||||||
gtk_widget_get_allocation (close_button, &close_alloc);
|
gtk_widget_get_allocation (close_button, &close_alloc);
|
||||||
@@ -714,7 +714,7 @@ tab_close_leave_cb (GtkWidget *wid, GdkEventCrossing *event, chan *ch)
|
|||||||
GtkWidget *close_button;
|
GtkWidget *close_button;
|
||||||
|
|
||||||
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
close_button = g_object_get_data (G_OBJECT (wid), "tab-close-button");
|
||||||
if (prefs.hex_gui_tab_closebuttons && close_button)
|
if (close_button)
|
||||||
gtk_widget_unset_state_flags (close_button, GTK_STATE_FLAG_PRELIGHT);
|
gtk_widget_unset_state_flags (close_button, GTK_STATE_FLAG_PRELIGHT);
|
||||||
if (gtk_widget_get_window (wid))
|
if (gtk_widget_get_window (wid))
|
||||||
gdk_window_set_cursor (gtk_widget_get_window (wid), NULL);
|
gdk_window_set_cursor (gtk_widget_get_window (wid), NULL);
|
||||||
@@ -780,8 +780,6 @@ cv_tabs_add (chanview *cv, chan *ch, char *name, GtkTreeIter *parent)
|
|||||||
G_CALLBACK (tab_toggled_cb), ch);
|
G_CALLBACK (tab_toggled_cb), ch);
|
||||||
g_object_set_data (G_OBJECT (but), "u", ch->userdata);
|
g_object_set_data (G_OBJECT (but), "u", ch->userdata);
|
||||||
gtk_widget_show_all (hbox);
|
gtk_widget_show_all (hbox);
|
||||||
if (!prefs.hex_gui_tab_closebuttons)
|
|
||||||
gtk_widget_hide (close_button);
|
|
||||||
|
|
||||||
tab_add_real (cv, but, ch);
|
tab_add_real (cv, but, ch);
|
||||||
|
|
||||||
|
|||||||
@@ -330,7 +330,6 @@ static const setting tabs_settings[] =
|
|||||||
{ST_TOGGLE, N_("Show icons in the channel tree"), P_OFFINTNL(hex_gui_tab_icons), 0, 0, 0},
|
{ST_TOGGLE, N_("Show icons in the channel tree"), P_OFFINTNL(hex_gui_tab_icons), 0, 0, 0},
|
||||||
{ST_TOGGLE, N_("Show dotted lines in the channel tree"), P_OFFINTNL(hex_gui_tab_dots), 0, 0, 0},
|
{ST_TOGGLE, N_("Show dotted lines in the channel tree"), P_OFFINTNL(hex_gui_tab_dots), 0, 0, 0},
|
||||||
{ST_TOGGLE, N_("Scroll mouse-wheel to change tabs"), P_OFFINTNL (hex_gui_tab_scrollchans), 0, 0, 0},
|
{ST_TOGGLE, N_("Scroll mouse-wheel to change tabs"), P_OFFINTNL (hex_gui_tab_scrollchans), 0, 0, 0},
|
||||||
{ST_TOGGLE, N_("Show close button on tabs"), P_OFFINTNL(hex_gui_tab_closebuttons), 0, 0, 0},
|
|
||||||
{ST_TOGGLE, N_("Middle click to close tab"), P_OFFINTNL(hex_gui_tab_middleclose), 0, 0, 0},
|
{ST_TOGGLE, N_("Middle click to close tab"), P_OFFINTNL(hex_gui_tab_middleclose), 0, 0, 0},
|
||||||
{ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(hex_gui_tab_small), 0, 0, 0},
|
{ST_TOGGLE, N_("Smaller text"), P_OFFINTNL(hex_gui_tab_small), 0, 0, 0},
|
||||||
{ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(hex_gui_tab_newtofront), 0, focusnewtabsmenu, 0},
|
{ST_MENU, N_("Focus new tabs:"), P_OFFINTNL(hex_gui_tab_newtofront), 0, focusnewtabsmenu, 0},
|
||||||
@@ -2187,8 +2186,6 @@ setup_apply (struct zoitechatprefs *pr)
|
|||||||
noapply = TRUE;
|
noapply = TRUE;
|
||||||
if (DIFF (hex_gui_tab_icons))
|
if (DIFF (hex_gui_tab_icons))
|
||||||
noapply = TRUE;
|
noapply = TRUE;
|
||||||
if (DIFF (hex_gui_tab_closebuttons))
|
|
||||||
noapply = TRUE;
|
|
||||||
if (DIFF (hex_gui_tab_server))
|
if (DIFF (hex_gui_tab_server))
|
||||||
noapply = TRUE;
|
noapply = TRUE;
|
||||||
if (DIFF (hex_gui_tab_small))
|
if (DIFF (hex_gui_tab_small))
|
||||||
|
|||||||
Reference in New Issue
Block a user