int main(int argc, char *argv[]) { char match[128]; char *config_line; int scr; console = fopen("/dev/console","w"); if (!console) console = stderr; module = ParseModuleArgs(argc,argv,0); if (module == NULL) { fprintf(stderr,"FvwmRearrange: module should be executed by fvwm only\n"); exit(-1); } fd[0] = module->to_fvwm; fd[1] = module->from_fvwm; if (!(dpy = XOpenDisplay(NULL))) { fprintf(console, "%s: couldn't open display %s\n", module->name, XDisplayName(NULL)); exit(-1); } signal (SIGPIPE, DeadPipe); FScreenInit(dpy); scr = DefaultScreen(dpy); fd_width = GetFdWidth(); strcpy(match, "*"); strcat(match, module->name); InitGetConfigLine(fd,match); GetConfigLine(fd, &config_line); while (config_line != NULL) { if (strncasecmp(config_line, XINERAMA_CONFIG_STRING, sizeof(XINERAMA_CONFIG_STRING) - 1) == 0) { FScreenConfigureModule( config_line + sizeof(XINERAMA_CONFIG_STRING) - 1); } GetConfigLine(fd, &config_line); } FScreenGetScrRect(NULL, FSCREEN_CURRENT, &dx, &dy, &dwidth, &dheight); if (strcmp(module->name, "FvwmCascade") && (!strcmp(module->name, "FvwmTile") || (argc >= 7 && !strcmp(argv[6], "-tile")))) { FvwmTile = 1; FvwmCascade = 0; resize = 1; } else { FvwmCascade = 1; FvwmTile = 0; resize = 0; } parse_args("module args", module->user_argc, module->user_argv, 0); SetMessageMask(fd, M_CONFIGURE_WINDOW | M_END_WINDOWLIST); SetMessageMask(fd, M_EXTENDED_MSG); if (FvwmTile) { if (maxx == dx) maxx = dx + dwidth; if (maxy == dy) maxy = dy + dheight; } SendText(fd, "Send_WindowList", 0); /* tell fvwm we're running */ SendFinishedStartupNotification(fd); while (get_window()) /* */; if (wins_count) { if (FvwmCascade) cascade_windows(); else /* FvwmTile */ tile_windows(); } free_window_list(wins); if (console != stderr) fclose(console); return 0; }
int main(int argc, char *argv[]) { #ifdef USERC char match[128]; int config_line_count, len; char *config_line; #endif console = fopen("/dev/console","w"); if (!console) console = stderr; if (!(argv0 = strrchr(argv[0],'/'))) argv0 = argv[0]; else ++argv0; if (argc < 6) { fprintf(stderr, #ifdef FVWM1 "%s: module should be executed by fvwm only\n", #else "%s: module should be executed by fvwm2 only\n", #endif argv0); exit(-1); } fd[0] = atoi(argv[1]); fd[1] = atoi(argv[2]); if (!(dpy = XOpenDisplay(NULL))) { fprintf(console, "%s: couldn't open display %s\n", argv0, XDisplayName(NULL)); exit(-1); } signal (SIGPIPE, DeadPipe); { int s = DefaultScreen(dpy); dwidth = DisplayWidth(dpy, s); dheight = DisplayHeight(dpy, s); } fd_width = GetFdWidth(); #ifdef USERC strcpy(match, "*"); strcat(match, argv0); len = strlen(match); #ifdef FVWM1 if ((config_line = GetConfigLine(argv[3], match))) { char **args = NULL; config_line_count = parse_line(config_line, &args); parse_args("config args", config_line_count, args, 0); free(config_line); free(args); } #else GetConfigLine(fd, &config_line); while (config_line != NULL) { if (strncmp(match,config_line,len)==0) { char **args = NULL; int cllen = strlen(config_line); if (config_line[cllen - 1] == '\n') config_line[cllen - 1] = 0; config_line_count = parse_line(config_line, &args); parse_args("config args", config_line_count, args, 0); free(args); } GetConfigLine(fd, &config_line); } #endif /* FVWM1 */ #endif /* USERC */ if (strcmp(argv0, "FvwmCascade") && (!strcmp(argv0, "FvwmTile") || (argc >= 7 && !strcmp(argv[6], "-tile")))) { FvwmTile = 1; FvwmCascade = 0; resize = 1; } else { FvwmCascade = 1; FvwmTile = 0; resize = 0; } parse_args("module args", argc, argv, 6); #ifdef FVWM1 { char msg[256]; sprintf(msg, "SET_MASK %lu\n",(unsigned long)( M_CONFIGURE_WINDOW| M_END_WINDOWLIST )); SendInfo(fd,msg,0); #ifdef FVWM1_MOVENULL /* avoid interactive placement in fvwm version 1 */ if (!ofsx) ++ofsx; if (!ofsy) ++ofsy; #endif } #else SetMessageMask(fd, M_CONFIGURE_WINDOW | M_END_WINDOWLIST ); #endif if (FvwmTile) { if (!maxx) maxx = dwidth; if (!maxy) maxy = dheight; } SendInfo(fd,"Send_WindowList",0); while (get_window()); if (wins_count) { if (FvwmCascade) cascade_windows(); else /* FvwmTile */ tile_windows(); } free_window_list(&wins); if (console != stderr) fclose(console); return 0; }