⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 xmms-1.2.10.tar.gz学习使用的就下吧
💻 C
📖 第 1 页 / 共 5 页
字号:
/*  XMMS - Cross-platform multimedia player *  Copyright (C) 1998-2003  Peter Alm, Mikael Alm, Olle Hallnas, *                           Thomas Nilsson and 4Front Technologies *  Copyright (C) 1999-2004  Haavard Kvaalen * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public Licensse 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "xmms.h"#include <gdk/gdkx.h>#include <gdk/gdk.h>#include <X11/Xlib.h>#include <X11/Xatom.h>#include <getopt.h>#include <signal.h>#include <ctype.h>#ifdef HAVE_SCHED_H# include <sched.h>#elif defined HAVE_SYS_SCHED_H# include <sys/sched.h>#endif#include "libxmms/configfile.h"#include "libxmms/xmmsctrl.h"#include "libxmms/util.h"#include "libxmms/dirbrowser.h"#include "xmms_mini.xpm"GtkWidget *mainwin, *mainwin_url_window = NULL, *mainwin_dir_browser = NULL;GtkWidget *mainwin_jtt = NULL, *mainwin_jtf = NULL;GtkItemFactory *mainwin_options_menu, *mainwin_songname_menu, *mainwin_vis_menu;GtkItemFactory *mainwin_general_menu;GdkPixmap *mainwin_bg = NULL, *mainwin_bg_dblsize;GdkGC *mainwin_gc;GtkAccelGroup *mainwin_accel;gboolean mainwin_focus = FALSE;gboolean setting_volume = FALSE;gint mainwin_timeout_tag;PButton *mainwin_menubtn, *mainwin_minimize, *mainwin_shade, *mainwin_close;PButton *mainwin_rew, *mainwin_play, *mainwin_pause, *mainwin_stop, *mainwin_fwd,       *mainwin_eject;SButton *mainwin_srew, *mainwin_splay, *mainwin_spause, *mainwin_sstop,       *mainwin_sfwd, *mainwin_seject, *mainwin_about;TButton *mainwin_shuffle, *mainwin_repeat, *mainwin_eq, *mainwin_pl;TextBox *mainwin_info, *mainwin_rate_text, *mainwin_freq_text, *mainwin_stime_min,       *mainwin_stime_sec;MenuRow *mainwin_menurow;HSlider *mainwin_volume, *mainwin_balance, *mainwin_position, *mainwin_sposition = NULL;MonoStereo *mainwin_monostereo;PlayStatus *mainwin_playstatus;Number *mainwin_minus_num, *mainwin_10min_num, *mainwin_min_num, *mainwin_10sec_num,      *mainwin_sec_num;Vis *mainwin_vis;SVis *mainwin_svis;GList *mainwin_wlist = NULL;GList *disabled_iplugins = NULL;GList *dock_window_list = NULL;static int bitrate = 0, frequency = 0, numchannels = 0;Config cfg;static gboolean mainwin_force_redraw = FALSE;static gchar *mainwin_title_text = NULL;static gboolean mainwin_info_text_locked = FALSE;/* For x11r5 session management */static char **restart_argv;static int restart_argc;Vis *active_vis;static GdkBitmap *nullmask;static gint balance;gboolean pposition_broken = FALSE;static pthread_mutex_t title_mutex = PTHREAD_MUTEX_INITIALIZER;extern gchar *plugin_dir_list[];enum{	VOLSET_STARTUP, VOLSET_UPDATE, VOLUME_ADJUSTED, VOLUME_SET};void read_volume(gint when);const GtkTargetEntry _xmms_drop_types[] ={	{"text/plain",			0,	XMMS_DROP_PLAINTEXT},	{"text/uri-list",		0,	XMMS_DROP_URLENCODED},	{"STRING",			0,	XMMS_DROP_STRING}};void mainwin_options_menu_callback(gpointer cb_data, guint action, GtkWidget * w);void mainwin_volume_motioncb(gint pos);static void set_timer_mode_menu_cb(TimerMode mode);enum{	MAINWIN_OPT_PREFS, MAINWIN_OPT_SKIN, MAINWIN_OPT_RELOADSKIN,	MAINWIN_OPT_REPEAT, MAINWIN_OPT_SHUFFLE, MAINWIN_OPT_NPA,	MAINWIN_OPT_TELAPSED, MAINWIN_OPT_TREMAINING, MAINWIN_OPT_ALWAYS,	MAINWIN_OPT_STICKY, MAINWIN_OPT_WS, MAINWIN_OPT_PWS,	MAINWIN_OPT_EQWS, MAINWIN_OPT_DOUBLESIZE, MAINWIN_OPT_EASY_MOVE};GtkItemFactoryEntry mainwin_options_menu_entries[] ={	{N_("/Preferences"), "<control>P", mainwin_options_menu_callback, MAINWIN_OPT_PREFS, "<Item>"},	{N_("/Skin Browser"), "<alt>S", mainwin_options_menu_callback, MAINWIN_OPT_SKIN, "<Item>"},	{N_("/Reload skin"), "F5", mainwin_options_menu_callback, MAINWIN_OPT_RELOADSKIN, "<Item>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Repeat"), "R", mainwin_options_menu_callback, MAINWIN_OPT_REPEAT, "<ToggleItem>"},	{N_("/Shuffle"), "S", mainwin_options_menu_callback, MAINWIN_OPT_SHUFFLE, "<ToggleItem>"},	{N_("/No Playlist Advance"), "<control>N", mainwin_options_menu_callback, MAINWIN_OPT_NPA, "<ToggleItem>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Time Elapsed"), "<control>E", mainwin_options_menu_callback, MAINWIN_OPT_TELAPSED, "<RadioItem>"},	{N_("/Time Remaining"), "<control>R", mainwin_options_menu_callback, MAINWIN_OPT_TREMAINING, "/Time Elapsed"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Always On Top"), "<control>A", mainwin_options_menu_callback, MAINWIN_OPT_ALWAYS, "<ToggleItem>"},	{N_("/Show on all desktops"), "<control>S", mainwin_options_menu_callback, MAINWIN_OPT_STICKY, "<ToggleItem>"},	{N_("/WindowShade Mode"), "<control>W", mainwin_options_menu_callback, MAINWIN_OPT_WS, "<ToggleItem>"},	{N_("/Playlist WindowShade Mode"), "<control><shift>W", mainwin_options_menu_callback, MAINWIN_OPT_PWS, "<ToggleItem>"},	{N_("/Equalizer WindowShade Mode"), "<control><alt>W", mainwin_options_menu_callback, MAINWIN_OPT_EQWS, "<ToggleItem>"},	{N_("/DoubleSize"), "<control>D", mainwin_options_menu_callback, MAINWIN_OPT_DOUBLESIZE, "<ToggleItem>"},	{N_("/Easy Move"), "<control>E", mainwin_options_menu_callback, MAINWIN_OPT_EASY_MOVE, "<ToggleItem>"},};static gint mainwin_options_menu_entries_num = 	sizeof(mainwin_options_menu_entries) / 	sizeof(mainwin_options_menu_entries[0]);void mainwin_songname_menu_callback(gpointer cb_data, guint action, GtkWidget * w);enum{	MAINWIN_SONGNAME_FILEINFO, MAINWIN_SONGNAME_JTF, MAINWIN_SONGNAME_JTT, MAINWIN_SONGNAME_SCROLL};GtkItemFactoryEntry mainwin_songname_menu_entries[] ={	{N_("/File Info"), NULL, mainwin_songname_menu_callback, MAINWIN_SONGNAME_FILEINFO, "<Item>"},	{N_("/Jump To File"), "J", mainwin_songname_menu_callback, MAINWIN_SONGNAME_JTF, "<Item>"},	{N_("/Jump To Time"), "<control>J", mainwin_songname_menu_callback, MAINWIN_SONGNAME_JTT, "<Item>"},	{N_("/Autoscroll Song Name"), NULL, mainwin_songname_menu_callback, MAINWIN_SONGNAME_SCROLL, "<ToggleItem>"},};static gint mainwin_songname_menu_entries_num = 	sizeof(mainwin_songname_menu_entries) / 	sizeof(mainwin_songname_menu_entries[0]);void mainwin_vis_menu_callback(gpointer cb_data, guint action, GtkWidget * w);enum{	MAINWIN_VIS_ANALYZER, MAINWIN_VIS_SCOPE, MAINWIN_VIS_OFF,	MAINWIN_VIS_ANALYZER_NORMAL, MAINWIN_VIS_ANALYZER_FIRE, MAINWIN_VIS_ANALYZER_VLINES,	MAINWIN_VIS_ANALYZER_LINES, MAINWIN_VIS_ANALYZER_BARS, MAINWIN_VIS_ANALYZER_PEAKS,	MAINWIN_VIS_SCOPE_DOT, MAINWIN_VIS_SCOPE_LINE, MAINWIN_VIS_SCOPE_SOLID,	MAINWIN_VIS_VU_NORMAL, MAINWIN_VIS_VU_SMOOTH,	MAINWIN_VIS_REFRESH_FULL, MAINWIN_VIS_REFRESH_HALF, MAINWIN_VIS_REFRESH_QUARTER, MAINWIN_VIS_REFRESH_EIGHTH,	MAINWIN_VIS_AFALLOFF_SLOWEST, MAINWIN_VIS_AFALLOFF_SLOW, MAINWIN_VIS_AFALLOFF_MEDIUM, MAINWIN_VIS_AFALLOFF_FAST, MAINWIN_VIS_AFALLOFF_FASTEST,	MAINWIN_VIS_PFALLOFF_SLOWEST, MAINWIN_VIS_PFALLOFF_SLOW, MAINWIN_VIS_PFALLOFF_MEDIUM, MAINWIN_VIS_PFALLOFF_FAST, MAINWIN_VIS_PFALLOFF_FASTEST,	MAINWIN_VIS_PLUGINS};GtkItemFactoryEntry mainwin_vis_menu_entries[] ={	{N_("/Visualization Mode"), NULL, NULL, 0, "<Branch>"},	{N_("/Visualization Mode/Analyzer"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER, "<RadioItem>"},	{N_("/Visualization Mode/Scope"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_SCOPE, "/Visualization Mode/Analyzer"},	{N_("/Visualization Mode/Off"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_OFF, "/Visualization Mode/Analyzer"},	{N_("/Analyzer Mode"), NULL, NULL, 0, "<Branch>"},	{N_("/Analyzer Mode/Normal"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_NORMAL, "<RadioItem>"},	{N_("/Analyzer Mode/Fire"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_FIRE, "/Analyzer Mode/Normal"},	{N_("/Analyzer Mode/Vertical Lines"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_VLINES, "/Analyzer Mode/Normal"},	{N_("/Analyzer Mode/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Analyzer Mode/Lines"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_LINES, "<RadioItem>"},	{N_("/Analyzer Mode/Bars"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_BARS, "/Analyzer Mode/Lines"},	{N_("/Analyzer Mode/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Analyzer Mode/Peaks"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_ANALYZER_PEAKS, "<ToggleItem>"},	{N_("/Scope Mode"), NULL, NULL, 0, "<Branch>"},	{N_("/Scope Mode/Dot Scope"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_SCOPE_DOT, "<RadioItem>"},	{N_("/Scope Mode/Line Scope"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_SCOPE_LINE, "/Scope Mode/Dot Scope"},	{N_("/Scope Mode/Solid Scope"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_SCOPE_SOLID, "/Scope Mode/Dot Scope"},	{N_("/WindowShade VU Mode"), NULL, NULL, 0, "<Branch>"},	{N_("/WindowShade VU Mode/Normal"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_VU_NORMAL, "<RadioItem>"},	{N_("/WindowShade VU Mode/Smooth"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_VU_SMOOTH, "/WindowShade VU Mode/Normal"},	{N_("/Refresh Rate"), NULL, NULL, 0, "<Branch>"},	{N_("/Refresh Rate/Full (~50 fps)"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_REFRESH_FULL, "<RadioItem>"},	{N_("/Refresh Rate/Half (~25 fps)"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_REFRESH_HALF, "/Refresh Rate/Full (~50 fps)"},	{N_("/Refresh Rate/Quarter (~13 fps)"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_REFRESH_QUARTER, "/Refresh Rate/Full (~50 fps)"},	{N_("/Refresh Rate/Eighth (~6 fps)"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_REFRESH_EIGHTH, "/Refresh Rate/Full (~50 fps)"},	{N_("/Analyzer Falloff"), NULL, NULL, 0, "<Branch>"},	{N_("/Analyzer Falloff/Slowest"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_AFALLOFF_SLOWEST, "<RadioItem>"},	{N_("/Analyzer Falloff/Slow"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_AFALLOFF_SLOW, "/Analyzer Falloff/Slowest"},	{N_("/Analyzer Falloff/Medium"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_AFALLOFF_MEDIUM, "/Analyzer Falloff/Slowest"},	{N_("/Analyzer Falloff/Fast"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_AFALLOFF_FAST, "/Analyzer Falloff/Slowest"},	{N_("/Analyzer Falloff/Fastest"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_AFALLOFF_FASTEST, "/Analyzer Falloff/Slowest"},	{N_("/Peaks Falloff"), NULL, NULL, 0, "<Branch>"},	{N_("/Peaks Falloff/Slowest"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_PFALLOFF_SLOWEST, "<RadioItem>"},	{N_("/Peaks Falloff/Slow"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_PFALLOFF_SLOW, "/Peaks Falloff/Slowest"},	{N_("/Peaks Falloff/Medium"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_PFALLOFF_MEDIUM, "/Peaks Falloff/Slowest"},	{N_("/Peaks Falloff/Fast"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_PFALLOFF_FAST, "/Peaks Falloff/Slowest"},	{N_("/Peaks Falloff/Fastest"), NULL, mainwin_vis_menu_callback, MAINWIN_VIS_PFALLOFF_FASTEST, "/Peaks Falloff/Slowest"},	{N_("/Visualization plugins"), "<control>V", mainwin_vis_menu_callback, MAINWIN_VIS_PLUGINS, "<Item>"}};static gint mainwin_vis_menu_entries_num = 	sizeof(mainwin_vis_menu_entries) / 	sizeof(mainwin_vis_menu_entries[0]);/* * If you change the menu above change these defines also */#define MAINWIN_VIS_MENU_VIS_MODE		1#define MAINWIN_VIS_MENU_NUM_VIS_MODE		3#define MAINWIN_VIS_MENU_ANALYZER_MODE		5#define MAINWIN_VIS_MENU_NUM_ANALYZER_MODE	3#define MAINWIN_VIS_MENU_ANALYZER_TYPE	    	9#define MAINWIN_VIS_MENU_NUM_ANALYZER_TYPE  	2#define MAINWIN_VIS_MENU_ANALYZER_PEAKS		12#define MAINWIN_VIS_MENU_SCOPE_MODE		14#define MAINWIN_VIS_MENU_NUM_SCOPE_MODE		3#define MAINWIN_VIS_MENU_WSHADEVU_MODE		18#define MAINWIN_VIS_MENU_NUM_WSHADEVU_MODE	2#define MAINWIN_VIS_MENU_REFRESH_RATE		21#define MAINWIN_VIS_MENU_NUM_REFRESH_RATE	4#define MAINWIN_VIS_MENU_AFALLOFF		26#define MAINWIN_VIS_MENU_NUM_AFALLOFF		5#define MAINWIN_VIS_MENU_PFALLOFF		32#define MAINWIN_VIS_MENU_NUM_PFALLOFF		5enum{	MAINWIN_GENERAL_ABOUT, MAINWIN_GENERAL_PLAYFILE, MAINWIN_GENERAL_PLAYDIRECTORY,	MAINWIN_GENERAL_PLAYLOCATION, MAINWIN_GENERAL_FILEINFO,	MAINWIN_GENERAL_SHOWMWIN, MAINWIN_GENERAL_SHOWPLWIN,	MAINWIN_GENERAL_SHOWEQWIN, MAINWIN_GENERAL_PREV, MAINWIN_GENERAL_PLAY,	MAINWIN_GENERAL_PAUSE, MAINWIN_GENERAL_STOP, MAINWIN_GENERAL_NEXT,	MAINWIN_GENERAL_STOPFADE, MAINWIN_GENERAL_BACK5SEC,	MAINWIN_GENERAL_FWD5SEC, MAINWIN_GENERAL_START, MAINWIN_GENERAL_BACK10,	MAINWIN_GENERAL_FWD10, MAINWIN_GENERAL_JTT, MAINWIN_GENERAL_JTF,	MAINWIN_GENERAL_CQUEUE, MAINWIN_GENERAL_EXIT};void mainwin_general_menu_callback(gpointer cb_data, guint action, GtkWidget * w);GtkItemFactoryEntry mainwin_general_menu_entries[] ={	{N_("/About XMMS"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_ABOUT, "<Item>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Play File"), "L", mainwin_general_menu_callback, MAINWIN_GENERAL_PLAYFILE, "<Item>"},	{N_("/Play Directory"), "<shift>L", mainwin_general_menu_callback, MAINWIN_GENERAL_PLAYDIRECTORY, "<Item>"},		{N_("/Play Location"), "<control>L", mainwin_general_menu_callback, MAINWIN_GENERAL_PLAYLOCATION, "<Item>"},	{N_("/View File Info"), "<control>3" , mainwin_general_menu_callback, MAINWIN_GENERAL_FILEINFO, "<Item>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Main Window"), "<alt>W", mainwin_general_menu_callback, MAINWIN_GENERAL_SHOWMWIN, "<ToggleItem>"},	{N_("/Playlist Editor"), "<alt>E", mainwin_general_menu_callback, MAINWIN_GENERAL_SHOWPLWIN, "<ToggleItem>"},	{N_("/Graphical EQ"), "<alt>G", mainwin_general_menu_callback, MAINWIN_GENERAL_SHOWEQWIN, "<ToggleItem>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Options"), NULL, NULL, 0, "<Item>"},	{N_("/Playback"), NULL, NULL, 0, "<Branch>"},	{N_("/Playback/Previous"), "Z", mainwin_general_menu_callback, MAINWIN_GENERAL_PREV, "<Item>"},	{N_("/Playback/Play"), "X", mainwin_general_menu_callback, MAINWIN_GENERAL_PLAY, "<Item>"},	{N_("/Playback/Pause"), "C", mainwin_general_menu_callback, MAINWIN_GENERAL_PAUSE, "<Item>"},	{N_("/Playback/Stop"), "V", mainwin_general_menu_callback, MAINWIN_GENERAL_STOP, "<Item>"},	{N_("/Playback/Next"), "B", mainwin_general_menu_callback, MAINWIN_GENERAL_NEXT, "<Item>"},	{N_("/Playback/-"), NULL, NULL, 0, "<Separator>"},/*      {N_("/Playback/Stop with Fadeout"),"<Shift>V",mainwin_general_menu_callback,MAINWIN_GENERAL_STOPFADE,"<Item>"}, */	{N_("/Playback/Back 5 Seconds"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_BACK5SEC, "<Item>"},	{N_("/Playback/Fwd 5 Seconds"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_FWD5SEC, "<Item>"},	{N_("/Playback/Start of List"), "<control>Z", mainwin_general_menu_callback, MAINWIN_GENERAL_START, "<Item>"},	{N_("/Playback/10 Tracks Back"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_BACK10, "<Item>"},	{N_("/Playback/10 Tracks Fwd"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_FWD10, "<Item>"},	{N_("/Playback/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Playback/Jump to Time"), "<control>J", mainwin_general_menu_callback, MAINWIN_GENERAL_JTT, "<Item>"},	{N_("/Playback/Jump to File"), "J", mainwin_general_menu_callback, MAINWIN_GENERAL_JTF, "<Item>"},	{N_("/Playback/Clear Queue"), "<shift>Q", mainwin_general_menu_callback, MAINWIN_GENERAL_CQUEUE, "<Item>"},	{N_("/Visualization"), NULL, NULL, 0, "<Item>"},	{N_("/-"), NULL, NULL, 0, "<Separator>"},	{N_("/Exit"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_EXIT, "<Item>"}};static const int mainwin_general_menu_entries_num = 	sizeof(mainwin_general_menu_entries) / 	sizeof(mainwin_general_menu_entries[0]);static void make_xmms_dir(void){	gchar *filename;	filename = g_strconcat(g_get_home_dir(), "/.xmms", NULL);	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);	g_free(filename);	filename = g_strconcat(g_get_home_dir(), "/.xmms/Skins", NULL);	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);	g_free(filename);	filename = g_strconcat(g_get_home_dir(), "/.xmms/Plugins", NULL);	mkdir(filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);	g_free(filename);}static void read_config(void){	ConfigFile *cfgfile;	gchar *filename;	gint i, length;	memset(&cfg, 0, sizeof (Config));	cfg.autoscroll = TRUE;	cfg.player_x = 20;	cfg.player_y = 20;	cfg.always_on_top = FALSE;	cfg.sticky = FALSE;	cfg.always_show_cb = TRUE;	cfg.convert_underscore = TRUE;	cfg.convert_twenty = TRUE;	cfg.show_numbers_in_pl = TRUE;	cfg.snap_windows = TRUE;	cfg.save_window_position = TRUE;	cfg.dim_titlebar = TRUE;	cfg.get_info_on_load = FALSE;	cfg.get_info_on_demand = TRUE;	cfg.eq_doublesize_linked = TRUE;	cfg.player_visible = TRUE;	cfg.no_playlist_advance = FALSE;	cfg.smooth_title_scroll = TRUE;	cfg.random_skin_on_play = FALSE;	cfg.mainwin_use_xfont = FALSE;	cfg.use_pl_metadata = TRUE;	cfg.playlist_x = 295;	cfg.playlist_y = 20;	cfg.playlist_width = 300;	cfg.playlist_height = 232;	cfg.playlist_transparent = FALSE;	cfg.filesel_path = NULL;	cfg.playlist_path = NULL;	cfg.equalizer_x = 20;	cfg.equalizer_y = 136;	cfg.snap_distance = 10;	cfg.pause_between_songs_time = 2;	cfg.vis_type = VIS_ANALYZER;	cfg.analyzer_mode = ANALYZER_NORMAL;	cfg.analyzer_type = ANALYZER_BARS;	cfg.analyzer_peaks = TRUE;	cfg.scope_mode = SCOPE_DOT;	cfg.vu_mode = VU_SMOOTH;	cfg.vis_refresh = REFRESH_FULL;	cfg.analyzer_falloff = FALLOFF_FAST;	cfg.peaks_falloff = FALLOFF_SLOW;	cfg.disabled_iplugins = NULL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -