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

📄 xdefaults.c

📁 multi-tabed terminal based on rxvt
💻 C
📖 第 1 页 / 共 3 页
字号:
    BOOL( "cursorBlink", "bc", Opt_cursorBlink, "blinking cursor" ),    STRG(Rs_cursorBlinkInterval, "cursorBlinkInterval", "bci",	"number", "cursor blinking interval (ms)", 0),#endif#ifndef NO_BACKSPACE_KEY    RSTRG(Rs_backspace_key, "backspaceKey", "string", 0),#endif#ifndef NO_DELETE_KEY    RSTRG(Rs_delete_key, "deleteKey", "string", 0),#endif    RSTRG(Rs_selectstyle, "selectStyle",	"select style mode = old|oldword", 0),#ifdef PRINTPIPE    RSTRG(Rs_print_pipe, "printPipe", "string", 0),#endif    BOOL( "noSysConfig", "nsc", Opt2_noSysConfig,	    "reading /etc/mrxvt/mrxvtrc." ),    BOOL( "disableMacros", "dm", Opt2_disableMacros,	    "all keyboard shortcuts (macros)" ),    BOOL( "linuxHomeEndKey", "lk", Opt2_linuxHomeEndKey,	    "enable Linux console Home/End keys" ),    STRG(Rs_modifier, "modifier", "mod", "modifier",	"meta modifier = alt|meta|hyper|super|mod1|...|mod5", 0),    INFO("xrm", "string", "X resource"),#ifdef CUTCHAR_RESOURCE    RSTRG(Rs_cutchars, "cutChars", "string", 0),#endif	/* CUTCHAR_RESOURCE */#ifdef ACS_ASCII    RSTRG(Rs_acs_chars, "acsChars", "string", 0),#endif	/* ACS_ASCII */    RSTRG(Rs_answerbackstring, "answerbackString", "string", 0),#ifdef HAVE_X11_SM_SMLIB_H    BOOL( "sessionMgt", "sm", Opt2_enableSessionMgt,	    "enabling X session management" ),    STRG(Rs_smClientID, "smClientID", "sid", "string",	"client id of mrxvt for X session management", 0),#endif	/* HAVE_X11_SM_SMLIB_H */    /* Initial number of terminals */    STRG( Rs_init_term_num, "initTermNumber", "tnum", "number",	"Initial number of tabs/terminals", 0),    STRG( Rs_initProfiles, "initProfileList", "ip", "profile list",	"List of profiles to load on startup", 0 ),    STRG(Rs_debug_masks, "dbgMasks", "dmask", "string", 	"List of debug masks separated by coma", 0),    STRG(Rs_debug_level, "dbgLevel", "dlevel", "string", 	"Name of number of the debug level", 0),#ifdef USE_FIFO    BOOL( "useFifo", NULL, Opt_useFifo, NULL ),#endif/*USE_FIFO*/    INFO("e", "command arg ...", "command to execute")};/* Previously set options */static uint32_t	pSetOpts[ MAX_OPTION_ARRAY ] = { 0u, 0u, 0u, 0u };#undef INFO#undef STRG#undef RSTRG#undef SWCH#undef BOOL/*}}} */static const char releasestring[] = "Mrxvt v" VERSION "\n";static const char optionsstring[] = "Options: "#if defined(BACKGROUND_IMAGE)# ifdef HAVE_LIBXPM    "XPM,"# endif# ifdef USE_JPEG    "Jpeg,"# endif# ifdef USE_JPEG    "PNG,"# endif#endif#if defined(TRANSPARENT)    "transparent,"#endif    "fade,"#if defined(BACKGROUND_IMAGE) || defined(TRANSPARENT)# if defined(TINTING_SUPPORT)    "tint,"# endif#endif#if defined(TEXT_SHADOW)    "textshadow,"#endif#if defined(UTMP_SUPPORT)    "utmp,"#endif#if defined(HAVE_MENUBAR)    "menubar,"#endif#if defined(USE_XIM)    "XIM,"#endif#if defined(MULTICHAR_SET)    "multichar_languages,"#endif    "scrollbars="#if !defined(HAVE_SCROLLBARS)    "NONE"#else# if defined(RXVT_SCROLLBAR)    "rxvt"#  if defined(NEXT_SCROLLBAR) || defined(XTERM_SCROLLBAR) || defined(SGI_SCROLLBAR) || defined(PLAIN_SCROLLBAR)    "+"#  endif# endif	/* RXVT_SCROLLBAR */# if defined(NEXT_SCROLLBAR)    "NeXT"#  if defined(XTERM_SCROLLBAR) || defined(SGI_SCROLLBAR) || defined(PLAIN_SCROLLBAR)    "+"#  endif# endif	/* NEXT_SCROLLBAR */# if defined(XTERM_SCROLLBAR)    "xterm"#  if defined(SGI_SCROLLBAR) || defined(PLAIN_SCROLLBAR)    "+"#  endif# endif	/* XTERM_SCROLLBAR */# if defined(SGI_SCROLLBAR)    "sgi"#  if defined(PLAIN_SCROLLBAR)    "+"#  endif# endif	/* SGI_SCROLLBAR */# if defined(PLAIN_SCROLLBAR)    "plain"# endif	/* PLAIN_SCROLLBAR */#endif	/* HAVE_SCROLLBARS */    ","#ifdef XFT_SUPPORT    "xft,"#endif#if defined(GREEK_SUPPORT)    "Greek,"#endif#if defined(NO_BACKSPACE_KEY)    "no_backspace,"#endif#if defined(NO_DELETE_KEY)    "no_delete,"#endif#ifdef OUR_STRINGS    "strings,"#endif#ifdef OUR_MALLOC    "fast memory,"#endif#if !defined(NO_FRILLS)    "frills,"#endif#if !defined(NO_LINESPACE)    "linespace,"#endif#if defined(PREFER_24BIT)    "24bit,"#endif#if defined(SELECTION_SCROLLING)    "selectionscrolling,"#endif#if defined(TTY_256COLOR)    "256colour,"#endif#if defined(CURSOR_BLINK)    "cursorBlink,"#endif#if defined(POINTER_BLANK)    "pointerBlank,"#endif#ifdef HAVE_X11_SM_SMLIB_H    "session management,"#endif#if defined(NO_RESOURCES)    "NoResources"#else    "Resources"#endif    "\nUsage: ";	/* Usage */#define INDENT 24/* * Print usage and exit. *//* EXTPROTO */voidrxvt_usage(int type){    unsigned int    i, col;    write(STDOUT_FILENO, releasestring, sizeof(releasestring) - 1);    write(STDOUT_FILENO, optionsstring, sizeof(optionsstring) - 1);    write(STDOUT_FILENO, APL_NAME, sizeof(APL_NAME) - 1);    switch (type)    {	case 0:		/* brief listing */	    fprintf(stdout, " [-help] [--help]\n");	    for (col = 1, i = 0; i < optList_size(); i++)		if (NOT_NULL(optList[i].desc))		{		    int		 len = 0;		    if (!optList_isBool(i))		    {			len = optList_STRLEN(i);			if (len > 0)			    len++;  /* account for space */		    }		    assert(NOT_NULL(optList[i].opt));		    len += 4 + STRLEN(optList[i].opt) +			(optList_isBool(i) ? 2: 0);		    col += len;		    if (col > 79)	    /* assume regular width */		    {			putc('\n', stdout);			col = 1 + len;		    }		    fprintf(stdout, " [-%s%s", (optList_isBool(i) ?			"/+" : ""), optList[i].opt);		    if (optList_STRLEN(i))			fprintf(stdout, " %s]", optList[i].arg);		    else			fprintf(stdout, "]");		}	    break;	case 1:		/* full command-line listing */	    fprintf(stdout, " [options] [-e command args]\n\n"		"where options include:\n");	    for (i = 0; i < optList_size(); i++)		if (NOT_NULL(optList[i].desc))		{		    assert(NOT_NULL(optList[i].opt));		    fprintf(stdout, "  %s%s %-*s%s%s\n",			(optList_isBool(i) ? "-/+" : "-"), optList[i].opt,			(INDENT - STRLEN(optList[i].opt)			 + (optList_isBool(i) ? 0 : 2)),			(optList[i].arg ? optList[i].arg : ""),			(optList_isBool(i) ? "turn on/off " : ""),			optList[i].desc);		}	    fprintf(stdout, "\n  --help to list long-options");	    break;	case 2:		/* full resource listing */	    fprintf(stdout,		" [options] [-e command args]\n\n"		"where resources (long-options) include:\n");#ifdef DEBUG	    /*	     * Print short options, long options and descriptions so we can	     * generate man page.	     */	    for (i = 0; i < optList_size(); i++)		fprintf( stdout, "%3d. %s   %s	%s  %s	%d\n", i,			optList[i].kw ? optList[i].kw : "NullKW",			optList[i].opt ? optList[i].opt : "NullOpt",			!optList_isBool(i) ? optList[i].arg : "boolean",			optList[i].desc ? optList[i].desc : "NullDsc",			optList[i].multiple);#else	    for (i = 0; i < optList_size(); i++)		if (NOT_NULL(optList[i].kw))		    fprintf(stdout, "  %s: %*s%s\n",			optList[i].kw,			(INDENT - STRLEN(optList[i].kw)), "", /* XXX */			(optList_isBool(i) ? "boolean" : optList[i].arg));#endif	    fprintf(stdout, "\n  -help to list options");	    break;    }	/* switch */    fprintf(stdout, "\n\n");    exit(EXIT_FAILURE);    /* NOTREACHED */}/* INTPROTO */intnum_tabs( int len ){    return (len >=0 && len < 40) ? (40 - (len - (len%8)) ) / 8 : 0;}/* EXTPROTO */intrxvt_save_options (rxvt_t* r, const char* filename){    int		i;    FILE*	pf = fopen (filename, "w");    const char	*name = r->h->rs[Rs_name] ? r->h->rs[Rs_name] : APL_NAME;    char	*tabs="\t\t\t\t\t";    if (IS_NULL(pf))	return 0;        for (i = 0; i < optList_size(); i ++)    {	if(	     IS_NULL( optList[i].kw ) ||	/* Options without a keyword						   can't be written */	     ( optList[i].doff == -1 && !optList_isBool(i) )						/* Boolean options don't require						 * a data offset. */	  )	    continue;	if( optList[i].multiple)	{	    register int    j;	    for (j = 0; j < MAX_PROFILES; j ++)	    {		if (r->h->rs[optList[i].doff + j])		    fprintf( pf, "%s.profile%d.%s:%.*s%s\n", name,			j, optList[i].kw,			num_tabs( STRLEN(name) + sizeof(".profile") + 2				    + STRLEN( optList[i].kw ) ), tabs,			r->h->rs[optList[i].doff +j]);	    }	}	else if (optList_isBool(i))	{	    int	    bval;	    char*   OnOff[2] = {"False", "True"};	    bval = ISSET_OPTION(r, optList[i].flag) ? 1 : 0;	    if (optList_isReverse(i))		bval = !bval;	    fprintf( pf, "%s.%s:%.*s%s\n", name,		optList[i].kw,		num_tabs( STRLEN(name) + 1 + STRLEN(optList[i].kw) + 1 ), tabs,		OnOff[bval] );	}	else if (r->h->rs[optList[i].doff])	{	    fprintf( pf, "%s.%s:%.*s%s\n", name,		optList[i].kw,		num_tabs( STRLEN(name) + 1 + STRLEN(optList[i].kw) + 1 ), tabs,		r->h->rs[optList[i].doff] );	}    }    fputs( "\n\n# vim: set ft=mrxvtrc :\n", pf );    fclose (pf);    return 1;}/* * Process command line options. *//* EXTPROTO */voidrxvt_get_options(rxvt_t *r, int argc, const char *const *argv){    int		 i, bad_option = 0;    static const char On[3] = "ON", Off[4] = "OFF";    rxvt_dbgmsg ((DBG_DEBUG, DBG_RESOURCE, "rxvt_get_options()\n"));    for (i = 1; i < argc; i++)    {	unsigned int	entry, longopt = 0;	const char	*flag, *opt;	int		profileNum;	opt = argv[i];	profileNum = 0;	/* initialize profileNum to 0 by default */	rxvt_msg (DBG_INFO, DBG_RESOURCE, "argv[%d] = %s: \n", i, opt);	if (*opt == '-')	{	    flag = On;	    if (*++opt == '-')		longopt = *opt++;   /* long option */	}	else if (*opt == '+')	{	    flag = Off;	    if (*++opt == '+')		longopt = *opt++;   /* long option */	}	else	{	    bad_option = 1;	    rxvt_msg (DBG_ERROR, DBG_RESOURCE, "bad option \"%s\"\n", opt);	    continue;	}	if (!STRCMP(opt, "help"))	    rxvt_usage(longopt ? 2 : 1);	if (!STRCMP(opt, "h"))	    rxvt_usage(0);	/* feature: always try to match long-options */	for (entry = 0; entry < optList_size(); entry++)	{	    char	    buflong[256];	    char	    bufshort[128];	    /* initialize it to empty string */	    buflong[0]	= '\0';	    bufshort[0] = '\0';	    /*	     * Get the long option name in buflong, or the short option name in	     * bufshort.	     */	    if ( optList[entry].multiple )	    {		int offset = 0;		/*		 * For backward compatibility, accept vt%d style options.		 */		offset = rxvt_str_match( opt, "vt" );		if( offset == 0 )		    offset = rxvt_str_match( opt, "profile" );		/*		 * Copy --profile%d.resource or --vt%d.resource into buflong and		 * bufshort.		 */		if( offset )		{		    profileNum = atoi( opt + offset );		    if( profileNum < 0 || profileNum >= MAX_PROFILES )		    {			entry = optList_size();			break;	/* out of range, jump to bad option */		    }		    snprintf( buflong, sizeof(buflong)-1, "%.*s%d.%s",			    offset, opt, profileNum, optList[entry].kw );		    buflong[sizeof(buflong)-1] = '\0';		    snprintf( bufshort, sizeof(bufshort)-1, "%.*s%d.%s",			    offset, opt, profileNum, optList[entry].opt );		    bufshort[sizeof(bufshort)-1] = '\0';		    rxvt_dbgmsg ((DBG_DEBUG, DBG_RESOURCE, "Matched profile=%d buflong=%s bufshort=%s\n", profileNum, buflong, bufshort ));		}		/* If no profile number is specified, use 0 by default */		else		{		    STRNCPY( buflong, optList[entry].kw, sizeof(buflong) - 1 );		    buflong[ sizeof(buflong)-1 ] = '\0';		    STRNCPY( bufshort, optList[entry].opt, sizeof(bufshort)-1 );		    bufshort[ sizeof(bufshort)-1 ] = '\0';		    profileNum = 0;		    rxvt_dbgmsg ((DBG_DEBUG, DBG_RESOURCE, "Matched default buflong=%s bufshort=%s\n", buflong, bufshort ));		}	    }	    else if (optList[entry].kw)	    {		STRNCPY (buflong, optList[entry].kw, sizeof(buflong)-1);		buflong[sizeof(buflong)-1] = '\0';		if (optList[entry].opt)		{		    STRNCPY (bufshort, optList[entry].opt,			sizeof(bufshort)-1);		    bufshort[sizeof(bufshort)-1] = '\0';		}	    }	    else if (optList[entry].opt)	    {		/* here NULL == optList[entry].kw */		STRNCPY (bufshort, optList[entry].opt,		    sizeof(bufshort)-1);		bufshort[sizeof(bufshort)-1] = '\0';

⌨️ 快捷键说明

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